Тема | Бонусное | Блокирующее | Баллы | Дедлайн |
---|---|---|---|---|
Metric learning bindings | Да | Нет | 2 | 14.10 |
S3 | Нет | Нет | 2 | 28.10 |
? | ? | ? | ? | ? |
? | ? | ? | ? | ? |
Nvidia Triton Server | Нет | Да | 5 | 16.12 |
File server | Да | Нет | 2 | 16.12 |
Представьте, что вы работаете над обучением и деплоем модели соответствия текстов и видео.
В большой и сложный пайплайн рантайма необходимо встроить быструю функцию, которая бы считала cosine similarity между двумя наборами векторов. Напишите функцию на C++, принимающую на вход два набора векторов формы (N, D), где D - размерность эмбеддинга, напишите тесты, скомпилируйте проект и продемонстрируйте работоспособность в python. Постарайтесь по возможности использовать BLAS.
Пример изготовления оных глядеть в cpp-bindings
.
Разбаловка:
- (1 балл) Все работает :)
- (1 балл) Использован BLAS и написаны тесты
Для сдачи артефакт в виде репозитория и демонстрация работоспособности.
Представьте, что в инфраструктуру вашей компании завезли новый облачный сервис хранения и версионирования данных, внутри вашего уютного ДЦ он находится на другой физической машине (не на той, куда вы обычно ssh-итесь или не на той, где у вас запускаются таски) и теперь чтобы организовать обучение с сохранением чекпоинтов вам нужно складывать их не локально диск, а в бакет. Задание: поднимите Docker Compose с MinIO, сконфигурируйте бакет, продемонстрируйте, что умеете сохранять чекпоинт модели (state_dict + hyperparameters + optimizers state) в бакет, а так же, что умеете восстанавливать обучение из чекпоинта в бакете.
Разбалловка:
- (1 балл) Поднят Docker Compose c MinIO, бакет сконфигурирован
- (1 балл) Клиентский python код
Для сдачи артефакт в виде репозитория и демонстрация работоспособности.
Представьте, что у вас появилась необходимось разметки данных на краудсорсе. Соберите пул небольших файлов (txt) и сделайте их видимыми снаружи (http://hostname/filepath). Продемонстрируйте, что с другой физической машины из под другой сети их можно загрузить и сверить хешсумму. Форма отчета: репозиторий с кодом. P.S. Если в силу обстоятельств нет возможности пробросить порты на маршрутизаторе и/или нет статичного ip, то можно просто на localhost.
Задание: возьмите любой предобученный трансформер [если есть явные предпочтение на что-то другое, то пишите в лс] с huggingface и сконвертируйте его в ONNX (.onnx), а затем сконвертируйте в TensorRT (.plan) с оптимизацией в fp32, fp16 и int8 [в итоге должно получится четыре файла]. Поднимите Docker Compose с Nvidia Triton Inference Server, настройте model_repository с моделью в различных форматах (и другими необходимыми зависимостями, если они будут):
- onnx
- onnx с оптимизацией в openvino
- trt-fp32
- trt-fp16
- 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 баллов
После дедлайна задание принимается со штрафом в 50%. После 16 декабря задания не принимаются.
В чате курса формируется очередь сдающих, в день пары, после ее окончания, задания принимаются в формате беседы 1на1. Форма отчета по каждому заданию прописана в нем. Включение камеры при дистанционной сдаче опционально и зависит только от вашего желания.
Задание, без выполнения которого (то есть количество баллов > 0) нельзя закрыть курс
Набранное вами число баллов нормируется на максимальное число баллов (без учета бонусных ДЗ) и умножается на 10.