Alexey Fateev

MLOps Engineer

KV-cache в моделях transformers

Оригинальная статья: December 2024 TL;DR По мере увеличения сложности и размера моделей на основе трансформеров, растет и необходимость оптимизации скорости их вывода (inference), особенно в чат-приложениях, где пользователи ожидают мгновенных ответов. Кэширование ключей и значений (Key-Value, KV) — это умный прием для достижения этой цели: во время вывода (inference) матрицы ключей и значений вычисляются для каждого сгенерированного токена. KV-кэширование сохраняет эти матрицы в памяти, так что при генерации последующих токенов мы вычисляем ключи и значения только для новых токенов, вместо того чтобы пересчитывать всё заново. ...

January 27, 2025 · 14 min

Ray Compiled Graphs для оптимизированных AI нагрузок

Оригинальная статья: Ray Compiled Graphs: Optimized AI Workloads with Native GPU Communication Перевод: January 2025 Введение По мере того как AI модели продолжают расти в сложности и размере, рабочие нагрузки и приложения вокруг этих моделей создают новые требования к базовой программной инфраструктуре и примитивам. В отличие от традиционных CPU-ориентированных рабочих нагрузок, нагрузки для больших AI моделей, такие как training и inference, являются преимущественно GPU-интенсивными и часто требуют распределенных вычислений и координации между десятками или сотнями ускорителей. ...

January 14, 2025 · 9 min

Распределенный запуск LLM на нескольких GPU с помощью Ray и vLLM

В этой статье я поделюсь практическим опытом инференса LLM на двух серверах с разными GPU. Большие языковые модели требуют значительных вычислительных ресурсов (vRAM), и распределенный запуск с использованием инструментов, таких как Ray, может значительно упростить этот процесс. В процессе работы я столкнулся с проблемой неравномерного распределения ресурсов, поскольку видеокарты имеют разный объем vRAM, и половина модели изначально не помещалась на меньшую GPU. Ray: основа распределенных вычислений Ray представляет собой фреймворк для распределенных вычислений, который идеально подходит для наших задач. Его ключевые преимущества: ...

January 3, 2025 · 5 min · Алексей Фатеев

Принципы MLOps

Оригинальная статья: MLOps Principles Перевод: January 2025 Принципы MLOps В связи с растущим внедрением технологий машинного обучения и искусственного интеллекта в программные продукты и сервисы, возникает необходимость в установлении передовых практик и инструментов для тестирования, развертывания, управления и мониторинга ML-моделей в промышленной эксплуатации. MLOps позволяет нам минимизировать “технический долг” в приложениях машинного обучения. Согласно определению SIG MLOps, “оптимальный подход к MLOps предполагает, что компоненты машинного обучения обрабатываются систематически и наравне с другими программными компонентами в среде CI/CD. Модели машинного обучения могут быть развернуты совместно с сервисами, которые их обслуживают и потребляют, как часть единого процесса релиза.” Стандартизация этих практик направлена на ускорение внедрения ML/AI в программные системы и оптимизацию процесса разработки интеллектуального программного обеспечения. В дальнейшем мы рассмотрим ключевые концепции MLOps, включая итеративно-инкрементальную разработку (Iterative-Incremental Development), автоматизацию (Automation), непрерывное развертывание (Continuous Deployment), версионирование (Versioning), тестирование (Testing), воспроизводимость (Reproducibility) и мониторинг (Monitoring). ...

January 3, 2025 · 17 min

Сборка последней версии vLLM из исходников под CUDA 11.8 и Torch 2.5.1

У нас есть проблема с CUDA. У нас 11.8 версия в кластере, и на текущий момент обновить на 12+ не можем, и по этому приходится выкручиваться различными способами, зачастую болезненными. Итак. Нужен свежий образ vLLM, который будет там инферить модели внутри kServe. Свежак умеет инферить модели Score и Embedding. У разрабов vLLM на гитхабе поломались их пайплайны создания релизов, и они их чинить пока не хотят, то есть есть нет нормального whl под CUDA 11.8 и нашего петухона. Помимо всего этого есть другая проблема - нам нужен vllm-flash-attention (форк основной репы, который сделали сами разрабы vLLM) для ускорения инференса LLM моделей. У него в требованиях CUDA 12+ и Torch 2.4.0, при этом же vLLM требует Torch 2.5.1. Уже попахивает шизой. ...

December 18, 2024 · 4 min · Алексей Фатеев

Развертывание LLM с помощью TorchServe + vLLM | PyTorch

Оригинальная статья: October 2024 Перевод: November 2024 Авторы: Маттиас Ресо, Анкит Гунапал, Саймон Мо, Ли Нин, Хамид Шоджаназери Движок vLLM в настоящее время является одним из самых эффективных способов запуска больших языковых моделей (LLM). Он предоставляет команду vllm serve как простой вариант развертывания модели на одной машине. Хотя это и удобно, для обслуживания этих LLM в производственной среде и при масштабировании необходимы некоторые расширенные функции. TorchServe предлагает эти важные производственные функции (такие как пользовательские метрики и версионирование моделей), и благодаря гибкому дизайну пользовательских обработчиков делает очень простой интеграцию таких функций, как генерация с дополненным поиском (RAG) или защитные механизмы, подобные Llama Guard. Поэтому естественно объединить движок vLLM с TorchServe для создания полнофункционального производственного решения по обслуживанию LLM. ...

November 14, 2024 · 9 min

Проектирование кластеров Kubernetes — выбор размера рабочих узлов

Оригинальная статья: August 2023 Перевод: November 2024 TL;DR: Что лучше - кластер Kubernetes с меньшим количеством крупных узлов или множеством мелких? В этой статье рассматриваются плюсы и минусы обоих подходов. Когда вы создаете кластер Kubernetes, один из первых вопросов может быть: “Какой тип рабочих узлов следует использовать и сколько их нужно?” Если вы создаете локальный кластер, стоит ли заказывать несколько мощных серверов последнего поколения или использовать десяток старых машин, которые есть в вашем дата-центре? ...

November 13, 2024 · 17 min