LINUX.ORG.RU

Что еще за virtual environment?

 ,


0

1

Читаю инструкцию по наладке PyTorch под видиоекарты AMD (с OpenCL)

https://github.com/artyom-beilis/pytorch_dlprim

git clone --recurse-submodules https://github.com/artyom-beilis/pytorch_dlprim.git

Скачал исходники для замены

Building the on Linux

Make sure you are in the virtual environment

Далее

mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=$VIRTUAL_ENV/lib/python3.8/site-packages/torch/share/cmake/Torch ..
make

Кто-нибудь понял, что это за $VIRTUAL_ENV? И таки где именно предлагается каталог build сделать? Внутри скаченных исходников или снаружи.

Небольшой гуглеж только запутал, вроде python, если запустить его предоставляет это самое $VIRTUAL_ENV, но тут же действия извне.

★★★★★

Это питонячинский virtual env, его можно просто не использовать, если поставил через пакетный менеджер или pip не используя venv, то просто остается найти каталог site-packages/torch и прописать путь к нему

build внутри каталога исходников, соответственно перейдя в каталог build, CmakeList файл верхнего уровня будет лежать в каталоге чуть выше, потому и пишем .. то есть две точки

I-Love-Microsoft ★★★★★
()

есть пакет и команда, которая так называется, она позволяет все питонячие зависимости законтейнерить на текущий каталог для конкретного развертывания, соответственно внутри его среды (в нее заходят как в чрут) или будучи сконфигурированным извне (например ты разворачиваешься в ~/vasyans-bundle) у тебя $VIRTUAL_ENV будет прописан как надо

Syncro ★★★★★
()
Ответ на: комментарий от slovazap

Я вообще не пойму, что этому скрипту сборки не хватает


=== Status ===
  OpenCL: include /usr/include
          lib     OCL_LIB-NOTFOUND

...
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
OCL_LIB

В README написано, что

Make sure you have OpenCL headers and library. It should be `cl2.hpp` - not the old one `cl.hpp`

Вроде стоит opencl-clhpp-headers там в списке файлов есть cl2.hpp

praseodim ★★★★★
() автор топика
Ответ на: комментарий от slovazap

А дальше пошли типичные пуки при сборке из исходников:

/pytorch/pytorch_dlprim/src/CLTensor.h:19:67: error: ‘PrivateUse1’ is not a member of ‘c10::DeviceType’
   19 |     constexpr c10::DeviceType OpenCLDeviceType = c10::DeviceType::PrivateUse1;


pytorch/pytorch_dlprim/src/utils.h:15:26: error: ‘class caffe2::TypeMeta’ has no member named ‘toScalarType’
   15 |         return todp(meta.toScalarType());


pytorch/pytorch_dlprim/src/pointwise_ops.cpp:72:17: error: ‘AutoDispatchBelowADInplaceOrView’ is not a member of ‘at’
   72 |             at::AutoDispatchBelowADInplaceOrView g;

Видимо какая-то либа не той версии или gcc не той версии или еще что-то. Пока сдался. Часы уходят на разгребание.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Если автор пишет

Make sure you are in the virtual environment

Я бы поостерегся делать смелые выводы насчет «можно просто не использовать», т.к. вся эта наколеночная ML шляпа часто требует конкретных версий пакетов иначе фокус не получится

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от praseodim

Часы уходят на разгребание

Зачем ты этой мастурбацией занимаешься? У тебя в дистрибутиве есть пакет pytorch. Он собирается. Модифицируй его как тебе нужно.

slovazap ★★★★★
()

venv это питоновский костыль для того чтобы сделать чето типа node_modules, без которого на самом деле там нихера не работает, потому что с зависимостями в бидоне жопа и ад

lovesan ★★
()
Ответ на: комментарий от praseodim

Во всем этом ML-аду разве не conda используется?

Тогда вообще все плохо.

Но совет такой - не используй вообще нихрена из дистрибутива. Вообще. Ставь все мейкинсталлом.

lovesan ★★
()
Ответ на: комментарий от lovesan

Но совет такой - не используй вообще нихрена из дистрибутива. Вообще. Ставь все мейкинсталлом.

Тут бы разобраться что вообще им нужно и каких версий. Похоже все зависимости удовлетворил, но что-то где-то какие-то версии не те.

