ITcompressor IT — сжато и по делу
← Назад к статьям

Текущие LLM-сетапы

Живой LLM-парк на октябрь 2026 — три рабочих сетапа плюс харнес кодинг-агентов. Облачные glm-5.3 и glm-5.3-flash обслуживают ботов и агентов, локальный Qwen3.8-27B на llama.cpp — задачи с длинным контекстом и vision. Всё снаружи выглядит единым OpenAI-совместимым API: маршрутизацию provider/model делает any-router (llm.e7.by), трейсы летят в Langfuse.

glm-5.3-flash:cloud — рабочая лошадка#

Основная модель для ежедневных задач. Живёт на Ollama-реле: модели с суффиксом :cloud Ollama исполняет у себя в облаке — локально только реле, ни VRAM, ни весов. Контекст — до 1M токенов, поэтому в длинные агентные сессии она влезает целиком. Flash-вариант — про latency/цену: на бенчмарках семья glm сидит в топе по коду и custom-задачам.

glm-5.3:cloud — полная версия#

Та же семья, тот же реле — полная (не flash) модель для тяжёлых задач, где важен потолок качества, а не задержка. В any-router ходит как glm-5.3:cloud; рядом на реле живут и другие облачные модели (kimi-k3, deepseek-v4, minimax-m3, nemotron-3-ultra) — переключение провайдером/моделью в запросе, без переконфигурации клиентов.

qwen3.8:27b — локальный llama.cpp#

Локальный стенд на llama.cpp (RTX 3090, 24 GiB VRAM): Qwen3.8-27B в кванте UD-IQ4_XS от unsloth (Dynamic 3.0, 13.3 GiB) + vision-проектор mmproj-F16. Гибридная архитектура (48 линейных DeltaNet-слоёв + всего 16 полных attention-слоёв) даёт дешёвый KV-кэш — 200k контекста при KV в q8_0 умещаются в 24 GiB вместе с весами. Thinking включён по умолчанию и управляется per-request; API — OpenAI-совместимый /v1.

Ключевые флаги сервера:

llama-server \
  -m /opt/llm/models/Qwen3.8-27B-UD-IQ4_XS.gguf \
  --mmproj /opt/llm/models/mmproj-F16.gguf \
  -ngl 999 -c 200000 -fa on \
  -ctk q8_0 -ctv q8_0 \
  --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0 \
  --host 0.0.0.0 --port 8080

Разворачивание: ansible-плейбук#

Стенд разворачивается и обновляется одним идемпотентным прогоном (ansible/ монорепо): стоп on-demand конкурентов за карту (comfyui, unsloth) → проверка драйвера → сборочные зависимости → CUDA toolkit 12+ (если нет) → clone/pull llama.cpp → cmake + сборка → докачка отсутствующих моделей → systemd-сервис → health-check /health. Ядро плейбука:

---
# llama.cpp + Qwen3.8-27B на GPU-хосте (RTX 3090, 24 GiB VRAM).
# «Развернуть» и «обновить» — один и тот же прогон, плейбук идемпотентен.
#   ansible-playbook llamacpp.yaml --key-file meta/msi.key
- name: "llama.cpp + Qwen3.8-27B"
  hosts: [gpu_host]
  become: yes
  vars:
    llamacpp_ref: master             # отслеживаемая версия: ветка или тег
    llamacpp_dir: /opt/llama.cpp
    cuda_arch: "86"                  # sm_86 = RTX 3090
    cuda_min_version: "12"          # старее — llama.cpp с gcc-11 не собирается
    models_dir: /opt/llm/models
    hf_url: https://huggingface.co/unsloth/Qwen3.8-27B-GGUF/resolve/main
    llamacpp_models:                # качаются только отсутствующие
      - Qwen3.8-27B-UD-IQ4_XS.gguf  # 13.3 GiB — вместе с 200k контекста
      - mmproj-F16.gguf             # 0.9 GiB — vision-проектор
    llamacpp_model: "{{ models_dir }}/Qwen3.8-27B-UD-IQ4_XS.gguf"
    llamacpp_mmproj: "{{ models_dir }}/mmproj-F16.gguf"
    llamacpp_ctx: 200000            # нативный потолок модели — 262144
    llamacpp_kv_k: q8_0             # квант KV-кэша: f16 / q8_0 / q4_0
    llamacpp_kv_v: q8_0
    llamacpp_port: 8080
    llamacpp_api_key: ""            # пусто = без авторизации (хост виден только из VPN)
  tasks:
    - name: "Стоп on-demand конкурентов за карту"
      ansible.builtin.systemd:
        name: "{{ item }}"
        state: stopped
      loop: [comfyui, unsloth]
      ignore_errors: true

    # ... проверка nvidia-smi → сборочные зависимости (git, cmake, build-essential)
    # → CUDA toolkit 12+ из репо NVIDIA (если nvcc старее) → clone/pull llama.cpp
    # → сброс build/ при смене nvcc/sm → cmake -DGGML_CUDA=ON → сборка → модели:

    - name: "Сервис llama-server"
      ansible.builtin.copy:
        dest: /etc/systemd/system/llama-server.service
        mode: "0644"
        content: |
          [Unit]
          Description=llama-server (Qwen3.8-27B, llama.cpp)
          After=network-online.target
          Wants=network-online.target

          [Service]
          ExecStart={{ llamacpp_dir }}/build/bin/llama-server \
            -m {{ llamacpp_model }} \
            --mmproj {{ llamacpp_mmproj }} \
            -ngl 999 \
            -c {{ llamacpp_ctx }} \
            -fa on \
            -ctk {{ llamacpp_kv_k }} -ctv {{ llamacpp_kv_v }} \
            --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0 \
            --host 0.0.0.0 --port {{ llamacpp_port }}{% if llamacpp_api_key %} \
            --api-key {{ llamacpp_api_key }}{% endif %}
          Restart=on-failure
          RestartSec=5

          [Install]
          WantedBy=multi-user.target
      notify: "Рестарт llama-server"

    - name: "Запустить llama-server"
      ansible.builtin.systemd:
        name: llama-server
        state: started
        enabled: yes
        daemon_reload: yes

    - name: "Дождаться модели (/health)"
      ansible.builtin.uri:
        url: "http://127.0.0.1:{{ llamacpp_port }}/health"
      register: llamacpp_health
      until: "llamacpp_health.status == 200"
      retries: 60
      delay: 5

  handlers:
    - name: "Рестарт llama-server"
      ansible.builtin.systemd:
        name: llama-server
        state: restarted
        daemon_reload: yes

Харнес — pi#

Отдельный пункт сетапа — харнес кодинг-агентов: pi — простой и конфигурируемый. При первом запросе потребляет в 11 раз меньше, чем claude desktop.

Итог#

Сетап Где Контекст Роль
glm-5.3-flash:cloud Ollama Cloud 1M основная модель для всего, но контекст 1М не тянет — ограничиваю окно до 410к
glm-5.3:cloud Ollama Cloud 1M тяжёлые задачи, потолок качества
Qwen3.8-27B-UD-IQ4_XS llama.cpp, RTX 3090 200k локальный: длинный контекст, vision, приватность и когда закончились токены))

Полный бенчмарк-рейтинг моделей — в статье «Рейтинг LLM — собственные бенчмарки».

← Назад к статьям