NVIDIA NeMo Framework เป็นเฟรมเวิร์ก AI ที่สร้างบนคลาวด์ที่ปรับขนาดได้และสร้างขึ้นสำหรับนักวิจัยและนักพัฒนา PyTorch ที่ทำงานเกี่ยวกับโมเดลภาษาขนาดใหญ่ (LLM), โมเดลหลายรูปแบบ (MM), การรู้จำเสียงอัตโนมัติ (ASR), ข้อความเป็นคำพูด (TTS) และคอมพิวเตอร์ โดเมนวิสัยทัศน์ (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 ปรับขนาดการทดลองขนาดใหญ่ใน GPU หลายพันตัวได้อย่างราบรื่นโดยใช้ NeMo-Run ซึ่งเป็นเครื่องมืออันทรงพลังที่ออกแบบมาเพื่อปรับปรุงการกำหนดค่า การดำเนินการ และการจัดการการทดลองการเรียนรู้ของเครื่องในสภาพแวดล้อมการประมวลผล
โดยรวมแล้ว การปรับปรุงเหล่านี้ทำให้ NeMo 2.0 เป็นเฟรมเวิร์กที่ทรงพลัง ปรับขนาดได้ และใช้งานง่ายสำหรับการพัฒนาโมเดล AI
สำคัญ
ปัจจุบัน NeMo 2.0 ได้รับการสนับสนุนโดยคอลเลกชัน LLM (โมเดลภาษาขนาดใหญ่) และ VLM (โมเดลภาษาวิสัยทัศน์)
NeMo ทุกรุ่นได้รับการฝึกฝนด้วย Lightning การฝึกอบรมสามารถปรับขนาดเป็น GPU ได้ถึง 1,000 ตัวโดยอัตโนมัติ
เมื่อเป็นไปได้ โมเดล NeMo จะใช้ประโยชน์จากเทคนิคการฝึกอบรมแบบกระจายที่ล้ำสมัย โดยผสมผสานกลยุทธ์การทำงานแบบขนานเพื่อให้การฝึกอบรมที่มีประสิทธิภาพสำหรับโมเดลขนาดใหญ่มาก เทคนิคเหล่านี้ได้แก่ Tensor Parallelism (TP), Pipeline Parallelism (PP), Fully Sharded Data Parallelism (FSDP), Mixture-of-Experts (MoE) และ Mixed Precision Training ด้วย BFloat16 และ FP8 ตลอดจนเทคนิคอื่นๆ
LLM และ MM ที่ใช้ NeMo Transformer ใช้ NVIDIA Transformer Engine สำหรับการฝึก FP8 บน NVIDIA Hopper GPU ในขณะที่ใช้ประโยชน์จาก NVIDIA Megatron Core สำหรับการปรับขนาดการฝึกโมเดล Transformer
NeMo LLM สามารถปรับให้สอดคล้องกับวิธีการล้ำสมัย เช่น SteerLM, Direct Preference Optimization (DPO) และ Reinforcement Learning from Human Feedback (RLHF) ดู NVIDIA NeMo Aligner สำหรับข้อมูลเพิ่มเติม
นอกเหนือจากการปรับแต่งแบบละเอียดภายใต้การดูแล (SFT) แล้ว NeMo ยังรองรับเทคนิคการปรับแต่งพารามิเตอร์ที่มีประสิทธิภาพ (PEFT) ล่าสุด เช่น LoRA, P-Tuning, อะแดปเตอร์ และ IA3 โปรดดูคู่มือผู้ใช้ NeMo Framework สำหรับรายการรุ่นและเทคนิคที่รองรับทั้งหมด
NeMo LLM และ MM สามารถปรับใช้และปรับให้เหมาะสมด้วย NVIDIA NeMo Microservices
โมเดล NeMo ASR และ TTS สามารถเพิ่มประสิทธิภาพสำหรับการอนุมานและปรับใช้สำหรับกรณีการใช้งานจริงด้วย NVIDIA Riva
สำคัญ
NeMo Framework Launcher เข้ากันได้กับ NeMo เวอร์ชัน 1.0 เท่านั้น แนะนำให้ใช้ NeMo-Run สำหรับการเปิดการทดลองโดยใช้ NeMo 2.0
NeMo Framework Launcher เป็นเครื่องมือบนคลาวด์ที่ช่วยปรับปรุงประสบการณ์ NeMo Framework ใช้สำหรับการเปิดตัวงานการฝึกอบรม NeMo Framework แบบครบวงจรบน CSP และคลัสเตอร์ Slurm
NeMo Framework Launcher มีสูตรอาหาร สคริปต์ ยูทิลิตี และเอกสารประกอบมากมายสำหรับการฝึกอบรม NeMo LLM นอกจากนี้ยังมี NeMo Framework Autoconfigurator ซึ่งได้รับการออกแบบมาเพื่อค้นหาการกำหนดค่าแบบขนานที่เหมาะสมที่สุดสำหรับการฝึกบนคลัสเตอร์เฉพาะ
หากต้องการเริ่มต้นใช้งาน NeMo Framework Launcher อย่างรวดเร็ว โปรดดู NeMo Framework Playbooks ขณะนี้ NeMo Framework Launcher ไม่รองรับการฝึกอบรม ASR และ TTS แต่จะรองรับในเร็วๆ นี้
การเริ่มต้นใช้งาน NeMo Framework เป็นเรื่องง่าย โมเดล NeMo ที่ผ่านการฝึกอบรมล้ำสมัยมีให้ใช้งานได้ฟรีบน Hugging Face Hub และ NVIDIA NGC โมเดลเหล่านี้สามารถใช้เพื่อสร้างข้อความหรือรูปภาพ ถอดเสียง และสังเคราะห์คำพูดด้วยโค้ดเพียงไม่กี่บรรทัด
เรามีบทช่วยสอนที่ครอบคลุมซึ่งสามารถเรียกใช้บน Google Colab หรือกับ NGC NeMo Framework Container ของเรา เรายังมี Playbooks สำหรับผู้ใช้ที่ต้องการฝึกโมเดล NeMo ด้วย NeMo Framework Launcher
สำหรับผู้ใช้ขั้นสูงที่ต้องการฝึกโมเดล NeMo ตั้งแต่เริ่มต้นหรือปรับแต่งโมเดล NeMo ที่มีอยู่ เรามีชุดสคริปต์ตัวอย่างเต็มรูปแบบที่รองรับการฝึกแบบ multi-GPU/multi-node
เวอร์ชัน | สถานะ | คำอธิบาย |
---|---|---|
ล่าสุด | เอกสารของสาขาล่าสุด (เช่นสาขาหลัก) | |
มั่นคง | เอกสารของคอกม้า (เช่น รุ่นล่าสุด) |
NeMo Framework สามารถติดตั้งได้หลากหลายวิธี ขึ้นอยู่กับความต้องการของคุณ คุณอาจพบว่าวิธีการติดตั้งแบบใดแบบหนึ่งต่อไปนี้เหมาะสมกว่า ทั้งนี้ขึ้นอยู่กับโดเมน
สิ่งสำคัญ: เราขอแนะนำอย่างยิ่งให้คุณเริ่มต้นด้วยคอนเทนเนอร์ 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 อาจขึ้นอยู่กับระบบของคุณ ใช้ตัวกำหนดค่าที่ลิงก์ด้านบนเพื่อค้นหาคำสั่งที่เหมาะสมสำหรับระบบของคุณ
จากนั้น ติดตั้ง NeMo ผ่าน Pip หรือจาก Source เราไม่ได้ให้บริการ NeMo บน conda-forge หรือช่องทาง Conda อื่น ๆ
หากต้องการติดตั้ง 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 ' ]
หากคุณต้องการทำงานกับ NeMo เวอร์ชันเฉพาะจากสาขา GitHub เฉพาะ (เช่น หลัก) ให้ใช้วิธีการติดตั้งต่อไปนี้:
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
หากต้องการติดตั้ง NeMo บนคอมพิวเตอร์ Mac ที่มี GPU Apple M-Series คุณต้องสร้างสภาพแวดล้อม 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 สำหรับ 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
หลังจากติดตั้งการกระจาย Linux ด้วย WSL มีสองตัวเลือกให้เลือก:
ตัวเลือกที่ 1: เปิดการแจกจ่าย (ตามค่าเริ่มต้น Ubuntu) จากเมนู Start แล้วทำตามคำแนะนำ
ตัวเลือกที่ 2: เปิดแอปพลิเคชัน Terminal ดาวน์โหลดได้จากหน้า Windows Terminal ของ Microsoft หากไม่ได้ติดตั้ง
จากนั้น ปฏิบัติตามคำแนะนำสำหรับระบบ 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) ให้ติดตั้งแพ็คเกจ Numba จาก Conda
เรียกใช้รหัสต่อไปนี้:
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
ถัดไป คุณต้องติดตั้งการขึ้นต่อกัน
ต้องใช้ NVIDIA Apex สำหรับโดเมน LLM และ MM แม้ว่า 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 หากต้องการหลีกเลี่ยงข้อผิดพลาดนี้ คุณสามารถคอมเม้นต์บรรทัดที่เกี่ยวข้องในไฟล์ติดตั้งที่อยู่ในพื้นที่เก็บข้อมูล Apex บน GitHub ที่นี่: https://github.com/NVIDIA/apex/blob/master/setup.py#L32
จำเป็นต้องใช้ cuda-nvprof เพื่อติดตั้ง Apex เวอร์ชันควรตรงกับเวอร์ชัน CUDA ที่คุณใช้
หากต้องการติดตั้ง cuda-nvprof ให้รันโค้ดต่อไปนี้:
conda install -c nvidia cuda-nvprof=11.8
สุดท้ายให้ติดตั้งบรรจุภัณฑ์:
pip install packaging
หากต้องการติดตั้ง Apex เวอร์ชันล่าสุดในเครื่อง อาจจำเป็นต้องลบไฟล์ [pyproject.toml]{.title-ref} ออกจากไดเรกทอรี Apex
จำเป็นต้องใช้ NVIDIA Transformer Engine สำหรับโดเมน LLM และ MM แม้ว่า Transformer Engine จะได้รับการติดตั้งไว้ล่วงหน้าในคอนเทนเนอร์ NVIDIA PyTorch แต่คุณอาจต้องอัปเดตเป็นเวอร์ชันที่ใหม่กว่า
Transformer Engine อำนวยความสะดวกในการฝึกอบรมด้วยความแม่นยำ FP8 บน NVIDIA Hopper GPU และแนะนำการปรับปรุงมากมายสำหรับการฝึกอบรมโมเดลที่ใช้ Transformer อ้างอิงถึง Transformer Engine สำหรับข้อมูล
ในการติดตั้ง 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 ใช้ประโยชน์จาก Megatron Core สำหรับโมเดลความขนาน สถาปัตยกรรมหม้อแปลง และชุดข้อมูล PyTorch ที่ปรับให้เหมาะสม
หากต้องการติดตั้ง 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 โดยเฉพาะ Inverse Text Normalization กลายเป็นพื้นที่เก็บข้อมูลแยกต่างหากแล้ว ตั้งอยู่ที่นี่: https://github.com/NVIDIA/NeMo-text-processing
คอนเทนเนอร์ NeMo เปิดตัวพร้อมกับการอัปเดตเวอร์ชันของ NeMo ขณะนี้ NeMo Framework รองรับ LLM, MM, ASR และ TTS ในคอนเทนเนอร์ Docker ที่รวมไว้เพียงแห่งเดียว คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับคอนเทนเนอร์ที่เผยแพร่ได้ที่หน้าการเผยแพร่ NeMo
หากต้องการใช้คอนเทนเนอร์ที่สร้างไว้ล่วงหน้า ให้รันโค้ดต่อไปนี้:
docker pull nvcr.io/nvidia/nemo:24.05
หากต้องการสร้างคอนเทนเนอร์ nemo ด้วย Dockerfile จากสาขา ให้รันโค้ดต่อไปนี้:
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
หากคุณเลือกที่จะทำงานกับสาขาหลัก เราขอแนะนำให้ใช้คอนเทนเนอร์ PyTorch ของ NVIDIA เวอร์ชัน 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 Framework เพิ่มมากขึ้นเรื่อยๆ
หากต้องการสนับสนุนบทความในคอลเลกชัน โปรดส่งคำขอดึงไปยังสาขา gh-pages-src
ของที่เก็บนี้ สำหรับข้อมูลโดยละเอียด โปรดปรึกษา README ซึ่งอยู่ที่สาขา gh-pages-src