Среда исполнения заданий
Задания DataSphere Jobs выполняются на выделенных виртуальных машинах, не связанных с JupyterLab и запущенным проектом. Рабочее окружение этих ВМ развертывается на основе Docker-образа и дополнительных параметров, которые вы определяете в файле конфигурации задания.
Задания позволяют запускать на виртуальной машине Python-скрипты, Bash-скрипты и любые бинарные файлы, скомпилированные под платформу Linux x86_64.
Python-окружение
Совет
Старайтесь запускать задания в виртуальном окружении Python
Автоматический сбор окружения Python
Примечание
По умолчанию для запуска заданий DataSphere использует менеджер пакетов conda с предустановленным Python 3.10. Чтобы сократить время переноса окружения, используйте эту же версию Python в своих заданиях.
Если вы запускаете Python-скрипты, DataSphere может автоматически подготовить окружение для вашего задания. Для этого укажите параметр python: auto
в секции env
:
cmd: python3 main.py <аргументы_вызова>
env:
python: auto
В автоматическом режиме DataSphere проанализирует зависимости скрипта задания, определит пакеты pip и локальные модули, перенесет все на ВМ, установит и подготовит среду для запуска задания.
Автоматически собранное окружение можно модифицировать:
cmd: python3 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-файлов, которые нужно перенести. С его помощью можно указывать не только конечные файлы, но и целые директории. Если не указано, список файлов будет определен автоматически.
Если задание состоит только из одного главного Python-скрипта, в секцииenv
укажитеlocal-paths: []
.
Если файл конфигурации содержит все три параметра (version
, requirements-file
и local-paths
), DataSphere не будет проверять окружение, чтобы определить недостающие зависимости. Это может быть полезно, если вы не можете или не хотите воспроизводить окружение для выполнения задания локально, как этого требует автоматический сбор окружения.
Явное указание точек входа
Важно
Используйте стандартную конструкциюif __name__ == "__main__":
в своих программах для всех точек входа.
Вы можете запускать Python-скрипты в заданиях различными способами:
- явно запускать скрипт через
python3 main.py <arguments>
. - использовать готовые стартеры сторонних производителей, например deepspeed
:deepspeed main.py --num_gpus=1 --deepspeed_stage 2 --apply_lora True
. - передавать программы как аргументы при запуске других программ:
python3 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-репозиторий
с примерами для запуска заданий