Numpy: Buggy Accelerate Backend عند استخدام numpy 1.19

تم إنشاؤها على ٩ أبريل ٢٠٢٠  ·  31تعليقات  ·  مصدر: numpy/numpy

لا يمكن استيراد Numpy 1.19 بسبب خطأ وقت التشغيل في MacOS 10.14.6. أصدر اختبار سلامة Polyfit تحذيرًا ، ويرجع ذلك على الأرجح إلى استخدام الواجهة الخلفية لعربات التي تجرها الدواب. إذا جمعت نفسك ، فراجع site.cfg.example للحصول على معلومات. بخلاف ذلك ، أبلغ البائع الذي قدم NumPy بهذا الأمر.

مثال على إعادة إنتاج الكود:

import numpy as np

رسالة خطأ:

خطأ وقت التشغيل: أصدر اختبار سلامة Polyfit تحذيرًا ، ويرجع ذلك على الأرجح إلى استخدام خلفية برنامج تسريع عربات التي تجرها الدواب. إذا جمعت نفسك ، فراجع site.cfg.example للحصول على معلومات. بخلاف ذلك ، أبلغ البائع الذي قدم NumPy بهذا الأمر.
تحذير: قد تكون حالة Polyfit سيئة

Traceback (آخر مكالمة أخيرة):
ملف "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py" ، السطر 183 ، في _run_module_as_main
mod_name، mod_spec، code = _get_module_details (mod_name، _Error)
ملف "/Users/billyzhaoyh/anaconda/envs/simulation/lib/python3.7/runpy.py" ، السطر 109 ، في _get_module_details
__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 ، في
من مجموعات بيانات التحميل
ملف "/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 ، في
رفع RuntimeError (msg)
خطأ وقت التشغيل: أرسل اختبار سلامة Polyfit تحذيرًا ، ويرجع ذلك على الأرجح إلى استخدام واجهة خلفية لعربات التي تجرها الدواب. إذا جمعت نفسك ، فراجع site.cfg.example للحصول على معلومات. بخلاف ذلك ، أبلغ البائع الذي قدم NumPy بهذا الأمر.
تحذير: قد تكون حالة Polyfit سيئة

معلومات إصدار Numpy / 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

هذا له فائدة إضافية تتمثل في أن العجلة لن تحتاج إلى إعادة بنائها ، وستعمل أي pip install numpy في المستقبل على pypy3.

ال 31 كومينتر

هذا حسب التصميم. هل قرأت رسالة الخطأ؟ هل هو غير واضح؟

فكيف يمكنني إصلاح هذا الخطأ بتحديث الواجهة الخلفية للتسريع؟ لقد أجريت بحثًا ولا أعتقد أنه يمكنني تحديث ذلك لجهاز MacOS الخاص بي.

billlyzhaoyh طلب استخدام OpenBLAS أثناء البناء على MacOS بدلاً من ذلك. استخدم site.cfg في دليل الريبو الجذري لإنشاء ملف.

إغلاق. نوصي بشدة بعدم استخدام Accelerate.

إغلاق. نوصي بشدة بعدم استخدام Accelerate.

بالتأكيد ، كيف لا نستخدمه؟ لقد حصلت على نفس الخطأ عند تشغيل بسيط import numpy في macOS الخاص بي

إذا كنت تقوم ببناء NumPy الخاص بك ، فاحصل على OpenBlas. يمكنك استخدام python3 tools/openblas_support.py لتنزيل العنصر المستخدم لبناء العجلة الرسمية. إذا كنت تستخدم NumPy الخاص بالموفر ، فاسألهم عن سبب استخدامهم لـ Accelerate.

إذا كنت تقوم ببناء NumPy الخاص بك ، فاحصل على OpenBlas. يمكنك استخدام python3 tools/openblas_support.py لتنزيل العنصر المستخدم لبناء العجلة الرسمية. إذا كنت تستخدم NumPy الخاص بالموفر ، فاسألهم عن سبب استخدامهم لـ Accelerate.

