LINUX.ORG.RU

Вышел llmhost 0.6.0-beta11

 , , ,


1

1

Вышел llmhost — локальный хостинг LLM с автоматическим управлением памятью и спекулятивным декодированием. Планировщик сам выбирает форму загрузки: целиком на карту, эксперты MoE в RAM или частичный сплит, подбирает контекст от свободной VRAM и запоминает живой замер памяти после каждой загрузки, чтобы следующий план был точнее. MTP-головы цепляются автоматически с проверкой совместимости по GGUF-мете. Всё, что автоматика решает сама, переопределяется в llmhost.conf на лету.

На стенде Blackwell + DDR4: Qwen3-Next-80B-A3B в Q4_K_M с экспертами в RAM и контекстом 262144 выдаёт 35,6 ток/с, с родной MTP-головой 48,9 ток/с. Против Ollama 0.35.1 на том же железе: 26B MoE 197 против 115 ток/с, 27B плотная 54 против 30.

Код на C++20, под капотом ванильный llama.cpp без форков.

Проект на гитхабе. Подробное описание в README.md. Ставится одной командой в консоли под Linux, дальше установщик подскажет. Модели качаются поиском по HuggingFace. Проект в бете, все замеры датированы и привязаны к пинам.

>>> llmhost

★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 8)
Ответ на: комментарий от etwrq

Vulkan есть. RoC нету потому что нету карты AMD для тестов. Инсталлер умный и видит, что ставить. Vulkan или CUDA.

drbond ★
() автор топика
Ответ на: комментарий от ethylkode

Я правильно понимаю, что это strata «на максималках»?

Непохоже. Если я правильно понял то, что автор попытался тут выразить - алгоритм другой.

DrRulez ★★★★★
()
Ответ на: комментарий от ethylkode

Strata про запуск Qwen3.8-Flash-Next (125B) на игровом ПК . llmhost — это хостинг для любых GGUF-моделей. То есть - это Strata «специализированный случай llmhost».

drbond ★
() автор топика

Как я понял, часть фич (автоматическое управление памятью и спекулятивное декодирование) обеспечиваются подкапотной llama-cpp? А сабж подбирает параметры компиляции лламы под железо и параметры запуска под каждую модель?

Beewek ★★★★
()
Ответ на: комментарий от Beewek

Про параметры запуска.

Умная настройка параметров

По умолчанию включена (auto-params = true). Она означает, что llmhost перед запуском каждой модели: ставит контекст максимально возможным для этой модели и ваших карт, а не фиксированный минимум — у современных моделей это десятки тысяч токенов (SWA-окна читаются из GGUF-меты: у gemma-4 локальные слои не съедают контекст глобальных); сжимает внутренний KV-кэш (q8_0) — но только когда несжатый кэш не даёт влезть разумному контексту: на маленьких моделях сжатие стоило бы несколько процентов скорости зря. Если контекст модели пиннут вручную (ctx-size) и несжатый кэш в него влезает — сжатие не включается: декод на f16 быстрее, качество выше; для MoE-моделей, которым тесно, выносит экспертов в оперативную память, если её достаточно; смотрит, откуда читается модель. С локального диска — как обычно (ленивая подкачка). Но если модель живёт на сетевом диске, llmhost после старта один раз последовательно прочитывает файл в страничный кэш: без этого генерация заикалась бы первые минуты на холодных страницах. Каждый выбор фиксируется: он виден в /v0/status (блок auto) и в журнале. Не хотите ничего автоматического — auto-params = false, и llmhost вернётся к ручным значениям (ctx, ngl).

Откуда берутся цифры видеопамяти: на картах NVIDIA — из NVML. Свободная VRAM сходится с nvidia-smi в пределах погрешности телеметрии.

И сразу, так как из этого вытекает вопрос планировщика:

Самообучение планировщика и запас карты

