Numpy: numpy 1.19๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Buggy Accelerate Backend

์— ๋งŒ๋“  2020๋…„ 04์›” 09์ผ  ยท  31์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

MacOS 10.14.6์˜ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋กœ ์ธํ•ด Numpy 1.19๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Polyfit ์˜จ์ „์„ฑ ํ…Œ์ŠคํŠธ๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” Accelerate ๋ฐฑ์—”๋“œ ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ site.cfg.example์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumPy๋ฅผ ์ œ๊ณตํ•œ ๊ณต๊ธ‰์—…์ฒด์— ์ด๋ฅผ ๋ณด๊ณ ํ•˜์‹ญ์‹œ์˜ค.

์ฝ”๋“œ ์˜ˆ์‹œ:

import numpy as np

์—๋Ÿฌ ๋ฉ”์‹œ์ง€:

RuntimeError: Polyfit ์˜จ์ „์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” Accelerate ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ์ง์ ‘ ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ site.cfg.example์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumPy๋ฅผ ์ œ๊ณตํ•œ ๊ณต๊ธ‰์—…์ฒด์— ์ด๋ฅผ ๋ณด๊ณ ํ•˜์‹ญ์‹œ์˜ค.
RankWarning: Polyfit์˜ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py", 183ํ–‰, _run_module_as_main
mod_name, mod_spec, ์ฝ”๋“œ = _get_module_details(mod_name, _Error)
ํŒŒ์ผ "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py", 109ํ–‰, _get_module_details
__๊ฐ€์ ธ์˜ค๊ธฐ__(ํŒจํ‚ค์ง€ ์ด๋ฆ„)
ํŒŒ์ผ "/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/__init__.py", ๋ผ์ธ 1, in
.utils์—์„œ calcfunc ๊ฐ€์ ธ์˜ค๊ธฐ
ํŒŒ์ผ "/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/utils.py", 9ํ–‰, in
utils.quilt์—์„œ load_datasets ๊ฐ€์ ธ์˜ค๊ธฐ
ํŒŒ์ผ "/Users/billyzhaoyh/Desktop/Simulation/reina-model/utils/quilt.py", 4ํ–‰,
์ˆ˜์ž… ์ด๋ถˆ
ํŒŒ์ผ "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/site-packages/quilt/__init__.py", 87ํ–‰,
.tools.command์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ(
ํŒŒ์ผ "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/site-packages/quilt/tools/command.py", 24ํ–‰,
numpy๋ฅผ np๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
ํŒŒ์ผ "/Users/billyzhaoyh/Desktop/Simulation/reina-model/src/numpy/numpy/__init__.py", 286ํ–‰,
๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜(msg) ๋ฐœ์ƒ
RuntimeError: Polyfit ์˜จ์ „์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” Accelerate ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ์ง์ ‘ ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ site.cfg.example์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumPy๋ฅผ ์ œ๊ณตํ•œ ๊ณต๊ธ‰์—…์ฒด์— ์ด๋ฅผ ๋ณด๊ณ ํ•˜์‹ญ์‹œ์˜ค.
RankWarning: Polyfit์˜ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Numpy/Python ๋ฒ„์ „ ์ •๋ณด:


ํŒŒ์ด์ฌ 3.7.6
๋„˜ํ”ผ -e git+ https://github.com/numpy/numpy.git@078ac01a85c4db46e7f148829c2e0d0e0f30c36f#egg =numpy

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ฝ๊ฐ„ ๋” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜:

$ rm -v ~/Library/Caches/pip/wheels/<em i="7">/</em>/<em i="8">/</em>/<em i="9">numpy</em> # clear the pip wheel cache of any built numpy wheels

https://twitter.com/pradyunsg/status/1317081239526936576?s=20์— ๋”ฐ๋ผ ์ด์ œ ๋‚ด์žฅ pip ๋ช…๋ น์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ pip cache remove numpy
$ brew install openblas # make sure OpenBLAS is installed
$ # activate your pypy3 virtualenv
$ OPENBLAS="$(brew --prefix openblas)" pip install numpy # let numpy's setup.py know where OpenBLAS is installed

์ด๊ฒƒ์€ ํœ ์„ ๋‹ค์‹œ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๊ณ  pypy3์˜ ๋ชจ๋“  ํ–ฅํ›„ pip install numpy ๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ถ”๊ฐ€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  31 ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์˜๋„์ ์œผ๋กœ ์„ค๊ณ„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๊นŒ? ๋ถˆ๋ช…ํ™•ํ•˜๋‹ค?

๊ทธ๋Ÿฌ๋ฉด Accelerate ๋ฐฑ์—”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ด ์˜ค๋ฅ˜๋ฅผ ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฒ€์ƒ‰ํ–ˆ๋Š”๋ฐ ๋‚ด MacOS์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@billlyzhaoyh ๋Œ€์‹  MacOS์—์„œ ๋นŒ๋“œํ•˜๋Š” ๋™์•ˆ OpenBLAS๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ repo ๋””๋ ‰ํ† ๋ฆฌ์—์„œ site.cfg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค.

ํ์‡„. Accelerate๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ์‡„. Accelerate๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก , ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜์ง€? ๋‚ด macOS์—์„œ ๊ฐ„๋‹จํ•œ import numpy ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž์‹ ๋งŒ์˜ NumPy๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด OpenBlas๋ฅผ ๋ฐ›์œผ์‹ญ์‹œ์˜ค. python3 tools/openblas_support.py ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์‹ ํœ ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ธ‰์ž์˜ NumPy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Accelerate๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ๋ฌผ์–ด๋ณด์‹ญ์‹œ์˜ค.

์ž์‹ ๋งŒ์˜ NumPy๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด OpenBlas๋ฅผ ๋ฐ›์œผ์‹ญ์‹œ์˜ค. python3 tools/openblas_support.py ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์‹ ํœ ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ธ‰์ž์˜ NumPy๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Accelerate๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ๋ฌผ์–ด๋ณด์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ํ™•์‹คํžˆ ๋‚˜ ํ˜ผ์ž ์ง“๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ €๋Š” macOS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  pip3 install -U numpy ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ "์ œ๊ณต์ž"๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

Pip์€ ๋“ฑ ๋’ค์—์„œ ์†Œ์Šค๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ ์ด์ƒ ๊ฑธ๋ฆฌ๋ฉด ์ปดํŒŒ์ผ ์ค‘์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pip๊ฐ€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํœ ๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

pip3 install --upgrade --only-binary :all: <package>

numpy๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  --only-binary :all: ์ธ์ˆ˜๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ( pip ๋ฅผ pip3 ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜ ํ˜„์žฌ numpy ๋ฒ„์ „์€ 1.19.1์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค)
https://gist.github.com/yatsu/47bdde35e8abbe7d14bbe730342aa9e0#file -numpy-openblas-macos-pip-sh

ํŽธ์ง‘: ์š”์ ์ด ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์™„์ „ํ•œ ์†”๋ฃจ์…˜ ๋ถ™์—ฌ๋„ฃ๊ธฐ :)