أنا بالتأكيد لا أبني بمفردي. أنا أستخدم macOS ، وأقوم بتشغيل pip3 install -U numpy ، لذا لست متأكدًا من معنى كلمة "المزود" بهذا.

يمكن أن تتكون النقطة من مصدر خلف ظهرك. إذا استغرق التثبيت أكثر من بضع ثوانٍ ، فقد يكون قد تم تجميعه. لإجبار النقطة على استخدام العجلات الثنائية فقط وعدم التجميع مطلقًا ، استخدم

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

هل يمكنك محاولة إلغاء تثبيت numpy والتثبيت باستخدام الوسيطة --only-binary :all: ؟

هذا أصلح المشكلة بالنسبة لي. (لقد استبدلت pip بـ pip3 ... وستكون النسخة الفارغة اعتبارًا من اليوم 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

هذا له فائدة إضافية تتمثل في أن العجلة لن تحتاج إلى إعادة بنائها ، وستعمل أي pip install numpy في المستقبل على pypy3.

بغض النظر عن الحلول البديلة ، لماذا السلوك الافتراضي للبناء لإنتاج عجلة مكسورة لا يمكنها حتى import ؟ يبدو أن بناء مثل هذه القطع الأثرية المكسورة "حسب التصميم" هو خلل في كلتا الحالتين ؛ سيكون الاختبار الذاتي في نهاية البناء الذي يتم إحباطه إذا وجد نفسه في هذه الحالة إضافة مرحب بها. (خاصةً إذا كان يمكن أن يوفر رسالة خطأ مفيدة مثل "جرب brew install openblas " أو شيء من هذا القبيل.)

تبدو محاولة الاستيراد بعد الإنشاء فكرة جيدة.

لماذا لا ترفض ببساطة البناء على macOS إذا لم يتم العثور على openblas؟

هناك العديد من الخلفيات الخلفية الصالحة ، بالإضافة إلى OpenBLAS. الشيء الوحيد غير الصالح هو التسريع. لسوء الحظ ، لا يوفر macOS طريقة لإخبارنا أنهم يقدمون Accelerate ، ولا يمكننا اكتشافه إلا في وقت التشغيل من خلال تشغيل عملية حسابية سيئة معروفة. إذا كان بإمكانك معرفة كيفية اكتشاف Accelerate مسبقًا فسيكون ذلك رائعًا. أفضل ما لدينا حتى الآن هو اكتشاف ارتباط رمزي ، لكنه هش للغاية.

إذا صادف أي مستخدم من مستخدمي python-poetry هذا الموضوع ، أود فقط أن أضيف أن حل glyph يعمل أيضًا إذا استبدلت السطر الأخير بـ OPENBLAS="$(brew --prefix openblas)" poetry add numpy

لقد جربت إصدارًا سابقًا من 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 تحقق من الإخراج لمعرفة ما إذا كانت النقطة تستخدم عجلة مخزنة مؤقتًا. قد تضطر إلى مسح ذاكرة التخزين المؤقت في هذه الحالة.

fny راجع https://github.com/numpy/numpy/issues/15947#issuecomment -686159427 للحصول على إرشادات محدثة

هل يمكن لأي شخص توفير رابط يمكن للمرء أن يقرأ فيه عن سبب كون Accelerate تطبيقًا سيئًا لـ BLAS والذي لا ينبغي استخدامه؟ حاولت البحث في googling "لماذا يُعد تسريع التفاح أمرًا سيئًا" ولم أجد شيئًا.

لا أعرف أين يوجد الانهيار الشامل ، لكن Accelerate به مشكلات ترابط ، وبعض النتائج الخاطئة ، ويكشف عن إصدار قديم من LAPACK.

للإشارة فشل هذا الحل . لماذا لا يعمل هذا؟ ولماذا أي من هذا ضروري؟

orome بالنسبة لـ "لماذا" اسأل Apple. إنهم الأشخاص الذين اشتريت النظام منهم ويقومون بشحن برامج عربات التي تجرها الدواب والتي يتعين على فريق NumPy المتطوع في الغالب حلها. أي غضب يجب أن يوجه إليهم لا علينا.

orome أما بالنسبة لـ "لماذا" اسأل آبل .. أي غضب يجب أن يوجه إليهم وليس علينا.

هذا بالتأكيد حيث يتم توجيهه (مرة أخرى)!

هذا أصلح المشكلة بالنسبة لي. (لقد استبدلت pip بـ pip3 ... وستكون النسخة الفارغة اعتبارًا من اليوم 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" ، تظهر رسالة الخطأ تمامًا كما كانت من قبل:

خطأ وقت التشغيل: أرسل اختبار سلامة Polyfit تحذيرًا ، ويرجع ذلك على الأرجح إلى استخدام واجهة خلفية لعربات التي تجرها الدواب. إذا جمعت نفسك ، فراجع 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 وتثبيتًا نظيفًا لـ Python3.9 عبر Homebrew ( brew install python3 ). بعد ذلك قمت بتثبيت pip3 باستخدام الأمر brew install pip وأردت تثبيت Pandas ولكني أتلقى دائمًا الخطأ التالي. لقد حاولت باستخدام جميع الأوامر المذكورة أعلاه تثبيت Pandas على macOS Big Sur و Python3 ...

يمكن لأي شخص أن يساعد؟ هذه هي الحزم الوحيدة المثبتة بالفعل:

إصدار الحزمة


النقطة 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: / خاص / فار / مجلدات / zv / 0q58rjv549bd4qjdqlrwlvl40000gn / T / pip-install-pvlaq6iq / pandas
الإخراج الكامل (23 سطراً):
init_dgelsd فشل init
Traceback (آخر مكالمة أخيرة):
ملف "/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_input ['kwargs'])
ملف "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py" ، السطر 114 ، في get_requires_for_build_wheel
عودة هوك (config_settings)
ملف "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py" ، سطر 149 ، في get_quires
العودة الذاتية ._get_build_requires (
ملف "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py"، line 130_requires
self.run_setup ()
ملف "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_metupa.py" ، السطر 253
سوبر (_BuildMetaLegacyBackend ،
ملف "/private/var/folders/zv/0q58rjv549bd4qjdqlrwlvl40000gn/T/pip-build-env-ly4c8n5_/overlay/lib/python3.9/site-packages/setuptools/build_meta.py" ، السطر 145 ، في run_meta.py "
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)
خطأ وقت التشغيل: أرسل اختبار سلامة Polyfit تحذيرًا ، ويرجع ذلك على الأرجح إلى استخدام واجهة خلفية لعربات التي تجرها الدواب. إذا جمعت نفسك ، فراجع 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. أي مساعدة؟؟

شكرا لك مقدما!

نفس المشكلة مع نفس الخطأ

نجح هذا بالنسبة لي على 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 

تم إغلاق هذه القضية. إذا كنت تستخدم MacOS 11 مع python قمت بتثبيته من HomeBrew ، اعتبارًا من نوفمبر 2020 ، يجب عليك استخدام brew install NumPy وليس pip install numpy . من فضلك لا تعلق هنا ، افتح عددًا جديدًا إذا كانت القراءة المتأنية لـ gh-17784 لا تساعدك على معرفة ما يجري.

ساعدتني هذه الخطوات في حل المشكلة:
https://gist.github.com/mohammadnassiri/31ca8f4f2298d8694a8327814631455c

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

astrofrog picture astrofrog  ·  4تعليقات

navytux picture navytux  ·  4تعليقات

Levstyle picture Levstyle  ·  3تعليقات

dmvianna picture dmvianna  ·  4تعليقات

qualiaa picture qualiaa  ·  3تعليقات