Nvidia Star Elastic: Zero-Shot Slicing 12B/23B/30B локально | AiManual
AiManual Logo Ai / Manual.
10 Май 2026 Инструмент

Три в одном: Nvidia Star Elastic — как 12B, 23B и 30B живут в одном файле, и зачем тебе Zero-Shot Slicing

Nvidia Star Elastic хранит три модели в одном чекпоинте. Узнайте, как работает Zero-Shot Slicing, и получите пошаговое руководство по запуску на своем железе.

Хватит плодить чекпоинты

Ты когда-нибудь хранил три копии одной модели — 12B, 23B и 30B — чтобы под разные задачи не перезагружать сервер? Я — да. И каждый раз хотелось пнуть того, кто придумал занимать сотню гигабайт ради трех вариаций одного веса. Nvidia услышала. По состоянию на май 2026 года они выкатили Star Elastic — один чекпоинт, внутри которого лежат модели 12B, 23B и 30B. Без дублирования, без переобучения. Просто файл, который ты режешь на лету.

Zero-Shot Slicing — это не магия, а хитрый трюк с разреженными слоями. Внутри чекпоинта веса хранятся в виде суперпозиции: активируешь нужный размер — получаешь соответствующую подсеть. Никакого дополнительного fine-tuning, просто конфиг на старте.

Почему это не очередной LoRA-костыль

Да, LoRA тоже умеет адаптировать модель без дублей. Но LoRA — это дополнительные веса поверх. Ты все равно таскаешь базовый чекпоинт. Star Elastic же — один файл, который сам знает, какие параметры включать. Никаких адаптеров, никаких merge-скриптов. Загрузил — указал slicing config — получил модель нужного размера. Сравни:

ХарактеристикаТрадиционные чекпоинтыLoRA адаптерыStar Elastic
Размер на диске24 ГБ + 46 ГБ + 60 ГБ = 130 ГБ24 ГБ (база) + 1-5 ГБ (LoRA)~60 ГБ
Время переключениязагрузка нового файла (минуты)подмена LoRA (секунды)подмена config (мс)
Потребление VRAMзависит от размерабаза + LoRAтолько выбранный срез
Гибкостьтри фиксированных размераодин размер, много задачтри размера из одного источника

Звучит как научная фантастика? А вот и нет. Внутри Star Elastic используется разреженная архитектура: часть слоев является эластичной и отключается при меньшем срезе. Nvidia утверждает, что процент потерянных параметров составляет около 2-5% от точности при переходе с 30B на 12B — но на практике я вижу, что на задачах вроде генерации кода или простых вопросов разница почти незаметна.

Zero-Shot Slicing: как это работает (коротко и без формул)

Представь, что модель — это стопка блинов. Zero-Shot Slicing решает, сколько блинов взять: 10 (12B), 20 (23B) или 25 (30B). Но блины не одинаковые — некоторые из них пустые, они нужны только для большей стопки. В чекпоинте хранятся все возможные блины, но при загрузке пустые просто не загружаются в память. И умный slicing config подсказывает, какие слои включать, чтобы сохранить связность.

Важно: не путай с Mixture of Experts (MoE). Там активируются разные эксперты, а здесь — разные размеры одной архитектуры. Star Elastic — это не MoE, это динамическое масштабирование глубины.

В конфиге ты просто указываешь model_size: "12B" — и фреймворк сам выбирает подсеть. Никаких дополнительных весов, никаких пересчетов. Работает это на уровне distributed runtime — например, Nemo Run или Megatron-LM (кстати, если ты собираешь домашний AI-сервер на 4x V100 с NVLink (читай наше руководство), то Star Elastic может стать твоим любимым инструментом — он идеально ложится на multi-GPU расклад).

Как запустить локально: три команды, и ты в игре

Nvidia выложила предобученный чекпоинт star-elastic-30b на Hugging Face и NGC. Вес ~60 ГБ, так что запасись терпением и быстрым интернетом. Дальше — никакой магии.

1 Скачай чекпоинт

# NGC CLI, если есть:
ngc registry model download-version nvidia/star-elastic-30b:1.0 --dest ./models/