# Setup HomeBrew if not already installed: https://brew.sh/
brew install openblas
mkdir /tmp/numpy_local
cd /tmp/numpy_local
pip3 download --no-binary :all: --no-deps numpy
unzip numpy-*.zip  # (assuming there's only one version in this folder)
cd numpy-1.19.1 # the version may be a later version than this

cat > site.cfg <<EOF
[openblas]
libraries = openblas
library_dirs = $(brew --prefix openblas)/lib
include_dirs = $(brew --prefix openblas)/include
runtime_library_dirs = $(brew --prefix openblas)/lib
EOF

pip3 install .
# cleanup
cd /tmp
rm -rf numpy_local

์•ฝ๊ฐ„ ๋” ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜:

$ rm -v ~/Library/Caches/pip/wheels/<em i="7">/</em>/<em i="8">/</em>/<em i="9">numpy</em> # clear the pip wheel cache of any built numpy wheels

https://twitter.com/pradyunsg/status/1317081239526936576?s=20์— ๋”ฐ๋ผ ์ด์ œ ๋‚ด์žฅ pip ๋ช…๋ น์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ pip cache remove numpy
$ brew install openblas # make sure OpenBLAS is installed
$ # activate your pypy3 virtualenv
$ OPENBLAS="$(brew --prefix openblas)" pip install numpy # let numpy's setup.py know where OpenBLAS is installed

