EasyNLP عبارة عن مجموعة أدوات شاملة وسهلة الاستخدام
EasyNLP عبارة عن مجموعة أدوات لتطوير وتطبيق NLP سهلة الاستخدام في Pytorch ، تم إصدارها لأول مرة داخل Alibaba في عام 2021. تم تصميمها باستراتيجيات تدريب موزعة قابلة للتطوير ويدعم مجموعة شاملة من خوارزميات NLP لمختلف تطبيقات NLP. يدمج EasyNLP تقطير المعرفة والتعلم قليلًا من التعلم للهبوط في نماذج كبيرة تم تدريبه مسبقًا ، إلى جانب مختلف النماذج الشهيرة التي تم تدريبها مسبقًا. ويوفر إطارًا موحدًا للتدريب النموذجي ، والاستدلال ، ونشر التطبيقات في العالم الحقيقي. لقد عملت على أكثر من 10 حافلات وأكثر من 20 سيناريوهات عمل داخل مجموعة Alibaba. تم دمجها بسلاسة مع منصة لمنتجات AI (PAI) ، بما في ذلك PAI-DSW للتطوير ، PAI-DLC للتدريب على الناطقة بالمواد السحابية ، PAIS للخدمة ، و PAI-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 مجموعة أدوات بسيطة لترسيخ مجموعات بيانات الأدلة. يمكنك ببساطة استخدام هذا الأمر فقط لتقييم مجموعة بيانات Clue.
# Format: bash run_clue.sh device_id train/predict dataset
# e.g.:
bash run_clue.sh 0 train cslلقد اختبرنا موديلات Chiese Bert و Roberta في مجموعات البيانات ، ونتائج مجموعة 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. مناقشات المجموعة هي في الغالب باللغة الصينية ، ولكن اللغة الإنجليزية موضع ترحيب أيضًا.
لدينا ورقة 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}
}