Зачем это нужно: когда API бьет по карману и нервам
Вы платите $50 в месяц за GPT-5 API, чтобы он генерировал код на Clojure. А он возвращает вам Java в скобках. Вы тратите часы на промпт-инженерию, а модель забывает контекст после 32к токенов. Знакомо? Тогда вы уже понимаете, зачем нужна локальная система.
Но есть нюанс: большинство гайдов предлагают либо три RTX 4090 за $6000, либо слабую систему на одной карте, которая не тянет современные модели. Я покажу, как собрать рабочую станцию за $2500-3000, которая запускает Llama 3.3-70B в 8-битном квантовании и одновременно обрабатывает запросы от нескольких агентов.
Важно: на 12.02.2026 ситуация с поддержкой AMD для AI изменилась. ROCm 6.0 стабильно работает на RDNA 4 архитектуре, а сообщество создало патчи для llama.cpp. Это не 2024 год, когда все плясали с бубном.
AMD против NVIDIA: почему R9700 и почему сейчас
Потому что 32 ГБ VRAM за $800 - это в два раза дешевле, чем у NVIDIA. Две карты дают 64 ГБ - достаточно для Llama 3.3-70B-Q8 (нужно около 56 ГБ) или для параллельной работы двух меньших моделей.
R9700 на архитектуре RDNA 4 - не чисто AI-карта. У нее нет тензорных ядер как у NVIDIA. Но на 12.02.2026 llama.cpp и Ollama научились эффективно использовать потоковые процессоры AMD через ROCm. Производительность в 2-3 раза ниже, чем у RTX 5090, но цена за гигабайт VRAM непревзойденная.
| Компонент | Модель | Цена (примерно) |
|---|---|---|
| Видеокарта | 2x AMD Radeon R9700 | $1600 |
| Процессор | AMD Ryzen 9 7900X | $400 |
| Память | 96 ГБ DDR5-6000 | $300 |
| Материнская плата | ASUS TUF GAMING X670E-PLUS | $250 |
1Собираем железо: от корпуса до блока питания
Самая частая ошибка - экономить на блоке питания. Две R9700 под нагрузкой съедают до 600 ватт. Добавьте процессор и остальное - получите 850+ ватт. Берите 1000W 80+ Gold. Не повторяйте мою ошибку, когда система выключалась при полной загрузке моделей.
Корпус с хорошей вентиляцией - обязательно. Карты AMD греются сильнее NVIDIA. Я взял Lian Li Lancool 216 - два 160-мм вентилятора спереди отлично справляются.
# Проверяем температуру после сборки
sudo apt install lm-sensors
sensors | grep "edge"
# Должно быть 70-80°C под нагрузкой, если выше - проблема с airflow
2Софт: как заставить Linux видеть две AMD карты
Устанавливаем Ubuntu 24.04 LTS. Драйверы ROCm 6.0 теперь в официальных репозиториях, но для RDNA 4 нужны дополнительные пакеты.
# Добавляем репозиторий ROCm
wget https://repo.radeon.com/amdgpu-install/latest/ubuntu/jammy/amdgpu-install_6.0.0-1_all.deb
sudo apt install ./amdgpu-install_6.0.0-1_all.deb
sudo amdgpu-install --usecase=rocm,hip,mllib --no-dkms
# Проверяем карты
rocminfo | grep "Agent"
# Должно показать две карты
Если система не видит вторую карту, проверьте настройки CSM/UEFI в BIOS. На некоторых материнских платах нужно выключить CSM для правильной инициализации PCIe 4.0/5.0.
3Запускаем модели: Ollama, llama.cpp и танцы с бубном
Ollama с версии 0.5.0 (актуально на 12.02.2026) поддерживает ROCm через бэкенд --accelerator rocm. Но для двух карт нужно использовать llama.cpp напрямую.
# Компилируем llama.cpp с поддержкой ROCm
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make LLAMA_HIPBLAS=1 LLAMA_HIP_UMA=1 -j16
# Запускаем модель на двух картах
./main -m models/llama-3.3-70b-q8.gguf \
-ngl 99 -t 16 --split-mode layer \
--tensor-split 0.5,0.5 -p "Создай функцию на Clojure"
Флаг --tensor-split 0.5,0.5 равномерно распределяет слои между картами. Если одна карта загружена на 100%, а вторая на 20%, поменяйте значения на 0.7,0.3.
Clojure-специфика: учим модель понимать скобки
Стандартные модели кодинга тренированы на Python, JavaScript, Java. Clojure в датасетах занимает 0.3%. Результат: модель генерирует код, который выглядит как Clojure, но не работает.
Решение - тонкая настройка (fine-tuning) небольшой модели. Берем Qwen2.5-Coder-7B (ей нужно 16 ГБ VRAM) и дообучаем на датасете из 50 тысяч примеров Clojure кода.
# Готовим датасет для fine-tuning
# Формат: JSONL с полями "instruction" и "output"
{
"instruction": "Напиши функцию для расчета факториала",
"output": "(defn factorial [n]\n (if (<= n 1)\n 1\n (* n (factorial (dec n)))))"
}
# Запускаем тонкую настройку с Unsloth
pip install unsloth
python -m unsloth.finetune \
--model_name="Qwen/Qwen2.5-Coder-7B" \
--dataset="clojure_dataset.jsonl" \
--output_dir="./clojure_coder"
Unsloth ускоряет тонкую настройку в 2 раза и снижает потребление памяти на 70%. На двух R9700 обучение 7B модели займет 6-8 часов.
Ошибки, которые съедят ваше время
- Не та версия ROCm. Для RDNA 4 нужен ROCm 6.0+. 5.7 не заработает.
- Неправильный split в llama.cpp. Если указать
--tensor-split 1,0, вторая карта не используется. - Экономия на оперативной памяти. 64 ГБ ОЗУ - мало для оффлоадинга. Берите 96+ ГБ.
- Попытка запустить модель, которая не влезает. Llama 3.3-70B-Q8 требует 56 ГБ VRAM. В 64 ГБ влезает, но не остается места для контекста. Используйте Q6 квантование.
Что можно делать на этой системе
Запускать локальных агентов для разработки на Clojure, как в статье про локальных AI-агентов для программирования. Или создать мультиагентную систему на Swarmcore, как в Swarmcore: ваш домашний Deep Research.
Один агент пишет код, второй проверяет стиль, третий генерирует тесты. Все локально, без API-лимитов. Для Clojure-проектов это спасение.
Производительность: ожидайте 5-8 токенов/секунду для Llama 3.3-70B-Q8. Это медленнее, чем NVIDIA, но бесплатно после покупки железа. Для интерактивной работы хватит.
А что с будущим?
К 2027 году AMD обещает тензорные ядра в потребительских картах. Но пока R9700 - лучший бюджетный вариант для тех, кому нужна VRAM больше, чем скорость. Если вы разрабатываете на нишевых языках вроде Clojure, эта система окупится за 4-5 месяцев экономии на API.
И последний совет: не гонитесь за самой новой моделью. Лучше тонко настроить Qwen2.5-Coder-7B под свои нужды, чем пытаться запихнуть Llama 4-140B, который выйдет через полгода. Ваш код от этого не станет лучше.