์ด๊ฒƒ์€ ํœ ์„ ๋‹ค์‹œ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๊ณ  pypy3์˜ ๋ชจ๋“  ํ–ฅํ›„ pip install numpy ๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ถ”๊ฐ€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ์ณ๋‘๊ณ  ๊ธฐ๋ณธ ๋นŒ๋“œ ๋™์ž‘์ด import ๋„ ํ•  ์ˆ˜ ์—†๋Š” ๊นจ์ง„ ํœ ์„ ์ƒ์„ฑํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๊นจ์ง„ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด "์„ค๊ณ„์ƒ"์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์€ ์–ด๋Š ์ชฝ์ด๋“  ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ๋๋‚  ๋•Œ ์ž์ฒด ํ…Œ์ŠคํŠธ๊ฐ€ ์ด ์ƒํƒœ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ค‘๋‹จ๋˜๋Š” ์ž์ฒด ํ…Œ์ŠคํŠธ๋Š” ํ™˜์˜ํ•  ๋งŒํ•œ ์ถ”๊ฐ€ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. (ํŠนํžˆ "try brew install openblas "์™€ ๊ฐ™์€ ์œ ์šฉํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ)

๋นŒ๋“œ ํ›„ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

openblas๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ macOS์—์„œ ๋นŒ๋“œ๋ฅผ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

OpenBLAS ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ์œ ํšจํ•œ blas ๋ฐฑ์—”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๊ฐ€์†์ž…๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ macOS๋Š” Accelerate๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์•Œ๋ ค์ง„ ์ž˜๋ชป๋œ ๊ณ„์‚ฐ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์‹œ์—๋งŒ ์ด๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Accelerate๋ฅผ ๋” ์ผ์ฐ ๊ฐ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ์ตœ์„ ์€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ ์ด๋Š” ๋งค์šฐ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค.

python-poetry ์‚ฌ์šฉ์ž๊ฐ€ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด๊ฒŒ ๋˜๋ฉด ๋งˆ์ง€๋ง‰ ์ค„์„ OPENBLAS="$(brew --prefix openblas)" poetry add numpy ๋กœ ๋ฐ”๊พธ๋ฉด @glyph ์˜ ์†”๋ฃจ์…˜๋„ ์ž‘๋™ํ•œ๋‹ค๊ณ 

๋‚˜๋Š” ์ด์ „ ๋ฒ„์ „์˜ numpy๋ฅผ ์‹œ๋„ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.
pip3 ์„ค์น˜ numpy==1.18.0

์ด ๋„์›€์„ ๋ฐ”๋ž๋‹ˆ๋‹ค

1.18.0 ์ œ๊ฑฐ ๋ฐ ์„ค์น˜ - ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค! ์œ„์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”^^

๋‚˜๋Š” openblas๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ์ œ์•ˆ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด๊ณ ํ•˜๊ธฐ ์œ„ํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ถฉ๋Œ:

OPENBLAS="$(brew --prefix openblas)" pip install numpy
python -c 'import numpy'

# =>  RuntimeError: Polyfit sanity test emitted a warning, most likely due to using a buggy Accelerate backend. If you compiled yourself, see site.cfg.example for information. Otherwise report this to the vendor that provided NumPy.

๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ:

pip install numpy==1.18.0
python -c 'import numpy'

@fny ์ถœ๋ ฅ์„ ํ™•์ธํ•˜์—ฌ pip๊ฐ€ ์บ์‹œ๋œ ํœ ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์บ์‹œ๋ฅผ ์ง€์›Œ์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@fny ์—…๋ฐ์ดํŠธ๋œ ์ง€์นจ์€ https://github.com/numpy/numpy/issues/15947#issuecomment -686159427์„ ์ฐธ์กฐ

Accelerate๊ฐ€ ์‚ฌ์šฉ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋‚˜์œ BLAS ๊ตฌํ˜„์ธ ์ด์œ ์— ๋Œ€ํ•ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋งํฌ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? "์‚ฌ๊ณผ ๊ฐ€์†์ด ๋‚˜์œ ์ด์œ "๋ผ๊ณ  ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

