EasyNlp-это всеобъемлющий и простой в использовании NLP Toolkit
EasyNLP-это простой в использовании инструментарий для разработки и применения NLP в Pytorch, впервые выпущенный внутри Alibaba в 2021 году. Он построен из масштабируемых распределенных стратегий обучения и поддерживает комплексный набор алгоритмов NLP для различных применений НЛП. EasyNLP объединяет дистилляцию знаний и несколько выстрелов для посадки крупных предварительно обученных моделей, а также различные популярные многомодальные предварительно обученные модели. Он обеспечивает унифицированную структуру модельного обучения, вывода и развертывания для реальных приложений. Он включил более 10 автобусов и более 20 бизнес -сценариев в группе Alibaba. Он плавно интегрирован в продукты Platform of AI (PAI), включая PAI-DSW для разработки, PAI-DLC для обучения облачных костюмах, PAI-EAS для обслуживания и DESIGNER для обучения модели с нулевым кодом.
У нас есть серия технических статей о функциональных возможностях easynlp.
Вы можете настроить из источника :
$ git clone https://github.com/alibaba/EasyNLP.git
$ cd EasyNLP
$ python setup.py installЭтот репо протестирован на Python 3.6, Pytorch> = 1,8.
Теперь давайте покажем, как использовать всего несколько строк кода для создания модели классификации текста на основе BERT.
from easynlp . appzoo import ClassificationDataset
from easynlp . appzoo import get_application_model , get_application_evaluator
from easynlp . core import Trainer
from easynlp . utils import initialize_easynlp , get_args
from easynlp . utils . global_vars import parse_user_defined_parameters
from easynlp . utils import get_pretrain_model_path
initialize_easynlp ()
args = get_args ()
user_defined_parameters = parse_user_defined_parameters ( args . user_defined_parameters )
pretrained_model_name_or_path = get_pretrain_model_path ( user_defined_parameters . get ( 'pretrain_model_name_or_path' , None ))
train_dataset = ClassificationDataset (
pretrained_model_name_or_path = pretrained_model_name_or_path ,
data_file = args . tables . split ( "," )[ 0 ],
max_seq_length = args . sequence_length ,
input_schema = args . input_schema ,
first_sequence = args . first_sequence ,
second_sequence = args . second_sequence ,
label_name = args . label_name ,
label_enumerate_values = args . label_enumerate_values ,
user_defined_parameters = user_defined_parameters ,
is_training = True )
valid_dataset = ClassificationDataset (
pretrained_model_name_or_path = pretrained_model_name_or_path ,
data_file = args . tables . split ( "," )[ - 1 ],
max_seq_length = args . sequence_length ,
input_schema = args . input_schema ,
first_sequence = args . first_sequence ,
second_sequence = args . second_sequence ,
label_name = args . label_name ,
label_enumerate_values = args . label_enumerate_values ,
user_defined_parameters = user_defined_parameters ,
is_training = False )
model = get_application_model ( app_name = args . app_name ,
pretrained_model_name_or_path = pretrained_model_name_or_path ,
num_labels = len ( valid_dataset . label_enumerate_values ),
user_defined_parameters = user_defined_parameters )
trainer = Trainer ( model = model , train_dataset = train_dataset , user_defined_parameters = user_defined_parameters ,
evaluator = get_application_evaluator ( app_name = args . app_name , valid_dataset = valid_dataset , user_defined_parameters = user_defined_parameters ,
eval_batch_size = args . micro_batch_size ))
trainer . train ()Полный пример можно найти здесь.
Вы также можете использовать инструменты командной строки Appzoo для быстрого обучения модели приложения. Возьмите текстовую классификацию в наборе данных SST-2 в качестве примера. Сначала вы можете скачать train.tsv и dev.tsv, затем начать обучение:
$ easynlp
--mode=train
--worker_gpu=1
--tables=train.tsv,dev.tsv
--input_schema=label:str:1,sid1:str:1,sid2:str:1,sent1:str:1,sent2:str:1
--first_sequence=sent1
--label_name=label
--label_enumerate_values=0,1
--checkpoint_dir=./classification_model
--epoch_num=1
--sequence_length=128
--app_name=text_classify
--user_defined_parameters= ' pretrain_model_name_or_path=bert-small-uncased 'А затем предсказать:
$ easynlp
--mode=predict
--tables=dev.tsv
--outputs=dev.pred.tsv
--input_schema=label:str:1,sid1:str:1,sid2:str:1,sent1:str:1,sent2:str:1
--output_schema=predictions,probabilities,logits,output
--append_cols=label
--first_sequence=sent1
--checkpoint_path=./classification_model
--app_name=text_classifyЧтобы узнать больше об использовании Appzoo, обратитесь к нашей документации.
EasyNLP в настоящее время предоставляет следующие модели в ModelZoo:
Пожалуйста, обратитесь к этому Readme для использования этих моделей в EasyNLP. Между тем, EasyNLP поддерживает для загрузки предварительных моделей из HuggingFace/Transformers, пожалуйста, обратитесь к этому руководству для получения подробной информации.
EasyNLP также поддерживает различные популярные многомодальные предварительно обученные модели для поддержки задач на языке зрения, которые требуют визуальных знаний. Например, он оснащен моделями в стиле клипа для моделей в стиле текста и в стиле Dalle для генерации текста до изображения.
EasyNLP обеспечивает несколько выстрелов в обучении и дистилляции знаний, чтобы помочь получить большие предварительно обученные модели.
EasyNLP предоставляет простой инструментарий для контрольных наборов данных. Вы можете просто использовать только эту команду для набора данных Clackmark Clithmark.
# Format: bash run_clue.sh device_id train/predict dataset
# e.g.:
bash run_clue.sh 0 train cslМы протестировали модели наборов данных Chiese Bert и Roberta, результаты набора Dev:
(1) Берт-базовый китайз:
| Задача | AFQMC | Cmnli | CSL | Iflytek | Ocnli | Tnews | WSC |
|---|---|---|---|---|---|---|---|
| П | 72,17% | 75,74% | 80,93% | 60,22% | 78,31% | 57,52% | 75,33% |
| F1 | 52,96% | 75,74% | 81,71% | 60,22% | 78,30% | 57,52% | 80,82% |
(2) Китайский роберта-WWM-Ext:
| Задача | AFQMC | Cmnli | CSL | Iflytek | Ocnli | Tnews | WSC |
|---|---|---|---|---|---|---|---|
| П | 73,10% | 80,75% | 80,07% | 60,98% | 80,75% | 57,93% | 86,84% |
| F1 | 56,04% | 80,75% | 81,50% | 60,98% | 80,75% | 57,93% | 89,58% |
Вот подробный пример Clue Benchmark.
Этот проект лицензирован по лицензии Apache (версия 2.0). Этот инструментарий также содержит некоторый код, измененный из других репо, по другим лицензиям с открытым исходным кодом. См. Файл уведомления для получения дополнительной информации.
Сканируйте следующие QR -коды, чтобы присоединиться к дискуссионной группе Dingtalk. Групповые дискуссии в основном на китайском языке, но английский также приветствуется.
У нас есть бумага для Arxiv, чтобы вы могли процитировать библиотеку EasyNLP:
@article{easynlp,
doi = {10.48550/ARXIV.2205.00258},
url = {https://arxiv.org/abs/2205.00258},
author = {Wang, Chengyu and Qiu, Minghui and Zhang, Taolin and Liu, Tingting and Li, Lei and Wang, Jianing and Wang, Ming and Huang, Jun and Lin, Wei},
title = {EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing},
publisher = {arXiv},
year = {2022}
}