- BrainTools - https://www.braintools.ru -
Знаете это чувство, когда читаешь статью про локальные LLM и думаешь: «А, ну это же просто. Поставлю Ollama, тяну модель, и у меня уже свой ИИ-агент, который знает весь код»?
Я думал именно так.
Меня зовут Егор Лаптев, я QA Fullstack Java в SENSE [1] на проекте крупного российского банка. У меня MacBook Pro M2 Pro с 32 ГБ RAM: не topical машина, но для разработки рабочая лошадка. Даже не подозревал, что через 20 минут после запуска модели ноутбук будет звучать как истребитель на взлёте, а температура процессора будет такой, что можно было бы варить яичницу на крышке.
Это история о том, как «просто запустить локально» превратилось в инженерный проект с бюджетом, расчётами и одним почти сгоревшим ноутбуком.
Всё началось с двух команд в терминале:
ollama pull qwen-coder:3.5-72b
ollama run qwen-coder:3.5-72b
Модель — Qwen Coder 3.5, 72 миллиарда параметров, а по меркам LLM это уже тяжёлый класс. В интернете пишут: «72B — это для воркстейшнов, тебе нужен сервер с 128 ГБ». Но Ollama с агрессивным квантованием до Q2_K (~26 ГБ) «вмещает» модель в 32 ГБ, так что технически она влезает, если сжать её до состояния, при котором она сама начинает сомневаться в своём интеллекте [2].
Да, я знаю, что вы сейчас подумали: «Q2_K? Это же каша из токенов, любая логика [3] умирает». И вы правы, но цель была проверить, заведётся ли вообще 72B на ноутбуке, а эксперимент — не продакшн. Для реальной работы я бы взял Qwen 2.5 7B или 14B в Q4_K_M или Q8, а это 90% качества при трети ресурсов. Но тогда бы не было этой статьи.
Не стал ничего настраивать: никаких лимитов или ограничений GPU. Просто ollama run и поехали.

Ollama забрал всю доступную RAM, все 32 ГБ: 32 гигабайта, и он сожрал ВСЕ. macOS начала активно использовать swap, и диск начал гудеть как стиральная машина на отжиме, а CPU и GPU (у нас же unified memory, так что это одно и то же) стояли на 100% весь период инференса. Вентилятор заорал, а всё остальное на машине стало неюзабельным: браузер лагал, IDE зависала, даже ls в терминале отвечал с задержкой. Через несколько минут включился thermal throttling, и система начала принудительно снижать частоты, чтобы не сгореть.

Кто-то скажет: «Да macOS не даст одному процессу забрать всю память». И будет прав: по умолчанию есть лимит ~70-75% от общего объёма RAM для GPU. Но Ollama + macOS в связке с 72B моделью ушли в жёсткий своп: модель не влезала в отведённые 75%, и macOS начала активно писать и читать на SSD. А это медленная смерть для диска: постоянная нагрузка на NAND-ячейки, нагрев, деградация. MacBook страдал не только от CPU/GPU, но и от того, что SSD работал на износ.
Я смотрел на Activity Monitor, где все графики были красными, и подумал: «Больше похоже на запуск ракеты, чем на деплой агента». Каким-то чудом ноутбук выжил, но я понял, что так продолжаться не может.
Первым делом я поставил лимит на память [4]: пусть модель работает в отведённом бюджете, а остальное достанется системе и моим окнам. 4096 MB, как советовали в туториалах, не сработали: 72B in Q2_K весит ~26 ГБ, и в 4 ГБ она просто не влезает, Ollama честно сообщал об ошибке [5] загрузки. Пришлось поднять лимит до 28 ГБ, ровно чтобы модель влезла, и ни гигабайтом больше. У меня 32 ГБ, а модель мучается в 28. Звучит как издевательство, но это единственное, что позволяло ноутбуку не перегреться.
# В конфиге Ollama или через переменные окружения
OLLAMA_NUM_PARALLEL=1
# Лимит памяти через системные настройки macOS
В итоге модель отвечает, а скорость инференса при этом упала до 1-2 токенов в секунду (для сравнения, на RTX 4090 та же модель выдаёт 10-15 tok/s).
Что это значит на практике? Простой запрос «напиши функцию для парсинга JSON» заставляет ждать минуту-две, пока модель генерирует ответ. Токены приходят по одному-два, буква за буквой, как будто кто-то печатает на машинке 1985 года.