Аналитическая оценка «влезет ли» груба (±1 ГиБ: MoE-воркспейс, гибридные архитектуры, NVFP4), поэтому демон учится на живых загрузках: после каждой успешной загрузки снимается фактический след модели в VRAM (NVML) и пишется в model_profiles.json — надбавка сверх весов и KV-кэша, отдельным слотом на каждую форму спавна (выходной слой на GPU/CPU, класс KV, ubatch, класс движка, эксперты в RAM, число слоёв у сплита). Профиль масштабируется на другой контекст; следующая загрузка планируется уже по нему. Если аналитика отказывает выходному слою, демон пробует его включить живьём — при OOM тихо перезагружается без него и запоминает провал (строки profiles: в журнале). Файл можно удалить — планировщик начнёт учиться заново.

Планируя резидента, демон держит на карте запас 1,5 ГиБ: fit-проба llama.cpp выключена (fit = off), и запас этот — наша замена ихней проверке. Он покрывает инициализацию CUDA-контекстов соседних детей (ggml трогает каждую видимую карту — на почти полной это OOM-рулетка спавна) и пики vision-кодирования. В бюджет контекста входит весь груз: mmproj и draft едут на GPU вместе с весами.

У MoE-моделей объём экспертов читается точно — из тензорного списка GGUF (сумма тензоров с «exps»), а не «85% файла»: RAM-гейт «потянет ли оперативка» и бюджет GPU-части считаются честно. Экспертов в RAM и плотные частичные сплиты планировщик тоже профилирует — след у них двухчастный: VRAM (замер) + RAM (детерминированные байты файла).

drbond ★
() автор топика
Последнее исправление: drbond (всего исправлений: 1)
Ответ на: комментарий от drbond

Я пытаюсь понять, что мне даст эта программа по сравнению с обычной llama-cpp. Пожоже, ничего особо полезного.

Beewek ★★★★
()
Ответ на: комментарий от drbond
  1. Я правильно понимаю, что автор новости это автор проекта?

  2. На 64 гигабайтах ОЗУ будет совсем грустно?

hobbit ★★★★★
()

Это все хорошо, но на старых картах типа V100 это будет работать? Вообще минимум на какой архитектуре заведется?

dumauz ★★
()
Ответ на: комментарий от qulinxao3

Прекрасно. Писалось под ограниченный бюджет карт и памяти. Ссылку на бенч привёл выше.

drbond ★
() автор топика

Хм. А на совсем старых «дровах» вроде Core i7-3840QM, nvidia 710M (2GiB) и 16 ГиБ ОЗУ пойдет? :)

yars068 ★★★★★
()
Ответ на: комментарий от Lrrr

Да. Я вот щас прочитал и думаю создать про это тему в разделе о сайте или забить.

wandrien ★★★★
()
Ответ на: комментарий от dumauz

Короткий ответ: да, на V100 заведётся — обе CUDA-сборки из манифеста её покрывают, плюс работает и Vulkan-сборка. Формальный минимум для NVIDIA — Maxwell (sm_50), т.е. всё с 2014 года. Проверил по конкретному пину b11476:

Что именно зашито в пиннутые сборки b11476

Релизные ubuntu-cuda-12.8 и windows-cuda-12.4 собираются в release.yml без переопределения архитектур (GGML_NATIVE=OFF, комментарий прямо в воркфлоу: «no CMAKE_CUDA_ARCHITECTURES: use the broad default arch set»), значит действует дефолт из ggml/src/ggml-cuda/CMakeLists.txt того же тега:

50-virtual 61-virtual 70-virtual   (для CUDA < 13)
75-virtual 80-virtual 86-real 89-real 90-virtual
+120a-real                         (для CUDA 12.8)

с родным комментарием 70 == V100, FP16 tensor cores. То есть V100 (sm_70) покрыта и в win-пине (12.4), и в linux-пине (12.8). Vulkan-сборка тоже подойдёт — бэкенд требует Vulkan 1.2 (проверка в коде b11476, ggml-vulkan.cpp:5194), а V100 с драйвером R510+ умеет Vulkan 1.3.

