Все потоки
Поиск
Написать публикацию
Обновить

LLamaSwap - гибкая альтернатива Ollama
Ollama — прекрасное приложение, основанное на llama.cpp, которым я пользовался для инференса локальных моделей до недавних пор, однако у него есть несколько критических недостатков:

  • Отсутствие поддержки всех GPU и BLAS, доступных в llama.cpp. Для меня это стало проблемой после перехода на Radeon RX 6800: инференс через Vulkan на llama.cpp работает быстрее и стабильнее, чем ROCm, но Ollama не поддерживает Vulkan.

  • Отсутствие тонкой настройки. Например, на момент написания статьи в Ollama нельзя выгружать часть MoE-слоев на CPU, что позволяет сильно увеличить скорость инференса при нехватке VRAM для загрузки всех слоев на GPU.

  • Ollama использует собственное хранилище моделей, несмотря на то, что под капотом работает с GGUF. Если загрузить модель с Hugging Face, Ollama всё равно скопирует её в своё хранилище, а модели в наше время весят не мало и занимают лишнее место на SSD.

  • Функции доступные в llama.cpp появляются в ollama с задержкой , а иногда и вовсе не появляются.

Мне нужна была альтернатива, способная динамически управлять загрузкой моделей в памяти через API без моего участия, как это делает Ollama, но без вышеперечисленных недостатков. В итоге я остановил выбор на проекте llama-swap.

Llama-Swap — приложение на Go, которое запускает несколько инстансов llama-server и проксирует запросы к ним по заданным правилам.

Плюсы по сравнению с Ollama:

  • Полный доступ ко всем возможностям llama-server (например --override-tensor для выгрузки MoE слоев на CPU).

  • Поддержка большего количества GPU кскорений (таких как Vulkan или даже связки Vulkan + CUDA)

  • Возможность настроить отдельную версию llama-server для каждой модели (если в будущих обновлениях что то сломается).

  • Более гибкая настройка правил загрузки/выгрузки моделей в память: (одновременная загрузка, поочередная по запросам).

  • Не дублирует модели на диске (если используются форматы поддерживаемые llama.cpp).

  • Из коробки есть WebUI для управления загрузкой/выгрузкой моделей.

Минусы:

  • Из коробки не работает, требуется настройка через config.yaml и наличие рабочего llama-server.

  • Проект молодой, и его дальнейшая судьба пока не ясна.

Основные пункты файла конфигурации

  • Список моделей с указанием их расположения и параметров запуска (влючая путь к llama-server).

  • Группировка моделей, к группам применяются правила загруpки/выгрузки из памяти: - Все модели в группе загружены одновременно. - Модели загружаются по мере поступления запросов

  • Различные настройки прокси, порты, таймауты и пр.

У меня мини-ПК с интегрированной Radeon 780m, 32 ГБ ОЗУ и eGPU RX 6800.
Я полностью перешел на Llama-Swap + OpenWebUI и всё больше отказываюсь от использования онлайн-сервисов вроде OpenRouter — ведь возможностей моего недорогого, по современным меркам ПК, хватает для запуска, таких моделей как Gemma3 30B и Qwen3-Coder-30B-A3B-Instruct. Думаю, в скором времени, когда ПК с объёмами памяти от 64 ГБ и выше станут ещё дешевле, интегрированная графика — мощнее и на рынке окажется множетсво БУ GPU с объемом VRAM 16ГБ и выше, часть людей, использующих LLM для своих задач, сможет полностью перейти на локальный инференс. Хотя это, возможно, это только моя фантазия.
Всем спасибо за прочтение.

Теги:
+2
Комментарии0

Публикации

Ближайшие события