Мы запустили новый проект, доступный на GitHub
Это дополнение OpenNMT-PY с точки зрения функций, но мы обновили много вещей.
Eole обрабатывает NMT, LLM, энкодеры, а также новую концепцию оценки в модели NMT См. Этот пост и эту новость
Если вы разработчик, переключитесь сейчас. Если вы только пользователь, то в ближайшее время мы опубликуем первые версии PY-PI.
OpenNMT-PY-это версия Pytorch проекта OpenNMT, фреймворк с открытым исходным кодом (MIT) перевод (и за его пределами!). Он предназначен для того, чтобы быть дружественным для исследований, чтобы попробовать новые идеи в переводе, языковом моделировании, суммировании и многих других задачах NLP. Некоторые компании доказали, что код готов к производству.
Мы любим вклад! Пожалуйста, посмотрите на проблемы, помеченные тегом приветствия взносов.
Прежде чем поднять проблему, убедитесь, что вы прочитали требования и полные примеры документации.
Если нет ошибки, пожалуйста, используйте форум или джактер, чтобы задать вопросы.
Существует пошаговый и объясненный Тут (благодаря ясмин мусульмане): Учебное пособие
Пожалуйста, попробуйте прочитать и/или следовать перед тем, как поднять проблемы новичков.
В противном случае вы можете просто взглянуть на шаги QuickStart
scaled_dot_product_attentionДля всех пользователей, включая NMT, теперь вы можете использовать Multikery вместо многоуровневого внимания (быстрее при обучении и выводе) и удалять смещения от всех линейных (QKV, а также модулей с питанием).
Если вы использовали предыдущие версии OpenNMT-PY, вы можете проверить изменение изменений или нарушения
Чтобы облегчить настройку и воспроизводимость, некоторые изображения Docker предоставляются через реестр контейнеров GitHub: https://github.com/opennmt/opennmt-py/pkgs/container/opennmt-py
Вы можете адаптировать рабочий процесс и создать свои собственные изображения (ы) в зависимости от конкретных потребностей, используя build.sh и Dockerfile в каталоге docker репо.
docker pull ghcr.io/opennmt/opennmt-py:3.4.3-ubuntu22.04-cuda12.1
Пример OneLiner для запуска контейнера и открыть раковину в нем
docker run --rm -it --runtime=nvidia ghcr.io/opennmt/opennmt-py:test-ubuntu22.04-cuda12.1
Примечание: вам необходимо установить инструментарий контейнера NVIDIA (ранее NVIDIA-Docker), чтобы правильно воспользоваться функциями CUDA/GPU.
В зависимости от ваших потребностей вы можете добавить различные флаги:
-p 5000:5000 чтобы переслать какой -то открытый порт из вашего контейнера на ваш хост;-v /some/local/directory:/some/container/directory для установки локального каталога в какой -то каталог контейнеров;--entrypoint some_command для непосредственного запуска какой-то конкретной команды в качестве точки входа контейнера (вместо оболочки Bash по умолчанию);Opennmt-py требует:
Установите OpenNMT-py из pip :
pip install OpenNMT-pyили из источника:
git clone https://github.com/OpenNMT/OpenNMT-py.git
cd OpenNMT-py
pip install -e . Примечание. Если вы сталкиваетесь MemoryError во время установки, попробуйте использовать pip с помощью --no-cache-dir .
(Необязательно) Некоторые расширенные функции (например, работающие на предварительные модели или конкретные преобразования) требуют дополнительных пакетов, вы можете установить их с:
pip install -r requirements.opt.txtApex настоятельно рекомендуется иметь быструю производительность (особенно Legacy FusedAdam Optimizer и FusedRmsnorm)
git clone https://github.com/NVIDIA/apex
cd apex
pip3 install -v --no-build-isolation --config-settings --build-option= " --cpp_ext --cuda_ext --deprecated_fused_adam --xentropy --fast_multihead_attn " ./
cd ..Внимание вспышки:
По состоянию на октябрь 2023 года. Всаждение 1 было поднято до Pytorch V2, но рекомендуется использовать Flash Hite 2 с V2.3.1 для поддержки внимания скользящего окна.
При использовании обычного position_encoding=True или utary с max_relative_positions=-1 openmt-py попытается использовать оптимизированный путь точечного продукта.
Если вы хотите использовать флэш -внимание, вам нужно сначала установить его вручную:
pip install flash-attn --no-build-isolation Если Flash Hatter 2 не установлено, то мы будем использовать F.scaled_dot_product_attention с PYTORCH 2.X
При использовании max_relative_positions > 0 или alibi max_relative_positions=-2 openmt-py будет использовать свой устаревший код для умножения матрицы.
Внимание Flash и F.scaled_dot_product_attention немного быстрее и сохраняет некоторую память GPU.
Awq:
Если вы хотите запустить вывод или квантовать модель AWQ, вам понадобится AutoAWQ.
Для Autoawq: Pip установить Autoawq
Полная HTML документация
Часто задаваемые вопросы
OpenNMT-PY работает как совместный проект с открытым исходным кодом. Проект был инкубирован Systran и Harvard NLP в 2016 году в Луа и перенесен в Pytorch в 2017 году.
Текущие сопровождающие (с 2018 года):
Франсуа Эрнандес Винсент Нгуен (Seedfall)
Если вы используете OpenNMT-PY для академической работы, пожалуйста, укажите первоначальную систему демонстрационную статью, опубликованную в ACL 2017:
@misc{klein2018opennmt,
title={OpenNMT: Neural Machine Translation Toolkit},
author={Guillaume Klein and Yoon Kim and Yuntian Deng and Vincent Nguyen and Jean Senellart and Alexander M. Rush},
year={2018},
eprint={1805.11462},
archivePrefix={arXiv},
primaryClass={cs.CL}
}