NVIDIA NeMo Framework 是一個可擴展的雲端原生生成式AI 框架,專為從事大型語言模型(LLM)、多模態模型(MM)、自動語音識別(ASR)、文字轉語音(TTS) 和電腦工作的研究人員和PyTorch 開發人員而建構視覺 (CV) 領域。它旨在幫助您利用現有程式碼和預先訓練的模型檢查點,有效地建立、自訂和部署新的生成式 AI 模型。
有關技術文檔,請參閱 NeMo 框架使用者指南。
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-Run 是一款強大的工具,旨在簡化跨計算環境的機器學習實驗的配置、執行和管理。
總體而言,這些增強功能使 NeMo 2.0 成為強大、可擴展且使用者友好的 AI 模型開發框架。
重要的
NeMo 2.0 目前由 LLM(大型語言模型)和 VLM(視覺語言模型)集合支援。
所有 NeMo 模型均使用 Lightning 進行訓練。訓練可自動擴展到數千個 GPU。
在適用時,NeMo 模型利用尖端的分散式訓練技術,結合平行策略來實現大型模型的高效訓練。這些技術包括張量並行 (TP)、管道並行 (PP)、完全分片資料並行 (FSDP)、專家混合 (MoE) 以及使用 BFloat16 和 FP8 的混合精度訓練等。
基於 NeMo Transformer 的法學碩士和碩士利用 NVIDIA Transformer 引擎在 NVIDIA Hopper GPU 上進行 FP8 訓練,同時利用 NVIDIA Megatron Core 擴展 Transformer 模型訓練。
NeMo LLM 可以與 SteerLM、直接偏好優化 (DPO) 和人類回饋強化學習 (RLHF) 等最先進的方法結合。請參閱 NVIDIA NeMo Aligner 以了解更多資訊。
除了監督微調(SFT)之外,NeMo 還支援最新的參數高效微調(PEFT)技術,例如 LoRA、P-Tuning、Adapters 和 IA3。請參閱 NeMo 框架使用者指南,以了解支援的模型和技術的完整清單。
NeMo LLM 和 MM 可以使用 NVIDIA NeMo 微服務進行部署和最佳化。
NeMo ASR 和 TTS 模型可針對推理進行最佳化,並可透過 NVIDIA Riva 部署用於生產用例。
重要的
NeMo Framework Launcher 僅與 NeMo 1.0 版本相容。建議使用 NeMo-Run 使用 NeMo 2.0 啟動實驗。
NeMo Framework Launcher 是一款雲端原生工具,可簡化 NeMo Framework 體驗。它用於在 CSP 和 Slurm 叢集上啟動端對端 NeMo Framework 訓練作業。
NeMo Framework Launcher 包括用於培訓 NeMo LLM 的大量配方、腳本、實用程式和文件。它還包括 NeMo 框架自動配置器,旨在找到在特定叢集上進行訓練的最佳模型並行配置。
要快速開始使用 NeMo Framework Launcher,請參閱 NeMo Framework Playbooks。 NeMo Framework Launcher 目前不支援 ASR 和 TTS 訓練,但很快就會支援。
NeMo 框架的入門非常簡單。 Hugging Face Hub 和 NVIDIA NGC 上免費提供最先進的預訓練 NeMo 模式。這些模型可用於產生文字或圖像、轉錄音訊以及僅用幾行程式碼即可合成語音。
我們有豐富的教程,可以在 Google Colab 或我們的 NGC NeMo 框架容器上運行。我們也為想要使用 NeMo Framework Launcher 訓練 NeMo 模型的使用者提供了劇本。
對於想要從頭開始訓練 NeMo 模型或微調現有 NeMo 模型的高級用戶,我們提供了一整套支援多 GPU/多節點訓練的範例腳本。
版本 | 地位 | 描述 |
---|---|---|
最新的 | 最新(即主)分支的文檔。 | |
穩定的 | 穩定版本的文件(即最新版本) |
NeMo 框架可以根據您的需求以多種方式安裝。根據網域的不同,您可能會發現以下安裝方法之一更合適。
重要提示:我們強烈建議您從基本 NVIDIA PyTorch 容器開始:nvcr.io/nvidia/pytorch:24.02-py3。
在全新的 Conda 環境中安裝 NeMo:
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 ' ]
根據所使用的 shell,您可能需要在上述命令中使用"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 分支(例如 main)中的特定版本的 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]'
若要安裝適用於 Linux 的 Windows 子系統 (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 發行版後,有兩個選項可用:
選項 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
為了獲得循環神經網路感測器 (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。使用 [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 "
當嘗試與 NVIDIA PyTorch 容器分開安裝 Apex 時,如果系統上的 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,可能需要從 Apex 目錄中刪除 [pyproject.toml]{.title-ref} 檔案。
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 建置。
LLM 和 MM 領域需要威震天核心。 Megatron Core 是一個用於擴展基於 Transformer 的大型模型的函式庫。 NeMo LLM 和 MM 利用 Megatron Core 實現模型並行性、變壓器架構和最佳化的 PyTorch 資料集。
若要安裝威震天核心,請執行以下程式碼:
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 訓練,但很快就會支援。
常見問題可以在 NeMo 討論版上找到。歡迎您在論壇上提問或開始討論。
我們歡迎社區貢獻!流程請參考CONTRIBUTING.md。
我們提供了一個不斷增長的利用 NeMo 框架的出版物清單。
若要向該集合貢獻文章,請向此儲存庫的gh-pages-src
分支提交拉取請求。有關詳細信息,請參閱位於 gh-pages-src 分支的自述文件。