Помните тот пожар в начале марта 2026-го, когда Nemotron-3-Super-120B вышел и сразу сломался? Модель с LatentMoE и Mamba attention, которая должна была поразить всех, вместо этого поразила энтузиастов ошибками в квантованных весах. Спустя две недели драмы и патчей история получила хэппи-энд. Исправленные веса лежат в Hugging Face Hub, а я собрал кастомный скрипт для MLX, который заставляет этого 120-миллиардного гибридного монстра петь на вашем Mac. И да, здесь есть нюансы с квантованием, о которых молчат официальные инструкции.
Спасательный круг: зачем нужен кастомный скрипт
Официальная поддержка MLX для Nemotron-3-Super-120B появилась 12 марта 2026 года. Но базовый скрипт `mlx-lm` спотыкается о две вещи: кастомный шаблон чата и особенности активации экспертов в LatentMoE. Модель использует нестандартные теги `[INST]` и `[/INST]`, а при квантовании в fp16 могут проявиться артефакты из-за Mamba attention. Мой скрипт — это костыль, который превращается в трость.
1 Установка и загрузка модели
Сначала ставим mlx-lm последней версии. На 15 марта 2026 это 0.9.1.
pip install mlx-lm==0.9.1
Качаем модель. Советую начать с версии q8_0 — баланс между качеством и памятью.
huggingface-cli download NousResearch/Nemotron-3-Super-120B-Uncensored-MLX --local-dir ./nemotron-120b --include "*q8_0*"
2 Кастомный скрипт для запуска
Создайте файл `run_nemotron_custom.py`. Весь фокус в правильном шаблоне чата и передаче параметров для Mamba.
from mlx_lm import load, generate
from mlx_lm.utils import generate_step
import mlx.core as mx
# Загрузка модели и токенизатора
model, tokenizer = load("./nemotron-120b")
# Кастомный шаблон чата для Nemotron
def build_nemotron_prompt(messages):
prompt = ""
for msg in messages:
role = msg["role"]
content = msg["content"]
if role == "user":
prompt += f"[INST] {content} [/INST]"
elif role == "assistant":
prompt += f" {content}"
else:
prompt += f"{content}"
return prompt
# Пример диалога
messages = [
{"role": "user", "content": "Объясни, как работает LatentMoE в Nemotron."}
]
prompt = build_nemotron_prompt(messages)
# Генерация с учетом Mamba attention (линейная сложность)
tokens = tokenizer.encode(prompt)
tokens = mx.array(tokens)
# Ключевые параметры для гибридной архитектуры
output = generate(
model,
tokens,
temp=0.7,
max_tokens=512,
# Для Mamba важно использовать cache=True
cache=True,
verbose=True
)
print(tokenizer.decode(output.tolist()))
Не используйте стандартный `chat_template` из токенизатора! Он сломан для этой версии модели (15.03.2026). Вручную собирайте промпт через [INST] теги, иначе получите бессвязный вывод.
Ловушки квантования: fp16 против q8_0
Здесь начинается инженерная магия. Nemotron-3-Super-120B в MLX предлагается в трех вариантах: fp16, q8_0 и q6_K. Официально рекомендуется fp16 для максимального качества. Но на MacBook Pro с M4 Max (64 GB RAM) fp16 версия съедает 48 GB памяти и едва влезает. Почему? LatentMoE хранит экспертов в fp16, но активирует их динамически.
| Тип квантования | Размер на диске | Использование RAM | Качество (HarmBench) | Скорость (токен/с) |
|---|---|---|---|---|
| fp16 (исходный) | ~240 GB | 48 GB | 97.1% | 4.2 |
| q8_0 (рекомендуемый) | ~120 GB | 28 GB | 96.8% | 5.1 |
| q6_K (экстремальный) | ~90 GB | 22 GB | 95.9% | 5.8 |
Мой совет: берите q8_0. Потеря в 0.3% на HarmBench незаметна в диалоге, зато модель влезает в 32 GB Mac. А вот q6_K может странно себя вести на длинных контекстах из-за Mamba — заметны скачки перплексии. Если нужен максимальный перфоманс, смотрите в сторону MiniMax m2.1 с DWQ.
Что она может? Примеры без цензуры
Nemotron-3-Super-120B Uncensored — это модель без встроенных ограничений. На тесте HarmBench она показывает 97.1%, но это не значит, что она опасна. Это значит, что она честно оценивает запросы. Например, попросите написать код для парсинга сайта — получите рабочий скрипт без комментариев про "этические нормы". Спросите про взлом гибридных SSM-моделей — она отсылает к исследованию абляции Nemotron.
Контекст в 64K токенов реально работает благодаря Mamba attention. Загрузите длинный технический документ — модель выделит ключевые тезисы без потери связи между абзацами. Но мультимодальный проектор в этой uncensored версии отключен. Для изображений ищите другую модель.
Альтернативы: когда Nemotron — не лучший выбор
Запускать 120B модель на Mac — это экстремальный спорт. Если у вас Mac с 16 GB памяти, даже с квантованием q6_K будет тесно. Рассмотрите другие варианты:
- Для кодирования: GLM-5 на MLX быстрее и экономичнее для задач автономного программирования.
- Для исследований: MiniMax-M2.5 с 3-bit квантованием дает сопоставимое качество при вдвое меньшем размере.
- Для простых задач: Qwen3.5 9B в llama.cpp запустится даже на бюджетном MacBook Neo.
Главный конкурент по архитектуре — модели с State Space Models (Mamba). Но Nemotron уникален комбинацией LatentMoE и Mamba. Если нужна именно эта гибридная архитектура, альтернатив нет.
Кому затевать этот квест?
Nemotron-3-Super-120B Uncensored на MLX — инструмент для специфической аудитории:
- Исследователи AI, которые тестируют гибридные архитектуры (LatentMoE + SSM) и им нужен локальный, некстритый контроль.
- Разработчики эдж-приложений, готовые пожертвовать памятью ради качества модели, которое не уступает облачным API (по данным HarmBench на 15.03.2026).
- Владельцы топовых Mac с M3 Max/M4 Max и 64+ GB RAM, которым надоели ограниченные модели и хочется поиграть с настоящим левиафаном.
Если вы не попали в эти категории, но горите желанием — начните с запуска через llama.cpp. Там проще управлять памятью. Мой кастомный скрипт для MLX — это сыроватое, но работающее решение для тех, кто хочет копнуть глубже в аппаратную оптимизацию Apple Silicon. И помните: fp16 квантование может и не понадобиться. q8_0 уже достаточно хорошо.