Методы для работы с задачами обучения

См.также

Актуальная спецификация (автодокументация по методам).

Важно

Параметр warm_cache — отключен (deprecated). Он может быть корректно обработан только в значении warm_cache=False.

При значении warm_cache=True возникнет ошибка с кодом 400.

При запуске задачи обучения через метод Run Job подается адрес скрипта в локальном хранилище, образ, на котором в каждом поде-воркере должен быть исполнен скрипт, количество узлов-исполнителей и количество GPU-ускорителей на каждом узле, необходима ли предварительная запись файлов, необходимых для обучения, на целевые машины (прогрев кэша), а также ряд других опциональных параметров. Ставит задачу в очередь к исполнению в регионе.

Описание методов

Метод API

HTTP-метод

Описание

Get Job List

GET

Возвращает выполняемые задачи обучения в воркспейс.

Run Job

POST

Создает и запускает задачу обучения на Christofari.

Get job status

GET

Получает статус задачи обучения, выполняемой на Christofari.

Delete job

DELETE

Останавливает задачу обучения

Get job logs

GET

Получение логов задачи обучения. Указывать количество строк с конца для логов. Описать где возможно параметры. Tail 10 — последние 10 строк логов с конца страницы.

Подробнее см. в спецификации.

Запуск задачи в регионе

Принимает на вход адрес скрипта в локальном хранилище, образ, на котором в каждом поде-воркере должен быть исполнен скрипт, количество узлов-исполнителей и количество GPU-ускорителей на каждом узле, необходим ли прогрев кэша (предварительная загрузка данных), а также ряд других опциональных параметров. Ставит задачу в очередь к исполнению в регионе.

[POST]

Параметры

HTTP HEADER
X-Api-Key = [client secret api key, individual for every namespace]

Authorization: [access_token value]
BODY
{

'script': <string>,

'base_image': <string>,

'n_workers': <int>,

'n_gpus': <int>,

'warm_cache': deprecated,

'type': <string>,

'stop_timer': <int>,

'flags': {

'batch_size': <string>,

'model': <string>,

'variable_update': <string>,

'use_fp16': <boolean>,

'xla': <boolean>

}

}
Описание параметров
  • X-Api-Key — клиентский ключ доступа к API. Индивидуален для каждого аккаунта пользователя. Можно узнать, выполнив в Jupyter Notebook от лица пользователя следующие команды:

    import os
    
    print(os.environ['GWAPI_KEY'])
    
Описание параметров
  • Authorization — токен доступа, который характеризует пользователя, отправляющего запрос к API.

  • Script — путь до запускаемого скрипта. Обратите внимание, что точка монтирования — это корневой каталог, поэтому его не должно быть в начале пути. Если скрипт лежит по пути /data/demo_examples/script.py, то необходимо указать /home/jovyan/data/demo_examples/script.py.

    Важно

    Скрипт должен быть расположен на NFS региона, в котором будет запускаться задача обучения.

  • base_image — образ со всем окружением и библиотеками, на котором должен быть выполнен скрипт.

  • n_workers — количество узлов региона, которые пользователь хочет задействовать в решении задачи.

  • n_gpus — количество GPU-ускорителей на каждом узле, которые должны быть задействованы в решении задачи.

  • warm_cachedeprecated. Параметр обеспечивает предварительную запись файлов, необходимых для обучения, на целевые машины.

  • stop_timer — опциональный параметр, характеризующий время в минутах, через которое после перехода задачи в статус Running она будет принудительно удалена. По умолчанию параметр = 0, что значит, что задача не будет принудительно удалена.

  • type — если необходимо использовать механизм pytorch.distributed, в параметре необходимо указать: «pytorch» (тип — строка). В противном случае либо ничего не указывать, либо указать «horovod» (параметр по умолчанию).

  • processes_per_worker — позволяет указывать количество процессов на одного воркера, если не подходит количество процессов равное количеству GPU.

  • conda_env — позволит указывать имя окружения conda, если в образе имеется таковое и используется не стандартное окружение python, а окружение anaconda.

Опциональные параметры
  • flags — флаги, с которыми необходимо запустить скрипт.

  • batch_size — размер батча.

  • model — в случае, если существует несколько точек входа, от которых зависит обучаемая модель (если предусмотрено скриптом * модели).

  • variable_update — обновление переменных (если предусмотрено скриптом модели).

  • use_fp16 — использование 16-битного floatingpoint (если предусмотрено скриптом модели).

  • xla — использование «AcceleratedLinearAlgebra» (если предусмотрено скриптом модели).

