Skip to main content

Библиотека для работы с api Cloud.ru MLSpace

Project description

О пакетах

Репозиторий содержит инструменты разработчика для работы с Cloud.ru Distributed Train:

  • mls — CLI-утилита, которая позволяет запускать некоторые сервисы Distributed Train из терминала.
  • mls-core — Python-библиотека с открытым исходным кодом для использования некоторых сервисов Distributed Train в своих проектах (SDK).

Установка

Чтобы установить mls на локальную машину, в терминале выполните:

pip install cloudru-ml-cli==0.11.1
Зеркало: 
pip install --index-url https://gitverse.ru/api/packages/cloudru/pypi/simple/ --extra-index-url https://pypi.org/simple --trusted-host gitverse.ru mls==0.11.1

GIF Установка

mls-core установится автоматически.

Перед началом работы

Выполните:

mls configure

GIF Установка

Примеры использования

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

mls job list

GIF Получение списка задач

Просмотр логов задачи

mls job logs

GIF Просмотр логов задачи

Запуск задачи через библиотеку

import logging
from mls.utils.common import read_profile
from mls_core import TrainingJobApi, DTSApi, AllocationApi, QueueApi
from pydantic.v1 import BaseSettings


class Settings(BaseSettings):
    key_id: str
    key_secret: str
    x_workspace_id: str
    x_api_key: str
    region: str
    output: str
    endpoint_url: str


class ManagerApi:
    """Управляющий фасад для доступа ко всем API-сервисам."""

    def __init__(self, settings: Settings, logger: logging.Logger = None):
        client_kwargs = dict(
            endpoint_url=settings.endpoint_url,
            client_id=settings.key_id,
            client_secret=settings.key_secret,
            x_workspace_id=settings.x_workspace_id,
            x_api_key=settings.x_api_key,
            backoff_factor=10,
            connect_timeout=10 * 60,
            read_timeout=10 * 60,
            debug=False
        )
        if logger is not None:
            client_kwargs['logger'] = logger

        self.job = TrainingJobApi(**client_kwargs)
        self.dts = DTSApi(**client_kwargs)
        self.allocation = AllocationApi(**client_kwargs)
        self.queue = QueueApi(**client_kwargs)


if __name__ == "__main__":
    # 1. инициализация logger (1 раз на всё приложение)
    logger = logging.getLogger("my_mlspace_api")
    logger.setLevel(logging.INFO)
    if not logger.handlers:  # чтобы не добавить дважды, если модуль импортируют
        logger.addHandler(logging.StreamHandler())

    # 2. загрузка профиля и создание фасада
    env = read_profile('any_profile_name')
    settings = Settings(**env)
    api = ManagerApi(settings, logger=logger)

    # 3. примеры вызовов:
    print(api.job.run_job(
        payload={
            'script': '/home/jovyan/hello_world.py',
            'base_image': 'cr.ai.cloud.ru/hello_world:latest',
            'instance_type': 'a100.1gpu.40',
            'region': settings.region,
            'type': 'pytorch2',
            'n_workers': 1,
            'job_desc': 'Привет, мир'
        }
    ))
    print(api.dts.transfer_list())
    print(api.dts.conn_sources())
    print(api.allocation.get_list_allocations())
    print(api.queue.get_list_queues_by_allocation_id('00000000-0000-0000-0000-000000000000'))

Файловая структура

Файловая структура не является финальной

