Разворачивание моделей встраивания с конечными точками вывода Hugging Face

Развертывание моделей встраивания с конечными точками вывода Hugging Face эстетическая и модная трансформация

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

В сравнении с LLM-моделями модели встраивания меньшего размера и быстрее для вывода. Это очень важно, поскольку вам необходимо воссоздавать свои встраивания после изменения или улучшения модели. Кроме того, важно, чтобы весь процесс проверки был максимально быстрым, чтобы обеспечить хороший пользовательский опыт.

В этой статье мы покажем вам, как развернуть модели встраивания с открытым исходным кодом на конечных точках вывода Hugging Face, используя Text Embedding Inference, наше управляемое решение SaaS, которое упрощает развертывание моделей. Кроме того, мы научим вас запуску пакетных запросов масштаба.

  1. Что такое конечные точки вывода Hugging Face
  2. Что такое Text Embedding Inference
  3. Разворачивание модели встраивания как конечной точки вывода
  4. Отправка запроса в конечную точку и создание встраиваний

Прежде чем мы начнем, освежим наши знания о конечных точках вывода.

1. Что такое конечные точки вывода Hugging Face?

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

Вот некоторые из наиболее важных возможностей:

  1. Простое развертывание: Развертывайте модели в качестве готовых к использованию API для производства всего несколькими щелчками мыши, избегая необходимости управления инфраструктурой или MLOps.
  2. Экономия затрат: Получайте преимущества от автоматической масштабируемости до нуля, снижая затраты путем масштабирования инфраструктуры при отсутствии использования конечной точки, при этом оплачивая на основе времени работы конечной точки, обеспечивая экономичность.
  3. Защита предприятия: Развертывайте модели в безопасных неактивных конечных точках, доступных только через прямые соединения VPC, поддерживаемых сертификацией SOC2 Type 2 и предлагающих соглашения об обработке данных BAA и GDPR для обеспечения повышенной безопасности и соблюдения требований.
  4. Оптимизация LLM: Оптимизировано для LLM, обеспечивая высокую пропускную способность с помощью Paged Attention и низкую задержку благодаря пользовательскому коду трансформаторов и мощности Flash Attention от Text Generation Inference
  5. Поддержка обширного спектра задач: Поддержка 🤗 Transformers, Sentence-Transformers и Diffusers задач и моделей “из коробки”, а также простая настройка для возможности выполнения расширенных задач, таких как диаризация диктора или любая задача машинного обучения и библиотека.

Вы можете начать работу с конечными точками вывода по адресу: https://ui.endpoints.huggingface.co/

2. Что такое встраивание текста Inference?

Inference по встраиванию текста (TEI) – это специально разработанное решение для развертывания и обслуживания моделей встраивания открытого исходного кода. TEI предназначен для высокопроизводительного извлечения и поддержки наиболее популярных моделей. TEI поддерживает все десять лучших моделей из Таблицы лидеров по масштабированию текстовых встраиваний (MTEB), включая FlagEmbedding, Ember, GTE и E5. В настоящее время TEI реализует следующие функции оптимизации производительности:

  • Отсутствие этапа компиляции графа модели
  • Маленькие образы комплекта Docker и быстрые времена загрузки. Подготовьтесь к настоящему серверному выполнению!
  • Пакетная обработка с использованием токенов
  • Оптимизированный код трансформаторов для вывода с использованием Flash AttentionCandle и cuBLASLt
  • Загрузка весов через Safetensors
  • Готовность к промышленному применению (распределенное трассирование с помощью Open Telemetry, метрики Prometheus)

Эти функции обеспечивают ведущую производительность по пропускной способности и стоимости. В производительности по бенчмарку для BAAI/bge-base-en-v1.5 на конечной точке вывода Nvidia A10G с длиной последовательности 512 токенов и размером пакета 32 мы получили пропускную способность 450+ запросов / сек, что приводит к стоимости 0.00156$ / 1 миллион токенов или 0.00000156$ / 1 тысячу токенов. Это на 64 раза дешевле, чем у OpenAI Embeddings ($0.0001 / 1 тысячу токенов).

Производительность

3. Развертывание модели встраивания как конечной точки вывода

Для начала работы вам необходимо войти в систему с учетной записью пользователя или организации, в которой есть выбранный способ оплаты (вы можете добавить его здесь), а затем получить доступ к конечным точкам вывода по адресу https://ui.endpoints.huggingface.co

Затем нажмите на «Новая конечная точка». Выберите репозиторий, облако и регион, настройте параметры экземпляра и безопасности, а затем разверните в нашем случае модель BAAI/bge-base-en-v1.5.

create-model

Конечные точки вывода предлагают тип экземпляра на основе размера модели, который должен быть достаточно большим для запуска модели. Здесь будет использоваться Intel Ice Lake 2 vCPU. Чтобы получить производительность как в нашем бенчмарке, измените экземпляр на 1x Nvidia A10G.

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

Выбор экземпляра

Вы можете развернуть свою модель, нажав на «Создать конечную точку». Через 1-3 минуты конечная точка должна быть онлайн и доступна для обслуживания запросов.

4. Отправка запроса конечной точке и создание встраиваний

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

Тестирование модели

Примечание: TEI в настоящее время не обрезает ввод автоматически. Вы можете включить это, установив truncate: true в вашем запросе.

В дополнение к виджету, обзор предоставляет фрагменты кода для cURL, Python и Javascript, которые вы можете использовать для отправки запросов на модель. Фрагмент кода показывает, как отправить один запрос, но TEI также поддерживает пакетные запросы, которые позволяют вам отправлять несколько документов одновременно для повышения использования вашей конечной точки. Ниже приведен пример отправки пакетного запроса с установленным обрезанием в true.

import requestsAPI_URL = "https://l2skjfwp9punv393.us-east-1.aws.endpoints.huggingface.cloud"headers = {    "Authorization": "Bearer YOUR TOKEN",    "Content-Type": "application/json"}def query(payload):    response = requests.post(API_URL, headers=headers, json=payload)    return response.json()    output = query({"inputs": ["sentence 1", "sentence 2", "sentence 3"],"truncate": True})# output [[0.334, ...], [-0.234, ...]]

Заключение

TEI на конечных точках вывода Hugging Face обеспечивает быструю и экономичную развертывание моделей встроенных представлений нового поколения. Благодаря ведущим в отрасли пропускной способности более 450 запросов в секунду и затратам в размере 0,00000156 доллара США за 1 тысячу токенов, конечные точки вывода обеспечивают 64-кратное снижение затрат по сравнению с OpenAI Embeddings.

Для разработчиков и компаний, использующих встроенные представления текста для обеспечения семантического поиска, чат-ботов, рекомендаций и других целей, конечные точки вывода Hugging Face устраняют накладные расходы на инфраструктуру и обеспечивают высокую пропускную способность при наименьших затратах, упрощая процесс от исследования до производства.


Спасибо за чтение! Если у вас есть вопросы, не стесняйтесь связаться со мной по Twitter или LinkedIn.