Пример Body
{

'base_image': 'cr.msk.sbercloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1:latest',

'script': '/examples/benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py',

'n_workers': 2,

'n_gpus': 2,

'warm_cache': 'false',

'flags' : {

'batch_size': '512',

'model':'resnet50',

'xla':'False'

}

}

Результат

{

'error_code': '0',

'error_message': '',

'job_name' : <string>,

'created_at' : <unixtimestamp>

}
Описание параметров
  • error_code — код ошибки.

  • error_message — сообщение об ошибке.

  • job_name — имя задачи.

  • created_at — дата и время создания задачи.

Получение статуса задачи

Получить статус задачи, используя UUID задачи.

[GET]

HTTP HEADER
X-Api-Key = [client secret api key, individual for every namespace]

Authorization: [access_token value]
Описание параметров

X-Api-Key — клиентский ключ доступа к API. Индивидуален для каждого аккаунта пользователя. Можно узнать, выполнив в Jupyter Notebook от лица пользователя следующие команды:

import os

print(os.environ['GWAPI_KEY'])
Результат
{

'error_code': '0',

'error_message': '',

'job_name': <string>,

'status': [pending, running, failed, stopped, completed]

'created_at'   : <unixtimestamp>,

'pending_at'   : <unixtimestamp>,

'running_at'   : <unixtimestamp>,

'completed_at' : <unixtimestamp>

}
Описание параметров
  • error_code — код ошибки.

  • error_message — сообщение об ошибке.

  • job_name — UUID задачи.

  • status_name — статус задачи.

  • created_at — дата и время создания.

  • pending_at — дата и время постановки в очередь.

  • running_at — дата и время запуска задачи.

  • completed_at — дата и время завершения вычислений.

Удаление и остановка задачи

Удалить задачу по UUID.

[DELETE]

HTTP HEADER
X-Api-Key = [client secret api key, individual for every namespace]

Authorization: [access_token value]
Описание параметров
  • X-Api-Key — клиентский ключ доступа к API. Индивидуален для каждого аккаунта пользователя. Можно узнать, выполнив в Jupyter Notebook от лица пользователя следующие команды:

import os

print(os.environ['GWAPI_KEY'])
  • Authorization — токен доступа, который характеризует пользователя, отправляющего запрос к API.

Результат
{

'error_code': '0',

'error_message': '',

'job_name' : <string>,

'status': 'deleted'

'deleted_at'   : <unixtimestamp>

}
Описание параметров
  • error_code — код ошибки

  • error_message — сообщение об ошибке

  • job_name — UUID задачи

  • status — статус задачи

  • deleted_at — дата и время удаления задачи

Получение логов задачи

[GET]

HTTP HEADER
X-Api-Key = [client secret api key, individual for every namespace]

Authorization: [access_token value]
Описание параметров

X-Api-Key — клиентский ключ доступа к API. Индивидуален для каждого аккаунта пользователя. Можно узнать, выполнив в Jupyter Notebook от лица пользователя следующие команды:

import os

print(os.environ['GWAPI_KEY'])
Результат

streaming response в „text/plain“: logline

Получение списка задач пользователя

Получить список задач пользователя (связанного с выданным токеном, который отправляется в запросе).

[GET]

HTTP HEADER
X-Api-Key = [client secret api key, individual for every namespace]

Authorization: [access_token value]
Описание параметров

X-Api-Key — клиентский ключ доступа к API. Индивидуален для каждого аккаунта пользователя. Можно узнать, выполнив в Jupyter Notebook от лица пользователя следующие команды:

import os

print(os.environ['GWAPI_KEY'])
Результат
{

'error_code': '0',

'error_message': '',

'jobs': [

{

'job_name' : <string>,

'status' : <string>,

'created_at'   : <unixtimestamp>

}

]

}
Описание параметров
  • error_code — код ошибки.

  • error_message — сообщение об ошибке

  • jobs — массив структур, характеризующих запущенные задачи. Для каждой задачи возвращается:

  • job_name — UUID задачи.

  • status — статус задачи.

  • created_at — дата и время создания.