NVIDIA NeMo フレームワークは、大規模言語モデル (LLM)、マルチモーダル モデル (MM)、自動音声認識 (ASR)、テキスト読み上げ (TTS)、およびコンピューターに取り組む研究者や PyTorch 開発者向けに構築された、スケーラブルなクラウドネイティブの生成 AI フレームワークです。ビジョン (CV) ドメイン。既存のコードと事前トレーニングされたモデルのチェックポイントを活用して、新しい生成 AI モデルを効率的に作成、カスタマイズ、デプロイできるように設計されています。
技術文書については、NeMo Framework ユーザー ガイドを参照してください。
NVIDIA NeMo 2.0 では、前世代の NeMo 1.0 に比べていくつかの大幅な改善が加えられ、柔軟性、パフォーマンス、およびスケーラビリティが強化されています。
Python ベースの構成- NeMo 2.0 は YAML ファイルから Python ベースの構成に移行し、より高い柔軟性と制御を提供します。この変更により、プログラムによる構成の拡張とカスタマイズが容易になります。
モジュール型抽象化- PyTorch Lightning のモジュール型抽象化を採用することで、NeMo 2.0 は適応と実験を簡素化します。このモジュール式アプローチにより、開発者はモデルのさまざまなコンポーネントをより簡単に変更して実験できるようになります。
スケーラビリティ- NeMo 2.0 は、コンピューティング環境全体での機械学習実験の構成、実行、管理を合理化するように設計された強力なツールである NeMo-Run を使用して、数千の GPU にわたる大規模な実験をシームレスに拡張します。
全体として、これらの機能強化により、NeMo 2.0 は AI モデル開発用の強力でスケーラブルでユーザーフレンドリーなフレームワークになります。
重要
NeMo 2.0 は現在、LLM (ラージ言語モデル) および VLM (ビジョン言語モデル) コレクションによってサポートされています。
すべての NeMo モデルは Lightning でトレーニングされています。トレーニングは数千の GPU まで自動的に拡張可能です。
該当する場合、NeMo モデルは最先端の分散トレーニング技術を活用し、並列化戦略を組み込んで非常に大規模なモデルの効率的なトレーニングを可能にします。これらの技術には、Tensor Parallelism (TP)、Pipeline Parallelism (PP)、Fully Sharded Data Parallelism (FSDP)、Mixture-of-Experts (MoE)、BFloat16 および FP8 を使用した混合精度トレーニングなどが含まれます。
NeMo Transformer ベースの LLM および MM は、NVIDIA Hopper GPU での FP8 トレーニングに NVIDIA Transformer エンジンを利用し、Transformer モデルのトレーニングのスケーリングには NVIDIA Megatron Core を利用します。
NeMo LLM は、SteerLM、直接優先最適化 (DPO)、ヒューマン フィードバックからの強化学習 (RLHF) などの最先端の手法と連携できます。詳細については、「NVIDIA NeMo アライナー」を参照してください。
NeMo は、教師あり微調整 (SFT) に加えて、LoRA、P-Tuning、アダプター、IA3 などの最新のパラメーター効率的微調整 (PEFT) 手法もサポートしています。サポートされているモデルと技術の完全なリストについては、『NeMo Framework User Guide』を参照してください。
NeMo LLM および MM は、NVIDIA NeMo Microservices を使用して導入および最適化できます。
NeMo ASR および TTS モデルは、推論用に最適化され、NVIDIA Riva を使用して運用ユースケースに展開できます。
重要
NeMo Framework Launcher は NeMo バージョン 1.0 とのみ互換性があります。 NeMo 2.0 を使用して実験を開始するには、NeMo-Run をお勧めします。
NeMo Framework Launcher は、NeMo Framework エクスペリエンスを合理化するクラウドネイティブ ツールです。これは、CSP および Slurm クラスター上でエンドツーエンドの NeMo フレームワーク トレーニング ジョブを起動するために使用されます。
NeMo Framework Launcher には、NeMo LLM をトレーニングするための広範なレシピ、スクリプト、ユーティリティ、およびドキュメントが含まれています。また、特定のクラスターでのトレーニングに最適なモデルの並列構成を見つけるように設計された NeMo Framework Autoconfigurator も含まれています。
NeMo Framework Launcher をすぐに使い始めるには、NeMo Framework Playbook を参照してください。 NeMo Framework Launcher は現在 ASR および TTS トレーニングをサポートしていませんが、間もなくサポートされる予定です。
NeMo Framework を始めるのは簡単です。最先端の事前トレーニング済み NeMo モデルは、Hugging Face Hub および NVIDIA NGC で無料で利用できます。これらのモデルを使用すると、わずか数行のコードでテキストや画像の生成、音声の転写、音声の合成を行うことができます。
Google Colab または NGC NeMo フレームワーク コンテナで実行できる広範なチュートリアルが用意されています。 NeMo Framework Launcher を使用して NeMo モデルをトレーニングしたいユーザー向けのプレイブックも用意しています。
NeMo モデルを最初からトレーニングしたり、既存の NeMo モデルを微調整したい上級ユーザーのために、マルチ GPU/マルチノード トレーニングをサポートするサンプル スクリプトの完全なスイートが用意されています。
バージョン | 状態 | 説明 |
---|---|---|
最新 | 最新 (つまりメイン) ブランチのドキュメント。 | |
安定した | 安定版 (つまり、最新のリリース) のドキュメント |
NeMo フレームワークは、ニーズに応じてさまざまな方法でインストールできます。ドメインによっては、次のインストール方法のいずれかがより適している場合があります。
重要: 基本の NVIDIA PyTorch コンテナー nvcr.io/nvidia/pytorch:24.02-py3 から始めることを強くお勧めします。
NeMo を新しい Conda 環境にインストールします。
conda create --name nemo python==3.10.12
conda activate nemo
コンフィギュレータを使用して PyTorch をインストールします。
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
PyTorch をインストールするコマンドはシステムによって異なる場合があります。上にリンクされているコンフィギュレータを使用して、システムに適したコマンドを見つけてください。
次に、Pip 経由またはソースから NeMo をインストールします。 conda-forge またはその他の Conda チャネルでは NeMo を提供しません。
nemo_toolkit をインストールするには、次のインストール方法を使用します。
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
使用するシェルによっては、上記のコマンドで代わりに"nemo_toolkit[all]"
指定子を使用する必要がある場合があります。
NeMo の特定のドメインをインストールするには、まず上記の手順に従って nemo_toolkit をインストールする必要があります。次に、次のドメイン固有のコマンドを実行します。
pip install nemo_toolkit[ ' asr ' ]
pip install nemo_toolkit[ ' nlp ' ]
pip install nemo_toolkit[ ' tts ' ]
pip install nemo_toolkit[ ' vision ' ]
pip install nemo_toolkit[ ' multimodal ' ]
特定の GitHub ブランチ (メインなど) の特定のバージョンの NeMo を使用する場合は、次のインストール方法を使用します。
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
python -m pip install git+https://github.com/NVIDIA/NeMo.git@{BRANCH} # egg=nemo_toolkit[all]
NeMo GitHub リポジトリのクローンを作成し、NeMo オープンソース開発作業に貢献したい場合は、次のインストール方法を使用します。
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Conda ベースの依存関係を追加せずにツールキットのみが必要な場合は、 reinstall.sh
pip install -e .
PWD が NeMo リポジトリのルートである場合。
Apple M シリーズ GPU を搭載した Mac コンピューターに NeMo をインストールするには、新しい Conda 環境を作成し、PyTorch 2.0 以降をインストールしてから、nemo_toolkit をインストールする必要があります。
重要: この方法は ASR ドメインにのみ適用できます。
次のコードを実行します。
# [optional] install mecab using Homebrew, to use sacrebleu for NLP collection
# you can install Homebrew here: https://brew.sh
brew install mecab
# [optional] install pynini using Conda, to use text normalization
conda install -c conda-forge pynini
# install Cython manually
pip install cython packaging
# clone the repo and install in development mode
git clone https://github.com/NVIDIA/NeMo
cd NeMo
pip install ' nemo_toolkit[all] '
# Note that only the ASR toolkit is guaranteed to work on MacBook - so for MacBook use pip install 'nemo_toolkit[asr]'
Windows Subsystem for Linux (WSL) をインストールするには、PowerShell で次のコードを実行します。
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
WSL のインストールの詳細については、Microsoft の公式ドキュメントを参照してください。
WSL を使用して Linux ディストリビューションをインストールした後、2 つのオプションを使用できます。
オプション 1: [スタート] メニューからディストリビューション (デフォルトでは Ubuntu) を開き、指示に従います。
オプション 2:ターミナル アプリケーションを起動します。インストールされていない場合は、Microsoft の Windows Terminal ページからダウンロードしてください。
次に、上記の Linux システムの手順に従います。例えば:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Recurrent Neural Network Transducer (RNNT) のパフォーマンスを最適化するには、Conda から Numba パッケージをインストールします。
次のコードを実行します。
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
LLM および MM ドメインを使用する場合は、NVIDIA Apex、NVIDIA Transformer Engine、および NVIDIA Megatron Core の 3 つの追加の依存関係が必要です。 [main]{.title-ref} ブランチを操作する場合、これらの依存関係には最近のコミットが必要になる場合があります。
これらの依存関係の最新の動作バージョンは次のとおりです。
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
NeMo のリリース バージョンを使用する場合は、正しいバージョンについてはソフトウェア コンポーネントのバージョンを参照してください。
基本の NVIDIA PyTorch コンテナー nvcr.io/nvidia/pytorch:24.02-py3 から始めることをお勧めします。
基本の NVIDIA PyTorch コンテナーから始める場合は、まずコンテナーを起動する必要があります。
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
次に、依存関係をインストールする必要があります。
LLM および MM ドメインには NVIDIA Apex が必要です。 Apex は NVIDIA PyTorch コンテナにプリインストールされていますが、新しいバージョンに更新する必要がある場合があります。
Apex をインストールするには、次のコードを実行します。
git clone https://github.com/NVIDIA/apex.git
cd apex
git checkout $apex_commit
pip install . -v --no-build-isolation --disable-pip-version-check --no-cache-dir --config-settings " --build-option=--cpp_ext --cuda_ext --fast_layer_norm --distributed_adam --deprecated_fused_adam --group_norm "
Apex を NVIDIA PyTorch コンテナとは別にインストールしようとすると、システム上の CUDA バージョンが PyTorch のコンパイルに使用されたバージョンと異なる場合、エラーが発生する可能性があります。このエラーを回避するには、GitHub の Apex リポジトリ (https://github.com/NVIDIA/apex/blob/master/setup.py#L32) にあるセットアップ ファイルの関連行をコメント アウトします。
Apex をインストールするには cuda-nvprof が必要です。バージョンは、使用している CUDA のバージョンと一致する必要があります。
cuda-nvprof をインストールするには、次のコードを実行します。
conda install -c nvidia cuda-nvprof=11.8
最後に、パッケージをインストールします。
pip install packaging
最新バージョンの Apex をローカルにインストールするには、[pyproject.toml]{.title-ref} ファイルを Apex ディレクトリから削除することが必要になる場合があります。
LLM および MM ドメインには NVIDIA Transformer Engine が必要です。 Transformer Engine は NVIDIA PyTorch コンテナにプレインストールされていますが、新しいバージョンに更新する必要がある場合があります。
Transformer エンジンは、NVIDIA Hopper GPU での FP8 精度でのトレーニングを容易にし、Transformer ベースのモデルのトレーニングに多くの機能強化を導入します。詳細については、「トランスフォーマー エンジン」を参照してください。
Transformer Engine をインストールするには、次のコードを実行します。
git clone https://github.com/NVIDIA/TransformerEngine.git &&
cd TransformerEngine &&
git checkout $te_commit &&
git submodule init && git submodule update &&
NVTE_FRAMEWORK=pytorch NVTE_WITH_USERBUFFERS=1 MPI_HOME=/usr/local/mpi pip install .
Transformer Engine では、PyTorch が少なくとも CUDA 11.8 で構築されている必要があります。
Megatron Core は LLM および MM ドメインに必要です。 Megatron Core は、大規模な Transformer ベースのモデルをスケーリングするためのライブラリです。 NeMo LLM および MM は、モデルの並列処理、トランスフォーマー アーキテクチャ、および最適化された PyTorch データセットに Megatron Core を活用します。
Megatron Core をインストールするには、次のコードを実行します。
git clone https://github.com/NVIDIA/Megatron-LM.git &&
cd Megatron-LM &&
git checkout $mcore_commit &&
pip install . &&
cd megatron/core/datasets &&
make
NeMo テキスト処理、特に逆テキスト正規化は、別のリポジトリになりました。これは、https://github.com/NVIDIA/NeMo-text-processing にあります。
NeMo コンテナは、NeMo バージョンの更新と同時に起動されます。 NeMo Framework は、単一の統合された Docker コンテナーで LLM、MM、ASR、および TTS をサポートするようになりました。リリースされたコンテナに関する追加情報は、NeMo リリース ページで見つけることができます。
事前に構築されたコンテナーを使用するには、次のコードを実行します。
docker pull nvcr.io/nvidia/nemo:24.05
ブランチから Dockerfile を使用して nemo コンテナを構築するには、次のコードを実行します。
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
メイン ブランチを使用する場合は、NVIDIA の PyTorch コンテナ バージョン 23.10-py3 を使用し、GitHub からインストールすることをお勧めします。
docker run --gpus all -it --rm -v < nemo_github_folder > :/NeMo --shm-size=8g
-p 8888:8888 -p 6006:6006 --ulimit memlock=-1 --ulimit
stack=67108864 --device=/dev/snd nvcr.io/nvidia/pytorch:23.10-py3
NeMo Framework Launcher は現在 ASR および TTS トレーニングをサポートしていませんが、間もなくサポートされる予定です。
FAQ は NeMo ディスカッション掲示板にあります。質問したり、掲示板でディスカッションを開始したりすることを歓迎します。
コミュニティへの貢献を歓迎します。プロセスについては CONTRIBUTING.md を参照してください。
NeMo フレームワークを利用する出版物のリストは増え続けています。
コレクションに記事を投稿するには、このリポジトリのgh-pages-src
ブランチにプル リクエストを送信してください。詳細については、gh-pages-src ブランチにある README を参照してください。