Мейкинсталом очень просто свой дистрибутив вообще в Форшмак превратить. Положим PyTorch тогда заставлю работать с OpenCL, но попутно что-нибудь поотваливается тогда.

praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 2)
Ответ на: комментарий от slovazap

Зачем ты этой мастурбацией занимаешься? У тебя в дистрибутиве есть пакет pytorch. Он собирается. Модифицируй его как тебе нужно.

А как мне нужно? Мне нужно, чтобы он мог с OpenCL работать. Теоретически это даже предусмотрено PyTorch как бы из коробки, но с оговоркой, что нужно специальное ядро под это дело. Которое похоже авторами PyTorch не было написано

Вот https://github.com/artyom-beilis/pytorch_dlprim что-то такое и написал. По его словам, там даже как раз сборка этого ядра идет с использованием установленного в пакете PyTorch из исходников, которые в /usr/lib/pytorch как-то там.

Тут похоже, что ровно наоборот, таки надо подсунуть отдельный pytorch той версии, для которой сиё разрабатывалось. Еще бы кстати понять какой, тоже неочевидно. Похоже 1.13 (в дистре 1.17), но не факт.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

Мейкинсталом очень просто свой дистрибутив вообще в Форшмак превратить. Положим PyTorch тогда заставлю работать с OpenCL, но попутно что-нибудь поотваливается тогда.

Именно так, ну так это издержки профессии, когда со всем этим работаешь. Более того, отчасти именно из-за этого в свое время и придумали тот же докер.

lovesan ★★
()

Если приходится такое спрашивать на ЛОРе, то завести ROCm будет not enough mana. А указанная поделка вообще не понятно зачем тебе сдалась. Лучше сразу в Job писать, или купить карточку с поддержкой CUDA.

ei-grad ★★★★★
()
Ответ на: комментарий от ugoday

https://peps.python.org/pep-0405/

  1. Лет больше чем докеру (но меньше чем lxc).
  2. Работает везде где работает питон ибо не требует совсем ничего.

Никто же не называет костылями использование измененных переменных окружения PATH/LD_LIBRARY_PATH/прочих и уж такого «костыля» как LD_PRELOAD.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

Лет больше чем докеру

Т.е. мало того, что костыль, так ещё и старьё.

Работает везде где работает питон

Но только с питоном. Для каждого недоязычка нужно учить свои особые приседания, ужимки и прыжки для решения проблемы. Не скучайте.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Но только с питоном. Для каждого недоязычка нужно учить свои особые приседания, ужимки и прыжки для решения проблемы. Не скучайте.

Прямо как пакетные менеджеры, системы сборки и прочее.

exception13 ★★★★★
()
Ответ на: комментарий от ugoday

Ты простой Иван город Тверь, у тебя есть 5 проектов требующих разный набор библиотек конфликтующих на уровне API, при переключении между проектами ты хочешь тыц и чтобы IDE видела только нужные библиотеки нужных версий. Делать условное хранилище исходников библиотек на которое натравливать IDE в настройках каждого проекта для их индексирования, обновлять/добавлять/удалять библиотеки индивидуально для каждого проекта, тестировать локально без необходимости пересборки контейнера. А что будешь делать ты?

exception13 ★★★★★
()
Ответ на: комментарий от exception13

В образе располагаются библиотеки и артефакты исполнителя, которые мне нужны. Конетейнер — это (знаю, тавтология) универсальный контейнер, в котором находится всё, что нужно для запуска процесса. Работает универсальным образом для всех языков и библиотек.

ugoday ★★★★★
()
Ответ на: комментарий от exception13
  1. Монтируешь контейнер с файловой системой;
  2. IDE указываешь префикс, в котором лежат все файлы;
  3. Всё.
  4. Вариант для извращенцев: IDE запускаете в том же контейнере (работает для X11).
ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Такой универсальный что под каждый $ЯЗЫКНЕЙМ придется пилить свой костыль реализуя на коленке те же методы которые уже реализованы но с дополнительной прослойкой.

exception13 ★★★★★
()
Ответ на: комментарий от ugoday

Вот ты упертый. Venv просто создает нужную структуру директорий, делает симлинки и ставит переменные окружения.

exception13 ★★★★★
()
Последнее исправление: exception13 (всего исправлений: 2)