├── README.md                   # Основная документация проекта.
├── LICENSE                     # Лицензионные условия.
├── install.gif                 # Анимация установки.
├── list.gif                    # Анимация списка.
├── logs.gif                    # Анимация логов.
├── mls
│   ├── cli.py                  # Вход в CLI.
│   ├── manager                 # Логика CLI.
│   │   ├── allocation          # Подкоманда: mls allocation.
│   │   │   ├── cli.py          # Работа с allocation.
│   │   │   └── help.py         # Помощь для allocation.
│   │   ├── configure           # Подкоманда: mls configure.
│   │   │   ├── cli.py          # Настройка профиля.
│   │   │   ├── help.py         # Помощь для configure.
│   │   │   └── utils.py        # Утилиты профиля.
│   │   ├── dts                 # Подкоманда: mls transfer и connector.
│   │   │      ├── connector_cli.py # Работа с connector .
│   │   │      ├── custom_types.py  # Константы и датаклассы .
│   │   │      ├── decorators.py    # Декораторы.
│   │   │      ├── help.py          # Помощь для transfer и connector.
│   │   │      ├── table.py         # Табличное отображение   .
│   │   │      ├── transfer_cli.py  # Работа с transfer. 
│   │   │      └── utils.py         # Утилиты connector и transfer.
│   │   ├── job                  # Подкоманда: mls job.
│   │   │    ├── cli.py          # Управление задачами ML.
│   │   │    ├── constants.py    # Константы   
│   │   │    ├── custom_types.py # Типы задач ML.
│   │   │    ├── dataclasses.py  # Дата-классы задач.
│   │   │    ├── help.py         # Помощь для job.
│   │   │    └── utils.py        # Утилиты задач ML.
│   │   └── queue               # Подкоманда: mls queue.
│   │        ├── cli.py         # Работа с queue.
│   │        └── help.py        # Помощь для queue.
│   └── utils                   # Поддержка CLI.
│       ├── cli_entrypoint_help.py # Помощь CLI.
│       ├── common.py           # Общая логика.
│       ├── client.py           # Обобщение клиента cli (queue и allocation). 
│       ├── common.py           # Общие для cli методы. 
│       ├── common_types.py     # Пользовательские типы.
│       ├── execption.py        # Исключения.
│       ├── fomatter.py         # Форматирование справки.
│       ├── openssl.py          # Поддержка шифрования. 
│       ├── settings.py         # Настройки приложения.
│       └── style.py            # Стили CLI.
├── mls_core                    # SDK ядро.
│   ├── allocation
│   │    └── client.py          # Выделенный клиент allocation. 
│   ├── queue
│   │    └── client.py          # Выделенный клиент queue.
│   ├── client.py               # Клиенты SDK.
│   ├── exeptions.py            # Исключения SDK.
│   └── setting.py              # Настройки SDK.
├── samples
│   ├── template.binary.yaml    # Шаблон бинарных задач.
│   ├── template.binary_exp.yaml# Тестовый шаблон (Нестабильный). TODO 
│   ├── template.horovod.yaml   # Шаблон Horovod.
│   ├── template.pytorch.yaml   # Шаблон PyTorch. (Используйте pytorch2)
│   ├── template.pytorch2.yaml  # Шаблон PyTorch2.(минорно отличается от pytorch)
│   └── template.pytorch_elastic.yaml # Шаблон PyTorch Elastic.
└── Руководство cli
    ├── FAQ.md                  # FAQ.
    ├── Быстрый старт.md        # Быстрый старт.
    ├── Запуск задачи.md        # Запуск задач.
    ├── Работа переменных окружений.md
    ├── Сокрытие credentials.md
    └── Настройка автокомплитера.md # Автозаполнение.

Автокомплитер Zsh

Пользователям Zsh доступна автозаполнение в CLI. Чтобы использовать опцию, добавьте скрипт ниже в Zsh-профиль:

_mls_completion() {
    autocomplete "${COMP_WORDS[@]}"
}
complete -F _mls_completion mls

Примеры

binary YAML binary.

pytorch2 YAML pytorch2.

pytorch_elastic YAML pytorch_elastic.

docs: .gitlab-ci.yml rules

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudru_ml_cli-0.11.1.tar.gz (49.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cloudru_ml_cli-0.11.1-py3-none-any.whl (70.6 kB view details)

Uploaded Python 3

File details

Details for the file cloudru_ml_cli-0.11.1.tar.gz.

File metadata

  • Download URL: cloudru_ml_cli-0.11.1.tar.gz
  • Upload date:
  • Size: 49.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for cloudru_ml_cli-0.11.1.tar.gz
Algorithm Hash digest
SHA256 af477cc83f6b841e29a06b1dc6ef131b19dfb28f45fd36bfb4c84d1350111180
MD5 a2befc94252ac6309976dbcc5c8919b2
BLAKE2b-256 0dd91c2e3e1006f6f5726f365b683a7ede1fce353a3f62bfa53d4204fc07e8ea

See more details on using hashes here.

File details

Details for the file cloudru_ml_cli-0.11.1-py3-none-any.whl.

File metadata

File hashes

Hashes for cloudru_ml_cli-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0d0575e466e7a5329c659039b08f87dd03268b36fd9fc77632c7a61900f036ba
MD5 0c879aa17e0dc0d2202ff3d779f217aa
BLAKE2b-256 4e3b90c5594ab7ad0ddd5f4be3ea0b7473735ceb86da7e1333ae4e104f3d3c38

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page