Numpy: numpy1.19を使用するとバギーがバックエンドを加速する

作成日 2020å¹´04月09日  Â·  31コメント  Â·  ソース: numpy/numpy

MacOS 10.14.6の実行時エラーのため、Numpy1.19をインポートできません。 Polyfitの健全性テストで警告が発生しました。これは、バグのあるAccelerateバックエンドを使用していることが原因である可能性があります。 自分でコンパイルした場合は、site.cfg.exampleを参照してください。 それ以外の場合は、NumPyを提供したベンダーにこれを報告してください。

コード例の再現:

import numpy as np

エラーメッセージ:

RuntimeError:Polyfitの健全性テストで警告が発生しました。これは、バグのあるAccelerateバックエンドを使用していることが原因である可能性があります。 自分でコンパイルした場合は、site.cfg.exampleを参照してください。 それ以外の場合は、NumPyを提供したベンダーにこれを報告してください。
ランク警告:Polyfitの状態が悪い可能性があります

トレースバック(最後の最後の呼び出し):
_run_module_as_mainのファイル "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py"、行183
mod_name、mod_spec、code = _get_module_details(mod_name、_Error)
_get_module_detailsのファイル "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py"、行109
__import __(pkg_name)
ファイル "/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/__init__.py"、1行目
.utilsからインポートcalcfunc
ファイル "/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/utils.py"、9行目
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行目
from .tools.command import(
ファイル "/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、
RuntimeError(msg)を発生させます
RuntimeError:Polyfitの健全性テストで警告が発生しました。これは、バグのあるAccelerateバックエンドを使用していることが原因である可能性があります。 自分でコンパイルした場合は、site.cfg.exampleを参照してください。 それ以外の場合は、NumPyを提供したベンダーにこれを報告してください。
ランク警告:Polyfitの状態が悪い可能性があります

Numpy / Pythonのバージョン情報:


Python 3.7.6
Numpy -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を使用するように要求しています。 ルートリポジトリディレクトリの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にバイナリホイールのみを使用させ、コンパイルしないようにするには、次を使用します。

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すらできない壊れたホイールが生成されるのはなぜですか? このような壊れたアーティファクトを構築することは「設計による」ように思われますが、どちらにしてもバグです。 ビルドの最後に、この状態になったら中止するセルフテストは、歓迎すべき追加です。 (特に、「 brew install openblas試してください」などの有用なエラーメッセージが表示される場合は特にそうです。)

ビルド後にインポートしようとするのは良い考えのように思えます。

openblasが見つからない場合は、macOSでのビルドを単に拒否しないのはなぜですか?

OpenBLASの他に、さまざまな有効なblasバックエンドがあります。 無効なのはAccelerateだけです。 残念ながら、macOSは、Accelerateを提供していることを通知する方法を提供していません。実行時に、既知の不正な計算をトリガーすることによってのみ検出できます。 Accelerateを早期に検出する方法を理解できれば、それは素晴らしいことです。 これまでのところ、シンボリックリンクを検出するのが最善ですが、それは非常に脆弱です。

python-poetryユーザーがこのスレッドに出くわした場合、最後の行をOPENBLAS="$(brew --prefix openblas)" poetry add numpy置き換えるだけで、 @ glyphのソリューションも機能することを追加したいと思います。

以前のバージョンのnumpyを試しましたが、うまくいきました
pip3 install 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

これはどういうわけか私にはうまくいきませんでした。 私はソースから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を提供したベンダーにこれを報告してください。
ランク警告: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( brew install python3 )を介したPython3.9のクリーンインストールを実行しました。 その後、 brew install pipコマンドでpip3をインストールし、Pandasをインストールしたかったのですが、常に次のエラーが発生します。 上記のすべてのコマンドを使用して、macOS BigSurおよびPython3にPandasをインストールしてみました...

誰でも助けることができますか? 実際にインストールされるパッケージは次のとおりです。

パッケージバージョン


ピップ20.2.4
setuptools 50.3.2
ホイール0.35.1

期待される出力

pip install pandas出力

ホイールを構築するための要件を取得しています...エラー
エラー:コマンドが終了ステータス1でエラーになりました。
コマンド:/ usr / local / opt / [email protected]/bin/python3.9 /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel / var / folder / zv / 0q58rjv549bd4qjdqlrwlvl40000gn / T / tmpzr3sthd6
cwd:/ private / var / folder / zv / 0q58rjv549bd4qjdqlrwlvl40000gn / T / pip-install-pvlaq6iq / pandas
完全な出力(23行):
init_dgelsdがinitに失敗しました
トレースバック(最後の最後の呼び出し):
ファイル "/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)
get_requires_for_build_wheelのファイル "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py"、行149
self._get_build_requires(を返します
ファイル "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py"、行130、_get_build_requires
self.run_setup()
ファイル "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py"、253行目、run_setup
super(_BuildMetaLegacyBackend、
run_setupのファイル "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py"、行145
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、
RuntimeError(msg)を発生させます
RuntimeError:Polyfitの健全性テストで警告が発生しました。これは、バグのあるAccelerateバックエンドを使用していることが原因である可能性があります。 自分でコンパイルした場合は、site.cfg.exampleを参照してください。 それ以外の場合は、NumPyを提供したベンダーにこれを報告してください。
ランク警告:Polyfitの状態が悪い可能性があります


エラー:コマンドが終了ステータス1でエラーになりました:/ usr / local / opt / [email protected]/bin/python3.9/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel / var / folder / zv / 0q58rjv549bd4qjdqlrwlvl40000gn / T / tmpzr3sthd6完全なコマンド出力のログを確認します。

この号のPandas#37880では、最新バージョンのmacOSでは

前もって感謝します!

同じエラーで同じ問題

これはMacOS11.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でMacOS11を使用している場合、2020年11月の時点で、 brew install NumPyではなくpip install numpy brew install NumPyを使用する必要があります。 ここにコメントしないでください。gh-17784を注意深く読んでも何が起こっているのか理解できない場合は、新しい問題を開いてください。

これらの手順は、問題の解決に役立ちました。
https://gist.github.com/mohammadnassiri/31ca8f4f2298d8694a8327814631455c

このページは役に立ちましたか?
0 / 5 - 0 評価