• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Использование Anaconda и создание собственных Python окружений

Для выполнения расчетов с помощью Python, как правило, требуются дополнительные библиотеки. Оптимальным способом загрузки дополнительных библиотек на вычислительном кластере НИУ ВШЭ является использование программного пакета Anaconda. Это удобный менеджер пакетов Python, предназначенный для создания изолированных окружений Python и автоматического разрешения зависимостей. На суперкомпьютере уже имеется базовая конфигурация Anaconda, которую можно подключить следующей командой:

module load Python

После подключения этого модуля становятся доступными для использования большинство наиболее популярных библиотек Python, включенных в состав базового набора Anaconda.
Полный список библиотек в окружении можно посмотреть командой conda list
Установка других пакетов или обновление версий в базовом окружении невозможна.

Также доступны дополнительные окружения с пакетами PyTorch, TensorFlow и аналогом Google Colab: module available Python

Если вам необходимо установить пакеты или версии пакетов, которых нет в базовом окружении, то потребуется создать своё собственное изолированное окружение и установить в него требуемые для расчетов пакеты:

conda create -n <имя окружения> python=<версия python>

Например, для создания окружения "my_py_env1" на базе последней версии Python 3 воспользуйтесь следующей командой:

conda create -n my_py_env1 python=3

На запрос об установке новых пакетов ответьте "y".

Далее необходимо задействовать созданное окружение:

source activate my_py_env1

После активации в приглашении терминала появится префикс с именем окружения:

(my_py_env1) [testuser@sms ~]$ python -V

Для вывода списка доступных окружений используйте команду conda env list

Для установки необходимых пакетов используйте команду conda installнапример, для установки последней версии NumPy:

conda install numpy

Для установки пакетов из файла requirements.txt можно использовать команду conda install --file requirements.txt

Обратите внимание: на вычислительных узлах из соображений безопасности нет доступа в Интернет. Все пакеты необходимо предварительно установить, подключившись к логин-серверу суперкомпьютера.

С помощью команды conda search выполняется поиск пакетов в репозиториях Anaconda. Также поиск можно осуществлять на сайте https://anaconda.org/anaconda/

Отключить окружение (например, для выбора другого): conda deactivate 

Для подключения окружения к ноутбукам в JupyterHub установите соответствующее ядро (см. https://github.com/jupyter/jupyter/wiki/Jupyter-kernels).
Например, для Python необходимо установить ядро ipykernel:

conda install ipykernel


* полная документация по использованию conda: https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html


Настройка окружения Python для работы с GPU на вычислительных узлах

Для работы с GPU на вычислительных узлах необходимо предварительно настроить изолированное окружение Python на логин-сервере вычислительного кластера НИУ ВШЭ:

    1. Выгрузить все загруженные модули и активировать модуль Anaconda:
      module purge; module load Python/Anaconda_v11.2021
    2. Создать и активировать новое изолированное окружение Anaconda:
      conda create -n my_py_env
      source activate my_py_env
      Рекомендуется в файл ~/.bashrc добавить строчку source activate my_py_env. В этом случае, при запуске задачи через srun, будет автоматически активироваться созданное окружение.
    3. Установить необходимые пакеты Python, например:
      conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
    4. Пакеты, которым для установки необходимо наличие GPU, необходимо предварительно скачать, затем выделить вычислительный узел с GPU и установить пакет с локального каталога. Например, для установки пакета pytorch_scatter из git-репозитория следует выполнить следующие команды:
      git clone https://github.com/rusty1s/pytorch_scatter
      srun --pty --cpus-per-task 1 --gpus 1 bash
      cd pytorch_scatter
      pip install -e .
      Здесь точка в конце команды означает указание на текущий каталог - будет выполнена сборка и установка модуля из текущей директории.
    5. Провести проверочный запуск на 1 GPU и подготовить скрипт-файл для sbatch по примеру из инструкции по запуску задач на суперкомпьютере.

      Пример sbatch-скрипта:

      #!/bin/bash
      #SBATCH --job-name=test
      #SBATCH --gpus=1
      
      module purge
      module load Python/Anaconda_v10.2019
      
      source deactivate
      source activate my_py_env
      
      nvidia-smi	
      which python
      python -V
      python -c 'import torch; print(torch.cuda.is_available())'
      

Примечание для расчетов на python с выводом в терминал

Важное примечание для расчетов на python, результаты которых отображаются в выводе!
По умолчанию python использует буфферизованный вывод (т.е. вывод НЕ мгновенно передается в результирующий файл).
Например, в случае такого кода:

from time import sleep

print('Start')
for i in range(60):
    sleep(1)
print('Done')

Начальный вывод "Start" появится в файле вывода (slurm-.out) только спустя 60 итераций (одновременно с "Done").
Для задач, результаты которых оцениваются в процессе выполнения (выводятся промежуточные значения и тп), это не подходит (например, в случае, когда задача завершится по таймауту, вывода в файле не будет).
Для мгновенного отображения результатов предлагается 2 варианта:

  1. Добавлять аргумент flush=True в функцию print: print('Start', flush=True) (это работает только при версии python >= v3.3).
  2. Добавить аргумент -u при запуске задачи к самому интерпретатору: например, python3 -u myprog.py (изменений в коде в данном случае не понадобится).

 

Нашли опечатку?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.