Локальный запуск больших языковых моделей — это не хайп, а практическая необходимость для многих сценариев. Когда вы запускаете LLM локально, вы получаете полный контроль над данными, нулевую задержку сети и отсутствие ежемесячных счетов за API.
| Приватность | Никакие данные не покидают ваш компьютер. Код, документы, переписка остаются у вас. |
| Цена | Один раз купили GPU — пользуетесь бесплатно. Нет pay-per-token. |
| Доступность | Работает без интернета. В самолёте, в деревне, в дата-центре за firewall. |
| Кастомизация | Меняете модель под себя: файнтюнинг, квантование, свои плагины. |
| Независимость | API-провайдер не отключит вас. Модель не поменяют неожиданно. |
LM Studio — десктопное приложение с графическим интерфейсом. Скачали, выбрали модель из каталога HuggingFace, нажали Start — и у вас локальный сервер с OpenAI-совместимым API. Не нужно писать ни строчки кода.
# Установка — https://lmstudio.ai # 1. Скачать под свою ОС (Windows/Mac/Linux) # 2. Запустить, найти модель через поиск # 3. Нажать Download → Load Model → Start Server # 4. API доступен на http://localhost:1234/v1 # Проверка через curl curl http://localhost:1234/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "local-model", "messages": [{"role": "user", "content": "Привет! Кто ты?"}] }' # Python-клиент работает через openai пакет from openai import OpenAI client = OpenAI(base_url="http://localhost:1234/v1", api_key="not-needed") response = client.chat.completions.create( model="local-model", messages=[{"role": "user", "content": "Напиши функцию сортировки на Python"}] ) print(response.choices[0].message.content)
Плюсы: максимально простой интерфейс, поиск моделей прямо из приложения, авто-настройка GPU, работает на Windows без WSL.
Минусы: только десктоп, нет headless-режима для серверов, ограниченный выбор форматов моделей (только GGUF).
Ollama — CLI-first инструмент, который работает как демон в фоне. Идеален для серверов, CI/CD и встраивания в приложения. Одна команда — и модель запущена.
# Установка: curl -fsSL https://ollama.com/install.sh | sh # Загрузка и запуск модели одной командой ollama pull qwen3:14b # Qwen 3 — 14B параметров ollama pull deepseek-r1:8b # DeepSeek — reasoning модель ollama pull llama3.3:70b # Llama 3.3 — универсальная # Запуск в интерактивном режиме ollama run qwen3:14b # API автоматически на http://localhost:11434 # Совместим с OpenAI API — меняем только base_url # Modelfile — кастомизация модели cat << 'EOF' > MyAgent.Modelfile FROM qwen3:14b SYSTEM \"Ты — агент-аналитик для B2B-платформы. Отвечай на русском языке.\" PARAMETER temperature 0.3 PARAMETER num_ctx 32768 EOF ollama create my-agent -f MyAgent.Modelfile ollama run my-agent
Плюсы: headless-режим, Docker-образ, API из коробки, огромный каталог моделей, Modelfile для кастомизации, поддержка GPU (CUDA, ROCm, Metal).
Минусы: только терминал (нет GUI), меньше контроля над параметрами GPU, чем в LM Studio.
Главное правило: модель должна помещаться в VRAM. Если не помещается — часть уходит в RAM и скорость падает в 10-100 раз. Вот таблица соответствия GPU и моделей:
| GPU | VRAM | Рекомендуемые модели |
|---|---|---|
| RTX 3060 | 12GB | Qwen3-8B, Llama 3.1-8B, DeepSeek-R1-8B (Q4_K_M) |
| RTX 4070 | 12GB | Qwen3-14B (Q4), Llama 3.3-8B (Q8), Mistral-Nemo-12B |
| RTX 4090 | 24GB | Qwen3-30B (Q4), Llama 3.3-70B (IQ3), DeepSeek-V3 (IQ2) |
| Mac M2 Max | 32GB | Qwen3-30B (Q4), Llama 3.3-70B (Q4_K_M), Mixtral-8x7B |
| RTX 6000 Ada | 48GB | Qwen3-70B (Q4), Llama 3.3-70B (Q8), DeepSeek-V3-671B (IQ1) |
Форматы квантования: GGUF/Q4_K_M — золотая середина (4 бита, почти без потери качества). IQ3 — агрессивное сжатие (экономия 30% VRAM, небольшое падение точности). Q8 — почти lossless (для задач, где критична точность).
Соединяем Ollama с агентным фреймворком. Вот минимальный AI-агент с доступом к файловой системе и веб-поиску, работающий полностью локально:
# local_agent.py — полностью локальный AI-агент import os, subprocess, json from openai import OpenAI # Подключаемся к локальной Ollama client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama") # Определяем инструменты агента TOOLS = { "read_file": lambda path: open(path).read()[:5000], "list_dir": lambda path: "\n".join(os.listdir(path)), "run_command": lambda cmd: subprocess.getoutput(cmd)[:3000], } # Системный промпт — учим агента пользоваться инструментами SYSTEM = """Ты AI-агент с доступом к инструментам. Используй JSON-формат: Для действия: {"action": "tool_name", "args": {"param": "value"}, "reason": "почему"} Для ответа: {"action": "respond", "text": "твой ответ пользователю"} Доступные инструменты: read_file(path), list_dir(path), run_command(cmd) Отвечай на русском. Думай по шагам.""" def agent_loop(user_input, max_steps=5): messages = [ {"role": "system", "content": SYSTEM}, {"role": "user", "content": user_input} ] for step in range(max_steps): response = client.chat.completions.create( model="qwen3:14b", messages=messages, temperature=0.2 ) text = response.choices[0].message.content try: action = json.loads(text.split("```json")[1].split("```")[0]) except: try: action = json.loads(text) except: print(f"Agent sagt: {text[:500]}") return text if action["action"] == "respond": return action["text"] # Выполняем инструмент tool = TOOLS.get(action["action"]) if tool: result = tool(**action.get("args", {})) messages.append({"role": "assistant", "content": text}) messages.append({"role": "user", "content": f"Результат {action['action']}: {result}"}) else: messages.append({"role": "user", "content": f"Инструмент '{action['action']}' не найден"}) return "Агент не смог решить задачу за отведённые шаги" # Тест агента answer = agent_loop("Какие файлы в текущей директории? Найди config.json и покажи его содержимое.") print(answer)
| Критерий | LM Studio | Ollama | Jan |
|---|---|---|---|
| Интерфейс | GUI | CLI + API | GUI (Electron) |
| Headless | Нет | Да | Нет |
| API-совместимость | OpenAI | OpenAI | OpenAI |
| Форматы моделей | GGUF | GGUF + Safetensors | GGUF + Safetensors |
| GPU-ускорение | CUDA, ROCm, Metal | CUDA, ROCm, Metal | CUDA, Vulkan |
| ОС | Win/Mac/Linux | Mac/Linux (Win WSL) | Win/Mac/Linux |
| Open Source | Нет (проприетарно) | Да (MIT) | Да (AGPL) |
LM Studio — если вы только начинаете, хотите GUI и работаете на десктопе. Идеально для экспериментов и одиночной разработки.
Ollama — если вам нужен сервер, Docker, CI/CD или встраивание в приложение. Стандарт для production-использования.
Jan — если хотите open-source GUI с кастомизацией. Альтернатива LM Studio для тех, кому важна открытость кода.
Совет: начните с Ollama + Open WebUI. Получаете и серверное API, и веб-интерфейс в стиле ChatGPT. Связка покрывает 90% сценариев.