1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/paddlepaddle-PALM

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 09.03.2025 20:01 0e9af83

PaddlePALM

English | Chinese

PaddlePALM (PArallel Learning from Multi-tasks) — это гибкий, универсальный и легко используемый NLP-фреймворк для масштабной предобученной подготовки и обучения с несколькими задачами. PALM представляет собой верхнеуровневый фреймворк, предназначенный для быстрого создания высокопроизводительных моделей NLP.

С помощью PaddlePALM можно легко исследовать модели чтения и понимания с высокой устойчивостью, обученные с использованием различных вспомогательных задач. Модели, обученные на основе PALM D-Net, заняли первое место на международном конкурсе по чтению и пониманию текста EMNLP2019.

Sample

Рейтинг MRQA2019

Кроме снижения затрат на исследования в области NLP, PaddlePALM был применён в "поисковой системе Baidu", что значительно повысило точность понимания запросов пользователей и качество найденных ответов, обеспечивая высокую надёжность и производительность обучения и вывода.

Основные характеристики:- Легко использовать: с помощью PALM можно реализовать типичную задачу NLP всего за 8 шагов. Кроме того, основные сети, инструменты для чтения данных и слои выходных данных задач уже разделены, поэтому достаточно небольших изменений в коде, чтобы заменить любой компонент другим.

  • Поддержка обучения с несколькими задачами: можно реализовать задачи обучения с несколькими задачами всего за 6 шагов.
  • Поддержка крупномасштабного обучения и предобучения: автоматическое использование нескольких GPU для ускорения обучения и вывода. Распределённое обучение на кластере требует меньшего количества кода.
  • Популярные NLP-скелеты и предобученные модели: включает множество передовых общих архитектур и предобученных моделей (например, BERT, ERNIE, RoBERTa и т.д.).
  • Лёгкая кастомизация: поддерживает кастомизацию любого компонента (например, основной сети, головы задач, инструменты для чтения данных и оптимизаторы) вместе с повторным использованием заранее определённых компонентов, что даёт разработчикам большую гибкость и эффективность при адаптации к различным сценариям NLP.Вы можете легко воспроизвести хорошую производительность с минимальным количеством кода, охватывая большинство задач NLP, таких как классификация, соответствие, последовательное маркирование, чтение и понимание текста, понимание диалогов и многое другое. Дополнительные детали можно найти в examples.
Датасет
chnsenticorp Пары вопросов Quora MSRA-NER
(SIGHAN2006)
CMRC2018

Метрика

точность
F1-мера
точность
F1-мера
F1-мера
EM
F1-мера
тест
тест
тест
разработка
ERNIE Base 95.8 95.8 86.2 82.2 99.2 64.3 85.2
## Обзор пакета

Пример

Схема архитектуры PALM

PaddlePALM — это хорошо спроектированный высокий уровень NLP-фреймворк. Лёгкий код PaddlePALM может эффективно реализовать наблюдаемое обучение, необучаемое/автономное обучение, мультизадачное обучение и перенос обучения. В архитектуре PaddlePALM есть три слоя, от нижнего до верхнего: компонентный слой, трейнер слой и слой высокого уровня трейнера.

В компонентном слое PaddlePALM предоставляются шесть расщепленных компонентов для выполнения задач NLP. Каждый компонент включает множество заранее определённых классов и базового класса. Заранее определённые классы предназначены для типичных задач NLP, в то время как базовый класс помогает пользователям создать новый класс (на основе заранее определённых классов или базовых классов).