Оно живое. Но живое как черепаха. Разница между двумя режимами видна в таблице.
|
Параметр |
Без лимита |
С лимитом 28 ГБ |
|---|---|---|
|
RAM usage |
28-32 ГБ (всё) |
~28 ГБ |
|
Скорость |
~3-4 tok/s (до троттлинга) |
~1-2 tok/s |
|
Юзабилити |
MacBook неюзабелен |
Работает, но медленно |
|
Температура |
95°C+ |
~85-90°C |
Для экспериментов, конечно, терпимо, но для ежедневной работы точно нет.
Решение было очевидным: нужен ПК уровня рабочей станции.
Спеки, которые у меня были в наличии:
GPU: RTX 4070 Ti Super 16GB
RAM: 32 ГБ DDR5
SSD: 2TB NVMe Gen4
CPU: Intel Core i5-13600KF
72B в Q2_K (~26 ГБ) не влезает в 16 ГБ видеопамяти целиком, часть весов живёт в оперативке, и это заметно. Но модель на этом железе работает:
5-8 токенов в секунду — ответ на простой запрос генерируется за 10-20 секунд
Можно держать открытыми IDE, браузер, терминал — всё работает
GPU не в 100%, а в 60-70% при инференсе
Звучит идеально, правда? Но теперь, когда я запускаю агента:
GPU сидит на 80-90% во время инференса
Играть в AAA-тайтлы — невозможно (GPU занят)
Монтировать видео — можно, но медленно (конкуренция за VRAM)
ПК теперь на 50% ИИ-сервер и на 50% личный компьютер
Оно живое и быстрое, но мне немного жаль личный ПК: он теперь работает на меня 24/7, а я не могу даже поиграть в Cyberpunk без того, чтобы сначала остановить агента.
И вот тут начинается самое интересное. Потому что модель, которая просто генерирует текст, ещё не агент. Агент — это модель + контекст. А контекст — это RAG (Retrieval-Augmented Generation).
Мне хотелось, чтобы агент знал мой домен: код, доки, процессы, тикеты, чаты. Для этого я начал собирать RAG-пайплайн: векторная база + эмбеддинги + retrieval. И вот тут я сел посчитать, а сколько это всё вообще весит.
Расчёт: сколько нужно для «полного» покрытия домена

Исходные данные:
Средний документ: 10-50 страниц
Размер чанка: 500 токенов (~350 слов)
Размерность эмбеддинга: 1536 или 4096
|
Масштаб |
Документов |
Страниц |
Чанков |
Хранение |
|---|---|---|---|---|
|
Личный проект |
500 |
10,000 |
14,000 |
~200 MB |
|
Внутренние доки |
50,000 |
1,000,000 |
1,400,000 |
~20 GB |
|
Полный домен |
500,000 |
10,000,000 |
14,000,000 |
~200 GB |
|
Enterprise-grade |
5,000,000+ |
100,000,000+ |
140,000,000+ |
~2 TB |
И это только векторная база, давайте ещё приплюсуем к ней:
Веса модели: 32B в FP16 = 64 ГБ, в FP32 = 128 ГБ
Данные для fine-tuning + состояния оптимизатора: ×3-4
Структуры индекса: HNSW-графы добавляют 30-50% overhead
В сумме получим, что реалистичный footprint для «полностью обученного» личного агента — это 2-4 ТБ.
Считаем железо, которое нужно для локального агента:
|
Компонент |
Минимум для агента |
Стоимость (ориентир) |
|---|---|---|
|
GPU (24GB+ VRAM) |
RTX 4090 / A5000 |
$4,500 |
|
RAM (64GB+) |
DDR5 64GB |
$500 |
|
Storage (4TB NVMe) |
4TB Gen4 SSD |
$500 |
|
CPU (16+ cores) |
Ryzen 9 / i9 |
$600 |
|
БП, корпус, охлаждение |
1000W+ |
$400 |
|
Итого |
|
$6,500 |
Плюс электричество:
RTX 4090 превращает ~350W под нагрузкой
8 часов в день = ~2.8 кВт·ч/день
В год: ~$100-180

