Skip to main content

Dagster

Используется для управления MLOps.

Адрес:   https://dagster.dot-dot.ru/ 

Репо:   https://gitlab.dot-dot.ru/ai/dagster

Jobs

TEST_chain

Автотесты для следующих эндпойнтов:

  • /v1/schedule/chains

  • /v1/schedule/chains/carrier/scoring

Принцип работы:

  1. Запросить цепочки. Число цепочек должно быть больше 0.

  2. Для первых 5 групп цепочек сформировать запрос на перевозчиков. Суммировать число перевозчиков, вывести в отчете в конце. Теоретически число перевозчиков может быть 0, однако скорее всего это повод сделать более тщательную проверку подбора перевозчиков.

  3. Для успешного прохождения теста ни один из запросов не должен быть с ошибкой.


 

TEST_schedule

Автотесты для следующих эндпойнтов:

  • /v1/schedule/transport

  • /v1/schedule/calculate

  • /v1/schedule/carrier/scoring

Принцип работы:

  1. Получить графики с /v1/schedule/transport. Вывести длительность работы эндпойнта.

  2. Сформировать 9 корзин - 3 по 1, 3 по 2 и 3 по 3 графика в каждой. В каждой корзине в каждом графике выбрать случайное количество дней и количество перевозок.

  3. Посчитать калькуляцию по корзинам.

  4. Проверить: количество элементов в ключе schedule ответа должно быть равно количеству элементов ключа cart запроса. В каждом графике запроса и ответа должно совпадать количество элементов в соответствующих ключах sub. В каждом элементе sub запроса и ответа поле day должно быть идентичным.

  5. Получить рекомендацию перевозчиков для корзины с /v1/schedule/carrier/scoring. Посчитать общее количество перевозчиков для всех корзин.

  6. Для рекомендаций должно выполняться правило: если перевоз имеет заполненное поле dot_dot_id, то carrier_class должен быть null. Если заполнено поле ati_id, то carrier_class должен быть одним из {1, 2, 3, 4}.

  7. В конце теста общее количество рекомендуемых перевозчиков не должно быть 0.

  8. Для успешного прохождения теста ни один из запросов не должен быть с ошибкой.

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


 

TEST_schedule_V2

Автотесты для эндпойнтов:

  • /v2/schedule/transport

  • /v2/schedule/calculate

  • /v2/schedule/carrier/scoring

Принцип работы практически тот же с поправкой на разницу в API.


 

TEST_calculator

Автотесты следующих эндпойнтов:

  • /v1/classification/order/relevance

  • /v2/classification/direction/confidence

  • /v1/classification/carrier/scoring

  • /v1/classification/direction/uncertain

Принцип работы:

  1. Вытащить все уверенные направления из /v2/classification/direction/confidence.

  2. Идти по полученным направлениям, делать запрос в /v1/classification/order/relevance, проверять статус. Для запроса без изменений ожидается статус 1.

  3. Каждый 2 запрос прибавлять к weight 1.0. Для такого запроса ожидается статус 0.

  4. Если пришедший статус не соответствует ожидаемому, то выбрасывается ошибка.

  5. Каждый 15 запрос получить рекомендацию перевозчиков с /v1/classification/carrier/scoring. Посчитать количество рекомендуемых перевозчиков.

  6. Для рекомендаций должно выполняться правило: если перевоз имеет заполненное поле dot_dot_id, то carrier_class должен быть null. Если заполнено поле ati_id, то carrier_class должен быть одним из {1, 2, 3, 4}.

  7. В конце теста общее количество рекомендуемых перевозчиков не должно быть 0.

  8. Число неуверенных направлений (direction/uncertain) должно быть больше 0.

  9. Для успешного прохождения теста ни один из запросов не должен быть с ошибкой.

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


 

TEST_calculator_V2

Автотесты для следующих эндпойнтов:

  • /v2/classification/order/relevance

  • /v3/classification/direction/confidence

  • /v2/classification/carrier/scoring

  • /v2/classification/direction/uncertain

Принцип работы практически тот же с поправкой на разницу в API.


 

SUSTAIN_clean_logs

Чистка логов ранов дагстера и ранов mlflow (по всем экспериментам).

По умолчанию для дагстера установлена максимальная давность в 14 дней, для mlflow - 45 дней.


 

