NVIDIA NeMo Framework — это масштабируемая облачная генерирующая среда искусственного интеллекта, созданная для исследователей и разработчиков PyTorch, работающих над моделями большого языка (LLM), мультимодальными моделями (MM), автоматическим распознаванием речи (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 и MM на основе NeMo Transformer используют NVIDIA Transformer Engine для обучения FP8 на графических процессорах NVIDIA Hopper, а также используют NVIDIA Megatron Core для масштабирования обучения модели Transformer.
LLM NeMo можно согласовать с современными методами, такими как SteerLM, оптимизация прямых предпочтений (DPO) и обучение с подкреплением на основе обратной связи с человеком (RLHF). Дополнительную информацию см. в разделе NVIDIA NeMo Aligner.
В дополнение к контролируемой точной настройке (SFT), NeMo также поддерживает новейшие методы эффективной точной настройки параметров (PEFT), такие как LoRA, P-Tuning, адаптеры и IA3. Полный список поддерживаемых моделей и методов см. в руководстве пользователя NeMo Framework.
LLM и MM NeMo можно развертывать и оптимизировать с помощью микросервисов NVIDIA NeMo.
Модели 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 включает в себя обширные рецепты, сценарии, утилиты и документацию для обучения специалистов NeMo LLM. Он также включает в себя автоконфигуратор NeMo Framework, который предназначен для поиска оптимальной параллельной конфигурации модели для обучения на конкретном кластере.
Чтобы быстро начать работу с программой запуска NeMo Framework, ознакомьтесь с руководствами по NeMo Framework. NeMo Framework Launcher в настоящее время не поддерживает обучение ASR и TTS, но скоро это будет сделано.
Начать работу с NeMo Framework легко. Современные предварительно обученные модели NeMo доступны бесплатно на Hugging Face Hub и NVIDIA NGC. Эти модели можно использовать для генерации текста или изображений, расшифровки аудио и синтеза речи всего за несколько строк кода.
У нас есть обширные учебные пособия, которые можно запустить в Google Colab или с помощью нашего контейнера NGC NeMo Framework. У нас также есть руководства для пользователей, которые хотят обучать модели 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 .
когда ваш PWD является корнем репозитория 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, если он не установлен.
Далее следуйте инструкциям для систем 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 — это библиотека для масштабирования больших моделей на основе Transformer. LLM и MM NeMo используют 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, в частности обратная нормализация текста, теперь является отдельным репозиторием. Он находится здесь: 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
Если вы решите работать с основной веткой, мы рекомендуем использовать контейнер 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 Framework.
Чтобы добавить статью в коллекцию, отправьте запрос на включение в ветку gh-pages-src
этого репозитория. Для получения подробной информации обратитесь к README, расположенному в ветке gh-pages-src.