Привет, Хабр! Я Мичил Егоров, руководитель команды разработки продуктов искусственного интеллекта в X5 Tech. 

В последнее время языковые модели (LLM) стали неотъемлемой частью многих бизнес-процессов, начиная от чат-ботов и заканчивая автоматической обработкой отзывов клиентов. Однако, чтобы эффективно использовать такие модели, необходима мощная и гибкая инфраструктура. 

За последний год команда X5 Tech значительно выросла, проверила множество гипотез и протестировала различные модели. Основные кейсы использования включают чат-боты, суфлёры для модераторов, автоматическое резюмирование и обработку отзывов клиентов.

В этой статье расскажу, как команда X5 Tech построила инфраструктуру для работы с языковыми моделями, какие вызовы преодолели и какие решения были приняты.

Требования к инфраструктуре

Прежде чем перейти к архитектуре, важно понять, какие требования предъявлялись к инфраструктуре:

  1. Пропускная способность: пользователи не должны ждать ответа более нескольких секунд, даже при высокой нагрузке.

  2. Безопасность: необходимо защитить коммерческую тайну и персональные данные клиентов.

  3. Стабильное качество ответов: качество генерации текста должно оставаться высоким даже после обновления моделей.

  4. Масштабируемость: инфраструктура должна легко масштабироваться для обработки растущего числа запросов.

Почему мы выбрали локальные модели?

Одним из ключевых решений было использовать локальные модели вместо сторонних сервисов, таких как OpenAI. Это связано с несколькими проблемами:

  1. Безопасность данных: передача данных третьим лицам может привести к утечке коммерческой тайны или персональных данных.

  2. Зависимость от внешних систем: обновления моделей у сторонних провайдеров могут привести к снижению качества ответов без предупреждения.

  3. Линейная зависимость стоимости от числа запросов: чем больше запросов, тем выше затраты на использование сторонних сервисов.

  4. Ограничения на использование: провайдеры могут заблокировать доступ по различным причинам, включая географические ограничения.

Архитектура

Архитектура проекта
Архитектура проекта

Наша архитектура для работы с языковыми моделями состоит из нескольких ключевых компонентов:

  1. Маскировщик: сервис для маскирования и демаскирования данных перед отправкой к внешним моделям. Это позволяет защитить персональные данные и коммерческую тайну.

  2. API Gateway: сервис, который обрабатывает входящие запросы, авторизует их и направляет либо к локальным моделям, либо к внешним через маскирование данных.

  3. Система квот: управляет токенами и ограничивает количество запросов для каждого клиента, чтобы избежать перегрузки системы.

  4. Инференс моделей: сервис для работы с локальными моделями, где происходит инференс (генерация ответов). Используются инструменты, такие как vLLM и TensorRT, для ускорения генерации.

  5. Логирование: используется langfuse для логирования и анализа работы моделей, что позволяет отслеживать этапы обработки запросов и выявлять проблемы.

Компоненты системы

Маскировщик

Маскировщик заменяет чувствительные данные (например, имена, номера телефонов, адреса) на вымышленные перед отправкой к внешним моделям. После получения ответа данные демаскируются обратно. Это позволяет использовать сторонние модели без риска утечки информации.

Процесс маскирования
Процесс маскирования

Требования к маскированию:

  • Высокая точность распознавания чувствительных данных.

  • Согласованность: замена данных должна быть логичной (например, женские имена заменяются на женские, мужские — на мужские).

  • Консистентность: если в тексте заменяется имя, оно должно быть заменено везде.

  • Невозможность восстановления исходных данных из замаскированных.

Процесс демаскирования
Процесс демаскирования

API Gateway

API Gateway — это центральный узел, который обрабатывает все входящие запросы. Он обеспечивает авторизацию, балансировку нагрузки и маршрутизацию запросов к локальным или внешним моделям.

Система квот

Система квот управляет токенами и ограничивает количество запросов для каждого клиента. Это позволяет избежать перегрузки системы и обеспечивает равномерное распределение ресурсов между всеми клиентами.

Инференс моделей

Для инференса моделей мы используем инструменты, такие как vLLM и TensorRT, которые позволяют ускорить генерацию текста. Например, vLLM поддерживает динамический батчинг, что увеличивает пропускную способность системы.

Сравнение разных инференсов представлена ниже:

Сравнение llama-cpp, tgi и vllm
Сравнение llama-cpp, tgi и vllm

Логирование

Интерфейс langfuse
Интерфейс langfuse

Логирование осуществляется с помощью langfuse, который позволяет отслеживать этапы обработки запросов и выявлять проблемы. langfuse также поддерживает версионирование моделей и хранение датасетов для тестирования.

Выбор новой модели

Проблема

Одной из ключевых проблем, с которой столкнулась команда, было обновление моделей. Новая модель, которая показывала отличные результаты на публичных бенчмарках, на практике начала генерировать ответы, которые не соответствовали контексту. Это привело к ухудшению качества ответов и необходимости срочного отката к старой версии.

Деградация качества модели
Деградация качества модели

Бенчмарк

Для оценки качества моделей команда разработала внутренний бенчмарк, который включает запросы пользователей, контекст и эталонные ответы. Метрики, такие как BLEU и DPV, используются для сравнения качества генерации.

Валидация ответов модели
Валидация ответов модели

Сбор данных

Для автоматизации процесса сбора данных и тестирования моделей команда построила Feature Store. Все запросы пользователей собираются во время пилотов и промышленной эксплуатации, после чего отправляются на разметку. Размеченные данные используются для тестирования новых моделей и обновления бенчмарков.

Автоматизация сбора обратной связи
Автоматизация сбора обратной связи

Итоги

Построение инфраструктуры для работы с языковыми моделями — это сложный, но необходимый процесс для компаний, которые хотят использовать LLM в своих продуктах. Опыт X5 Tech показывает, что ключевыми аспектами являются безопасность данных, масштабируемость и постоянное тестирование моделей на реальных задачах. Использование локальных моделей и сервисов маскирования данных позволяет минимизировать риски и обеспечивать стабильное качество ответов.

Если вы хотите узнать больше по теме, посмотрите моё выступление: Построение инфраструктуры LLM с нуля на основе опыта X5 Tech.

Комментарии (0)