Среда исполнения заданий
Задания DataSphere Jobs выполняются на выделенных виртуальных машинах, не связанных с JupyterLab и запущенным проектом. Рабочее окружение этих ВМ развертывается на основе Docker-образа и дополнительных параметров, которые вы определяете в файле конфигурации задания.
Задания позволяют запускать на виртуальной машине Python-скрипты, Bash-скрипты и любые бинарные файлы, скомпилированные под платформу Linux x86_64.
Python-окружение
Совет
Старайтесь запускать задания в виртуальном окружении Python
Автоматический сбор окружения Python
Примечание
По умолчанию для запуска заданий DataSphere использует менеджер пакетов conda с предустановленным Python 3.10. Чтобы сократить время переноса окружения, используйте эту же версию Python в своих заданиях.
Если вы запускаете Python-скрипты, DataSphere может автоматически подготовить окружение для вашего задания. Для этого укажите параметр python: auto
в секции env
:
cmd: python main.py <аргументы_вызова>
env:
python: auto
В автоматическом режиме DataSphere проанализирует зависимости скрипта задания, определит пакеты pip и локальные модули, перенесет все на ВМ, установит и подготовит среду для запуска задания.
Автоматически собранное окружение можно модифицировать:
cmd: python main.py <аргументы_вызова>
env:
python:
type: auto # указываем автоматический сбор окружения
root-path:
- other.py
pip:
extra-index-urls:
- https://pypi.ngc.nvidia.com
trusted-hosts:
- nvidia.com
no-deps: true # По умолчанию false
Где:
root-path
— явное указание дополнительных точек входа.extra-index-urls
— дополнительные адреса репозиториев , из которых менеджер пакетов pip сможет установить необходимые пакеты окружения.trusted-hosts
— список доверенных хостов позволяет обращаться к хостам, перечисленным в формате<хост>:<порт>
, даже если они не поддерживают HTTPS.no-deps
— аргумент командыpip install
, запрещающий установку зависимостей пакетов.
Ручное задание окружения Python
При настройке окружения Python вручную вы можете явно задать версию Python, указать зависимости и параметры работы pip через файл requirements.txt
и передать локальные модули. При ручном задании окружения вы должны указать как минимум один параметр. Если параметр не указан в файле конфигурации, его значение будет определено автоматически.
env:
python:
type: manual # указываем ручное управление окружением
version: 3.10.13 # optional
requirements-file: requirements.txt # optional
local-paths: # optional, нельзя использовать с опцией root-paths
- foo.py
- lib/
Где:
version
— версия Python. Если не указано, используется версия окружения, из которого запускается задание.requirements-file
— путь к файлуrequirements.txt
, в котором перечислены все пакеты и флаги pip, необходимые для задания. Если не указано, список зависимостей будет определен автоматически.local-paths
— список локальных Python-файлов, которые нужно перенести. С его помощью можно указывать не только конечные файлы, но и целые директории. Если не указано, список файлов будет определен автоматически.
Явное указание точек входа
Важно
Используйте стандартную конструкциюif __name__ == "__main__":
в своих программах для всех точек входа.
Вы можете запускать Python-скрипты в заданиях различными способами:
- явно запускать скрипт через
python main.py <arguments>
. - использовать готовые стартеры сторонних производителей, например deepspeed
:deepspeed main.py --num_gpus=1 --deepspeed_stage 2 --apply_lora True
. - передавать программы как аргументы при запуске других программ:
python main.py other.py
.
Чтобы собрать окружение и запустить задание, DataSphere необходимо будет определить все точки входа в программу. Если это не удастся сделать в автоматическом режиме, укажите их в файле конфигурации config.yaml
:
env:
python:
type: auto | manual # возможны оба варианта
root-paths: # optional, нельзя использовать с опцией local-paths
- main.py
- other.py
Plain-окружение
По умолчанию в заданиях используется Plain-окружение для исполнения бинарных файлов и Bash-скриптов. В этом случае на ВМ будут перенесены все файлы, указанные в секции inputs
файла конфигурации задания.
Пример
Выполнение следующего задания выведет версию ядра Linux, список всех установленных пакетов и список файлов и каталогов домашней директории ВМ.
В файл конфигурации config.yaml
указана точка входа и список всех модулей, которые нужно передать на ВМ:
cmd: ./run.sh
inputs:
- run.sh # явно прописываем все необходимые модули
В файле с кодом задания run.sh
перечислены команды, которые нужно выполнить на ВМ:
#!/bin/bash
uname -a
dpkg -l
ls -la
Смотри также
- DataSphere Jobs.
- DataSphere CLI.
- Docker-образы в заданиях.
- Запуск заданий DataSphere Jobs.
- GitHub-репозиторий
с примерами для запуска заданий.