์ข…ํ•ฉ์ ์ธ ๊ณ ์žฅ์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ Accelerate์—๋Š” ์Šค๋ ˆ๋”ฉ ๋ฌธ์ œ, ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๊ณ  LAPACK์˜ ์˜ค๋ž˜๋œ ๋ฒ„์ „์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ด ์†”๋ฃจ์…˜์€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@orome "์™œ"๋Š” Apple์— ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋“ค์€ ์‹œ์Šคํ…œ์„ ๊ตฌ์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์ด๋ฉฐ NumPy์˜ ๋Œ€๋ถ€๋ถ„ ์ž์› ๋ด‰์‚ฌ ํŒ€์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐฐ์†กํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋…ธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ๋“ค์—๊ฒŒ ํ–ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@orome์— ๊ด€ํ•ด์„œ ๋Š” "์™œ" Apple์—๊ฒŒ ๋ฌผ์–ด๋ณด์‹ญ์‹œ์˜ค... ๋ชจ๋“  ๋ถ„๋…ธ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ๋“ค์—๊ฒŒ

๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์ด ์ง€์‹œ๋˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค (๋‹ค์‹œ)!

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ( pip ๋ฅผ pip3 ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜ ํ˜„์žฌ numpy ๋ฒ„์ „์€ 1.19.1์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค)
https://gist.github.com/yatsu/47bdde35e8abbe7d14bbe730342aa9e0#file -numpy-openblas-macos-pip-sh

ํŽธ์ง‘: ์š”์ ์ด ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์™„์ „ํ•œ ์†”๋ฃจ์…˜ ๋ถ™์—ฌ๋„ฃ๊ธฐ :)

# Setup HomeBrew if not already installed: https://brew.sh/
brew install openblas
mkdir /tmp/numpy_local
cd /tmp/numpy_local
pip3 download --no-binary :all: --no-deps numpy
unzip numpy-*.zip  # (assuming there's only one version in this folder)
cd numpy-1.19.1 # the version may be a later version than this

cat > site.cfg <<EOF
[openblas]
libraries = openblas
library_dirs = $(brew --prefix openblas)/lib
include_dirs = $(brew --prefix openblas)/include
runtime_library_dirs = $(brew --prefix openblas)/lib
EOF

pip3 install .
# cleanup
cd /tmp
rm -rf numpy_local

์ด๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๋“  ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. I๋Š” ์†Œ์Šค OpenBLAS๋ฅผ ์ปดํŒŒ์ผ์— ์„ค์น˜ /opt/OpenBLAS ๋ฐ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ๊ต์ฒด $(brew --prefix openblas) ์™€ /opt/OpenBLAS . ๋‚ด Python 3 ์„ค์น˜๋Š” Xcode ๋ช…๋ น์ค„ ๋„๊ตฌ์—์„œ ์ด๋ฃจ์–ด์กŒ์œผ๋ฏ€๋กœ pip3 install --user . ๋Œ€์‹  pip3 install . . ๊ทธ ์™ธ์—๋Š” ๋Œ€๋ณธ์„ ์ •ํ™•ํžˆ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ python3 -c "import numpy" ์‹คํ–‰ํ•œ ํ›„ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ์ด์ „๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์Šต๋‹ˆ๋‹ค.

RuntimeError: Polyfit ์˜จ์ „์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” Accelerate ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ์ง์ ‘ ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ site.cfg.example์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumPy๋ฅผ ์ œ๊ณตํ•œ ๊ณต๊ธ‰์—…์ฒด์— ์ด๋ฅผ ๋ณด๊ณ ํ•˜์‹ญ์‹œ์˜ค.
RankWarning: Polyfit์˜ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์–ด๋–ค ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

pip install pandas
pip3 install pandas
pip3 install pandas --no-build-isolation --no-cache-dir
sudo pip3 install pandas --no-cache-dir

๋ฌธ์ œ ์„ค๋ช…

macOS Big Sur๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ•˜๊ณ  Homebrew๋ฅผ ํ†ตํ•ด Python3.9๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค( brew install python3 ). ๊ทธ ํ›„ brew install pip ๋ช…๋ น์œผ๋กœ pip3์„ ์„ค์น˜ํ–ˆ๊ณ  Pandas๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ํ•ญ์ƒ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์œ„์— ๋‚˜์—ด๋œ ๋ชจ๋“  ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ macOS Big Sur ๋ฐ Python3์— Pandas๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค...

๋ˆ„๊ตฌ๋“ ์ง€ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค์Œ์€ ์‹ค์ œ๋กœ ์„ค์น˜๋œ ์œ ์ผํ•œ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ๋ฒ„์ „


ํ• 20.2.4
์„ค์ • ๋„๊ตฌ 50.3.2
ํœ  0.35.1

