Среда исполнения заданий
Задания DataSphere Jobs выполняются на выделенных виртуальных машинах, не связанных с JupyterLab и запущенным проектом. Рабочее окружение этих ВМ развертывается на основе Docker-образа и дополнительных параметров, которые вы определяете в файле конфигурации задания.
Задания позволяют запускать на виртуальной машине Python-скрипты, Bash-скрипты и любые бинарные файлы, скомпилированные под платформу Linux x86_64.
Python-окружение
Совет
Старайтесь запускать задания в виртуальном окружении Python
Автоматический сбор окружения Python
Примечание
Для запуска заданий DataSphere используется Python venv
Если вы запускаете 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:
index-url: https://pypi.org/simple
extra-index-urls:
- https://pypi.ngc.nvidia.com
trusted-hosts:
- nvidia.com
no-deps: true # По умолчанию false
Где:
root-path
— явное указание дополнительных точек входа.index-urls
— адрес основного репозитория , из которого менеджер пакетов pip будет устанавливать необходимые пакеты окружения.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
pip:
index-url: https://pypi.org/simple
extra-index-urls:
- https://pypi.ngc.nvidia.com
trusted-hosts:
- nvidia.com
no-deps: true # По умолчанию false
requirements-file: requirements.txt # optional
root-path:
- other.py
local-paths: # optional, нельзя использовать с опцией root-paths
- foo.py
- lib/
Где:
version
— версия Python. Если не указано, используется версия окружения, из которого запускается задание.index-urls
— адрес основного репозитория , из которого менеджер пакетов pip будет устанавливать необходимые пакеты окружения.extra-index-urls
— дополнительные адреса репозиториев , из которых менеджер пакетов pip сможет установить пакеты, если они не были обнаружены в основном репозитории.trusted-hosts
— список доверенных хостов позволяет обращаться к хостам, перечисленным в формате<хост>:<порт>
, даже если они не поддерживают HTTPS.no-deps
— аргумент командыpip install
, запрещающий установку зависимостей пакетов.requirements-file
— путь к файлуrequirements.txt
, в котором перечислены все пакеты и флаги pip, необходимые для задания. Если не указано, список зависимостей будет определен автоматически.root-path
— явное указание дополнительных точек входа.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-репозиторий
с примерами для запуска заданий