NVIDIA NeMo Framework هو إطار عمل ذكاء اصطناعي توليدي قابل للتطوير ومعتمد على السحابة، مصمم للباحثين ومطوري PyTorch الذين يعملون على نماذج اللغات الكبيرة (LLMs)، والنماذج المتعددة الوسائط (MMs)، والتعرف التلقائي على الكلام (ASR)، وتحويل النص إلى كلام (TTS)، والكمبيوتر. مجالات الرؤية (CV). لقد تم تصميمه لمساعدتك في إنشاء نماذج ذكاء اصطناعي جديدة وتخصيصها ونشرها بكفاءة من خلال الاستفادة من التعليمات البرمجية الموجودة ونقاط فحص النماذج المدربة مسبقًا.
للحصول على الوثائق الفنية، يرجى الاطلاع على دليل مستخدم 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، وهي أداة قوية مصممة لتبسيط تكوين تجارب التعلم الآلي وتنفيذها وإدارتها عبر بيئات الحوسبة.
بشكل عام، تجعل هذه التحسينات من NeMo 2.0 إطارًا قويًا وقابلاً للتطوير وسهل الاستخدام لتطوير نماذج الذكاء الاصطناعي.
مهم
يتم دعم NeMo 2.0 حاليًا بواسطة مجموعات LLM (نموذج اللغة الكبيرة) وVLM (نموذج لغة الرؤية).
يتم تدريب جميع نماذج NeMo باستخدام Lightning. التدريب قابل للتطوير تلقائيًا إلى آلاف وحدات معالجة الرسومات.
عندما يكون ذلك ممكنًا، تستفيد نماذج NeMo من تقنيات التدريب الموزعة المتطورة، والتي تتضمن استراتيجيات التوازي لتمكين التدريب الفعال لنماذج كبيرة جدًا. تشمل هذه التقنيات توازي الموتر (TP)، وتوازي خطوط الأنابيب (PP)، وتوازي البيانات المجزأة بالكامل (FSDP)، ومزيج الخبراء (MoE)، والتدريب الدقيق المختلط مع BFloat16 وFP8، بالإضافة إلى تقنيات أخرى.
تستخدم برامج LLM وMMs القائمة على NeMo Transformer Engine NVIDIA Transformer Engine لتدريب FP8 على وحدات معالجة الرسوميات NVIDIA Hopper، مع الاستفادة من NVIDIA Megatron Core لتوسيع نطاق التدريب على نماذج Transformer.
يمكن مواءمة NeMo LLMs مع أحدث الأساليب مثل SteerLM وتحسين التفضيل المباشر (DPO) والتعلم المعزز من التعليقات البشرية (RLHF). راجع NVIDIA NeMo Aligner لمزيد من المعلومات.
بالإضافة إلى الضبط الدقيق الخاضع للإشراف (SFT)، يدعم NeMo أيضًا أحدث تقنيات الضبط الدقيق الفعال للمعلمات (PEFT) مثل LoRA وP-Tuning والمحولات وIA3. ارجع إلى دليل مستخدم NeMo Framework للحصول على القائمة الكاملة للنماذج والتقنيات المدعومة.
يمكن نشر برامج NeMo LLM وMMs وتحسينها باستخدام خدمات NVIDIA NeMo Microservices.
يمكن تحسين نماذج NeMo ASR وTTS للاستدلال ونشرها لحالات استخدام الإنتاج باستخدام NVIDIA Riva.
مهم
NeMo Framework Launcher متوافق مع الإصدار 1.0 من NeMo فقط. يوصى باستخدام NeMo-Run لبدء التجارب باستخدام NeMo 2.0.
NeMo Framework Launcher هي أداة سحابية أصلية تعمل على تبسيط تجربة NeMo Framework. يتم استخدامه لإطلاق وظائف تدريب NeMo Framework الشاملة على مقدمي الخدمات السحابية ومجموعات Slurm.
يتضمن NeMo Framework Launcher وصفات واسعة النطاق ونصوصًا وأدوات مساعدة ووثائق لتدريب NeMo LLMs. ويتضمن أيضًا 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. لدينا أيضًا أدلة تشغيل للمستخدمين الذين يرغبون في تدريب نماذج NeMo باستخدام NeMo Framework Launcher.
بالنسبة للمستخدمين المتقدمين الذين يرغبون في تدريب نماذج NeMo من البداية أو تحسين نماذج NeMo الحالية، لدينا مجموعة كاملة من أمثلة البرامج النصية التي تدعم التدريب على وحدات معالجة الرسومات المتعددة/متعددة العقد.
إصدار | حالة | وصف |
---|---|---|
أحدث | توثيق الفرع الأخير (أي الرئيسي). | |
مستقر | توثيق الإسطبل (أي الإصدار الأحدث) |
يمكن تثبيت 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 أو من المصدر. نحن لا نقدم 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 .
عندما يكون الأشخاص ذوي الإعاقة هو جذر مستودع NeMo.
لتثبيت NeMo على أجهزة كمبيوتر Mac المزودة بوحدة معالجة الرسومات 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 افتراضيًا) من قائمة "ابدأ" واتبع التعليمات.
الخيار 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)، قم بتثبيت حزمة 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 ويقدم العديد من التحسينات لتدريب النماذج المستندة إلى 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 عبارة عن مكتبة لتوسيع نطاق النماذج الكبيرة القائمة على المحولات. تستفيد NeMo LLMs وMMs من 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 الآن LLMs وMMs وASR وTTS في حاوية Docker واحدة مدمجة. يمكنك العثور على معلومات إضافية حول الحاويات التي تم إصدارها على صفحة إصدارات NeMo.
لاستخدام حاوية تم إنشاؤها مسبقًا، قم بتشغيل التعليمات البرمجية التالية:
docker pull nvcr.io/nvidia/nemo:24.05
لإنشاء حاوية نيمو باستخدام 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.
للمساهمة بمقال في المجموعة، يرجى إرسال طلب سحب إلى فرع gh-pages-src
لهذا المستودع. للحصول على معلومات مفصلة، يرجى الرجوع إلى ملف التمهيد الموجود في فرع gh-pages-src.