SBT MLOps 2023 Fall

Домашние задания

Тема Бонусное Блокирующее Баллы Дедлайн
Metric learning bindings Да Нет 2 14.10
S3 Нет Нет 2 28.10
? ? ? ? ?
? ? ? ? ?
Nvidia Triton Server Нет Да 5 16.12
File server Да Нет 2 16.12

Metric learning bindings

Представьте, что вы работаете над обучением и деплоем модели соответствия текстов и видео. В большой и сложный пайплайн рантайма необходимо встроить быструю функцию, которая бы считала cosine similarity между двумя наборами векторов. Напишите функцию на C++, принимающую на вход два набора векторов формы (N, D), где D - размерность эмбеддинга, напишите тесты, скомпилируйте проект и продемонстрируйте работоспособность в python. Постарайтесь по возможности использовать BLAS. Пример изготовления оных глядеть в cpp-bindings.

Разбаловка:

  • (1 балл) Все работает :)
  • (1 балл) Использован BLAS и написаны тесты

Для сдачи артефакт в виде репозитория и демонстрация работоспособности.

S3

Представьте, что в инфраструктуру вашей компании завезли новый облачный сервис хранения и версионирования данных, внутри вашего уютного ДЦ он находится на другой физической машине (не на той, куда вы обычно ssh-итесь или не на той, где у вас запускаются таски) и теперь чтобы организовать обучение с сохранением чекпоинтов вам нужно складывать их не локально диск, а в бакет. Задание: поднимите Docker Compose с MinIO, сконфигурируйте бакет, продемонстрируйте, что умеете сохранять чекпоинт модели (state_dict + hyperparameters + optimizers state) в бакет, а так же, что умеете восстанавливать обучение из чекпоинта в бакете.

Разбалловка:

  • (1 балл) Поднят Docker Compose c MinIO, бакет сконфигурирован
  • (1 балл) Клиентский python код

Для сдачи артефакт в виде репозитория и демонстрация работоспособности.

File server

Представьте, что у вас появилась необходимось разметки данных на краудсорсе. Соберите пул небольших файлов (txt) и сделайте их видимыми снаружи (http://hostname/filepath). Продемонстрируйте, что с другой физической машины из под другой сети их можно загрузить и сверить хешсумму. Форма отчета: репозиторий с кодом. P.S. Если в силу обстоятельств нет возможности пробросить порты на маршрутизаторе и/или нет статичного ip, то можно просто на localhost.

Nvidia Triton

Задание: возьмите любой предобученный трансформер [если есть явные предпочтение на что-то другое, то пишите в лс] с huggingface и сконвертируйте его в ONNX (.onnx), а затем сконвертируйте в TensorRT (.plan) с оптимизацией в fp32, fp16 и int8 [в итоге должно получится четыре файла]. Поднимите Docker Compose с Nvidia Triton Inference Server, настройте model_repository с моделью в различных форматах (и другими необходимыми зависимостями, если они будут):

  1. onnx
  2. onnx с оптимизацией в openvino
  3. trt-fp32
  4. trt-fp16
  5. trt-int8.

После того как баги будут устранены, а triton server успешно запустится, проведите на синтетических данных замеры throughput и latency с помощью инструмента perf_analyzer (включен в SDK). Далее необходмо написать клиентский скрипт на python, сравнивающий нормы попарных разностей векторов-эмбеддингов с разных моделей

Разбалловка:

  • (2 балла) Есть docker_compose.yaml, код конвертации в ONNX и .onnx модель + контейнер запускается + есть readme.md отчет с инструкцией по воспроизводимости
  • (1 балл) Есть код конвертации в trt и .plan модели + к ONNX добавили оптимизацию OpenVino
  • (1 балл) Есть замеры throughput и latency хотя бы для двух моделей (в нашем случае - форматов одной модели)
  • (1 балл) Есть клиентский скрипт, сравнивающий нормы разности + эмбеддинги от trt не разнесло от перевода в fp16 и ниже

P.S.:

  • Для сдачи подготовить артефакты работы в виде репозитория
  • Если контейнер с triton server не запустился - 0 баллов

FAQ

Свойства дедлайнов

После дедлайна задание принимается со штрафом в 50%. После 16 декабря задания не принимаются.

Формат сдачи задания

В чате курса формируется очередь сдающих, в день пары, после ее окончания, задания принимаются в формате беседы 1на1. Форма отчета по каждому заданию прописана в нем. Включение камеры при дистанционной сдаче опционально и зависит только от вашего желания.

Что такое блокирующее задание

Задание, без выполнения которого (то есть количество баллов > 0) нельзя закрыть курс

Как выставляется оценка за курс

Набранное вами число баллов нормируется на максимальное число баллов (без учета бонусных ДЗ) и умножается на 10.