Тут вроде есть опытные питоноводы, некоторые хвастались, что 2003-го года в нем, всех каких можно собак съели наверное.
Вся задача добиться, чтобы в питоне jupyter-notebook использовал в докере нужную библиотеку PyTorch, которая использует ускоритель AMD.
Где-то на 90% задачу решил, но застрял там где менее всего этого ожидал.
Итак, специально даже выделил отдельную машину с ubuntu и пользуясь инструкциями с https://github.com/alfinauzikri/ROCm-RX6600XT поставил и ROCm и докер
docker pull rocm/pytorch:latest
Внутри докера если запустить просто python3, то есть признаки, что все работает
>>> import torch
>>> torch.cuda.is_available()
True
Хорошо, но мне очень нужен jupyter-notebook - это такая интерактивная среда работы с питоном в браузере, позволяет в разных блоках иметь код, описание, графики там же и т.д.
Внутри докера даже был скритп buld-jupyter.bash, но при его запуске он чего-то хотел мне непонятного
# ./build_jupyter.bash
ERROR: Usage: ./build_jupyter.bash <JUPYTER_DOCKER_TAG>
Что еще за тег непонятный, откуда я его возьму? Поставил просто через apt-get install jupyter и успел даже закомить его. Зря.
Запуск докера и все такое наладил, извне запускается, в браузере вроде работает, вот только
import torch
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-eb42ca6e4af3> in <module>
----> 1 import torch
ModuleNotFoundError: No module named 'torch'
Что за нах? Выяснил, что юпитер-ноутбук использует python 3.11 для которого нет в докере торча с поддержкой AMD. Если модуль поставить через pip install естественно ставится посторонний. Мда...
Ну думаю, может опция какая есть для указания версии питона? А вот хренушки, все через задницу.
Нашел советы https://stackoverflow.com/questions/30492623/using-both-python-2-x-and-python...
Там правда для того, чтобы был выбор между 2-м и 3-м питоном, но не думаю, что принципиальная разница. Или есть?
configure the python3.6 environment:
conda create -n py36 python=3.6
conda activate py36
conda install notebook ipykernel
ipython kernel install --user
Замечательно, делаю по аналогии:
conda create -n py39 python=3.9
## Package Plan ##
environment location: /opt/conda/envs/py39
added / updated specs:
- python=3.9
The following packages will be downloaded:
package | build
---------------------------|-----------------
openssl-3.0.12 | h7f8727e_0 5.2 MB
pip-23.3 | py39h06a4308_0 2.6 MB
wheel-0.41.2 | py39h06a4308_0 108 KB
------------------------------------------------------------
Total: 7.9 MB
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
ca-certificates pkgs/main/linux-64::ca-certificates-2023.08.22-h06a4308_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1
libffi pkgs/main/linux-64::libffi-3.4.4-h6a678d5_0
libgcc-ng pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1
libgomp pkgs/main/linux-64::libgomp-11.2.0-h1234567_1
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1
ncurses pkgs/main/linux-64::ncurses-6.4-h6a678d5_0
openssl pkgs/main/linux-64::openssl-3.0.12-h7f8727e_0
pip pkgs/main/linux-64::pip-23.3-py39h06a4308_0
python pkgs/main/linux-64::python-3.9.18-h955ad1f_0
readline pkgs/main/linux-64::readline-8.2-h5eee18b_0
setuptools pkgs/main/linux-64::setuptools-68.0.0-py39h06a4308_0
sqlite pkgs/main/linux-64::sqlite-3.41.2-h5eee18b_0
tk pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0
tzdata pkgs/main/noarch::tzdata-2023c-h04d1e81_0
wheel pkgs/main/linux-64::wheel-0.41.2-py39h06a4308_0
xz pkgs/main/linux-64::xz-5.4.2-h5eee18b_0
zlib pkgs/main/linux-64::zlib-1.2.13-h5eee18b_0
Proceed ([y]/n)?
Непонятно, почему оно захотело скачивать заново python, хотя версия 3.9 уже стоит? Ну да ладно, жму «y» и вроде все нормально
В конце установки даже пишет, как в инструкции выше
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate py39
#
# To deactivate an active environment, use
#
# $ conda deactivate
Пишу conda activate py39. А вот хренушки опять!!!!
# conda activate py39
usage: conda [-h] [--no-plugins] [-V] COMMAND ...
conda: error: argument COMMAND: invalid choice: 'activate' (choose from 'clean', 'compare', 'config', 'create', 'info', 'init', 'install', 'list', 'notices', 'package', 'remove', 'uninstall', 'rename', 'run', 'search', 'update', 'upgrade', 'doctor', 'content-trust', 'env')
Оп-па, $$$-па и что с этим делать? Может из-за того что работа в докере из под рута? Да вряд ли. Куда опцию activate спрятали?! Попробовал без нее, но ожидаемо ничего не вышло. Или я не понял как проверить, что вышло? :))))
Там еще был совет
python2 -m pip install ipykernel
python2 -m ipykernel install --user
Сделал также для 3-го питона в котором есть нужный торч, команды прошли, но эффекта на ноутбук не возымели.
И чего делать? Помогите осилить!!!!