LoRAX: сервер вывода Multi-LoRA, масштабируемый до тысяч точно настроенных LLM.
LoRAX (LoRA eXchange) — это платформа, которая позволяет пользователям обслуживать тысячи точно настроенных моделей на одном графическом процессоре, что значительно снижает стоимость обслуживания без ущерба для пропускной способности или задержки.
Оглавление
Функции
Модели
?Начиная
Требования
Запустить сервер LoRAX
Запрос через REST API
Запрос через клиент Python
Чат через OpenAI API
Следующие шаги
Благодарности
Дорожная карта
Динамическая загрузка адаптера: включите в свой запрос любой точно настроенный адаптер LoRA из HuggingFace, Predibase или любой файловой системы, он будет загружен точно в срок, не блокируя одновременные запросы. Объединяйте адаптеры по запросу, чтобы мгновенно создавать мощные ансамбли.
Гетерогенная непрерывная пакетная обработка: запросы для разных адаптеров объединяются в один пакет, сохраняя задержку и пропускную способность практически постоянными в зависимости от количества одновременно работающих адаптеров.
Планирование обмена адаптерами: асинхронная предварительная выборка и разгрузка адаптеров между памятью графического процессора и процессора, планирование пакетной обработки запросов для оптимизации совокупной пропускной способности системы.
Оптимизированный вывод: оптимизация с высокой пропускной способностью и низкой задержкой, включая тензорный параллелизм, предварительно скомпилированные ядра CUDA (флэш-внимание, постраничное внимание, SGMV), квантование, потоковую передачу токенов.
Готовые к производству готовые образы Docker, диаграммы Helm для Kubernetes, метрики Prometheus и распределенная трассировка с помощью Open Telemetry. Совместимый с OpenAI API, поддерживающий многоходовые беседы в чате. Частные адаптеры посредством изоляции клиента по запросу. Структурированный вывод (режим JSON).
? Бесплатно для коммерческого использования: лицензия Apache 2.0. Достаточно сказано?.
Обслуживание точно настроенной модели с помощью LoRAX состоит из двух компонентов:
Базовая модель: предварительно обученная большая модель, используемая всеми адаптерами.
Адаптер: веса адаптера для конкретной задачи, динамически загружаемые при каждом запросе.
LoRAX поддерживает ряд моделей больших языков в качестве базовой модели, включая Llama (включая CodeLlama), Mistral (включая Zephyr) и Qwen. Полный список поддерживаемых базовых моделей см. в разделе «Поддерживаемые архитектуры».
Базовые модели можно загрузить в формате fp16 или квантовать с помощью bitsandbytes
, GPT-Q или AWQ.
Поддерживаемые адаптеры включают адаптеры LoRA, обученные с использованием библиотек PEFT и Ludwig. Любой из линейных слоев модели можно адаптировать через LoRA и загрузить в LoRAX.
Мы рекомендуем начать с нашего предварительно созданного образа Docker, чтобы избежать компиляции пользовательских ядер CUDA и других зависимостей.
Минимальные системные требования, необходимые для запуска LoRAX, включают:
Графический процессор Nvidia (поколение Ampere или выше)
Драйверы устройств, совместимые с CUDA 11.8 и выше
ОС Linux
Докер (для этого руководства)
Установите nvidia-container-toolkit Затем
sudo systemctl daemon-reload
sudo systemctl restart docker
модель=mistralai/Mistral-7B-Instruct-v0.1 объем = $PWD/данные docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/predibase/lorax:main --model-id $model
Полное руководство, включая потоковую передачу токенов и клиент Python, см. в разделе «Начало работы — Docker».
Подскажите базу LLM:
локон 127.0.0.1:8080/сгенерировать -X ПОСТ -d '{ "inputs": "[INST] Наталья продала клипы 48 своим друзьям в апреле, а затем в мае продала вдвое меньше клипов. Сколько клипов Наталья продала всего в апреле и мае? [/INST] ", "параметры": { "max_new_tokens": 64 } }' -H 'Тип контента: приложение/json'
Подскажите LoRA адаптер:
локон 127.0.0.1:8080/сгенерировать -X ПОСТ -d '{ "inputs": "[INST] Наталья продала клипы 48 своим друзьям в апреле, а затем в мае продала вдвое меньше клипов. Сколько клипов Наталья продала всего в апреле и мае? [/INST] ", "parameters": { "max_new_tokens": 64, "adapter_id": "vineetsharma/qlora-adapter-Mistral-7B-Instruct-v0.1-gsm8k" } }' -H 'Тип контента: приложение/json'
Подробную информацию см. в разделе «Справочник — REST API».
Установить:
pip установить lorax-клиент
Бегать:
from lorax import Clientclient = Client("http://127.0.0.1:8080")# Подскажите базу LLMprompt = "[INST] Наталья в апреле продала клипы 48 своим друзьям, а в мае продала вдвое меньше клипов . Сколько всего клипов Наталья продала в апреле и мае? [/INST]"print(client.generate(prompt, max_new_tokens=64).generated_text)# Запросить адаптер LoRAadapter_id = "vineetsharma/qlora-adapter-Mistral-7B-Instruct-v0.1-gsm8k"print(client.generate(prompt, max_new_tokens=64, адаптер_id=adapter_id).generated_text)
Подробную информацию см. в разделе «Справочник — клиент Python».
Другие способы запуска LoRAX см. в разделах «Начало работы — Kubernetes», «Начало работы — SkyPilot» и «Начало работы — локально».
LoRAX поддерживает многоэтапные разговоры в чате в сочетании с динамической загрузкой адаптера через API-интерфейс, совместимый с OpenAI. Просто укажите любой адаптер в качестве параметра model
.
из импорта openai OpenAIclient = OpenAI(api_key="EMPTY",base_url="http://127.0.0.1:8080/v1", )resp = client.chat.completions.create(model="alignment-handbook/zephyr-7b-dpo-lora",messages=[ {"role": "system","content": "Вы дружелюбный чат-бот, который всегда отвечает в стиле пирата", }, {"role": "user", "content": "Сколько вертолетов человек может съесть за один присест?"}, ],max_tokens=100, )print("Ответ:", соотв. выбор[0].message.content)
Подробности см. в разделе API-интерфейс, совместимый с OpenAI.
Вот еще несколько интересных доработанных моделей Мистраль-7Б, которые стоит попробовать:
выравнивание-руководство/zephyr-7b-dpo-lora: Mistral-7b точно настроен на наборе данных Zephyr-7B с DPO.
ИльяГусев/saiga_mistral_7b_lora: Российский чат-бот на базе Open-Orca/Mistral-7B-OpenOrca
.
Undi95/Mistral-7B-roleplay_alpaca-lora: улучшена с помощью подсказок ролевой игры.
Вы можете найти больше адаптеров LoRA здесь или попробовать настроить свои собственные с помощью PEFT или Ludwig.
LoRAX построен на основе механизма вывода текста HuggingFace, разветвленного из версии 0.9.4 (Apache 2.0).
Мы также хотели бы поблагодарить Punica за работу над ядром SGMV, которое используется для ускорения вывода нескольких адаптеров при большой нагрузке.
Наша дорожная карта отслеживается здесь.