NVIDIA NeMo 프레임워크는 LLM(대형 언어 모델), MM(다중 모달 모델), ASR(자동 음성 인식), TTS(텍스트 음성 변환) 및 컴퓨터 작업을 수행하는 연구원 및 PyTorch 개발자를 위해 구축된 확장 가능한 클라우드 기반 생성 AI 프레임워크입니다. 비전(CV) 도메인. 기존 코드와 사전 훈련된 모델 체크포인트를 활용하여 새로운 생성 AI 모델을 효율적으로 생성, 사용자 정의 및 배포하는 데 도움이 되도록 설계되었습니다.
기술 문서는 NeMo 프레임워크 사용자 안내서를 참조하십시오.
NVIDIA NeMo 2.0은 이전 버전인 NeMo 1.0에 비해 몇 가지 중요한 개선 사항을 도입하여 유연성, 성능 및 확장성을 향상시켰습니다.
Python 기반 구성 - NeMo 2.0은 YAML 파일에서 Python 기반 구성으로 전환하여 더 많은 유연성과 제어 기능을 제공합니다. 이러한 변화를 통해 프로그래밍 방식으로 구성을 더 쉽게 확장하고 사용자 지정할 수 있습니다.
모듈식 추상화 - NeMo 2.0은 PyTorch Lightning의 모듈식 추상화를 채택하여 적응과 실험을 단순화합니다. 이 모듈식 접근 방식을 통해 개발자는 모델의 다양한 구성 요소를 보다 쉽게 수정하고 실험할 수 있습니다.
확장성 - NeMo 2.0은 컴퓨팅 환경 전반에서 기계 학습 실험의 구성, 실행 및 관리를 간소화하도록 설계된 강력한 도구인 NeMo-Run을 사용하여 수천 개의 GPU에서 대규모 실험을 원활하게 확장합니다.
전반적으로 이러한 개선 사항을 통해 NeMo 2.0은 AI 모델 개발을 위한 강력하고 확장 가능하며 사용자 친화적인 프레임워크가 되었습니다.
중요한
NeMo 2.0은 현재 LLM(대형 언어 모델) 및 VLM(비전 언어 모델) 컬렉션에서 지원됩니다.
모든 NeMo 모델은 Lightning으로 훈련되었습니다. 훈련은 자동으로 수천 개의 GPU로 확장 가능합니다.
적용 가능한 경우 NeMo 모델은 최첨단 분산 교육 기술을 활용하고 병렬성 전략을 통합하여 매우 큰 모델을 효율적으로 교육할 수 있습니다. 이러한 기술에는 TP(Tensor Parallelism), PP(Pipeline Parallelism), FSDP(Fully Sharded Data Parallelism), MoE(Mixture-of-Experts), BFloat16 및 FP8을 사용한 혼합 정밀 교육 등이 포함됩니다.
NeMo Transformer 기반 LLM 및 MM은 NVIDIA Hopper GPU에서 FP8 교육을 위해 NVIDIA Transformer 엔진을 활용하는 동시에 Transformer 모델 교육 확장을 위해 NVIDIA Megatron Core를 활용합니다.
NeMo LLM은 SteerLM, DPO(Direct Preference Optimization) 및 RLHF(Reinforcement Learning from Human Feedback)와 같은 최첨단 방법에 맞춰 조정할 수 있습니다. 자세한 내용은 NVIDIA NeMo Aligner를 참조하세요.
NeMo는 SFT(감독된 미세 조정) 외에도 LoRA, P-Tuning, 어댑터 및 IA3와 같은 최신 PEFT(매개변수 효율적 미세 조정) 기술도 지원합니다. 지원되는 모델 및 기술의 전체 목록은 NeMo 프레임워크 사용자 안내서를 참조하십시오.
NeMo LLM 및 MM은 NVIDIA NeMo 마이크로서비스를 사용하여 배포하고 최적화할 수 있습니다.
NeMo ASR 및 TTS 모델은 추론에 최적화되고 NVIDIA Riva를 사용하여 프로덕션 사용 사례에 배포될 수 있습니다.
중요한
NeMo Framework Launcher는 NeMo 버전 1.0과만 호환됩니다. NeMo 2.0을 사용하여 실험을 시작하려면 NeMo-Run을 권장합니다.
NeMo Framework Launcher는 NeMo 프레임워크 경험을 간소화하는 클라우드 기반 도구입니다. CSP 및 Slurm 클러스터에서 엔드투엔드 NeMo Framework 교육 작업을 시작하는 데 사용됩니다.
NeMo Framework Launcher에는 NeMo LLM 교육을 위한 광범위한 레시피, 스크립트, 유틸리티 및 문서가 포함되어 있습니다. 또한 특정 클러스터에 대한 교육을 위한 최적의 모델 병렬 구성을 찾도록 설계된 NeMo Framework Autoconfigurator도 포함되어 있습니다.
NeMo Framework Launcher를 빠르게 시작하려면 NeMo 프레임워크 플레이북을 참조하세요. NeMo Framework Launcher는 현재 ASR 및 TTS 교육을 지원하지 않지만 곧 지원할 예정입니다.
NeMo 프레임워크를 시작하는 것은 쉽습니다. 사전 훈련된 최첨단 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)로 시작하는 것이 좋습니다.
새로운 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 ' ]
사용된 쉘에 따라 위 명령 대신 "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]'
WSL(Linux용 Windows 하위 시스템)을 설치하려면 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 터미널 페이지에서 다운로드하세요.
그런 다음 위에 제공된 Linux 시스템용 지침을 따르세요. 예를 들어:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
RNNT(Recurrent Neural Network Transducer)의 최적 성능을 위해 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 엔진을 참조하세요.
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가 필요합니다. 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 프레임워크는 이제 단일 통합 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를 참조하세요.