NVIDIA NeMo Frameworkは、NVIDIAがApache 2.0で公開している生成AIモデルの学習用ソフトウェア群です。2026年に単一リポジトリの体制を改め、pip install nemo_toolkit で入る本体は音声専用の「NeMo Speech」になりました。LLMの事前学習と微調整はMegatron BridgeとAutoModel、強化学習はNeMo RL、実験の投入はNeMo-Runと、役割ごとに別パッケージへ分かれています。2024年ごろの解説記事やREADMEの例をそのまま写すと動かない箇所が出るため、本記事では2026年10月時点の構成と、NeMo-Runの実行例、NeMo 2.0からの移行点を整理します。
まとめ:2026年10月時点のNeMoの要点
- nemo_toolkitは音声専用:3.0.0(2026-08-07)でLLM・VLM・拡散モデル・NLPのcollectionが外れ、残るのはasr・audio・common・speechlm2・ttsの5つ。
- LLMの学習はMegatron Bridge(0.6.2)かAutoModel(0.6.0):Megatron Coreを土台にするならMegatron Bridge、PyTorch DTensorでHugging Faceのモデルを直接扱うならAutoModel。どちらもテンソル並列・パイプライン並列に対応する。
- NeMo-Run(0.11.1)は単体で使える実験投入ツール:関数の設定と実行環境(ローカル・Docker・Slurm・クラウド)を分け、同じ設定を別の環境へ投げ直せる。
- 本記事で比較するNGCコンテナは2系統:LLM向けは
nvcr.io/nvidia/nemo:26.08.01、音声向けはnvcr.io/nvidia/nemo-speech:26.07.00。分割前の最終版は2.7.3(コンテナ26.04)。 - NeMo 2.0の書き方は移行が必要:
from nemo.collections import llmは3.0.0に存在せず、LightningのTrainer設定はMegatron BridgeのConfigContainerへ置き換える。
NeMoの成り立ちとNeMo 2.0までの変遷
NeMoの名前はNeural Modulesの略です。2019年9月の論文「NeMo: a toolkit for building AI applications using Neural Modules」(arXiv:1909.09577)では、型付きの入出力を持つニューラルモジュールを組み合わせて音声認識と自然言語処理のアプリを作るツールキットとして発表されました。
その後、1.x系ではHydraのYAMLで学習を設定する方式を取り、2024年11月14日のNeMo 2.0で設定をPythonコードへ移しました。2.0ではPyTorch Lightningの Trainer とMegatron Coreの並列化を組み合わせ、学習ジョブの投入をNeMo-Runに任せる形になっています。
2026年の分割はこの2.0系の構造を解体したものです。Speech 3.0のリリースノートは「removed 800k deprecated LOC」と書いており、80万行の非推奨コードを削ったうえで、音声以外は別リポジトリへ移しました。リポジトリ名も NVIDIA/NeMo から NVIDIA-NeMo/Speech へ変わっています(旧URLは新URLへ転送されます)。
分割後のNeMo Frameworkを構成するリポジトリ
GitHubのNVIDIA-NeMo組織にある主要リポジトリを、役割と2026年10月7日時点の最新版で並べると次のとおりです。いずれもライセンスはApache 2.0です。
| リポジトリ | 役割 | 最新版 | 公開日 | PyPI名 |
|---|---|---|---|---|
| Speech | 音声認識・音声合成・SpeechLM | 3.0.0 | 2026-08-07 | nemo-toolkit |
| Megatron-Bridge | Megatron CoreでのLLM学習とHF変換 | 0.6.2 | 2026-09-18 | megatron-bridge |
| Automodel | HFモデルのPyTorch分散学習 | 0.6.0 | 2026-08-26 | nemo-automodel |
| RL | 強化学習による事後学習 | 0.7.0 | 2026-07-29 | (GitHubから導入) |
| Curator | 学習データの前処理と選別 | 1.3.0 | 2026-07-27 | nemo-curator |
| Evaluator | モデルのベンチマーク評価 | 0.3.0 | 2026-06-03 | nemo-evaluator |
| Export-Deploy | 推論基盤への変換と配備 | 0.7.1 | 2026-09-18 | nemo-export-deploy |
| Run | 実験の設定・投入・管理 | 0.11.1 | 2026-09-18 | nemo-run |
NeMo RLはPyPIに nemo-rl の名前だけが0.0.0で登録されており、READMEはリポジトリをcloneして uv venv で環境を作る手順を案内しています。pipで入れても使えません。
Megatron BridgeとAutoModelの使い分け
Megatron BridgeのREADMEは、LLMを学習する3つのライブラリの対応範囲を次のように示しています。
| ライブラリ | 事前学習 | SFT | SFT LoRA | RL | 土台 |
|---|---|---|---|---|---|
| Megatron Bridge | ○ | ○ | ○ | × | Megatron Core |
| AutoModel | ○ | ○ | ○ | × | PyTorch DTensor |
| NeMo RL | × | ○ | ○ | ○ | 上記2つを選択 |
判断の軸は、対象モデルの対応状況と、Megatron CoreまたはPyTorch DTensorのどちらを土台にするかです。AutoModelにもテンソル並列・パイプライン並列と数百GPU規模の学習例があるため、GPU数だけでは選び分けられません。READMEによれば、MLPerf Training v6.0でNVIDIAが使ったNeMo 26.06の学習スタックも、Megatron Bridgeをパッケージング層にしています。Hugging Faceのモデルを数枚から1ノード程度のGPUで微調整するだけなら、AutoModelのほうがYAML1枚と automodel コマンドで始められます。LoRAとPEFTの関係はPEFTとLoRAの違いで整理しています。
NeMo Guardrails・NemoClaw・Nemotronとの違い
名前にNeMoを含むが学習フレームワークではないものがあります。NeMo Guardrailsは推論時にLLMの入出力を検査するツールキットで、学習とは無関係です(NeMo Guardrailsの使い方と設定例)。NemoClawはOpenClawなどのAIエージェントをサンドボックスで動かすNVIDIAのツールです(NVIDIA NemoClawとOpenClawの違い)。Nemotronは、NVIDIAが公開しているモデル群の名前で、Megatron BridgeとNeMo Speechが変換・微調整の手順を提供しています(Nemotron 3 Superのベンチマーク性能)。
nemo_toolkitのインストールと版の選び方
音声モデルを扱うなら、2026年10月時点の手順は次のとおりです。READMEの要件はPython 3.12以上・PyTorch 2.7以上で、GPUは学習に必須、推論には推奨という扱いです。
# 先に自分の環境に合うPyTorchを入れてから
pip install 'nemo-toolkit[asr,tts]'
# 公式READMEの推奨構成をソースから導入する例
# 以下はmainブランチを取得するため、依存バージョンは更新されます
git clone https://github.com/NVIDIA-NeMo/Speech.git
cd Speech
uv sync --extra all --extra cu13
PyPIのメタデータ上の下限は requires_python>=3.10 ですが、READMEは3.12以上を要件にしています。新しく環境を作るなら3.12以上に合わせてください。ASRモデルの選び方と日本語対応はNeMo ASRの選び方と導入手順で詳しく扱っています。
nemo_toolkit 3.0.0で消えたcollection
PyPIから3.0.0と2.7.3のwheelを取得し、収録されている nemo/collections を比べると次の差があります。
| 版 | wheelの大きさ | 収録collection |
|---|---|---|
| 3.0.0(2026-08-07) | 約2.8MB | asr, audio, common, speechlm2, tts |
| 2.7.3(2026-04-23) | 約6.0MB | 上記+llm, vlm, multimodal, diffusion, vision ほか |
extrasも同様に、3.0.0には llm・nlp・multimodal がありません。pip install 'nemo_toolkit[all]' を実行してもLLM機能は入らないということです。NeMo 2.0のLLMコードを動かし続けたいなら nemo_toolkit==2.7.3 に固定するか、NGCコンテナの26.04を使います。ただしこの系統は更新が止まっているため、新規の学習はMegatron Bridgeで組むのが筋です。
NGCコンテナのタグと用途
NGCのAPIで確認したタグは次のとおりです(2026年10月7日時点)。配布ページはNGC Catalogのnemoです。
| イメージ | 最新タグ | 公開日 | サイズ | 用途 |
|---|---|---|---|---|
| nvcr.io/nvidia/nemo | 26.08.01 | 2026-09-18 | 約20.0GB | LLM・マルチモーダル |
| nvcr.io/nvidia/nemo-speech | 26.07.00 | 2026-08-06 | 約11.6GB | 音声 |
| nvcr.io/nvidia/nemo | 26.04 | 2026-04-16 | 約25.9GB | 分割前の最終版(2.7.3) |
nemo イメージの表示名は「NeMo Framework Megatron Backend」に変わっています。NeMo Framework User Guideにも、26.02以降のコンテナについてはMegatron Bridgeの文書とリリースノートを参照するよう注記があります。音声だけ扱うなら nemo-speech を選ぶと、ダウンロード量がおよそ半分で済みます。このほか、NVIDIA-NeMo組織のプロフィールの一覧では、AutoModel・NeMo RL・Curatorにそれぞれ専用コンテナが割り当てられています。
pipで直接入れる場合、megatron-bridge 0.6.2のPyPIメタデータは >=3.12,<3.13 で、Python 3.12しか受け付けません。READMEのバッジは「Python 3.10+」のまま更新されていないので、バッジではなくPyPIの値を見てください。
NeMo-Runの使い方:設定と実行環境の分離
NeMo-Runは、学習関数の設定(何を・どのパラメータで)と実行環境(どこで)を別々に定義し、組み合わせて投入するツールです。NeMoのモデルコードに依存しないため、普通のPython関数も実行できます。READMEは「pre-release」と明記し、1.0.0まではAPIが予告なく変わると断っています。
run.Partialとrun.Experimentで実験を回す最小例
次のコードは、nemo-run 0.11.1をPython 3.12の仮想環境に入れ、macOS上で実行して動作を確認したものです。学習率を2通り変えたタスクを、ローカルで順番に走らせます。
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install nemo-run==0.11.1
# 続くPythonコードをscript.pyに保存し、同じシェルで実行
# python script.py
import nemo_run as run
def train(lr: float = 1e-3, steps: int = 3) -> float:
loss = 1.0
for step in range(steps):
loss *= 1 - lr * 100
print(f"step={step} lr={lr} loss={loss:.4f}")
return loss
if __name__ == "__main__":
task = run.Partial(train, lr=1e-3, steps=3)
executor = run.LocalExecutor()
with run.Experiment("lr-sweep") as exp:
for lr in (1e-3, 5e-3):
task.lr = lr
exp.add(task.clone(), executor=executor, name=f"lr_{lr}")
exp.run(sequential=True, tail_logs=True)
なお、Intel MacのPython 3.12では依存パッケージlibcstのビルド済みwheelが見つからず、ソースからのビルドにRustのツールチェーンが必要でした。実行すると各タスクのログが流れ、最後に状態が表示されます。
lr_0.001/0 step=2 lr=0.001 loss=0.7290
lr_0.005/0 step=2 lr=0.005 loss=0.1250
Experiment Status for lr-sweep_1791364190526626000
- Status: SUCCEEDED
- Status: SUCCEEDED
実験の記録は既定で ~/.nemo_run/experiments/ に保存されます(環境変数 NEMORUN_HOME で変更できます)。タスクごとの configs/ には、設定が _target_: __main__.train・lr: 0.001 のようなYAMLで残ります。終了後も run.Experiment.from_id() や nemo experiment logs <実験ID> 0 でログを引き直せます。後から「どの設定で回した結果か」を辿れることが、スクリプトを直接叩く運用との違いです。
Executorの種類と前提条件
0.11.1でトップレベルから使えるExecutorは8種類です。run.LocalExecutor() を下の表のどれかに差し替えれば、同じタスクを別環境へ投げられます。
| Executor | 投入先 | 前提 |
|---|---|---|
| LocalExecutor | 手元のマシン | なし |
| DockerExecutor | ローカルのDocker | docker-py |
| SlurmExecutor | Slurmクラスタ | コンテナ利用時はPyxis・SSHで遠隔投入可 |
| SkypilotExecutor | 各種クラウド・Kubernetes | extras skypilot または skypilot-all |
| SkypilotJobsExecutor | SkyPilotの管理ジョブ | SkyPilot API Server |
| KubeflowExecutor | Kubernetes | Kubeflow Training Operator v2 |
| DGXCloudExecutor | DGX Cloud | REST APIの認証情報 |
| LeptonExecutor | Lepton | REST APIの認証情報 |
SlurmExecutorのdocstringはPyxisを前提としていますが、0.11.1の実装は非コンテナ実行にも対応しており、container_image を指定しなければ srun にコンテナ関連のフラグは付きません。コンテナで投入する場合は、社内のSlurmで srun --container-image が使えるか(Pyxisが入っているか)を先に確かめてください。Slurm側の構成はSlurmフェデレーションの構築手順で扱っています。
LocalExecutorでModuleNotFoundErrorになる原因
LocalExecutorは、タスクを別プロセスの python -m nemo_run.core.runners.fdl_runner として起動します。このとき使われるのは、親プロセスのインタープリタではなくPATH上の python です。仮想環境を有効化せずに .venv/bin/python script.py の形で実行した場合、PATH上のPythonにnemo_runが入っていなければ、子プロセスは次のエラーで失敗し、タスクが FAILED になります。
Error while finding module specification for 'nemo_run.core.runners.fdl_runner'
(ModuleNotFoundError: No module named 'nemo_run')
source .venv/bin/activate で有効化してから実行すれば解消します(上の最小例で確認済み)。cronやCIから呼ぶ場合も、PATHの先頭に仮想環境の bin を置いてください。
NeMo 2.0からMegatron Bridgeへの移行
NeMo-RunのREADMEの入門例は、今も from nemo.collections import llm で始まるNeMo 2.0の書き方です。前述のとおり3.0.0にはこのモジュールがないため、現行のnemo_toolkitと組み合わせるとImportErrorで止まります。Megatron Bridgeには公式の移行ガイド(nemo2-migration-guide)があり、主な対応は次のとおりです。
| NeMo 2.0 | Megatron Bridge |
|---|---|
| llm.Llama3Config8B | AutoBridge.from_hf_pretrained(…).to_megatron_provider() |
| nl.MegatronStrategy の並列数 | モデルプロバイダの tensor_model_parallel_size など |
| Trainer の max_steps | TrainingConfig の train_iters |
| Trainer の val_check_interval | TrainingConfig の eval_interval |
| Trainer の limit_val_batches | TrainingConfig の eval_iters |
| Trainer の log_every_n_steps | LoggerConfig の log_interval |
| llm.pretrain(model, data, trainer, …) | pretrain(cfg, forward_step_func=forward_step) |
大きな違いは3点です。1つ目に、PyTorch Lightningをやめて独自の学習ループになり、設定は ConfigContainer 1つに集約されました。2つ目に、学習関数にGPU数を渡さず、torchrun(python -m torch.distributed.run)で起動します。3つ目に、load や pretrained_checkpoint に指定できるのはMegatron形式のチェックポイントだけです。Hugging Faceの重みは AutoBridge.import_ckpt() で先に変換します。
NeMo-Runと組み合わせる場合、移行ガイドは関数を直接渡す run.Partial ではなく、スクリプトを渡す run.Script を、依存関係の管理の観点から強く推奨しています。NeMo 2.0の nemo.lightning.run.plugins にあったNsys・Wandb・Preemptionの各プラグインは、megatron.bridge.recipes.run_plugins へ移っています。
NeMoを選ばないほうがよい場面
次の条件に当てはまるなら、NeMo系のライブラリは避けたほうが早く終わります。
- GPU1枚でHugging Faceモデルを微調整するだけ:Megatron形式への変換やテンソル並列の設定が手間になるだけです。Hugging Face Transformers+PEFTか、Unslothのほうが手数は少なくなります。NVIDIA系で揃えたいならAutoModelに留めてください。
- 学習環境にPython 3.12を用意できない:megatron-bridge 0.6.2は3.12しか受け付けず、nemo-evaluatorも3.12以上3.14未満です。別の仮想環境やコンテナに分離できれば、プロジェクトのほかの部分まで3.12に統一する必要はありません。分離できない運用なら、Megatron Bridgeは見送ってください。
- macOSやCPUだけの環境で学習まで完結させたい:NeMo-Runの投入操作は手元のMacでも動きます(本記事の最小例で確認済み)が、Megatron Bridgeの学習はCUDA前提で、NeMo SpeechもREADMEで学習にはNVIDIA GPUが必須としています。手元のMacは設定作成と投入に限り、学習はGPUクラスタへ投げる構成にします。
- APIの安定を最優先する:Megatron Bridge・AutoModel・NeMo-Runはいずれも1.0未満で、NeMo-Runは1.0まで予告なくAPIを変えると明言しています。長期保守のスクリプトを書くなら、版を固定し、アップグレードは移行ガイドを読んでから行ってください。
学習済みモデルを推論基盤に載せる段階では、Export-Deployの対応表でモデルごとの出力先と配備先を確認します。Megatron BridgeとHugging FaceのモデルはvLLM向け、NIM Embedding・RerankingはONNX・TensorRT向けの経路が示されており、すべてのモデルで同じ出力先を選べるわけではありません。NVIDIA GPUでのLLM推論の高速化はTensorRT-LLMの仕組みと採用判断を参照してください。
よくある質問
NeMoとは何の略ですか?
Neural Modulesの略です。2019年の論文(arXiv:1909.09577)で、型付きの入出力を持つモジュールを組み合わせて音声認識や自然言語処理のモデルを作るツールキットとして発表されました。
nemo_toolkitとNeMo Frameworkは同じものですか?
同じではありません。NeMo FrameworkはMegatron Bridge・AutoModel・NeMo RL・Curatorなどを含むライブラリ群の総称で、nemo_toolkit(PyPI名nemo-toolkit)はその一部を配布するパッケージです。nemo_toolkitは3.0.0(2026-08-07)から音声を中心とするNeMo Speechのパッケージになりました。
pip install nemo_toolkit[all]でLLM機能は入りますか?
3.0.0以降は入りません。LLMとVLMのcollectionはパッケージから外れています。LLMの学習には pip install megatron-bridge(Python 3.12)か nemo-automodel を使い、NeMo 2.0のコードを動かす必要があるときだけ nemo_toolkit==2.7.3 に固定します。
NeMo-RunはNeMo以外の学習コードでも使えますか?
使えます。run.Partial には普通のPython関数を渡せ、本記事の最小例もNeMoのモデルを一切使っていません。NVIDIA以外のフレームワークで書いた学習スクリプトも、run.Script で同様にSlurmやクラウドへ投入できます。
NeMo Frameworkは無料で商用利用できますか?
GitHub上の各リポジトリはApache 2.0で、商用利用できます。ただしNGCで配布されるコンテナは、NVIDIA Software License AgreementとAI製品向けの製品別条項に従います。同梱物の条件も別途かかるので(例えば nemo コンテナはMeta Llama 3 Community Licenseの素材を含みます)、コンテナで本番運用する場合は配布ページの条項も確認してください。