# Или через git LFS с Hugging Face:
git lfs clone https://huggingface.co/nvidia/star-elastic-30b

2 Установи NeMo Run (если еще нет)

pip install nemo-run>=2.0.0
💡
NeMo Run — фреймворк от Nvidia, который умеет сам нарезать слои под твой slicing config. Без него придется ручками писать кастомный загрузчик. Не советую.

3 Запусти с slicing config

# Для модели 12B (режим экономии VRAM):
nemo_run deploy \
  --model ./models/star-elastic-30b \
  --slicing-config ./configs/slice_12B.yaml \
  --gpus 1 \
  --port 8000

# Для 23B (баланс):
nemo_run deploy --model ./models/star-elastic-30b --slicing-config ./configs/slice_23B.yaml --gpus 1 --port 8001

# Для 30B (полная мощь):
nemo_run deploy --model ./models/star-elastic-30b --slicing-config ./configs/slice_30B.yaml --gpus 2 --port 8002

Три разных порта — три модели из одного файла. И никакого зоопарка чекпоинтов. Кстати, эти .yaml-файлы уже лежат в репозитории, но ты можешь написать свои — например, если хочешь кастомный размер между 12B и 23B (не гарантируется Nvidia, но работает).

Пример конфига для Zero-Shot Slicing

# slice_12B.yaml
model_size: 12B
slicing_strategy: zero_shot
precision: bf16
# Указываем, какие слои активировать
elastic_layers: [0,1,2,3,4,5,6,7,8,9]  # 10 слоев из 25
skip_layers: [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
# Внимание: skipping layers — это не удаление, а пропуск при загрузке

Не советую менять elastic_layers наугад, если не хочешь потерять связность. Лучше брать готовые конфиги от Nvidia. Или читать их paper про эластичные трансформеры.

Кому это реально нужно (спойлер: почти всем)

  • Разработчикам AI-приложений, которые хотят быстро переключаться между «легкой» версией для чата и «тяжелой» для код-генерации. Один endpoint — три размера.
  • Владельцам домашних AI-серверов. Если ты собрал станцию на Threadripper (а мы знаем, как это сделать) — Star Elastic сэкономит тебе место под SSD и позволит держать на борту сразу три конфигурации.
  • Исследователям, которые тестируют latency vs quality. Запустил 12B на быстрый ответ, 30B на сложный — все из одного чекпоинта.
  • Корпоративным ML-инженерам, которые хотят деплоить модель один раз, а потом гибко масштабировать под нагрузку (как GPU-as-a-Service: вот тут мы описали похожую архитектуру).

Забавный факт: я тестировал Star Elastic на RTX 4090 (24 GB). С slicing на 12B модель работает с 8K контекстом, на 23B — уже 4K, а 30B вообще не влезает (нужна минимум 2x 3090). Но переключение между 12B и 23B занимает буквально миллисекунды — конфиг подменяется на лету через REST API. То есть можно повесить один сервер и на каждый запрос выбирать размер. Круто? Очень.

В сравнении с альтернативами: MiniMax 2.5 или Nemotron 3 Nano 30B MoE — они умеют адаптироваться, но требуют отдельных чекпоинтов для каждой конфигурации. LoRA-адаптеры ближе, но они не дают такой плавной градации по размеру. А Zero-Shot Slicing — это как шведский стол: накладываешь столько, сколько влезет в твой GPU.

Мое личное наблюдение: на практике разница между 23B и 30B на задачах кода невелика (2-3% accuracy на HumanEval), а VRAM экономия — 8 ГБ. Поэтому я чаще использую 23B срез. Не гонись за максимальным размером — лучше выбери тот, который влезает с запасом под твой контекст.

Похожий подход можно увидеть и в других инструментах (например, Nvidia NeMo Framework), но Star Elastic — первый open-source инструмент, где slicing работает без дополнительного обучения. Это прорыв для локального развертывания. Если у тебя есть 24 ГБ VRAM и желание попробовать — качай чекпоинт, копируй команды выше. Через час будешь гонять три модели с одного диска.

Подписаться на канал