DataSphere Jobs
В DataSphere вы можете удаленно запускать задания (jobs) — вычисления на ВМ DataSphere за пределами JupyterLab. Это могут быть скрипты и проекты на Python, bash-скрипты и исполняемые бинарные файлы, скомпилированные под платформу Linux x86_64.
Задания создаются и выполняются в проектах, но не зависят от ноутбуков и запущенных ВМ проекта.
Для запуска задания необходимо настроить виртуальное окружение Python, установить DataSphere CLI с помощью команды pip install datasphere
и подготовить файл конфигурации, в котором будут описаны все параметры запуска задания. Также можно установить и сконфигурировать интерфейс командной строки Yandex Cloud, чтобы с его помощью аутентифицироваться в Yandex Cloud.
Работа с заданиями также доступна в Visual Studio Code
DataSphere Jobs хранит кеш входных данных и окружения, логи и результаты выполнения заданий. Вы можете переиспользовать данные и делиться ими между заданиями в пределах одного проекта. Размер хранимых данных ограничен. Подробнее об ограничениях DataSphere см. в разделе Квоты и лимиты в DataSphere.
Задания можно найти в проекте на вкладке DataSphere Jobs. Прогресс выполнения и результаты будут доступны в разделе История запусков.
Совет
При выполнении длительных заданий рекомендуем сохранять промежуточный результат в объектном хранилище S3.
Файл конфигурации заданий
При создании задания в файле конфигурации config.yaml
указываются его параметры — конфигурация вычислительных ресурсов, на которой задание будет выполняться, и необходимые файлы с входными данными. В соответствии с настройками в файле конфигурации DataSphere анализирует задание, определяет зависимости, развертывает окружение на ВМ и выполняет код задания. Результаты выполнения задания сохраняются в проекте DataSphere в файлах, определенных в конфигурации задания.
# Имя задания
name: simple-python-script
# Описание задания
desc: Program description
# Параметры точки входа для запуска вычислений
cmd: > # многострочная строка YAML
python src/main.py
--params ${PARAMS}
--features ${<идентификатор_коннектора>}/features.tsv
--validate ${CIFAR}/val.json
--normalizer ${DS_PROJECT_HOME}/misc/norm.bin
--model ${MODEL}
--epochs 5
# Файлы с входящими данными
inputs:
- misc/logging.yaml # Путь к файлу относительно директории запуска задания на локальном компьютере
- /usr/share/params.json: # Абсолютный путь к файлу на локальном компьютере сохранен в переменную PARAMS
var: PARAMS
# Файлы с результатами
outputs:
- data/model.bin: MODEL # Относительный путь к файлу сохранен в переменную MODEL
- other/metrics.png # Относительный путь к файлу
# Ресурсы, необходимые для запуска задания, должны быть доступны в проекте
s3-mounts: # Коннекторы S3
- <идентификатор_коннектора> # Идентификатор коннектора S3
# Имя коннектора не задано, поэтому обращение к коннектору возможно по его идентификатору
datasets:
- <идентификатор_датасета>: # Идентификатор датасета, доступного в проекте
var: CIFAR # CIFAR — переменная для обращения к датасету
# Параметры окружения
env:
vars: # Переменные окружения
- DEVICE_COUNT: 8 # значение переменной окружения можно указать явно
- PYTHONBUFFERED # если параметр не задан, его значение будет определено из текущего окружения
docker: <идентификатор_Docker-образа> # Docker-образ, доступный в проекте DataSphere
# Также можно указать Docker-образ в реестре образов
# docker:
# image: <путь_к_образу_в_реестре>:<тег> # Например <cr.yandex/crtabcdef12345678900/myenv:0.1>
# Для Docker Hub достаточно указать `<имя>:<тег>`, например `ubuntu:focal`
# username: <логин>
# password: <пароль> # в текстовом виде или имя секрета DataSphere
# # password:
# # secret-id: PASSWORD
# Способ сборки зависимостей окружения
python: auto # Полная автоматизация сборки окружения
# python: # Параметры окружения задаются вручную. Если параметры не заданы, их значения будут определены из текущего окружения автоматически
# type: manual
# version: 3.10.5 # Версия Python
# requirements-file: requirements.txt # Файл с параметрами окружения
# Флаги запуска задания
flags:
- attach-project-disk # Смонтировать хранилище проекта
# Конфигурация вычислительных ресурсов для запуска задания
cloud-instance-type: g2.1
# Конфигурация рабочей директории
working-storage:
- type: SSD # тип используемого диска. Опционально, по-умолчанию SSD. Доступные значения: SSD
- size: 150Gb # размер рабочей директории в интервале 100 ГБ — 10 ТБ
Файл конфигурации задания config.yaml
состоит из нескольких секций.
-
Секции
name
иdescription
определяют имя и описание задания. Имя задания должно быть уникальным в пределах проекта. Описание является опциональным и поможет найти нужное задание в проекте. -
Секция
cmd
определяет точку входа в задание. Укажите, как запускать ваш код и задайте все параметры запуска, которые нужно передать исполняемому файлу или скрипту. Вы можете использовать переменные и идентификаторы, которые будут определены в секциях ниже, для указания путей к нужным файлам. -
Секция
input
определяет файлы с входными данными и другой информацией, которую требуется передать для исполнения задания с вашего локального компьютера. Вы можете определить путь к файлам относительно директории задания или сохранить относительный или абсолютный путь к файлу в переменную, чтобы использовать ее в других секциях файла конфигурации. -
Секция
output
определяет файлы, в которые будут сохранены результаты вычислений. После выполнения задания эти файлы появятся на вашем компьютере. Правила указания путей совпадают с секциейinput
. -
Ресурсы DataSphere, задействованные в заданиях, определяются в секциях
s3-mounts
(коннекторы S3) иdatasets
(датасеты). Чтобы использовать коннектор s3 или датасет в задании, укажите идентификатор доступного в проекте ресурса и (опционально) определите переменную для него. Если переменная не задана, обращение к ресурсу в секцииcmd
возможно по его идентификатору.Также вы можете использовать в задании хранилище проекта. Для этого в секции
flags
укажите флагattach-project-disk
. Хранилище проекта будет смонтировано в качестве внешнего диска для чтения к ВМ, на которой выполняется задание. Путь к хранилищу будет доступен в переменной окруженияDS_PROJECT_HOME
. -
В секции
env
определяются параметры окружения для выполнения задания: способ сборки окружения на ВМ, переменные окружения и (опционально) Docker-образ, собранный в DataSphere или хранящийся в другом реестре образов. При необходимости вы можете указать данные для авторизации в реестре.Есть два способа задать окружение для проектов на Python:
- Позволить DataSphere автоматически определить все необходимые зависимости, проанализировать текущее окружение на ваше локальном компьютере и самостоятельно собрать и перенести его. Для этого в секции
env
укажитеpython: auto
. - Вы можете самостоятельно указать версию интерпретатора Python и используемые библиотеки прямо в файле конфигурации или в отдельному файле
requirements.txt
. При явном определении хотя бы одного параметра недостающие будут взяты из текущего окружения автоматически.
Важно
Если вы используете автоматический режим задания окружения или указываете только часть зависимостей, запускайте задание из виртуального окружения Python, в котором установлены все актуальные пакеты и локальные модули, чтобы библиотека
datasphere
смогла автоматически определить параметры окружения для выполнения задания.В разделе
vars
секцииenv
задаются переменные окружения. Секреты проекта также будут добавлены в переменные окружения при запуске задания.Примечание
По умолчанию для запуска заданий DataSphere использует менеджер пакетов conda с предустановленным Python 3.10. Чтобы сократить время переноса окружения, используйте эту же версию Python в своих заданиях.
- Позволить DataSphere автоматически определить все необходимые зависимости, проанализировать текущее окружение на ваше локальном компьютере и самостоятельно собрать и перенести его. Для этого в секции
-
Секция
cloud-instance-type
определяет тип используемой конфигурации вычислительных ресурсов, на которой будет выполняться задание. -
Секция
working-storage
определяет параметры рабочей директории. По умолчанию рабочая директория создается на системном диске, и ее размер составляет около 20 ГБ. Если для выполнения задания нужно больше места, вы можете создать вторую рабочую директорию размером от 100 ГБ до 10 ТБ. Тогда DataSphere подключит ее к ВМ как дополнительный диск и удалит после завершения задачи.Дополнительное хранилище оплачивается согласно правилам тарификации хранения данных.
См. также
- Запуск заданий DataSphere Jobs
- GitHub-репозиторий
с примерами для запуска заданий.