Трейнер слой используется для создания вычислительной графики с выбранными компонентами, тренировки и прогнозирования. Этот слой описывает стратегии обучения, сохранение и загрузку моделей, оценку и процесс прогнозирования. Один трейнер может обрабатывать только одну задачу.Высокий уровень трейнера слой используется для сложных стратегий обучения и вывода, таких как мультизадачное обучение. Вы можете добавить вспомогательные задачи для тренировки устойчивых NLP-моделей (повышение производительности модели на тестовой выборке и за её пределами) или совместного обучения нескольких связанных задач для повышения производительности каждого из них.| Модуль | Описание | | - | - | | paddlepalm | Высокий уровень NLP-предварительной подготовки и мультизадачного обучения на основе фреймворка PaddlePaddle. | | paddlepalm.reader | Предопределённые инструменты для чтения и предобработки данных задач. | | paddlepalm.backbone | Предопределённые основные сети, такие как BERT, ERNIE, RoBERTa. | | paddlepalm.head | Предопределённые выходные слои задач. | | paddlepalm.lr_sched | Предопределённые стратегии планирования скорости обучения. | | paddlepalm.optimizer | Предопределённые оптимизаторы. | | paddlepalm.downloader | Модуль управления и загрузки предварительно обученных моделей. | | paddlepalm.Trainer | Единицы обучения/прогнозирования задач. Трейнеры используются для создания вычислительной графики, управления процессами обучения и оценки, реализации сохранения/загрузки моделей/точек контроля и предварительно обученных моделей/точек контроля. | | paddlepalm.MultiHeadTrainer | Модуль для выполнения мультизадачного обучения/прогнозирования. Один MultiHeadTrainer основан на нескольких трейнерах. Реализует повторное использование основных сетей между задачами, мультизадачное обучение и вывод. |

Установка

PaddlePALM поддерживает Python 2 и Python 3, Linux и Windows, CPU и GPU. Первым методом установки PaddlePALM является через pip. Просто запустите следующую команду:

pip install paddlepalm

Установка из исходного кода```shell

git clone https://github.com/PaddlePaddle/PALM.git cd PALM && python setup.py install


### Библиотечные зависимости
- Python >= 2.7
- CUDA >= 9.0
- cuDNN >= 7.0
- PaddlePaddle >= 1.7.0 (пожалуйста, обратитесь к [инструкциям по установке](http://www.paddlepaddle.org/#quick-start))

### Загрузка предобученных моделей
Мы предоставляем множество предобученных моделей для инициализации параметров основной сети модели. Обучение больших NLP-моделей, таких как 12-слойные Transformer, с использованием предобученной модели фактически более эффективно, чем случайная инициализация. Чтобы просмотреть все доступные предобученные модели и скачать их, выполните следующий код в интерпретаторе Python (введите команду `python` в shell):

```python
>>> from paddlepalm import downloader
>>> downloader.ls('pretrain')
Доступные предобученные элементы:
  => RoBERTa-zh-base
  => RoBERTa-zh-large
  => ERNIE-v2-en-base
  => ERNIE-v2-en-large
  => XLNet-cased-base
  => XLNet-cased-large
  => ERNIE-v1-zh-base
  => ERNIE-v1-zh-base-max-len-512
  => BERT-en-uncased-large-whole-word-masking
  => BERT-en-cased-large-whole-word-masking
  => BERT-en-uncased-base
  => BERT-en-uncased-large
  => BERT-en-cased-base
  => BERT-en-cased-large
  => BERT-multilingual-uncased-base
  => BERT-multilingual-cased-base
  => BERT-zh-base

>>> downloader.download('pretrain', 'BERT-en-uncased-base', './pretrain_models')
...

Использование

Быстрый старт8 шагов для запуска типичной задачи обучения NLP:

  1. Используйте paddlepalm.reader для создания reader, который будет загружать данные и генерировать входные признаки. Затем вызовите метод reader.load_data для загрузки данных обучения.
  2. Используйте paddlepalm.load_data для создания основной сети модели для извлечения текстовых признаков (например, контекстных словных вложений, вложений предложений).
  3. Используйте reader.register_with для регистрации reader с основной сетью. После этого шага reader сможет использовать входные признаки, созданные основной сетью.
  4. Используйте paddlepalm.head. Создайте голову задачи, которая может предоставлять потери обучения для тренировки и прогнозные результаты для модели.
  5. Используйте paddlepalm.Trainer для создания тренера задачи, затем используйте Trainer.build_forward для построения графа прямого распространения, содержащего основную сеть и голову задачи (созданные на шагах 2 и 4).
  6. Используйте paddlepalm.optimizer (если требуется, создайте paddlepalm.lr_sched) для создания оптимизатора, затем используйте train.build_back для обратного построения.
  7. Используйте trainer.fit_reader для передачи подготовленного reader и данных (реализовано на шаге 1) тренеру.
  8. Используйте trainer.load_pretrain для загрузки предобученной модели или используйте trainer.load_pretrain для загрузки checkpoint, или не загружайте никакие обученные параметры, а затем используйте trainer.train для обучения.Дополнительные реализационные детали см. в примерах:- Эмоциональный анализ