์˜ˆ์ƒ ์ถœ๋ ฅ

pip install pandas ์ถœ๋ ฅ

ํœ ์„ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ๊ฐ€์ ธ์˜ค๊ธฐ ... ์˜ค๋ฅ˜
์˜ค๋ฅ˜: ์ข…๋ฃŒ ์ƒํƒœ 1๊ณผ ํ•จ๊ป˜ ๋ช…๋ น ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ช…๋ น : / usr / ์ง€๋ฐฉ / ์˜ต์…˜ / [email protected]/bin/python3.9 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel์˜ / var / ํด๋” / ZV / 0q58rjv549bd4qjdqlrwlvl40000gn/T/tmpzr3sthd6
cwd: /private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-install-pvlaq6iq/pandas
์ „์ฒด ์ถœ๋ ฅ(23์ค„):
init_dgelsd ์ดˆ๊ธฐํ™” ์‹คํŒจ
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", 280ํ–‰,
๊ธฐ๋ณธ()
ํŒŒ์ผ "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", 263ํ–‰, ๋ฉ”์ธ
json_out['return_val'] = hook(**hook_input['kwargs'])
get_requires_for_build_wheel์˜ ํŒŒ์ผ "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", 114ํ–‰
๋ฆฌํ„ด ํ›„ํฌ(config_settings)
ํŒŒ์ผ "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", get_build_rewheel_for ํ–‰ 14
๋ฐ˜ํ™˜ self._get_build_requires(
ํŒŒ์ผ "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", inquire _gets_0
self.run_setup()
ํŒŒ์ผ "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.3", 25ํ–‰ ์‹คํ–‰
super(_BuildMetaLegacyBackend,
ํŒŒ์ผ "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", run_setup ํ–‰ 14
exec(compile(code, __file__, 'exec'), locals())
ํŒŒ์ผ "setup.py", 488ํ–‰,
numpy๋ฅผ np๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
ํŒŒ์ผ "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/numpy/__init__.py", ์ค„ 286,
๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜(msg) ๋ฐœ์ƒ
RuntimeError: Polyfit ์˜จ์ „์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” Accelerate ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. ์ง์ ‘ ์ปดํŒŒ์ผํ•œ ๊ฒฝ์šฐ ์ž์„ธํ•œ ๋‚ด์šฉ์€ site.cfg.example์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด NumPy๋ฅผ ์ œ๊ณตํ•œ ๊ณต๊ธ‰์—…์ฒด์— ์ด๋ฅผ ๋ณด๊ณ ํ•˜์‹ญ์‹œ์˜ค.
RankWarning: Polyfit์˜ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ERROR : ๋ช…๋ น์ด ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋ฐ–์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ 1 : / usr / ์ง€๋ฐฉ / ์˜ต์…˜ / [email protected]/bin/python3.9 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/tmpzr3sthd6 ์ „์ฒด ๋ช…๋ น ์ถœ๋ ฅ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด๋ฒˆ ํ˜ธ Pandas#37880์—์„œ ๊ทธ๋“ค์€ ์ด๊ฒƒ์ด ์ตœ์‹  ๋ฒ„์ „์˜ macOS์— ๋Œ€ํ•œ numpy ๋ฌธ์ œ๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์…จ๋‚˜์š”??

๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋™์ผํ•œ ์˜ค๋ฅ˜์™€ ๋™์ผํ•œ ๋ฌธ์ œ

์ด๊ฒƒ์€ MacOS 11.0.1 Big Sur, Python 3.8.2 ์—์„œ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

pip3 install --force-reinstall numpy\<1.19
pip3 install --upgrade wheel

brew install libjpeg # optional
pip3 install pillow # optional
pip3 install matplotlib

....

Successfully installed matplotlib-3.3.3 

์ด ๋ฌธ์ œ๋Š” ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HomeBrew์—์„œ ์„ค์น˜ํ•œ Python๊ณผ ํ•จ๊ป˜ MacOS 11์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 2020๋…„ 11์›” ํ˜„์žฌ brew install NumPy ์•„๋‹Œ pip install numpy brew install NumPy ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. gh-17784๋ฅผ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์–ด๋„ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€ ์•Š์œผ๋ฉด ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ์ง€ ๋ง๊ณ  ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
https://gist.github.com/mohammadnassiri/31ca8f4f2298d8694a8327814631455c

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