Два практических нюанса для V100

  1. Для старых карт в этих сборках зашит PTX, а не SASS (70-virtual — SASS «в железо» собран только для 86/89/120a). Драйвер JIT-компилирует PTX под sm_70 при первом старте: производительность после этого полноценная (это не эмуляция), но первый запуск занимает заметные минуты, потом результат живёт в кэше драйвера (~/.nv/ComputeCache). Если кэш переполнится, JIT повторится — лечится поднятием CUDA_CACHE_MAXSIZE. Поэтому первый старт медленный.

  2. Драйверы: для linux-пина 12.8 нужен драйвер ≥ 570, для win-пина 12.4 — ≥ 551. Volta поддерживается драйверами до ветки R580 включительно — это последняя ветка для Maxwell/Pascal/Volta (далее только security-фиксы до октября 2028). И важно на будущее: CUDA 13.x-сборки на Volta уже не работают (в CMake видно: блок 50/61/70 добавляется только для тулкита < 13) — при будущих апгрейдах пина надо оставаться на 12.x. В текущих манифестах cuda13 и нет, так что всё согласовано.

Минимум вообще

  • NVIDIA через CUDA-пины: Maxwell (sm_50) — ниже (Kepler и старше) не заведётся ни в какой сборке, CUDA 11+ их выпилила. Практически комфортный минимум — Pascal (GTX 10xx, там появляется dp4a/INT8), Volta/Turing — уже вполне (V100 с её 16/32 ГБ HBM2 — нормальная машина для 8–26B в квантах).
  • Через Vulkan-сборку: любая карта с драйвером Vulkan 1.2 — NVIDIA Maxwell+, практически живые AMD — Polaris и новее (RADV/Adrenalin), Intel Arc/встроенные. На headless-сервере Linux нужен Vulkan ICD из пакета драйвера (nvidia_icd.json) — обычно есть, но на минимальных установках бывает пропущен.
  • Без GPU: llama.cpp умеет чистый CPU, но в манифестах llmhost запинены только cuda12 + vulkan — CPU-сборки нет, а Vulkan-бинарник без Vulkan-устройства не стартует. На машине вообще без GPU останется вариант подсунуть свой llama-server через cfg.llama_server. Если вдруг есть желание запускать на CPU, то могу добавить cpu-билд в манифест как третий вариант.

Источники по статусу драйверов: NVIDIA KB — план поддержки Maxwell/Pascal/Volta, Phoronix, TechPowerUp.

drbond ★
() автор топика
Ответ на: комментарий от Lrrr

Комменты пишу я. Нейронку если и применяю, то для облагораживания текста и стройности технических деталей проекта.

drbond ★
() автор топика
Ответ на: комментарий от Lrrr

Причём он даже комменты тут нейронкой пишет))

Демонстрирует работу своего детища!

frunobulax ★★★★★
()
Ответ на: комментарий от vbcnthfkmnth123

Можно. По сети прекрасно работает. Отдаёт OpenAI-совместимый API. А дальше зависит от того, как настроите сеть.

drbond ★
() автор топика
Ответ на: комментарий от drbond

для облагораживания текста

Для обгаживания форума, ты хотел сказать.

wandrien ★★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от drbond

пожалуйста, пишите уже по русски! сами, без всяких этих нейтронок!
а то, бог видит, через пару лет разучитесь сами формулировать мымслию...
(да и нам нервы сбережете, если будете сами писать)
заранее благодранствуем! :о)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от drbond

Профиль масштабируется на другой контекст; следующая загрузка планируется уже по нему. Если аналитика отказывает выходному слою, демон пробует его включить живьём ...

Мля, поток сознания, невозможно читать. Аналитика отказывает выходному слою в чём?

Xintrea ★★★★★
()
Ответ на: комментарий от Xintrea

Мля, поток сознания, невозможно читать. Аналитика отказывает выходному слою в чём?

обыдно быть вне потока мысли ауто(ра|мата)

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 2)
Ответ на: комментарий от Xintrea

Мля, поток сознания, невозможно читать.

Дамп chain of thought llm )
Почти qulinxao3 или GLM, который, видимо, переводит китайский на английский, а потом на русский...

GAMer ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.