Обучение с несколькими задачами

Обучение с несколькими задачами выполняется следующим образом:

  1. Повторите создание компонентов (выполните шаги 1–5 для каждой задачи).
  2. Создайте пустой Trainer (каждый Trainer соответствует одной задаче), а затем используйте их для создания MultiHeadTrainer.
  3. Используйте multi_head_trainer.build_forward для построения многозадачной графики прямого распространения.
  4. Используйте paddlepalm.optimizer (если требуется, создайте paddlepalm.lr_sched) для создания оптимизатора, а затем используйте multi_head_trainer.build_backward для создания обратного распространения.
  5. Используйте multi_head_trainer.fit_readers, чтобы поместить все подготовленные читатели и данные в multi_head_trainer.
  6. Используйте multi_head_trainer.load_pretrain для загрузки предобученной модели или используйте multi_head_trainer.load_checkpoint для загрузки checkpoint, либо не загружайте уже обученные параметры, а затем используйте multi_head_trainer.train для обучения.

Сохранение/загрузка multi_head_trainer и прогнозирование аналогичны операциям с trainer.

Дополнительные реализационные детали multi_head_trainer см. в:- ATIS: Совместное обучение намерений диалога и заполнения слотов

Настройка saver

При сохранении моделей/checkpoints и логов во время обучения вызовите метод trainer.set_saver. Дополнительные реализационные детали см. здесь:ссылка.

Оценка/Прогнозирование

После завершения обучения выполните прогнозирование и оценку, создав дополнительного читателя, основной блок и голову (повторите шаги 1–4 выше), при этом важно указать phase='predict' при создании. Затем используйте метод predict тренера для прогнозирования (необходимость создания дополнительного тренера отсутствует). Дополнительные реализационные детали см. здесь:ссылка.

Использование нескольких GPU

Если ваша среда имеет несколько GPU, вы можете контролировать количество и индексы этих GPU через переменные окружения CUDA_VISIBLE_DEVICES. Например, если у вас есть четыре GPU с индексами 0, 1, 2, 3, вы можете запустить команду, чтобы использовать только GPU2.

CUDA_VISIBLE_DEVICES=2 python run.py

Использование нескольких GPU требует разделения номеров GPU запятой. Например, чтобы использовать GPU 2 и GPU 3, выполните следующую команду:

CUDA_VISIBLE_DEVICES=2,3 python run.py
```В режиме работы с несколькими GPU PaddlePALM автоматически распределяет данные каждого батча между доступными GPU. Например, если `batch_size` установлен в 64, и есть 4 GPU доступных для использования PaddlePALM, то фактический размер батча на каждом GPU будет равен 64 / 4 = 16. Поэтому **при использовании нескольких GPU важно, чтобы значение batch_size делилось на количество доступных GPU без остатка**.

## Лицензионное соглашение

Этот гайд предоставлен [PaddlePaddle](https://github.com/PaddlePaddle/Paddle) и лицензирован под [лицензией Apache-2.0](https://github.com/PaddlePaddle/models/blob/develop/LICENSE).

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/paddlepaddle-PALM.git
git@api.gitlife.ru:oschina-mirror/paddlepaddle-PALM.git
oschina-mirror
paddlepaddle-PALM
paddlepaddle-PALM
master