Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально. ollama.. ollama. rag.. ollama. rag. ии-агенты.. ollama. rag. ии-агенты. локальная LLM.. ollama. rag. ии-агенты. локальная LLM. локальные модели.

Знаете это чувство, когда читаешь статью про локальные LLM и думаешь: «А, ну это же просто. Поставлю Ollama, тяну модель, и у меня уже свой ИИ-агент, который знает весь код»?

Я думал именно так.

Меня зовут Егор Лаптев, я QA Fullstack Java в SENSE на проекте крупного российского банка. У меня 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 ГБ, так что технически она влезает, если сжать её до состояния, при котором она сама начинает сомневаться в своём интеллекте.

Да, я знаю, что вы сейчас подумали: «Q2_K? Это же каша из токенов, любая логика умирает». И вы правы, но цель была проверить, заведётся ли вообще 72B на ноутбуке, а эксперимент — не продакшн. Для реальной работы я бы взял Qwen 2.5 7B или 14B в Q4_K_M или Q8, а это 90% качества при трети ресурсов. Но тогда бы не было этой статьи.

Не стал ничего настраивать: никаких лимитов или ограничений GPU. Просто ollama run и поехали.

Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально - 1

Вентилятор заорал

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

Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально - 2

Кто-то скажет: «Да macOS не даст одному процессу забрать всю память». И будет прав: по умолчанию есть лимит ~70-75% от общего объёма RAM для GPU. Но Ollama + macOS в связке с 72B моделью ушли в жёсткий своп: модель не влезала в отведённые 75%, и macOS начала активно писать и читать на SSD. А это медленная смерть для диска: постоянная нагрузка на NAND-ячейки, нагрев, деградация. MacBook страдал не только от CPU/GPU, но и от того, что SSD работал на износ.

Я смотрел на Activity Monitor, где все графики были красными, и подумал: «Больше похоже на запуск ракеты, чем на деплой агента». Каким-то чудом ноутбук выжил, но я понял, что так продолжаться не может.

Пытаемся спасти ситуацию: лимит памяти

Первым делом я поставил лимит на память: пусть модель работает в отведённом бюджете, а остальное достанется системе и моим окнам. 4096 MB, как советовали в туториалах, не сработали: 72B in Q2_K весит ~26 ГБ, и в 4 ГБ она просто не влезает, Ollama честно сообщал об ошибке загрузки. Пришлось поднять лимит до 28 ГБ, ровно чтобы модель влезла, и ни гигабайтом больше. У меня 32 ГБ, а модель мучается в 28. Звучит как издевательство, но это единственное, что позволяло ноутбуку не перегреться.

# В конфиге Ollama или через переменные окружения

OLLAMA_NUM_PARALLEL=1

# Лимит памяти через системные настройки macOS

В итоге модель отвечает, а скорость инференса при этом упала до 1-2 токенов в секунду (для сравнения, на RTX 4090 та же модель выдаёт 10-15 tok/s).

Что это значит на практике? Простой запрос «напиши функцию для парсинга JSON» заставляет ждать минуту-две, пока модель генерирует ответ. Токены приходят по одному-два, буква за буквой, как будто кто-то печатает на машинке 1985 года.

Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально - 3

Оно живое. Но живое как черепаха. Разница между двумя режимами видна в таблице.

Параметр

Без лимита

С лимитом 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-база: кошелёк начинает нервничать

И вот тут начинается самое интересное. Потому что модель, которая просто генерирует текст, ещё не агент. Агент — это модель + контекст. А контекст — это RAG (Retrieval-Augmented Generation).

Мне хотелось, чтобы агент знал мой домен: код, доки, процессы, тикеты, чаты. Для этого я начал собирать RAG-пайплайн: векторная база + эмбеддинги + retrieval. И вот тут я сел посчитать, а сколько это всё вообще весит.

Расчёт: сколько нужно для «полного» покрытия домена

Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально - 4

Исходные данные:

  • Средний документ: 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 ТБ.

Show me the money: сколько стоит агент целиком

Считаем железо, которое нужно для локального агента:

Компонент

Минимум для агента

Стоимость (ориентир)

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

Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально - 5

Но главная стоимость — личное устройство теперь сервер. Вы не сможете использовать его для других задач, не сможете выключить, если агент должен быть доступен, и не сможете продать, потому что он «привязан» к инфраструктуре.

Когда локально, а когда облако

Раз расчёт вышел таким, остаётся решить, что запускать локально, а что в облаке. Однозначного ответа тут нет: многое зависит от того, какое у вас железо, насколько чувствительны данные и нужен ли агенту аптайм 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/год (мало, но это не ноль)

  • Время: настройка, отладка, мониторинг, апгрейды

  • Ограничения: личное устройство теперь работает на агента

Но опыт того стоил. Теперь я знаю, что 7B-14B можно держать на своём железе, а RAG на сотни гигабайт и дообучение лучше отдать облаку.

А вот терпение закончилось: ждать минуту на каждый ответ я не хочу.

Как я чуть не спалил MacBook, пытаясь развернуть ИИ-агента локально - 6

Если вы думаете «а я просто запущу на своём ПК», загляните в блок «RAG-база» и посчитайте, прежде чем решать.

Какую модель вы запускаете локально, на каком железе и что вас остановило? Давайте обсудим в комментариях. 

Автор: Egor1301

Источник