All streams
Search
Write a publication
Pull to refresh
34
0.3
Артём @guinmoon

Программист

Send message

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

Tags:
+2
Comments0

YandexGPT в OpenWebUI

Недавно я решил погонять нейросети от Yandex. До этого момента я активно использовал OpenWebUI для взаимодействия с локальными моделями и моделями от OpenAI. Этот интерфейс оказался весьма удобным и функциональным, его можно легко запустить через Docker или установить с помощью pip.

Для интеграции YandexGPT в OpenWebUI я создал форк популярного проекта LiteLLM, который, кстати, используется в OpenWebUI, и добавил поддержку YandexGPT.

Для тех, кто хотел бы повторить мой опыт, вот краткое руководство:

  1. Клонируем мой репозиторий.

  2. Настраиваем файл конфигурации

Содержимое конфигурационного файла ./litellm/proxy/config_yandex.yml:

model_list: 
  - model_name: yandexgpt-lite
    litellm_params: 
      model: yandex/yandexgpt-lite   
      api_key: AQVN30_PoL8sF6Yz-gzYLcwRV

  - model_name: yandexgpt-pro  
    litellm_params: 
      model: yandex/yandexgpt   
      api_key: AQVN30_PoL8sF6Yz-gzY1cwRV
  1. Запускаем Docker командой:

docker-compose -f docker-compose-yandex.yml up --build

Так же можно без Docker.

  1. Установливаем все необходимые зависимости через pip и запускаем проект напрямую:

cd litellm/litellm/proxy/
YANDEX_FOLDER_ID=<Ваш FolderID> python3 proxy_cli.py --config config.yml

Не забудьте настрить файл конфигурации, указав свои значения для Folder_ID и Token.

Репозиторий проекта можно найти по ссылке.

Tags:
Total votes 2: ↑2 and ↓0+4
Comments2

Information

Rating
2,282-nd
Location
Ставрополь, Ставропольский край, Россия
Registered
Activity