ADG Оставить заявку
Блог Автоматизация 4 мин чтения

Локальные LLM на корпоративном железе: тестируем LLaMA и Vicuna без облака

Meta готовится анонсировать LLaMA 2 - самое время проверить, реально ли запустить сильную модель на своём GPU для клиентов, которым облачный ChatGPT API категорически закрыт.

Контекст момента

Ажиотаж вокруг self-hosted LLM на фоне слива весов LLaMA и роста интереса к конфиденциальным развёртываниям

С января мы гоняем пилоты на ChatGPT API и строим RAG поверх OpenAI. Но примерно треть клиентов, с которыми мы говорим об автоматизации на LLM, сразу режут: «Наши данные никуда не выходят. Никакого OpenAI». И это не паранойя - это финансовые организации, госструктуры, медицина. Отправлять внутренние документы в американское облако им либо запрещено регулятором, либо попросту страшно в нынешней обстановке.

Поэтому когда в сети начали массово расходиться веса LLaMA (первый релиз Meta утёк весной, а LLaMA 2 уже официально анонсирован на июль) и появились дообученные варианты вроде Vicuna, мы решили разобраться: а насколько это вообще применимо в реальных задачах и что нужно из железа?

Что тестировали

Собрали небольшой стенд из того, что было под рукой: рабочая станция с GPU NVIDIA на 24 ГБ VRAM. Не серверная карточка, но что есть. Для запуска использовали llama.cpp - утилиту, которая умеет квантизировать веса до 4 бит и работать даже без GPU, хотя тогда всё заметно медленнее. Также смотрели на text-generation-webui как обёртку с API-совместимым эндпоинтом.

Модели:

  • LLaMA-13B в 4-bit квантизации (GGML). Исходная базовая модель, без дообучения на инструкциях.
  • Vicuna-13B. Дообученный вариант на диалогах из ShareGPT, по факту ближайший open-source аналог ChatGPT по поведению.
  • Vicuna-7B. Для сравнения - более лёгкая версия, влезает в меньшую VRAM.

Задачи взяли из реальных пилотов: классификация обращений поддержки, краткое изложение технической документации (на русском и английском), заполнение структурированного JSON по тексту заявки.

Что получилось

Скорость - самое неожиданное открытие. Vicuna-13B в 4-bit на GPU выдаёт примерно 15-20 токенов в секунду. Для интерактивного чата это приемлемо. Для пакетной обработки - тоже нормально, если не нужно сотни запросов в минуту. CPU-режим (llama.cpp без GPU) - 2-4 токена в секунду, то есть минута на ответ. Это уже только для совсем несрочных задач.

Качество на английском у Vicuna-13B - примерно 70-75% от GPT-3.5-turbo на наших задачах. Модель держит контекст, нормально суммаризирует, заполняет JSON с некоторыми ошибками. Для автоматической обработки входящих заявок - рабочий вариант, если добавить постобработку и валидацию.

Качество на русском - ощутимо хуже. Модель понимает русский текст (отвечает на русском, что-то извлекает), но инструкции нужно формулировать очень чётко, галлюцинации учащаются, а грамматика ответов иногда вызывает вопросы. Не критично для задач извлечения данных из английских шаблонов, но для русскоязычного саппорта - пока не то.

Базовая LLaMA-13B без дообучения на инструкциях - продолжает текст, а не отвечает на вопросы. Для прикладных задач напрямую не годится; нужен либо fine-tune, либо дообученный вариант.

Требования к железу

Минимальная рабочая конфигурация для 13B в 4-bit:

  • VRAM: 10-12 ГБ - модель влезает, остаётся место на контекст.
  • RAM: 16 ГБ системной памяти - llama.cpp часть слоёв может выгружать на CPU.
  • CPU-режим: работает, но скорость делает это пригодным разве что для разработки.

Для 7B-модели достаточно 6-8 ГБ VRAM, и такая карточка стоит в разы дешевле. Если задачи позволяют - это более реалистичный путь для корпоративного стенда без огромного бюджета.

Серьёзный нюанс: VRAM - дефицитный ресурс. Потребительские карты на 24 ГБ (RTX 3090/4090) стоят немало, а профессиональные A100/H100 - разговор совсем о другом бюджете. На один поток запросов одна карточка справляется, но если нужна параллельная обработка - считайте железо отдельно.

Что по инфраструктуре

Разворачивать это в корпоративной среде проще, чем кажется. text-generation-webui поднимается в Docker, отдаёт OpenAI-совместимый API - то есть LangChain-пайплайн переключается с openai на локальный эндпоинт минимальными изменениями в конфиге. Это важно: не нужно переписывать приложение, только менять URL и убирать API-ключ.

Вопрос деплоя и обновления моделей - отдельная история. Пока это скорее ручное управление: скачать новые веса, перезапустить контейнер. Нормального lifecycle-менеджмента в экосистеме ещё нет, всё решается скриптами.

Итог на сегодня

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

Главный практический вывод: GPU-карточка на 24 ГБ VRAM и пара дней настройки - это реалистичный стартовый стенд. Не волшебная кнопка, но рабочий инструмент для конкретного класса задач.

Официальный релиз LLaMA 2 ждём в июле - посмотрим, изменится ли расклад по качеству.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.