EasyNLP เป็นชุดเครื่องมือ NLP ที่ครอบคลุมและใช้งานง่าย
EasyNLP เป็นการพัฒนา NLP ที่ใช้งานง่ายและแอปพลิเคชันเครื่องมือใน Pytorch เปิดตัวครั้งแรกในอาลีบาบาในปี 2564 มันถูกสร้างขึ้นด้วยกลยุทธ์การฝึกอบรมแบบกระจายที่ปรับขนาดได้และสนับสนุนชุดอัลกอริทึม NLP ที่ครอบคลุมสำหรับการใช้งาน NLP ต่างๆ EasyNLP ผสมผสานการกลั่นความรู้และการเรียนรู้ไม่กี่ครั้งสำหรับการเชื่อมโยงโมเดลที่ผ่านการฝึกอบรมมาก่อนขนาดใหญ่พร้อมกับโมเดลที่ได้รับความนิยมหลายรูปแบบที่ได้รับความนิยม มันมีกรอบการทำงานแบบครบวงจรของการฝึกอบรมแบบจำลองการอนุมานและการปรับใช้สำหรับแอปพลิเคชันในโลกแห่งความเป็นจริง มันขับมากกว่า 10 บัสและสถานการณ์ทางธุรกิจมากกว่า 20 สถานการณ์ภายในกลุ่มอาลีบาบา มันถูกรวมเข้ากับแพลตฟอร์มของผลิตภัณฑ์ AI (PAI) อย่างราบรื่นรวมถึง PAI-DSW สำหรับการพัฒนา PAI-DLC สำหรับการฝึกอบรมคลาวด์-เนทีฟ PAI-EAS สำหรับการให้บริการและ PAI-DESIGNER สำหรับการฝึกอบรมแบบจำลองรหัสศูนย์
เรามีชุดของบทความทางเทคนิคเกี่ยวกับฟังก์ชันการทำงานของ EasyNLP
คุณสามารถตั้งค่าจากแหล่งที่มา:
$ git clone https://github.com/alibaba/EasyNLP.git
$ cd EasyNLP
$ python setup.py installrepo นี้ได้รับการทดสอบใน 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 จัดเตรียมชุดเครื่องมือสำหรับชุดข้อมูลเบาะแสแบบเบนช์มาร์ก คุณสามารถใช้เพียงแค่คำสั่งนี้กับชุดข้อมูลเบาะแสมาตรฐาน
# 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 |
|---|---|---|---|---|---|---|---|
| P | 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) Chinese-Roberta-WWM-EXT:
| งาน | AFQMC | cmnli | CSL | iflytek | ocnli | tnews | WSC |
|---|---|---|---|---|---|---|---|
| P | 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) ชุดเครื่องมือนี้ยังมีรหัสบางส่วนที่แก้ไขจาก repos อื่น ๆ ภายใต้ใบอนุญาตโอเพนซอร์ซอื่น ๆ ดูไฟล์ประกาศสำหรับข้อมูลเพิ่มเติม
สแกนรหัส 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}
}