LINUX.ORG.RU

Помогите jupyter-notebook наладить

 conda, jupyter-notebook,


0

1

Тут вроде есть опытные питоноводы, некоторые хвастались, что 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-го питона в котором есть нужный торч, команды прошли, но эффекта на ноутбук не возымели.

И чего делать? Помогите осилить!!!!

★★★★★

Последнее исправление: praseodim (всего исправлений: 1)

Что еще за тег непонятный, откуда я его возьму?

Если я правильно понимаю, твой скрипт собирает новый image. Правильно? Так вот, тэг - это просто имя для image

после сборки ты его увидишь в docker images

router ★★★★★
()
  1. Python 2 давно умер.

  2. Для ML сейчас актуальная стабилка это 3.9.

  3. В репозитории уже указан готовый docker образ и как его стартовать через docker run с доступом к гпушке.

  4. К работающему контейнеру уже легко подключиться через терминал или IDE (у того же VS Code встроенный jupyter фронтенд).

Можно расширить образ дополнительными зависимостями вроде жупитера, и просто пробросить в хост портом. Замаунтить локальную папку для общих файлов. Проще конечно поставить в отдельный virtualenv пакет с сайта торча с готовым Rocm, если версия питона позволяет (конда не совсем удобно, ибо у них свои репозитории), но что-то инструкции на самом сайте AMD через докер…

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

По build_jupyter можно передать тэг вроде «jupyter/datascience-notebook:latest». Сейчас правда многие переезжают на quay.io, будет тогда вот так «quay.io/jupyter/datascience-notebook:latest». Вот гайд на сайте самого жупитера.

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

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

Для этого надо в контейнер vscode поставить, а это не факт, что проще.

А pytorch надо ставить через официальный pip, там как раз есть версия с поддержкой rocm: https://pytorch.org/get-started/locally/

С версии 2.0, сейчас проверил в докере и так версия 2.1 даже стоит. Но она очень жестко втиснута и зависимости чуть что рушатся. В общем, по-хорошему, надо через годик посмотреть как дела будут. Правда годика нет.

Но проблема еще и похоже в медленности этого pytorch для amd, поддерживает, но толку не сильно много.

praseodim ★★★★★
() автор топика