Numpy: Buggy Mempercepat Backend saat menggunakan numpy 1.19

Dibuat pada 9 Apr 2020  ·  31Komentar  ·  Sumber: numpy/numpy

Numpy 1.19 tidak dapat mengimpor karena kesalahan waktu berjalan di MacOS 10.14.6. Tes kewarasan Polyfit mengeluarkan peringatan, kemungkinan besar karena menggunakan backend Accelerate buggy. Jika Anda mengkompilasi sendiri, lihat site.cfg.example untuk informasi. Jika tidak, laporkan ini ke vendor yang menyediakan NumPy.

Contoh kode reproduksi:

import numpy as np

Pesan eror:

RuntimeError: Uji kewarasan Polyfit mengeluarkan peringatan, kemungkinan besar karena menggunakan backend Accelerate buggy. Jika Anda mengkompilasi sendiri, lihat site.cfg.example untuk informasi. Jika tidak, laporkan ini ke vendor yang menyediakan NumPy.
Peringatan Peringkat: Polyfit mungkin dikondisikan dengan buruk

Traceback (panggilan terakhir terakhir):
File "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py", baris 183, di _run_module_as_main
mod_name, mod_spec, kode = _get_module_details(mod_name, _Error)
File "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py", baris 109, di _get_module_details
__import__(pkg_name)
File "/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/__init__.py", baris 1, di
dari .utils impor calcfunc
File "/Users/billyzhaoyh/Desktop/Simulation/reina-model/calc/utils.py", baris 9, di
dari utils.quilt impor load_datasets
File "/Users/billyzhaoyh/Desktop/Simulation/reina-model/utils/quilt.py", baris 4, di
selimut impor
File "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/site-packages/quilt/__init__.py", baris 87, di
dari .tools.command impor (
File "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/site-packages/quilt/tools/command.py", baris 24, di
impor numpy sebagai np
File "/Users/billyzhaoyh/Desktop/Simulation/reina-model/src/numpy/numpy/__init__.py", baris 286, di
meningkatkan RuntimeError(msg)
RuntimeError: Uji kewarasan Polyfit mengeluarkan peringatan, kemungkinan besar karena menggunakan backend Accelerate buggy. Jika Anda mengkompilasi sendiri, lihat site.cfg.example untuk informasi. Jika tidak, laporkan ini ke vendor yang menyediakan NumPy.
Peringatan Peringkat: Polyfit mungkin dikondisikan dengan buruk

Informasi versi Numpy/Python:


Python 3.7.6
Numpy -e git+ https://github.com/numpy/numpy.git@078ac01a85c4db46e7f148829c2e0d0e0f30c36f#egg =numpy

Komentar yang paling membantu

Solusi yang sedikit lebih sederhana:

$ 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

Per https://twitter.com/pradyunsg/status/1317081239526936576?s=20 ini sekarang dapat dilakukan dengan perintah pip bawaan:

$ 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

Ini memiliki manfaat tambahan bahwa roda tidak perlu dibangun kembali, dan pip install numpy di masa depan di pypy3 akan berfungsi.

Semua 31 komentar

Ini adalah dengan desain. Apakah Anda membaca pesan kesalahan? Apakah tidak jelas?

jadi bagaimana saya bisa memperbaiki kesalahan ini, dengan memperbarui backend Accelerate? Saya melakukan pencarian dan tidak berpikir saya dapat memperbaruinya untuk MacOS saya.

@billlyzhaoyh Meminta untuk menggunakan OpenBLAS saat membangun di MacOS. Gunakan site.cfg di direktori root repo untuk membangun menggunakan yang sama.

Penutupan. Kami sangat menyarankan untuk tidak menggunakan Accelerate.

Penutupan. Kami sangat menyarankan untuk tidak menggunakan Accelerate.

Tentu, bagaimana kita tidak menggunakannya? Saya mendapatkan kesalahan yang sama ketika menjalankan import numpy di macOS

Jika Anda sedang membangun NumPy Anda sendiri, dapatkan OpenBlas. Anda dapat menggunakan python3 tools/openblas_support.py untuk mengunduh yang digunakan untuk membuat roda resmi. Jika Anda menggunakan NumPy penyedia, tanyakan mengapa mereka menggunakan Accelerate.

Jika Anda sedang membangun NumPy Anda sendiri, dapatkan OpenBlas. Anda dapat menggunakan python3 tools/openblas_support.py untuk mengunduh yang digunakan untuk membuat roda resmi. Jika Anda menggunakan NumPy penyedia, tanyakan mengapa mereka menggunakan Accelerate.

Saya jelas tidak membangun sendiri. Saya menggunakan macOS, dan menjalankan pip3 install -U numpy , jadi saya tidak yakin apa "penyedia" yang Anda maksud dengan itu.

Pip dapat membangun dari sumber di belakang Anda. Jika dibutuhkan lebih dari beberapa detik untuk menginstal, mungkin kompilasi. Untuk memaksa pip hanya menggunakan roda biner dan tidak pernah mengkompilasi, gunakan

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

Bisakah Anda mencoba untuk menghapus numpy Anda dan menginstal dengan argumen --only-binary :all: ?

Ini memperbaiki masalah bagi saya. (Saya mengganti pip dengan pip3 ... dan versi numpy hari ini adalah 1.19.1)
https://Gist.github.com/yatsu/47bdde35e8abbe7d14bbe730342aa9e0#file -numpy-openblas-macos-pip-sh

EDIT: Menempelkan solusi lengkap jika Gist dihapus :)

