NVIDIA NeMo Framework adalah kerangka kerja AI generatif cloud-native yang dibuat untuk para peneliti dan pengembang PyTorch yang mengerjakan Large Language Models (LLMs), Multimodal Models (MMs), Automatic Speech Recognition (ASR), Text to Speech (TTS), dan Komputer Domain Visi (CV). Hal ini dirancang untuk membantu Anda membuat, menyesuaikan, dan menerapkan model AI generatif baru secara efisien dengan memanfaatkan kode yang ada dan titik pemeriksaan model terlatih.
Untuk dokumentasi teknis, silakan lihat Panduan Pengguna NeMo Framework.
NVIDIA NeMo 2.0 memperkenalkan beberapa peningkatan signifikan dibandingkan pendahulunya, NeMo 1.0, meningkatkan fleksibilitas, kinerja, dan skalabilitas.
Konfigurasi Berbasis Python - NeMo 2.0 bertransisi dari file YAML ke konfigurasi berbasis Python, memberikan lebih banyak fleksibilitas dan kontrol. Pergeseran ini mempermudah perluasan dan penyesuaian konfigurasi secara terprogram.
Abstraksi Modular - Dengan mengadopsi abstraksi modular PyTorch Lightning, NeMo 2.0 menyederhanakan adaptasi dan eksperimen. Pendekatan modular ini memungkinkan pengembang untuk lebih mudah memodifikasi dan bereksperimen dengan berbagai komponen model mereka.
Skalabilitas - NeMo 2.0 dengan lancar menskalakan eksperimen skala besar di ribuan GPU menggunakan NeMo-Run, alat canggih yang dirancang untuk menyederhanakan konfigurasi, eksekusi, dan pengelolaan eksperimen pembelajaran mesin di seluruh lingkungan komputasi.
Secara keseluruhan, penyempurnaan ini menjadikan NeMo 2.0 kerangka kerja yang kuat, terukur, dan ramah pengguna untuk pengembangan model AI.
Penting
NeMo 2.0 saat ini didukung oleh koleksi LLM (model bahasa besar) dan VLM (model bahasa visi).
Semua model NeMo dilatih dengan Lightning. Pelatihan secara otomatis dapat diskalakan hingga 1000 GPU.
Jika dapat diterapkan, model NeMo memanfaatkan teknik pelatihan terdistribusi yang mutakhir, menggabungkan strategi paralelisme untuk memungkinkan pelatihan yang efisien pada model yang sangat besar. Teknik-teknik tersebut antara lain Tensor Parallelism (TP), Pipeline Parallelism (PP), Fully Sharded Data Parallelism (FSDP), Mixture-of-Experts (MoE), dan Mixed Precision Training dengan BFloat16 dan FP8, serta lainnya.
LLM dan MM berbasis NeMo Transformer menggunakan NVIDIA Transformer Engine untuk pelatihan FP8 pada GPU NVIDIA Hopper, sekaligus memanfaatkan NVIDIA Megatron Core untuk menskalakan pelatihan model Transformer.
NeMo LLM dapat diselaraskan dengan metode canggih seperti SteerLM, Direct Preference Optimization (DPO), dan Reinforcement Learning from Human Feedback (RLHF). Lihat Penyelaras NVIDIA NeMo untuk informasi lebih lanjut.
Selain penyempurnaan terawasi (SFT), NeMo juga mendukung teknik penyetelan efisien parameter terbaru (PEFT) seperti LoRA, P-Tuning, Adaptor, dan IA3. Lihat Panduan Pengguna NeMo Framework untuk daftar lengkap model dan teknik yang didukung.
NeMo LLM dan MM dapat diterapkan dan dioptimalkan dengan NVIDIA NeMo Microservices.
Model NeMo ASR dan TTS dapat dioptimalkan untuk inferensi dan diterapkan untuk kasus penggunaan produksi dengan NVIDIA Riva.
Penting
NeMo Framework Launcher hanya kompatibel dengan NeMo versi 1.0. NeMo-Run direkomendasikan untuk meluncurkan eksperimen menggunakan NeMo 2.0.
NeMo Framework Launcher adalah alat cloud-native yang menyederhanakan pengalaman NeMo Framework. Ini digunakan untuk meluncurkan pekerjaan pelatihan NeMo Framework end-to-end pada CSP dan cluster Slurm.
NeMo Framework Launcher mencakup resep ekstensif, skrip, utilitas, dan dokumentasi untuk pelatihan NeMo LLM. Ini juga mencakup NeMo Framework Autoconfigurator, yang dirancang untuk menemukan konfigurasi paralel model optimal untuk pelatihan pada cluster tertentu.
Untuk memulai dengan cepat menggunakan NeMo Framework Launcher, silakan lihat NeMo Framework Playbooks. NeMo Framework Launcher saat ini tidak mendukung pelatihan ASR dan TTS, tetapi akan segera mendukungnya.
Memulai NeMo Framework itu mudah. Model NeMo terlatih yang canggih tersedia secara gratis di Hugging Face Hub dan NVIDIA NGC. Model ini dapat digunakan untuk menghasilkan teks atau gambar, mentranskripsikan audio, dan mensintesis ucapan hanya dalam beberapa baris kode.
Kami memiliki tutorial ekstensif yang dapat dijalankan di Google Colab atau dengan NGC NeMo Framework Container kami. Kami juga memiliki pedoman bagi pengguna yang ingin melatih model NeMo dengan NeMo Framework Launcher.
Untuk pengguna tingkat lanjut yang ingin melatih model NeMo dari awal atau menyempurnakan model NeMo yang sudah ada, kami memiliki rangkaian lengkap contoh skrip yang mendukung pelatihan multi-GPU/multi-node.
Versi | Status | Keterangan |
---|---|---|
Terbaru | Dokumentasi cabang terbaru (yaitu utama). | |
Stabil | Dokumentasi stabil (yaitu rilis terbaru) |
Framework NeMo dapat diinstal dengan berbagai cara, tergantung kebutuhan Anda. Tergantung pada domainnya, Anda mungkin menemukan salah satu metode instalasi berikut ini lebih cocok.
Penting: Kami sangat menyarankan agar Anda memulai dengan wadah dasar NVIDIA PyTorch: nvcr.io/nvidia/pytorch:24.02-py3.
Instal NeMo di lingkungan Conda yang baru:
conda create --name nemo python==3.10.12
conda activate nemo
Instal PyTorch menggunakan konfiguratornya:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
Perintah untuk menginstal PyTorch mungkin bergantung pada sistem Anda. Gunakan konfigurator yang ditautkan di atas untuk menemukan perintah yang tepat untuk sistem Anda.
Kemudian, instal NeMo melalui Pip atau dari Sumber. Kami tidak menyediakan NeMo di conda-forge atau saluran Conda lainnya.
Untuk menginstal nemo_toolkit, gunakan metode instalasi berikut:
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
Tergantung pada shell yang digunakan, Anda mungkin perlu menggunakan specifier "nemo_toolkit[all]"
pada perintah di atas.
Untuk menginstal domain NeMo tertentu, Anda harus menginstal nemo_toolkit terlebih dahulu menggunakan petunjuk yang tercantum di atas. Kemudian, Anda menjalankan perintah khusus domain berikut:
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 ' ]
Jika Anda ingin bekerja dengan versi NeMo tertentu dari cabang GitHub tertentu (misalnya main), gunakan metode instalasi berikut:
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]
Jika Anda ingin mengkloning repositori NeMo GitHub dan berkontribusi pada pekerjaan pengembangan sumber terbuka NeMo, gunakan metode instalasi berikut:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Jika Anda hanya menginginkan toolkit tanpa dependensi tambahan berbasis Conda, Anda dapat mengganti reinstall.sh
dengan pip install -e .
ketika PWD Anda adalah root dari repositori NeMo.
Untuk menginstal NeMo di komputer Mac dengan GPU Apple M-Series, Anda perlu membuat lingkungan Conda baru, menginstal PyTorch 2.0 atau lebih tinggi, lalu menginstal nemo_toolkit.
Penting: Cara ini hanya berlaku untuk domain ASR.
Jalankan kode berikut:
# [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]'
Untuk menginstal Subsistem Windows untuk Linux (WSL), jalankan kode berikut di PowerShell:
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
Untuk mempelajari lebih lanjut tentang menginstal WSL, lihat dokumentasi resmi Microsoft.
Setelah menginstal distribusi Linux Anda dengan WSL, tersedia dua opsi:
Opsi 1: Buka distribusi (Ubuntu secara default) dari menu Start dan ikuti instruksinya.
Opsi 2: Luncurkan aplikasi Terminal. Unduh dari halaman Terminal Windows Microsoft jika belum diinstal.
Selanjutnya, ikuti petunjuk untuk sistem Linux, seperti yang disediakan di atas. Misalnya:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Untuk kinerja optimal Recurrent Neural Network Transducer (RNNT), instal paket Numba dari Conda.
Jalankan kode berikut:
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
Jika Anda bekerja dengan domain LLM dan MM, diperlukan tiga dependensi tambahan: NVIDIA Apex, NVIDIA Transformer Engine, dan NVIDIA Megatron Core. Saat bekerja dengan cabang [main]{.title-ref}, dependensi ini mungkin memerlukan penerapan terbaru.
Versi kerja terbaru dari dependensi ini ada di sini:
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
Saat menggunakan NeMo versi rilis, silakan lihat Versi Komponen Perangkat Lunak untuk versi yang benar.
Kami menyarankan Anda memulai dengan wadah dasar NVIDIA PyTorch: nvcr.io/nvidia/pytorch:24.02-py3.
Jika memulai dengan kontainer dasar NVIDIA PyTorch, Anda harus meluncurkan kontainer terlebih dahulu:
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
Selanjutnya, Anda perlu menginstal dependensinya.
NVIDIA Apex diperlukan untuk domain LLM dan MM. Meskipun Apex sudah diinstal sebelumnya di wadah NVIDIA PyTorch, Anda mungkin perlu memperbaruinya ke versi yang lebih baru.
Untuk menginstal Apex, jalankan kode berikut:
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 "
Saat mencoba menginstal Apex secara terpisah dari wadah NVIDIA PyTorch, Anda mungkin mengalami kesalahan jika versi CUDA di sistem Anda berbeda dari yang digunakan untuk mengkompilasi PyTorch. Untuk mengatasi kesalahan ini, Anda dapat mengomentari baris yang relevan di file pengaturan yang terletak di repositori Apex di GitHub di sini: https://github.com/NVIDIA/apex/blob/master/setup.py#L32.
cuda-nvprof diperlukan untuk menginstal Apex. Versinya harus sesuai dengan versi CUDA yang Anda gunakan.
Untuk menginstal cuda-nvprof, jalankan kode berikut:
conda install -c nvidia cuda-nvprof=11.8
Terakhir, instal kemasannya:
pip install packaging
Untuk menginstal versi terbaru Apex secara lokal, file [pyproject.toml]{.title-ref} mungkin perlu dihapus dari direktori Apex.
NVIDIA Transformer Engine diperlukan untuk domain LLM dan MM. Meskipun Mesin Transformer sudah diinstal sebelumnya di wadah NVIDIA PyTorch, Anda mungkin perlu memperbaruinya ke versi yang lebih baru.
Transformer Engine memfasilitasi pelatihan dengan presisi FP8 pada GPU NVIDIA Hopper dan memperkenalkan banyak penyempurnaan untuk pelatihan model berbasis Transformer. Lihat Mesin Transformator untuk informasi.
Untuk menginstal Transformer Engine, jalankan kode berikut:
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 memerlukan PyTorch untuk dibuat dengan setidaknya CUDA 11.8.
Megatron Core diperlukan untuk domain LLM dan MM. Megatron Core adalah perpustakaan untuk menskalakan model besar berbasis Transformer. NeMo LLM dan MM memanfaatkan Megatron Core untuk paralelisme model, arsitektur transformator, dan kumpulan data PyTorch yang dioptimalkan.
Untuk menginstal Megatron Core, jalankan kode berikut:
git clone https://github.com/NVIDIA/Megatron-LM.git &&
cd Megatron-LM &&
git checkout $mcore_commit &&
pip install . &&
cd megatron/core/datasets &&
make
Pemrosesan Teks NeMo, khususnya Normalisasi Teks Terbalik, kini menjadi repositori terpisah. Itu terletak di sini: https://github.com/NVIDIA/NeMo-text-processing.
Kontainer NeMo diluncurkan bersamaan dengan pembaruan versi NeMo. NeMo Framework sekarang mendukung LLM, MM, ASR, dan TTS dalam satu kontainer Docker yang terkonsolidasi. Anda dapat menemukan informasi tambahan tentang kontainer yang dirilis di halaman rilis NeMo.
Untuk menggunakan kontainer yang sudah dibuat sebelumnya, jalankan kode berikut:
docker pull nvcr.io/nvidia/nemo:24.05
Untuk membangun kontainer nemo dengan Dockerfile dari cabang, jalankan kode berikut:
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
Jika Anda memilih untuk bekerja dengan cabang utama, kami sarankan menggunakan wadah PyTorch NVIDIA versi 23.10-py3 dan kemudian menginstal dari 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 saat ini tidak mendukung pelatihan ASR dan TTS, tetapi akan segera mendukungnya.
FAQ dapat ditemukan di papan Diskusi NeMo. Anda dipersilakan untuk mengajukan pertanyaan atau memulai diskusi di papan tulis.
Kami menyambut kontribusi komunitas! Silakan merujuk ke CONTRIBUTING.md untuk prosesnya.
Kami menyediakan daftar publikasi yang terus bertambah yang memanfaatkan Kerangka NeMo.
Untuk menyumbangkan artikel ke koleksi, silakan kirimkan permintaan tarik ke cabang gh-pages-src
dari repositori ini. Untuk informasi selengkapnya, silakan baca README yang terletak di cabang gh-pages-src.