Учебник по установке numpy с OpenBLAS в Windows

Пожалуйста, мне нужен свет здесь. Я хочу установить numpy, используя хорошую библиотеку BLAS/LAPACK в Windows, но абсолютно ни одна страница не объясняет процесс достаточно хорошо. Кажется, OpenBLAS — хороший и быстрый вариант.

Цель состоит в том, чтобы использовать "theano" с "keras", а "theano" требует, чтобы библиотеки были "динамическими", а не статическими. (Не уверен, что понимаю, что это значит, но это вызывает замедление и проблемы с памятью)

Пожалуйста, относитесь ко мне как к полному новичку. Дайте мне пошаговое руководство о том, как это сделать! Не забудьте сказать мне, «куда» файлы должны идти! Какие папки должны идти в PATH! Какие именно команды я должен вызывать, и каковы их результаты, где? Что мне делать с их результатами или с скомпилированными файлами? Как numpy их находит? И т. д. Кажется, что все сайты, которые я видел, думают, что я эксперт по Linux и уже все знаю.

Что я пробовал:

  • Скачал скомпилированную версию numpy+mkl из здесь -- это устанавливает numpy, он становится пригодным для использования, но theano представляет проблему с утечкой памяти, помимо того, что работает медленно. Это вопрос установки правильного ldflags в файле .theanorc? Если да, то какие флаги? - Что касается библиотек MKL, этот ответ может быть полезен?

  • Пробовал установить Анаконду - тоже не работает, и я понятия не имел, что пошло не так. Он выдавал мне сообщения с предложением установить некоторые дополнительные вещи, он работал, но невероятно медленно. Более чем в 10 раз медленнее, чем моя версия с ошибками, упомянутая выше (поэтому неприемлемо, невозможно работать на такой скорости). Если мне нужно изменить все в Anaconda, лучше вместо этого использовать обычный Python и знать, что происходит.

  • Нашел эти уже скомпилированные библиотеки BLAS/LAPACK (.dll и .lib ) файлы. Но.... что мне с ними делать? -- Простое добавление их папок в переменную PATH и установка numpy дает мне "numpy-atlas", а не загруженные мной библиотеки. Как сделать так, чтобы numpy их увидел?

  • Пытался понять эту страницу, но все же, кажется, это приведет меня именно к предыдущий случай, что я буду делать с результатами? Где библиотеки, которые они предлагают мне использовать? Каковы предлагаемые сценарии quickbuild, где они?

  • Вариант Cygwin найден здесь. Я не пробовал, но кажется, что это должно быть проще, чем переустановить все мои python и пакеты, все из Cygwin.


person Daniel Möller    schedule 16.08.2017    source источник
comment
Между тем, я использовал Tensorflow вместо theano, и его производительность кажется лучше, кроме того, что он не взрывает мою память (хотя я слышал, что theano жертвует временем компиляции для создания моделей, которые обучаются быстрее....)   -  person Daniel Möller    schedule 25.08.2017
comment
До сих пор нет правильного решения для этого, не так ли? Почему conda так затрудняет использование программного обеспечения с открытым исходным кодом, в отличие от проприетарного Intel MKL?   -  person Shihab Shahriar Khan    schedule 29.06.2020
comment
и это: github.com/conda-forge/scipy-feedstock/issues/80   -  person djvg    schedule 30.03.2021
comment
и раздел, посвященный ускоренным библиотекам линейной алгебры в пустые документы   -  person djvg    schedule 06.04.2021
comment
@ShihabShahriarKhan и все остальные, оказавшиеся здесь: на самом деле есть чистое и работающее решение с анакондой в Windows 10, см. мой ответ ниже.   -  person Thomas    schedule 13.06.2021


Ответы (4)


Пытался следовать инструкциям по сборке в http://scipy.github.io/devdocs/building/windows.html несколько раз безуспешно.

[МОЕ РЕШЕНИЕ]

После тщательного чтения журналов и связанных форумов я придумал метод, который уже работал у меня на двух машинах с Windows. Опубликовал пакетный файл с шагами, которые я использовал в https://github.com/jhvital/build-scipy-openblas.

Метод show_config показывает привязку к библиотекам openblas, и это было подтверждено сравнением времени выполнения скриптов с scipy, установленным с conda install scipy, который устанавливает пакет mkl.

Тем не менее я не совсем уверен, правильно ли были связаны библиотеки. Будем признательны за обратную связь.

person Joao Vital    schedule 07.05.2018
comment
Спасибо за публикацию сценария. Я попытался выполнить ваш скрипт, чтобы установить numpy + scipy без mkl в Windows, но он все еще пытается установить mkl, когда доходит до этой строки: conda install -y blas numpy nose openblas. Я попытался вручную указать conda install numpy=1.16.2=py37_blas_openblash442142e_0, но не могу найти openblas, когда я делаю np.show_config(). Как вы его установили? - person stevew; 27.07.2019
comment
согласен с @stevew. Это не работает и хочет установить mkl, даже если у вас установлен метапакет nomkl. - person beginner_; 12.11.2019
comment
@stevew, @beginner_, я думаю, что conda теперь устанавливает mkl по умолчанию, в то время, когда я писал скрипт, который устанавливался с помощью openblas. Вы пытались добавить флаг blas=*=openblas в конец этой командной строки? - person Joao Vital; 20.11.2019

2021 год: это работает с miniconda в Windows 10.

conda create -n openblas python=3.8
conda activate openblas
conda install conda-forge::blas=*=openblas
conda install -c conda-forge numpy

Проверено также с matplotlib-base.

person Thomas    schedule 13.06.2021

Инструкции по сборке для SciPy проверены несколько раз и, кажется, работают.

Инструкции можно найти здесь http://scipy.github.io/devdocs/building/windows.html

Обратите внимание, что это все еще очень деликатная процедура, и ее нужно выполнять очень осторожно. Это все еще не гарантирует успеха, поскольку Windows — это Windows. Тем не менее, пожалуйста, найдите время, чтобы сообщить о любых проблемах, если вы столкнетесь с ними, на https://github.com/scipy/scipy.org/issues (обратите внимание, что это не репозиторий scipy, а репозиторий scipy.org)

person percusse    schedule 28.11.2017

Я не уверен, какую ошибку вы получили при попытке получить openblas и numpy с помощью anaconda.

Для openblas в Windows с использованием anaconda3 python 3.6v это работает:

conda install -c menpo openblas

ссылка: https://anaconda.org/menpo/openblas

Для numpy: это: conda install numpy. если вы ищете конкретную версию использования numpy: conda install numpy=version_number

person Pavan    schedule 17.01.2018
comment
Это работает, но только для numpy. Не работает, если вам также нужен scipy или scikit-learn. Конда захочет снова установить mkl, потому что, насколько мне известно, сборки scipy на анаконде доступны только для mkl. Единственное решение - использовать только pip, предполагая, что там можно найти все необходимые зависимости для окон (маловероятно) - person beginner_; 12.11.2019