Зачем платить за API, если можно запустить модель локально?
Claude Code в теории - удобный инструмент. На практике - черная дыра для бюджета. Каждый запрос к GPT-4 или Claude 3 стоит денег. Много денег. Особенно если вы работаете с кодом по 8 часов в день.
Типичная картина: вы пишете код, получаете 20-30 запросов в час, а в конце месяца приходит счет на $200-300. И это для одного разработчика. Команда из пяти человек? Умножьте на пять.
Важно: Claude Code по умолчанию отправляет все ваши промпты в облако. Даже если вы думаете, что работаете локально. Проверили? Узнали что на самом деле уходит в облако - испугались.
Решение: локальные модели через Unsloth
Unsloth - не просто еще одна библиотека для работы с LLM. Это оптимизированный движок, который ускоряет инференс в 2-3 раза. Почему именно он? Потому что другие решения либо слишком медленные, либо требуют танцев с бубном.
Мы будем использовать две модели:
- DeepSeek-Coder-V2 - лучшая модель для программирования на начало 2026 года. Поддерживает контекст 128к токенов, понимает 338 языков программирования.
- Qwen2.5-Coder-32B - альтернатива от Alibaba. Чуть менее точная в коде, но быстрее и требует меньше памяти.
Обе модели работают через OpenAI-совместимый API. Именно это позволяет подключать их к Claude Code без модификации исходного кода.
1 Готовим среду: железо и софт
Минимальные требования на 2026 год уже другие. Забудьте про 8 ГБ VRAM - этого мало даже для 7B моделей с хорошим контекстом.
| Модель | Минимальная VRAM | Рекомендуемая VRAM | Контекст |
|---|---|---|---|
| DeepSeek-Coder-7B | 8 ГБ | 12 ГБ | 128к |
| Qwen2.5-Coder-7B | 8 ГБ | 12 ГБ | 128к |
| DeepSeek-Coder-32B | 24 ГБ | 32 ГБ | 64к |
Установка базового ПО (Ubuntu/Debian):
# Обновляем систему
sudo apt update && sudo apt upgrade -y
# Ставим Python 3.11 (обязательно, более старые версии не поддерживаются)
sudo apt install python3.11 python3.11-venv python3.11-dev -y
# CUDA 12.4 (актуально на 2026 год)
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run --silent --toolkit
# Добавляем CUDA в PATH
echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
2 Устанавливаем и настраиваем Unsloth
Вот где большинство людей совершают первую ошибку - пытаются установить Unsloth через pip без дополнительных флагов. Не делайте так.
Неправильно:
# ТАК НЕ ДЕЛАТЬ! Будет установлена версия без CUDA поддержки
pip install unsloth
Правильно:
# Создаем виртуальное окружение
python3.11 -m venv ~/unsloth_env
source ~/unsloth_env/bin/activate
# Устанавливаем PyTorch с поддержкой CUDA 12.4
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# Устанавливаем Unsloth с поддержкой всех оптимизаций
pip install "unsloth[cu124]" --upgrade
pip install xformers --index-url https://download.pytorch.org/whl/cu124
pip install triton
Проверяем установку:
import torch
from unsloth import FastLanguageModel
print(f"PyTorch версия: {torch.__version__}")
print(f"CUDA доступна: {torch.cuda.is_available()}")
print(f"Количество GPU: {torch.cuda.device_count()}")
print(f"VRAM: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.2f} ГБ")
3 Загружаем и запускаем модель
DeepSeek-Coder или Qwen? Зависит от ваших задач. DeepSeek лучше справляется со сложным кодом, Qwen быстрее генерирует простые функции.
from unsloth import FastLanguageModel
import torch
# Загружаем DeepSeek-Coder-7B с оптимизациями Unsloth
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "deepseek-ai/deepseek-coder-7b-instruct-v2",
max_seq_length = 32768, # Можно увеличить до 65536 если хватит памяти
dtype = torch.float16,
load_in_4bit = True, # Квантование 4-bit для экономии памяти
token = "hf_your_token_here", # Нужен для gated models
)
# Применяем патчи для ускорения
model = FastLanguageModel.for_inference(model)
Внимание: DeepSeek требует токен Hugging Face для скачивания. Бесплатный аккаунт дает доступ. Qwen2.5-Coder пока не требует токена, но это может измениться.
Тест модели:
# Простой тест - генерация функции Python
prompt = """Напиши функцию на Python, которая:
1. Принимает список чисел
2. Возвращает словарь с статистикой: среднее, медиана, стандартное отклонение
3. Обрабатывает пустые списки
4. Использует только стандартную библиотеку
Код:"""
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0]))
4 Создаем OpenAI-совместимый сервер
Claude Code понимает только OpenAI API. Значит, нужно превратить нашу локальную модель в сервер, который говорит на том же языке.
Устанавливаем vLLM (альтернатива - Ollama, но vLLM быстрее):
pip install vllm
pip install "vllm[openai]" # Для OpenAI-совместимого API
Запускаем сервер:
# Для DeepSeek-Coder-7B
python -m vllm.entrypoints.openai.api_server \
--model deepseek-ai/deepseek-coder-7b-instruct-v2 \
--served-model-name deepseek-coder \
--max-model-len 32768 \
--gpu-memory-utilization 0.9 \
--port 8000 \
--api-key "local-key" \
--quantization awq # Или gptq, зависит от модели
# Для Qwen2.5-Coder-7B
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-Coder-7B-Instruct \
--served-model-name qwen-coder \
--max-model-len 32768 \
--port 8001 \
--api-key "local-key"
5 Настраиваем Claude Code
Теперь самое интересное - заставить Claude Code говорить с нашим сервером.
Создаем конфигурационный файл для Claude Code:
{
"mcpServers": {
"local-llm": {
"command": "node",
"args": [
"/path/to/mcp-server-local-llm/index.js"
],
"env": {
"OPENAI_API_KEY": "local-key",
"OPENAI_BASE_URL": "http://localhost:8000/v1"
}
}
},
"ai": {
"providers": [
{
"id": "local-deepseek",
"name": "DeepSeek Coder Local",
"type": "openai",
"config": {
"apiKey": "local-key",
"baseURL": "http://localhost:8000/v1",
"defaultModel": "deepseek-coder",
"maxTokens": 8192
}
},
{
"id": "local-qwen",
"name": "Qwen Coder Local",
"type": "openai",
"config": {
"apiKey": "local-key",
"baseURL": "http://localhost:8001/v1",
"defaultModel": "qwen-coder",
"maxTokens": 8192
}
}
]
}
}
Расположение файла зависит от ОС:
- Linux: ~/.config/Claude Code/claude_desktop_config.json
- macOS: ~/Library/Application Support/Claude Code/claude_desktop_config.json
- Windows: %APPDATA%\Claude Code\claude_desktop_config.json
Почему это работает лучше, чем облачные API?
Три причины:
- Конфиденциальность. Ваш код не уходит к Anthropic, OpenAI или другим компаниям. Особенно важно для коммерческих проектов.
- Скорость. Нет сетевой задержки. Запросы обрабатываются локально за 100-500 мс вместо 1-3 секунд.
- Стоимость. Ноль рублей в месяц после начальных инвестиций в железо. Сравните с $20-50 в месяц за одного разработчика.
Но есть и недостатки:
- Требует мощное железо (минимум RTX 4070 для 7B моделей)
- Потребляет электроэнергию (50-150 Вт дополнительно)
- Модели нужно обновлять вручную
Типичные ошибки и как их избежать
Собрал самые частые проблемы, с которыми сталкивался сам:
| Ошибка | Причина | Решение |
|---|---|---|
| "CUDA out of memory" | Слишком большой контекст или batch size | Уменьшить max_model_len до 16384, включить квантование 4-bit |
| Медленная генерация | Используется CPU вместо GPU | Проверить torch.cuda.is_available(), переустановить CUDA |
| Claude Code не видит сервер | Брандмауэр или неправильный порт | curl http://localhost:8000/v1/models проверить доступность |
| Плохое качество кода | Старая версия модели | Обновить до DeepSeek-Coder-V2 или Qwen2.5-Coder |
А что насчет команды разработчиков?
Для команды из 3+ человек есть два варианта:
- Серверная стойка - один мощный сервер с RTX 4090 или A100, к которому подключаются все разработчики. Дешевле в долгосрочной перспективе.
- Индивидуальные рабочие станции - у каждого свой GPU. Дороже, но надежнее (нет единой точки отказа).
Для серверного варианта рекомендую прочитать сравнение локальных альтернатив для команд - там подробно разобраны экономические аспекты.
Что будет дальше?
К концу 2026 года ожидаю:
- Модели размером 3B с качеством сегодняшних 7B (благодаря better architectures)
- Встроенную поддержку локальных LLM в Claude Code (Anthropic уже тестирует)
- Автоматическое обновление моделей как в пакетных менеджерах
Но ждать не нужно. Уже сегодня можно настроить систему, которая экономит $500-1000 в месяц на команду из пяти человек. Настройка занимает день. Окупаемость - неделя.
Следующий шаг - добавить RAG для работы с документацией и интегрировать с Obsidian для полной локальной системы продуктивности.
Совет: Начните с DeepSeek-Coder-7B. Если не хватает качества - переходите на 32B версию. Если не хватает скорости - пробуйте Qwen. Экспериментируйте с разными моделями, пока не найдете оптимальный баланс для ваших задач.
Вопросы? Ошибки в гайде? Пишите в комментарии - исправлю и дополню. Сам прошел через все эти грабли, знаю каждый подводный камень.