DEPLOY_autodeploy_calc

Автоматическое обучение модели калькулятора для ветки, указанной в env как CALCULATOR_BRANCH. При успехе загружает модель в MLFlow, устанавливает требуемый alias. Отправляет метрики в телеграмм.

Обучение основано на джобе TRAIN_train_model.


 

TRAIN_train_model

Запустить обучение модели из git-репозитория.

Универсальная задача, может поддерживать запуск обучения любой модели, которая поддерживает данный формат. В launchpad необходимо указать HTTPS ссылку на репозиторий и SHA коммита (либо название ветки), параметры обучения, если необходимо переопределить дефолтные.

Обучение происходит в докере, который видно на самом сервере. Поскольку вывод из докер контейнера недоступен, для дебагинга рекомендуется обучать модель запуском команды напрямую, а не через dagster. Данная джоба полезна экономией времени для отлаженных процессов обучения модели.


 

ALERTS_check_availability

Проверка доступности ML API, БД, инференс-сервера и Редиса. В случае недоступности одного из элементов, отправляет алерт в ТГ канал. К сожалению, поскольку Дагстер развернут на том же сервере, что и ML, в случае падения сервера алерты работать не будут.


 

MANAGEMENT_get_model_info

Получить подробную информацию о модели на инференс сервере.

В launchpad необходимо указать имя модели.

Пример ответа
[
    {
        "batchSize": 1,
        "jobQueueStatus": {
            "pendingRequests": 0,
            "remainingCapacity": 1000
        },
        "loadedAtStartup": false,
        "maxBatchDelay": 100,
        "maxWorkers": 1,
        "minWorkers": 1,
        "modelName": "calculator_production",
        "modelUrl": "https://storage.yandexcloud.net/data-monsters/models/calculator_production.mar",
        "modelVersion": "2.1.4",
        "runtime": "python",
        "workers": [
            {
                "gpu": false,
                "gpuUsage": "N/A",
                "id": "9011",
                "memoryUsage": 494702592,
                "pid": 5591,
                "startTime": "2023-11-14T15:21:39.635Z",
                "status": "READY"
            }
        ]
    }
]

 


 

MANAGEMENT_get_api_info

Получить информацию о состоянии ML API.

Пример ответа
{
    "models": [
        {
            "name": "calculator_production",
            "version": "2.1.4",
            "workers": 1
        },
        {
            "name": "calculator_staging",
            "version": "2.1.1",
            "workers": 1
        },
        {
            "name": "carrier_ranker_production",
            "version": "0.6.2",
            "workers": 1
        },
        {
            "name": "carrier_ranker_staging",
            "version": "0.6.2",
            "workers": 1
        }
    ],
    "version": "0.1.2"
}

 


 

MANAGEMENT_get_all_models_info

Получить информацию о всех моделях на инференс сервере.

Пример ответа
{
    "models": [
        {
            "modelName": "calculator_production",
            "modelUrl": "https://storage.yandexcloud.net/data-monsters/models/calculator_production.mar"
        },
        {
            "modelName": "calculator_staging",
            "modelUrl": "https://storage.yandexcloud.net/data-monsters/models/calculator_staging.mar"
        },
        {
            "modelName": "carrier_ranker_production",
            "modelUrl": "https://storage.yandexcloud.net/data-monsters/models/carrier_ranker_production.mar"
        },
        {
            "modelName": "carrier_ranker_staging",
            "modelUrl": "https://storage.yandexcloud.net/data-monsters/models/carrier_ranker_staging.mar"
        }
    ]
}

 


 

Schedules

SUSTAIN_clean_logs_schedule

SUSTAIN_clean_logs, запускается раз в неделю в воскресенье.


DEPLOY_autodeploy_calc_schedule

DEPLOY_autodeploy_calc, запускается каждый день в 21:00 по МСК. Mlflow alias установлен в production, т.е. обученный калькулятор сразу идет в прод.


ALERTS_check_availability_schedule

ALERTS_check_availability, запускается каждые 5 минут.


DEPLOY_autodeploy_schedule_schedule

DEPLOY_autodeploy_schedule с запуском в пятницу в 21:00 по МСК. Mlflow alias установлен в test, т.е. требует ручного перевода в production.