Мені вдалося запустити мовну модель із 284 мільярдами параметрів на ноутбуці лише з 3,2 ГБ оперативної пам'яті, використовуючи лише чистий C99 та NVMe-накопичувач. Секрет полягав у стрімінгу ваг експертів моделі замість завантаження всього чекпоїнту обсягом 160 ГБ у пам'ять, що доводить: навіть найбільші моделі типу mixture-of-experts (MoE) можна вмістити на споживчому обладнанні.

Чому це важливо

Великі мовні моделі (LLM) забезпечують генерацію коду, допомогу в дослідженнях тощо, але їхній розмір зазвичай змушує користувачів переходити на дорогі сервери з кількома GPU або використовувати сильне квантування, що погіршує якість. Демонстрація того, що MoE-модель із 284 млрд параметрів може працювати з кількома гігабайтами оперативної пам'яті, відкриває двері для хобістів, малих стартапів і дослідників з обмеженим бюджетом для експериментів із передовими моделями без втрати точності.

Модель та апаратне обмеження

DeepSeek-V4-Flash зберігає 284 млрд параметрів у 256 експертах на кожен шар трансформера. Сирий чекпоїнт займає приблизно 160 ГБ на диску — обсяг, що значно перевищує 3,2 ГБ оперативної пам'яті типового ноутбука. Традиційні конвеєри виведення (inference pipelines) намагаються відобразити весь чекпоїнт у пам'ять, що швидко вичерпує ліміт RAM і призводить до збоїв.

Стрімінг ваг експертів: основна ідея

Архітектури MoE активують лише крихітну підмножину експертів для кожного токена. У DeepSeek-V4-Flash роутер вибирає шість експертів із 256 на шар. Оскільки обчислення ніколи не зачіпають неактивних експертів, механізм виведення може пропускати їх завантаження.

Реалізація розглядає чекпоїнт як джерело потокових даних. Коли роутер визначає, які експерти потрібні для поточного токена, механізм підтягує відповідні блоки ваг з NVMe-накопичувача в LRU-кеш (least-recently-used), що розміщується в оперативній пам'яті. Якщо кеш достатньо великий, ті самі експерти повторно використовуються для послідовних токенів, що створює попадання в кеш (cache hits); якщо кеш занадто малий, механізм частіше читає з диска. Результатом є пікове споживання пам'яті 3,23 ГБ, що цілком укладається в межі можливостей ноутбука, при цьому зберігаються ваги повної точності та не потрібне прискорення GPU.

Важкі уроки реалізації

1. Плавність виводу не є доказом правильності Помилкове ядро все одно може видавати правдоподібні речення, особливо коли мовні патерни моделі маскують чисельні помилки. Я перевірив кожну з 14 критичних операцій за допомогою свіжого еталона PyTorch, переконавшись, що чисельна різниця залишається в межах крихітного допуску. Пропуск цього кроку дозволив би непоміченим прослизнути тонким відхиленням.

2. Спільні сценарії відмов можуть обдурити ваші тести Помилка пошкодження пам'яті згорнула вибір маршрутизації до жменьки експертів, що штучно завищило показник попадання в кеш із 52% до 95% і створило ілюзію величезного прискорення. Оскільки тестовий набір порівнював дві версії одного й того самого помилкового коду, він не виявив проблему. Лікування полягає в додаванні незалежного еталонного шляху — коду, який не має спільної логіки з основною реалізацією, — щоб спільний недолік не міг пройти непоміченим.

3. Вимірюйте перед оптимізацією Я припустив, що копіювання пам'яті займає 1 мс, і витратив час на його оптимізацію. Профілювання показало, що операція насправді коштувала 3,6 мс, або 22% від загального часу виведення. Урок: ніколи не покладайтеся на інтуїцію в критичних для продуктивності секціях; точне вимірювання — єдиний надійний орієнтир.

4. Тепловий режим суттєво впливає на пропускну здатність Запуск бенчмарків на «перегрітому» ноутбуці показав час виконання до трьох разів довший, ніж на холодному пристрої. Підвищена температура призвела до тротлінгу пропускної здатності NVMe-накопичувача та сповільнила процесор, що спотворило результати. Завжди фіксуйте тепловий стан системи, коли публікуєте показники продуктивності.

Як виглядають цифри

  • Розмір моделі на диску: ~160 ГБ
  • Пікове використання RAM: 3,23 ГБ
  • Експертів на токен: 6 (із 256)
  • Показник попадання в кеш: залежить від RAM; з 3,2 ГБ він коливається.
  • Без квантування: ваги повної точності стрімляться, що зберігає якість моделі.

Якщо ліміт RAM впаде нижче приблизно 3,21 ГБ, кеш ніколи не заповнюється, і механізм здійснює стрімінг для кожного токена, що призводить до різкого падіння продуктивності.

Вихідний код є публічно доступним за адресою github.com/ronak-create/deepseek-v4-in-c. Для тих, хто хоче відтворити або розширити експеримент, існує канал спільноти в t.me/GyaanSetuAi.

Висновок

Потокова передача лише тих експертів, яких насправді використовує модель MoE, дозволяє LLM із 284 млрд параметрів працювати на скромному ноутбуці без квантування чи GPU-прискорення. Експеримент показує, що розумне переміщення даних, сувора валідація та дисципліноване вимірювання дозволяють обійти апаратні обмеження, які багато хто вважає незмінними.