96 ГБ VRAM - и теперь что?
Вы купили RTX 6000 Pro Blackwell за цену неплохой иномарки. 96 гигабайт видеопамяти кажутся бесконечными. Вы можете запустить любую модель. Любую. И тут возникает парадокс: выбор становится мучительным. Запустить одну модель на 400 миллиардов параметров? Или десять по 70 миллиардов? Или забыть про квантование и наслаждаться чистым FP16?
Агентное кодирование - это не про болтовню. Это когда модель должна понимать ваш код, планировать изменения, вызывать инструменты вроде git или pytest, и не ломать при этом всё к чертям. На картах с 24 ГБ вы выбирали модели, которые просто влезут. Здесь вы выбираете модели, которые будут работать идеально.
Это не гипотетический сценарий. Архитектура Blackwell с ее тензорными ядрами 5-го поколения и поддержкой FP8 реально меняет правила игры для инференса. Если на RTX Pro 6000 с Ada вы считали мегабайты, то теперь вы считаете эффективность.
Критерии: что нам нужно от модели-программиста?
Забудьте про общие рейтинги. Для агентной работы важны три вещи, и они не всегда совпадают с лидером в общем зачете.
- Инструктивное следование (Instruction Following): Модель должна делать именно то, что вы просите в контексте кода. Не предлагать рефакторинг, когда вы просите исправить баг.
- Понимание контекста (Context Reasoning): Способность удерживать в голове весь файл (а лучше несколько файлов) и видеть связи между функциями. Контекстное окно в 128K токенов бесполезно, если модель не может им пользоваться.
- Надежность вывода (Output Stability): Генерация JSON для вызова инструментов должна быть безупречной. Одна лишняя запятая - и ваш агент падает с ошибкой парсинга.
Кандидаты: кто реально умеет писать код?
На основе тестов сообщества и личных экспериментов (да, я гонял их на похожем железе) вот фавориты для вашей 96-гигабайтной монструозности.
| Модель | Размер (B) | Контекст (токенов) | Формат для 96 ГБ | Сильная сторона |
|---|---|---|---|---|
| DeepSeek-Coder-V2-Lite-Instruct | 236B | 128K | FP8 или Q4_K_M | Лучшая в мире по HumanEval. Понимает сложные инструкции. |
| Qwen2.5-Coder-32B-Instruct | 32B | 32K | FP16 (и еще 5 таких же моделей в памяти) | Идеальный баланс скорости и качества. Отличный тул-коллинг. |
| CodeLlama-70B-Instruct | 70B | 16K | FP16 с запасом | Классика. Стабильная, предсказуемая, но контекст маловат. |
| Magicoder-CL-32B | 32B | 32K | FP16 | Специализирована на исправлении кода и доработке. |
| Phind-CodeLlama-70B-v2 | 70B | 16K | FP16 | Бьет рекорды по паззлам программирования. Упрямая, но умная. |
Заметили? Я не включил сюда модели общего назначения вроде Llama 3.1 405B. Они умны, но для целевой задачи кодирования - это стрельба из пушки по воробьям. Вы потратите ресурсы на знание столиц мира, когда вам нужно исправить SQL-инъекцию.
1 Стратегия загрузки: один титан или рота солдат?
С 96 ГБ у вас есть два пути.
- Путь 1: Одна большая модель. Загрузите DeepSeek-Coder-V2 (236B) в формате FP8. Это займет около 70-80 ГБ. Вы получите максимально возможное качество кода для любой задачи. Но скорость генерации будет... медитативной. И если модель "сойдет с ума", вы теряете весь ваш загруженный контекст.
- Путь 2: Несколько специализированных моделей. Загрузите Qwen2.5-Coder-32B (32 ГБ в FP16), Magicoder-CL-32B (еще 32 ГБ) и какую-нибудь маленькую модель для оркестрации. Переключайтесь между ними в зависимости от задачи. Это гибко и отказоустойчиво. Именно этот путь я рекомендую для продакшена.
2 Настройка инструментов: Aider, OpenCode и другие
Модель - это двигатель. Инструменты - это руль и тормоза. Без них ваш агент врежется в первое же дерево.
# Установка Aider - мой фаворит для интерактивного кодирования
pip install aider-chat
# Запуск с вашей локальной моделью через Ollama (предварительно загрузите модель)
aider --model ollama/qwen2.5-coder:32b
OpenCode - другой зверь, больше заточенный под автономную работу. Но его сложнее настроить с локальными моделями. Если вы прочитали наш обзор агентов для локальных LLM, то знаете, что выбор инструмента определяет workflow.
Совет: Не пытайтесь заставить модель работать со всеми инструментами сразу. Настройте один (например, Aider для правок кода и вызова командной строки) и доведите его до ума. Интеграция с git - must have.
3 Оптимизация инференса: выжимаем Blackwell по полной
Blackwell любит FP8. Это его родной формат. Конвертируйте ваши GGUF-модели в этот формат, и вы получите прирост скорости до 2x при минимальной потере точности для задач кодирования.
# Конвертация в llama.cpp (сборка с поддержкой CUDA и BlackWell)
./llama-quantize ./models/deepseek-coder-v2.gguf ./models/deepseek-coder-v2-fp8.gguf FP8
# Запуск с оптимизацией под большие контексты
./llama-cli -m ./models/deepseek-coder-v2-fp8.gguf -c 131072 --flash-attn -ngl 99
Флаг -ngl 99 загружает все слои на GPU. У вас хватит памяти. Не бойтесь. Если вы сталкивались с ошибками контекста, как в случае с Qwen Coder 30B, то здесь такой проблемы не будет - но следите за версиями llama.cpp.
Подводные камни, о которых молчат
- Нагрев и TDP. Карта сожрет 400+ ватт, если вы дадите ей волю. Установите лимит мощности в
nvidia-smi -pl 350. Потеряете 5% производительности, но спасете счет за электричество и нервы системы охлаждения. - Фрагментация памяти CUDA. При долгой работе с разными моделями память может фрагментироваться. Периодически перезагружайте драйвер или используйте скрипт с
torch.cuda.empty_cache(). - Ошибка "Кажется, модель говорит не по делу". Это не шутка. Большие модели, особенно с длинным контекстом, склонны к "болтовне". Жестко ограничивайте
max_tokensв промптах и используйте системные инструкции вида "Ты - код-ассистент. Отвечай только кодом или конкрентными командами."
Вопросы, которые вы хотели задать, но боялись
Можно ли запустить две модели по 70B одновременно?
Можно. В FP16 каждая займет около 40 ГБ. 40 + 40 = 80 ГБ. Остаток на системные нужды. Используйте CUDA_VISIBLE_DEVICES и разные порты для серверов (например, Ollama на 11434, vLLM на 8000). Но зачем? Лучше запустить одну 70B и одну 32B для разных целей.
Почему не Nemotron-4 340B?
Модель от NVIDIA отличная, но она заточена под общие рассуждения. Для кодирования есть более специализированные варианты. Да, она влезет в 96 ГБ в 4-битном квантовании, но DeepSeek-Coder-V2 в FP8 будет и точнее, и быстрее для нашей задачи.
Aider или OpenCode? Что выбрать?
Если вы работаете в терминале и любите контроль - Aider. Если хотите больше автоматизации и не боитесь сложной настройки - OpenCode. Для начала берите Aider. Это как сравнивать отвертку и автоматический шуруповерт: оба крутят шурупы, но чувствуются по-разному.
Итог: мой стек на 2025 год
Если бы мне сегодня привезли RTX 6000 Pro Blackwell 96GB, я бы настроил так:
- Основная рабочая лошадка: Qwen2.5-Coder-32B-Instruct в FP16 через Ollama API. Баланс скорости и ума.
- Тяжелая артиллерия: DeepSeek-Coder-V2-Lite 236B в FP8 через vLLM для сложных задач рефакторинга или проектирования. Запускается по требованию.
- Инструмент: Aider с прописанными системными промптами и интеграцией с git.
- Оркестрация: Простой Python-скрипт, который решает, какую модель вызывать, основываясь на сложности промпта.
Это не навсегда. Через полгода выйдет новая модель, и все придется пересматривать. Но с таким железом у вас есть запас прочности на несколько лет вперед. Главное - не увлекайтесь запуском всех моделей подряд, а настройте один эффективный конвейер. Ваш код от этого не станет идеальным, но процесс его написания превратится из рутины в нечто похожее на магию. (С ошибками, конечно. Куда же без них).