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 для своих задач, сможет полностью перейти на локальный инференс. Хотя это, возможно, это только моя фантазия.
Всем спасибо за прочтение.