Мы активно развиваем направление ML-инфраструктуры в Яндексе. Наша задача — сделать инфраструктуру эффективной и удобной для тысяч ML-инженеров, работающих в компании. Одной из ключевых систем, которую используют ML-инженеры, является YT. На кластерах YT происходит как запуск обучений, так и подготовка данных для них. То есть суперкомпьютеры Яндекса подключены к кластерам YT и активно используются для обучения передовых моделей, таких как Yandex GPT-3, Нейро и других. Чтобы обучение работало эффективно, на тысячах GPU необходима удобная и надёжная инфраструктура. Например, обучения должны уметь переживать выход хостов из строя. Для этого требуется регулярно писать чекпойнты, размер которых может достигать десятков TB. Также необходимо уметь эффективно стримить данные из распределённого хранилища, причём поток данных, которые потребляет большое распределённое обучение, может составлять до 100 GB/s, а любые неоптимальности или задержки будут приводить к простою и недоутилизации дорогостоящих GPU. Мы ищем инженера, который поможет нам построить удобную инфраструктуру для чтения и записи в YT для использования в ML-обучениях.

Обязанности:

Задачи оптимизации пайплайна чтения и записи
Прежде чем попасть в GPU, данные проделывают большой путь. Они читаются с HDD и SSD на машинах YT, кодируются в стабильный формат (например, JSON или Arrow) для передачи клиенту. На стороне клиента они декодируются кодом C++ и заворачиваются в Python-объекты для использования в библиотеках машинного обучения. Предстоит разобраться во всём этом пути, убрать лишние конвертации, перейти на более эффективные форматы, а потом, вооружившись профайлером, найти узкие места и оптимизировать их. Новые алгоритмы параллельных чтений
Чтобы полностью утилизировать дорогостоящие видеокарты, процесс обучения обычно читает данные с разных машин YT несколькими потоками. Такие чтения сейчас создают повышенную нагрузку на мастер-сервера YT. Предстоит разработать новый протокол параллельных чтений, избавленный от этой проблемы, и реализовать его во всех компонентах: на мастере, на нодах, где хранятся сами данные, на прокси, которые являются входной точкой для пользователя, а также в самих пользовательских библиотеках. Написание удобной библиотеки для работы с YT из кода ML-обучений
ML-инженеры пишут свой код, пользуясь популярными фреймворками, такими как PyTorch или Jax. Наша задача — предоставить инструменты, которые бы позволяли максимально просто и нативно с точки зрения данных библиотек работать с YT. Больше о бэкенде в Яндексе — в канале Yandex for Backend

Ключевые навыки:

  • Разрабатывали сложные системы или библиотеки на C++
  • Любите заниматься задачами оптимизации
  • Знаете Python и готовы развивать Python-часть нашего стека технологий
  • Готовы погружаться в специфику задач, которые возникают у ML-инженеров, и создавать удобные инструменты для пользователей