К основному содержимому
#AI

Выжать больше из локальных LLM (Рубрика AI)

#AI #LLM #LocalLLM #Engineering #Performance #Agents #llamacpp

Я редко пишу про статьи на Habr, но тут не смог удержаться - уж очень понравилась мне большая и практичная статья про запуск локальных LLM. Эта тема мне интересна, но я особо не экспериментировал раньше, ограничиваясь запуском стандартных моделек в своей LMStudio на толстом AMD Ryzen AI Max+ 395. А эта статья позволяет выжать больше скорости, качества и контекста из вашего железа, например автор объясняет на пальцах почему ollama удобна, но медленнее llama.cpp, а также что такое квантование и какое оно бывает и что дает. Если чуть подробнее рассказать про основные темы, то они такие

1️⃣ Разница между Dense и MoE-моделями У Dense-модели все параметры активны всегда, поэтому она часто стабильнее и "умнее", но медленнее. У MoE активна только часть экспертов, поэтому такая модель может быть быстрее, но требует более аккуратного запуска. И вот здесь начинается самое интересное: если просто выгрузить часть слоёв на GPU, как это часто делает Ollama, видеокарта может быть забита полностью, но работать неэффективно. А llama.cpp умеет умнее раскладывать тензоры и включать режимы вроде cmoe/ncmoe, что на MoE-моделях даёт очень заметный выигрыш.

2️⃣ Квантование - что это такое и что дает Честно говоря, эта часть мне показалась супер-полезной, так как автор объяснил, что стандартный выбор "Q4_K_M по умолчанию" уже не всегда лучший вариант. Современные динамические кванты вроде UD-Q4_K_XL могут давать больше качества при близком размере, а иногда Q4_K_M оказывается примерно на уровне более лёгкого UD-Q3_K_XL. И это важный практический вывод: при локальном запуске не стоит слепо брать дефолтный квант из Ollama или LM Studio. Лучше посмотреть, есть ли версия от Unsloth, Ubergarm или другие более свежие варианты.

3️⃣ Использование локальных моделей для кодинга Автор показывает, что даже сильное квантование UD-Q2_K_XL может быть достаточно рабочим для генерации и доработки кода: модель собирала прототипы игр, исправляла баги и работала через агента. Это не значит, что Q2 теперь всегда лучший выбор, но значит, что старое правило "ниже Q4 не смотреть" уже не всегда верно.

Плюс в статье много практических советов, что интересно проверить на практике

  • Попробовать llama.cpp вместо Ollama, особенно для MoE-моделей;
  • Искать не только Q4_K_M, но и динамические кванты UD-Q4_K_XL / UD-Q3_K_XL / IQ-варианты;
  • Помнить, что меньший квант не всегда быстрее, потому что i-кванты могут требовать больше вычислений на CPU;
  • Использовать -fit, -cmoe, -ncmoe и не пытаться руками угадывать оптимальную раскладку;
  • Увеличивать -ub и -b, если важна скорость обработки большого контекста;
  • Подключать маленькую draft-модель для speculative decoding, если задача похожа на кодинг или перевод;
  • Освобождать VRAM: браузер, Windows и лишние приложения легко съедают 2–3 ГБ, которые могли бы уйти под модель или контекст;
  • Смотреть на дату выхода модели, а не на старые списки "лучших LLM", где до сих пор всплывают модели, давно уступившие новым поколениям.

Эффект от этих настроек может быть очень ощутимым. В статье llama.cpp на MoE-модели показывал скорость примерно в 3 раза выше Ollama на том же железе. Настройка обработки контекста давала кратный рост PP. Спекулятивное декодирование ускоряло Dense-модель примерно в 1.5 раза на коде и переводе. А правильный выбор кванта позволял либо получить больше качества в том же размере, либо уместить модель в доступную VRAM.

В общем, это хорошая статья для инженеров, кто уже пробовал локальные LLM и столкнулся с ощущением, что "модель вроде неплохая, но работает медленно".

P.S. Эхх, я бы хотел поковыряться со своей железкой и испробовать эти советы на майских праздниках, но улетаю с женой и детишками в Лондон в воскресенье, поэтому отложу это уже на вторые майские праздники. А с подписчиками канала буду следующие 2 недели делится туристическими фотками и своими размышлениями про AI:)

#AI #LLM #LocalLLM #Engineering #Performance #Agents #llamacpp