NeMo на GX10: фина настройка на модели с AutoModel
NVIDIA NeMo е семейство библиотеки за обучение и настройка на модели. За GX10 NVIDIA предлага практичен път: контейнерът NeMo AutoModel, с който настройваш модели от Hugging Face с LoRA, QLoRA или пълна фина настройка. Урокът показва този път и честно казва кое от по-старите ръководства вече не е актуално.
nemo:latest, скрипта megatron_gpt_sft.py с контролни точки .nemo и NeMo-Aligner за DPO. От версия 26.02 документацията насочва контейнера на NeMo Framework към Megatron-Bridge, а за настройка на модели от Hugging Face на DGX Spark има отделен плейбук с NeMo AutoModel и образ nemo-automodel:26.02. Заменихме командите с тези от плейбука. Махнахме таблицата с твърдения „Unsloth е 2× по-бърз“ и „Multi-node ❌“ (не са доказани) и описанието на модулите като равнопоставени. DPO сега е само насока към NeMo RL — не сме го пускали. Добавихме: сметка за паметта при голям модел, запазване на резултатите извън контейнера, защита на данните и лицензите. Примерите ползват публични набори за проба.01Какво ще научиш
- Кое какво е в NeMo днес и защо старите ръководства объркват.
- Как да пуснеш контейнера NeMo AutoModel на GX10 и да запазиш резултата.
- Как да пуснеш LoRA, QLoRA и пълна настройка с готовите рецепти.
- Кое се побира в 128 GB обща памет и кое не.
- Как да подхождаш към свои данни и лицензи.
02Преди да започнеш
- Машина NVIDIA GB10 с DGX OS (плейбукът е за DGX Spark: 128 GB обща памет), Docker и достъп до нея по SSH или директно.
- Поне 32 GB системна памет за зареждане и обучение; CUDA 12.0+, Python 3.10+ и Git на машината (плейбукът ги проверява с
nvcc,python3,git). - Профил в Hugging Face и токен за достъп — нужен е за модели с ограничен достъп (Llama, например).
- Интернет и място на диска: образът и моделите са по няколко гигабайта и повече. Плейбукът дава 45–90 минути за настройка и първо пускане и ниво на риск „средно“.
| Част | За какво е (по документацията) |
|---|---|
| NeMo AutoModel | Обучение и настройка на езикови и визуално-езикови модели от Hugging Face с PyTorch; LoRA, QLoRA, пълна настройка |
| Megatron-Bridge | От 26.02 към него сочи документацията на контейнера NeMo Framework |
| NeMo RL | Обучение с подсилване и предпочитания: има ръководства за GRPO и DPO |
| Curator · Evaluator · Export-Deploy · Run | Подготовка на данни, оценка, износ и пускане, управление на експерименти (по имената в документацията; не сме ги ползвали) |
| Речеви модели | Разпознаване (ASR) и синтез (TTS) на реч в самата библиотека NeMo; пускането им в производство е с NVIDIA Riva |
| Инструмент | Как го описва NVIDIA | Урок |
|---|---|---|
| NeMo AutoModel | Обучение на модели от Hugging Face от една видеокарта до много; рецепти в YAML, промени от командния ред | 04-20 |
| LLaMA Factory | Един интерфейс за обучение с учител, подсилване и ефективни методи | 04-18 |
| Unsloth | Оптимизирана фина настройка | 04-19 |
03Стъпки
-
Проверка на системата
Пет бързи проверки преди изтегляне: CUDA, Python, видеокарта, памет, Docker.
bash · на машинатаnvcc --version python3 --version nvidia-smi free -h docker psАко
docker psказва „permission denied“, добави потребителя си към групатаdockerпо указанията на NVIDIA или пишиsudoпред командите. На GB10 редът за памет вnvidia-smiможе да казва „Not Supported“ — паметта е обща. -
Изтегли образа и пусни контейнера
Закачаме версията на образа —
26.02е тази в плейбука към 03.10.2026; по-нов таг провери в каталога NGC на NVIDIA. Флагът--rmизтрива контейнера при изход, а с него — и всичко, записано вътре. Затова добавяме папка от машината за резултатите (това е наше допълнение към плейбука):bashdocker pull nvcr.io/nvidia/nemo-automodel:26.02 mkdir -p ~/nemo-out docker run \ --gpus all \ --ulimit memlock=-1 \ -it --ulimit stack=67108864 \ -v ~/nemo-out:/out \ --entrypoint /usr/bin/bash \ --rm nvcr.io/nvidia/nemo-automodel:26.02Вътре виж готовите рецепти:
cd /opt/Automodel && ls examples/llm_finetune/. Не е пускано от нас. -
Достъп до модели от Hugging Face
За модели с ограничен достъп нужни са две неща от един и същи профил: приет лиценз на страницата на модела (и одобрение) и токен. Самото задаване на токена не дава достъп.
bashexport HF_TOKEN=<твоят-токен>Токенът е тайна: не го записвай в скриптове, чат или хранилище и не го показвай на снимки на екрана.
-
Първа настройка с LoRA
LoRA променя малка добавка към модела, не всичките му тегла — затова иска много по-малко памет. Командата от плейбука взема рецептата за малък модел и подменя модела с Llama-3.1-8B;
max_steps 20е само проба:bash · /opt/Automodelpython3 examples/llm_finetune/finetune.py \ -c examples/llm_finetune/llama3_2/llama3_2_1b_squad_peft.yaml \ --model.pretrained_model_name_or_path meta-llama/Llama-3.1-8B \ --packed_sequence.packed_sequence_size 1024 \ --step_scheduler.max_steps 20Параметрите с
--подменят стойностите от YAML рецептата; хиперпараметрите (ранг на LoRA, скорост на учене) идват от рецептата. Данните в рецептата са публичен учебен набор, не твои. -
QLoRA за голям модел и пълна настройка
QLoRA държи теглата на модела в 4 бита и настройва малка добавка. Плейбукът показва командата за 70B модел; пълната настройка (SFT) променя всички тегла и е показана за по-малък модел (Qwen3-8B). И двете са проба с 20 стъпки:
bash · QLoRApython3 examples/llm_finetune/finetune.py \ -c examples/llm_finetune/llama3_1/llama3_1_8b_squad_qlora.yaml \ --model.pretrained_model_name_or_path meta-llama/Meta-Llama-3-70B \ --loss_fn._target_ nemo_automodel.components.loss.te_parallel_ce.TEParallelCrossEntropy \ --step_scheduler.local_batch_size 1 \ --packed_sequence.packed_sequence_size 1024 \ --step_scheduler.max_steps 20bash · пълна настройкаpython3 examples/llm_finetune/finetune.py \ -c examples/llm_finetune/qwen/qwen3_8b_squad_spark.yaml \ --model.pretrained_model_name_or_path Qwen/Qwen3-8B \ --step_scheduler.local_batch_size 1 \ --step_scheduler.max_steps 20 \ --packed_sequence.packed_sequence_size 1024💡Сметка за паметта (само теглата, приблизително)70 милиарда параметъра × 2 байта (BF16) = около 140 GB — повече от 128 GB обща памет, така че пълна настройка или BF16 на 70B не се побира. В 4 бита (× 0,5 байта) теглата са около 35 GB, затова при QLoRA остава място за добавката, оптимизатора и данните. 8B модел е около 16 GB в BF16. Това е груба оценка: не включва активации, кеш и системата; реалната памет и времето не сме мерили. -
Провери резултата и го запази
След успешно пускане в папката
checkpoints/LATEST/трябва да има файлconfig.yamlи папки катоmodel,optim,dataloaderиrng(по плейбука). Копирай ги към споделената папка, преди да излезеш от контейнера:bash · /opt/Automodells -lah checkpoints/LATEST/ cp -r checkpoints /out/ -
Твои данни, лицензи и оценка
Форматът на собствен набор и как се задава в рецепта е описан в хранилището на NeMo AutoModel — ние не го сверихме (⚠️), затова не даваме готов пример. Общите правила са:
- Разделяй данните на обучаващи и проверочни; измервай на непокритите данни.
- Не настройвай модел с лични данни, договори или поверителни документи без правно основание и защита; настроеният модел може да „запомни“ части от тях.
- Провери лиценза на базовия модел: дали позволява настройка и търговско ползване.
- Настроен модел се проверява с примери от реалната задача, а не само със загубата по време на обучение.
- DPO и други методи с предпочитания: виж ръководствата в документацията на NeMo RL. Не сме ги пускали.
-
Почистване
Контейнерът се изтрива при изход. Образът заема място на диска; ако не ти трябва повече, махни го (после ще го теглиш отново):
bashdocker rmi nvcr.io/nvidia/nemo-automodel:26.02
04Проверка
- Контейнерът
nemo-automodel:26.02тръгва и вижда видеокартата. - Пробното пускане с LoRA минава 20 стъпки без грешка.
checkpoints/LATEST/съдържаconfig.yamlи папкатаmodel.- Резултатът е копиран извън контейнера.
- Токенът за Hugging Face не е записан никъде в кода.
Тест
1. Кой образ ползва плейбукът на NVIDIA за настройка на модели на DGX Spark?
2. Защо се задава HF_TOKEN?
3. Побира ли се пълна настройка на 70B модел в BF16 в 128 GB?
4. Какво става с резултатите, ако контейнерът е пуснат с --rm и нищо не е копирано навън?
05Какво следва
06Източници
- NVIDIA DGX Spark: Fine-Tune with NVIDIA NeMo — плейбукът, изискванията и рецептите (обновен 31.07.2026). · инструкции — командите от стъпките.
- NeMo AutoModel в GitHub — рецепти и изходен код. · документация — на NeMo AutoModel.
- NeMo Framework: преглед — състав, речеви модели, лицензи, насочване към Megatron-Bridge от 26.02.
- NeMo RL — ръководства за DPO и GRPO (не пускани от нас).