EasyNLP는 포괄적이고 사용하기 쉬운 NLP 툴킷입니다
EASYNLP는 Pytorch의 사용하기 쉬운 NLP 개발 및 애플리케이션 툴킷으로 2021 년 알리바바에서 처음 출시되었습니다. 확장 가능한 분산 교육 전략으로 구축되었으며 다양한 NLP 애플리케이션을위한 포괄적 인 NLP 알고리즘을 지원합니다. EasynLP는 다양한 인기있는 다중 모전성 미리 훈련 된 모델과 함께 대규모 미리 훈련 된 모델을 착륙하기위한 지식 증류 및 소수의 학습을 통합합니다. 실제 응용 프로그램을위한 모델 교육, 추론 및 배포의 통합 프레임 워크를 제공합니다. Alibaba Group 내에서 10 개 이상의 버스와 20 개 이상의 비즈니스 시나리오에 구동되었습니다. PAI-DSW 개발, 클라우드 네이티브 교육 용 PAI-DLC, 서빙을위한 PAI-EAS 및 제로 코드 모델 교육을 포함한 AI (Pai) 제품 플랫폼에 완벽하게 통합됩니다.
Easynlp의 기능에 관한 일련의 기술 기사가 있습니다.
소스에서 설정할 수 있습니다.
$ git clone https://github.com/alibaba/EasyNLP.git
$ cd EasyNLP
$ python setup.py install이 repo는 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_classifyAppZoo의 사용법에 대한 자세한 내용은 문서를 참조하십시오.
Easynlp는 현재 Modelzoo에서 다음과 같은 모델을 제공합니다.
Easynlp에서 이러한 모델의 사용에 대해서는이 readme를 참조하십시오. 한편 Easynlp는 Huggingface/Transformers에서 사전 이식 된 모델을로드하는 것을 지원합니다. 자세한 내용은이 자습서를 참조하십시오.
EASYNLP는 또한 시각적 지식이 필요한 비전 언어 작업을 지원하기 위해 다양한 인기있는 다중 모전성 미리 훈련 된 모델을 지원합니다. 예를 들어, 텍스트 이미지 일치를위한 클립 스타일 모델과 텍스트-이미지 생성을위한 Dalle 스타일 모델이 장착되어 있습니다.
Easynlp는 대규모 미리 훈련 된 모델을 착륙시키는 데 도움이되는 소수의 학습 및 지식 증류를 제공합니다.
EasyNLP는 단서 데이터 세트를 벤치마킹하기위한 간단한 툴킷을 제공합니다. 단순히이 명령 만 사용하여 단서 데이터 세트를 벤치마킹 할 수 있습니다.
# Format: bash run_clue.sh device_id train/predict dataset
# e.g.:
bash run_clue.sh 0 train csl우리는 데이터 세트에서 Chiese Bert와 Roberta Models를 테스트했습니다. DEV 세트의 결과는 다음과 같습니다.
(1) Bert-Base-Chinese :
| 일 | 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% |
자세한 단서 벤치 마크 예는 다음과 같습니다.
이 프로젝트는 Apache 라이센스 (버전 2.0)에 따라 라이센스가 부여됩니다. 이 툴킷에는 다른 오픈 소스 라이센스에 따라 다른 저장소에서 수정 된 일부 코드도 포함되어 있습니다. 자세한 내용은 통지 파일을 참조하십시오.
다음 QR 코드를 스캔하여 Dingtalk 토론 그룹에 가입하십시오. 그룹 토론은 대부분 중국어로 이루어 지지만 영어도 환영합니다.
Easynlp 라이브러리를 인용 할 수있는 arxiv 종이가 있습니다.
@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}
}