# 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

Solusi yang sedikit lebih sederhana:

$ 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

Per https://twitter.com/pradyunsg/status/1317081239526936576?s=20 ini sekarang dapat dilakukan dengan perintah pip bawaan:

$ 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

Ini memiliki manfaat tambahan bahwa roda tidak perlu dibangun kembali, dan pip install numpy di masa depan di pypy3 akan berfungsi.

Selain solusi, mengapa perilaku build default menghasilkan roda rusak yang bahkan tidak bisa import ? Sepertinya "dengan desain" untuk membangun artefak yang rusak seperti itu adalah bug; swa-uji di akhir build yang dibatalkan jika menemukan dirinya dalam keadaan ini akan menjadi tambahan yang disambut baik. (Terutama jika itu bisa memberikan pesan kesalahan yang bermanfaat seperti "coba brew install openblas " atau semacamnya.)

Mencoba mengimpor setelah build terdengar seperti ide yang bagus.

Mengapa tidak menolak untuk membangun macOS jika openblas tidak ditemukan?

Ada berbagai backend blas yang valid, selain OpenBLAS. Satu-satunya yang tidak valid adalah Percepat. Sayangnya, macOS tidak menyediakan cara untuk memberi tahu kami bahwa mereka menyediakan Percepatan, kami hanya dapat mendeteksinya saat runtime dengan memicu penghitungan buruk yang diketahui. Jika Anda dapat mengetahui cara mendeteksi Accelerate lebih awal, itu akan sangat bagus. Yang terbaik yang kami miliki sejauh ini adalah mendeteksi symlink, tetapi itu sangat rapuh.

Jika ada pengguna python-poetry menemukan utas ini, saya hanya ingin menambahkan bahwa solusi @glyph juga berfungsi jika Anda hanya mengganti baris terakhir dengan OPENBLAS="$(brew --prefix openblas)" poetry add numpy

Saya sudah mencoba versi numpy sebelumnya dan berhasil untuk saya
pip3 instal numpy==1.18.0

Semoga membantu

hapus instalan dan instal 1.18.0 -- berhasil untuk saya! pujian untuk yang di atas ^^

Saya di sini untuk melaporkan bahwa saran untuk menggunakan openblas tidak berfungsi. Ini macet:

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.

sementara ini berfungsi tanpa masalah:

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

@fny periksa output untuk melihat apakah pip menggunakan roda yang di-cache. Anda mungkin harus menghapus cache dalam kasus itu.

@fny lihat https://github.com/numpy/numpy/issues/15947#issuecomment -686159427 untuk instruksi yang diperbarui

Adakah yang bisa memberikan tautan di mana orang dapat membaca tentang mengapa Percepatan adalah implementasi BLAS yang buruk yang tidak boleh digunakan? Saya mencoba googling "mengapa akselerasi apel adalah bla yang buruk" dan tidak menemukan apa pun.

Saya tidak tahu di mana perincian komprehensif, tetapi Accelerate memiliki masalah threading, beberapa hasil yang salah, dan memperlihatkan versi LAPACK yang sudah ketinggalan zaman.

Untuk referensi solusi ini gagal. Mengapa ini tidak bekerja? Dan mengapa semua ini bahkan diperlukan?

@orome untuk "mengapa" tanya Apple. Merekalah yang Anda beli sistemnya dan mengirimkan perangkat lunak buggy yang harus diselesaikan oleh sebagian besar tim sukarelawan NumPy. Kemarahan apa pun harus diarahkan pada mereka, bukan pada kita.

@orome untuk "mengapa" tanya Apple ... Kemarahan apa pun harus diarahkan pada mereka, bukan pada kami.