Но главная стоимость — личное устройство теперь сервер. Вы не сможете использовать его для других задач, не сможете выключить, если агент должен быть доступен, и не сможете продать, потому что он «привязан» к инфраструктуре.
Раз расчёт вышел таким, остаётся решить, что запускать локально, а что в облаке. Однозначного ответа тут нет: многое зависит от того, какое у вас железо, насколько чувствительны данные и нужен ли агенту аптайм 24/7. Ниже условия, при которых я бы выбрал тот или другой вариант.
Когда локально имеет смысл:
У вас уже есть мощное железо (воркстейшн, игровой ПК с 24GB+ VRAM)
Вам нужна конфиденциальность (чувствительный код, внутренние доки, данные клиентов)
Вы экспериментируете и не нужен 24/7 аптайм
Модель маленькая (7B-14B) и задача не требует глубокого рассуждения
Когда облако / корпоративная инфраструктура лучше:
Нужна скорость и постоянная доступность
Нужен полный RAG-пайплайн на масштабе (миллионы чанков)
Не хотите обслуживать железо (апгрейды, замена, охлаждение)
Стоимость инференса в облаке часто ниже амортизированной стоимости железа
Sweet spot: гибридный подход
|
Задача |
Где |
Почему |
|---|---|---|
|
Быстрые задачи, приватность |
Локально (7B) |
Дёшево, быстро, данные не уходят |
|
Сложное рассуждение, генерация |
Облако (70B+) |
Качество, скорость, масштаб |
|
RAG на больших данных |
Облако |
200GB+ не потянет локально |
|
Fine-tuning |
Облако / GPU-кластер |
Состояния оптимизатора ×4 |
Используйте MacBook для того, что он умеет. А облако — для того, что он не умеет.
MacBook жив и полностью в порядке. Один троттлинг ещё не болезнь, просто macOS снизил частоты, чтобы не перегреться. Вреда и последствий нет. Живёт, работает, как и раньше, разве что иногда чуть сильнее греется под нагрузкой, но, как уже понял, это не про LLM.
Если считать целиком, цена локального ИИ складывается из четырёх частей:
Железо: $3000-6500 (или личный ПК, который теперь сервер)
Электричество: $100-180/год (мало, но это не ноль)
Время: настройка, отладка, мониторинг, апгрейды
Ограничения: личное устройство теперь работает на агента
Но опыт [6] того стоил. Теперь я знаю, что 7B-14B можно держать на своём железе, а RAG на сотни гигабайт и дообучение лучше отдать облаку.
А вот терпение закончилось: ждать минуту на каждый ответ я не хочу.

Если вы думаете «а я просто запущу на своём ПК», загляните в блок «RAG-база» и посчитайте, прежде чем решать.
Какую модель вы запускаете локально, на каком железе и что вас остановило? Давайте обсудим в комментариях.
Автор: Egor1301
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/38075
URLs in this post:
[1] SENSE: https://sense-it.ru/
[2] интеллекте: http://www.braintools.ru/article/7605
[3] логика: http://www.braintools.ru/article/7640
[4] память: http://www.braintools.ru/article/4140
[5] ошибке: http://www.braintools.ru/article/4192
[6] опыт: http://www.braintools.ru/article/6952
[7] Источник: https://habr.com/ru/companies/it_sense/articles/1104018/?utm_campaign=1104018&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.