Революция в доступности: 70B и 405B на потребительском железе
Проект AirLLM (0xSojalSec) представил решение, которое кардинально меняет правила игры для локального запуска больших языковых моделей (LLM). Главная особенность технологии — оптимизация использования памяти при логическом выводе (inference). Это позволяет запускать модели с 70 миллиардами параметров на видеокартах с 4 ГБ видеопамяти, а новейшую Llama 3.1 405B — на картах с 8 ГБ VRAM.
Ключевое отличие AirLLM от традиционных методов: работа осуществляется без квантования, дистилляции и прунинга (обрезания нейронной сети). Модель загружается слоями, что обходит ограничения видеопамяти, сохраняя исходное качество весов.
Новые возможности в версии 2.11.0
Последнее обновление от 20 августа 2024 года (v2.11.0) расширяет экосистему совместимых моделей. Теперь AirLLM официально поддерживает Qwen2.5. Ранее уже были добавлены Llama 3.1, Llama 3, Mistral, ChatGLM, QWen, Baichuan и InternLM.
Для разработчиков также важно, что с версии 2.10.1 (от 18 августа) добавлена поддержка инференса на CPU и моделей, не разделенных на шарды (non-sharded models), что упрощает работу с некоторыми репозиториями Hugging Face.
Сравнение производительности и оптимизации
Хотя базовый режим работает без квантования, AirLLM предлагает функцию сжатия на основе блочного квантования (block-wise quantization). Это позволяет ускорить инференс до 3 раз с минимальной потерей точности. В отличие от стандартного квантования, здесь квантуются только веса, так как узким местом является загрузка с диска, а не вычисления.
| Параметр | Базовый режим (AirLLM) | Режим сжатия (4bit/8bit) |
|---|---|---|
| Требование к VRAM | 4 ГБ (для 70B), 8 ГБ (для 405B) | Снижается дополнительно |
| Квантование весов | Отсутствует (FP16/BF16) | Блочное (4-bit или 8-bit) |
| Скорость инференса | Базовая | До x3 быстрее |
| Потеря точности | Нулевая | Практически незаметная |
| Поддержка MacOS | Да (Apple Silicon) | Да |
Технические детали и совместимость
Для работы требуется библиотека bitsandbytes (для режима сжатия) и достаточное место на диске, так как процесс разделения модели на слои (layer-wise splitting) потребляет много места в кэше Hugging Face. Поддерживается автоматическое определение типа модели через AutoModel, что избавляет от необходимости вручную указывать классы для каждой архитектуры.
Разработчики также добавили опцию prefetching для перекрытия загрузки модели и вычислений, что дало прирост скорости в 10% в предыдущих версиях. Для экономии места на диске доступна опция delete_original, удаляющая исходные файлы модели после преобразования.
Источник: Github ↗