Itu pasti di mana itu diarahkan (lagi)!

Ini memperbaiki masalah bagi saya. (Saya mengganti pip dengan pip3 ... dan versi numpy hari ini adalah 1.19.1)
https://Gist.github.com/yatsu/47bdde35e8abbe7d14bbe730342aa9e0#file -numpy-openblas-macos-pip-sh

EDIT: Menempelkan solusi lengkap jika Gist dihapus :)

# 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

Ini entah bagaimana tidak berhasil untuk saya. Saya mengkompilasi OpenBLAS dari sumber dan menginstalnya di /opt/OpenBLAS , dan mengganti setiap kemunculan $(brew --prefix openblas) dengan /opt/OpenBLAS . Instalasi Python 3 saya berasal dari alat baris perintah Xcode, jadi saya menggunakan pip3 install --user . alih-alih pip3 install . . Selain itu saya mengikuti skrip dengan tepat. Namun, setelah saya menjalankan python3 -c "import numpy" , pesan kesalahannya persis seperti sebelumnya:

RuntimeError: Uji kewarasan Polyfit mengeluarkan peringatan, kemungkinan besar karena menggunakan backend Accelerate buggy. Jika Anda mengkompilasi sendiri, lihat site.cfg.example untuk informasi. Jika tidak, laporkan ini ke vendor yang menyediakan NumPy.
Peringatan Peringkat: Polyfit mungkin dikondisikan dengan buruk

Adakah ide mengapa ini bisa terjadi?

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

Deskripsi masalah

Saya telah melakukan instalasi bersih macOS Big Sur dan instalasi bersih Python3.9 melalui Homebrew ( brew install python3 ). Setelah itu saya menginstal pip3 dengan perintah brew install pip dan saya ingin menginstal Pandas tetapi saya selalu mendapatkan kesalahan berikut. Saya sudah mencoba dengan semua perintah yang tercantum di atas untuk menginstal Pandas di macOS Big Sur dan Python3...

Ada yang bisa bantu? Ini adalah satu-satunya paket yang benar-benar diinstal:

Versi Paket


pip 20.2.4
setuptools 50.3.2
roda 0.35.1

Keluaran yang diharapkan

Keluaran pip install pandas

Mendapatkan persyaratan untuk membuat roda ... kesalahan
GALAT: Perintah salah dengan status keluar 1:
perintah: /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
Keluaran lengkap (23 baris):
init_dgelsd gagal init
Traceback (panggilan terakhir terakhir):
File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", baris 280, di
utama()
File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", baris 263, di main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", baris 114, di get_requires_for_build_wheel
kait kembali (config_settings)
File "/private/var/folder/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", baris 149_, di get_build_wheelfor
kembalikan diri._get_build_requires(
File "/private/var/folder/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", baris 130, di _require_build
diri.run_setup()
File "/private/var/folder/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", baris 253, di run_setup
super(_BuildMetaLegacyBackend,
File "/private/var/folder/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", baris 145, di run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", baris 488, di
impor numpy sebagai np
File "/private/var/folder/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/numpy/__init__.py", baris 286, di
meningkatkan RuntimeError(msg)
RuntimeError: Uji kewarasan Polyfit mengeluarkan peringatan, kemungkinan besar karena menggunakan backend Accelerate buggy. Jika Anda mengkompilasi sendiri, lihat site.cfg.example untuk informasi. Jika tidak, laporkan ini ke vendor yang menyediakan NumPy.
Peringatan Peringkat: Polyfit mungkin dikondisikan dengan buruk


GALAT: Perintah salah dengan status keluar 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/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/tmpzr3sthd6 Periksa log untuk keluaran perintah lengkap.

Dalam masalah ini Pandas#37880 mereka mengatakan bahwa itu adalah masalah numpy dengan versi terbaru macOS. Ada bantuan??

Terima kasih sebelumnya!

masalah yang sama dengan kesalahan yang sama

Ini bekerja untuk saya di 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 

Masalah ini ditutup. Jika Anda menggunakan MacOS 11 dengan python yang Anda instal dari HomeBrew, mulai Nov 2020 Anda harus menggunakan brew install NumPy bukan pip install numpy . Tolong jangan berkomentar di sini, buka edisi baru jika pembacaan gh-17784 yang cermat tidak membantu Anda mengetahui apa yang sedang terjadi.

Langkah-langkah ini membantu saya menyelesaikan masalah:
https://Gist.github.com/mohammadnassiri/31ca8f4f2298d8694a8327814631455c

Apakah halaman ini membantu?
0 / 5 - 0 peringkat