Как запустить мощную языковую модель на обычном железе: разбираемся с Qwen
Репозиторий давно не обновлялся
Последнее обновление было 7 месяцев назад.
Долгое время в мире больших языковых моделей (LLM) правила Llama от Meta. Но китайские разработчики из Alibaba Cloud выкатили проект Qwen (Tongyi Qianwen), который по многим бенчмаркам обходит не только Llama 2, но и замахивается на результаты GPT-3.5. Самое приятное здесь не сухие цифры графиков, а то, что авторы выложили в открытый доступ целую линейку моделей: от крошечных на 1.8 миллиарда параметров до гигантов на 72 миллиарда.
Что это такое и почему проект «взлетел»
Qwen — это не просто одна нейронка, а целое семейство. Разработчики обучили базовые модели на огромном массиве данных (до 3 триллионов токенов). Если вы следите за индустрией, то знаете, что качество «мозгов» LLM напрямую зависит от того, сколько текста через них прогнали на этапе обучения. Здесь с этим порядок: упор сделан на английский и китайский языки, но и с русским модель справляется вполне адекватно.
Главная фишка репозитория — его практичность. Часто бывает так: находишь крутую модель на Hugging Face, а как её запустить без боли, не понимаешь. У Qwen в репозитории лежат готовые скрипты для квантования, финтюнинга и развертывания API, совместимого с OpenAI.
Какие варианты есть «под капотом»
Разработчики предлагают модели разного веса под разные задачи (и разные видеокарты):
- Qwen-1.8B: Малыш, который заведется даже на старенькой GTX 1060 или на обычном процессоре. Потребляет меньше 3 ГБ видеопамяти в сжатом виде. Подойдет для простых задач вроде классификации текста или запуска на граничных устройствах.
- Qwen-7B: Золотая середина. Требует около 8-16 ГБ VRAM. По ощущениям работает на уровне оригинальной Llama 2 13B, но при этом шустрее.
- Qwen-14B: Серьезный игрок для тех, у кого есть RTX 3090 или 4090.
- Qwen-72B: Тяжелая артиллерия. По бенчмаркам она часто догоняет GPT-4 в специфических задачах вроде математики и кодинга.
Работа с инструментами и кодом
Одной из самых сильных сторон Qwen считается умение работать с внешними инструментами. Модель обучена использовать Python-интерпретатор и вызывать API (Function Calling). Это значит, что на базе Qwen можно собрать агента, который не просто болтает, а лезет в базу данных, считает сложные формулы в коде или парсит сайты.
Вот пример того, как просто запустить чат-версию через библиотеку transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", device_map="auto", trust_remote_code=True).eval()
response, history = model.chat(tokenizer, "Напиши скрипт на Python для парсинга заголовков с сайта", history=None)
print(response)
Квантование и экономия памяти
Если у вас нет серверной фермы с A100, вам точно понадобятся инструменты сжатия. В репозитории Qwen встроена поддержка GPTQ. Авторы сами подготовили версии Int4 и Int8.
Интересное наблюдение из документации: использование квантованной версии Int4 практически не убивает точность ответов, но снижает потребление памяти почти в два раза. Например, 72B модель в 4-битном режиме влезает в одну мощную видеокарту (около 48 ГБ), хотя в обычном виде ей нужно две или три.
Также ребята внедрили квантование KV-кэша. Это позволяет обрабатывать очень длинные диалоги (до 32 тысяч токенов), не вылетая с ошибкой Out of Memory (OOM) на каждом втором запросе.
Как дообучить под себя
В репозитории лежит finetune.py. Он поддерживает три основных метода:
- Full-parameter: Для тех, у кого бесконечные ресурсы.
- LoRA: Обновление только небольшого количества весов.
- Q-LoRA: Дообучение уже сжатой модели.
Последний вариант — спасение для домашних разработчиков. Вы можете взять Qwen-7B-Chat-Int4 и "натаскать" её на свои логи или специфическую документацию, имея всего одну потребительскую карту.
Практические сценарии
Где это реально использовать прямо сейчас?
- Локальный помощник для кода: Qwen отлично понимает структуру программ. Если вы не хотите отправлять свой проприетарный код в облако OpenAI, локальная 14B модель станет хорошим выходом.
- Обработка длинных документов: Благодаря поддержке контекста в 32k токенов, в модель можно "скармливать" целые PDF-файлы для суммаризации.
- RAG-системы: За счет хорошего понимания русского и английского языков, Qwen отлично работает как ядро для вопросно-ответных систем по базе знаний.
Кому стоит попробовать
Если вам надоело ждать ответа от перегруженных API или вы параноик в плане приватности данных, Qwen — отличная точка входа. Проект очень живой: авторы постоянно выкатывают обновления (уже есть Qwen2), а сообщество быстро пилит обертки вроде qwen.cpp для запуска на обычных ноутбуках без видеокарт.
Начинать лучше с модели 7B в квантовании Int4. Это даст понимание возможностей без необходимости тратить тысячи долларов на железо. Если же задача требует максимального интеллекта — смотрите в сторону 72B, она действительно может удивить качеством логических выводов.
Единственный нюанс — лицензия. Для коммерческого использования моделей 7B, 14B и 72B нужно запрашивать разрешение у Alibaba, если количество ваших пользователей превышает определенный порог. Но для личных проектов и исследований ограничений практически нет.
