الإنجليزية |中文
أصبح التدريب المسبق جزءًا أساسيًا من تكنولوجيا الذكاء الاصطناعي. TencentPretrain عبارة عن مجموعة أدوات للتدريب المسبق والضبط الدقيق للبيانات ذات الأساليب المختلفة (مثل النص والرؤية). يتميز TencentPretrain بالتصميم المعياري. فهو يسهل استخدام نماذج ما قبل التدريب الموجودة، ويوفر واجهات للمستخدمين لمزيد من التوسع. باستخدام TencentPretrain، نقوم ببناء حديقة حيوانات نموذجية تحتوي على نماذج مدربة مسبقًا ذات خصائص مختلفة. يرث TencentPretrain مجموعة الأدوات مفتوحة المصدر UER (https://github.com/dbiir/UER-py/) ويوسعها لتشمل إطار تدريب مسبق متعدد الوسائط.
يحتوي TencentPretrain على الميزات التالية:
يستخدم هذا القسم عدة أمثلة شائعة الاستخدام لتوضيح كيفية استخدام TencentPretrain. تمت مناقشة المزيد من التفاصيل في قسم التعليمات. نستخدم أولاً BERT (نموذج ما قبل التدريب النصي) في مجموعة بيانات تصنيف مشاعر مراجعة الكتب. نحن نقوم بتدريب النموذج مسبقًا على مجموعة مراجعة الكتب ثم نقوم بضبطه على مجموعة بيانات تصنيف مشاعر مراجعة الكتب. هناك ثلاثة ملفات إدخال: مجموعة مراجعة الكتب، ومجموعة بيانات تصنيف مشاعر مراجعة الكتب، والمفردات. تم ترميز جميع الملفات بترميز UTF-8 وتم تضمينها في هذا المشروع.
تنسيق مجموعة BERT هو كما يلي (جملة واحدة في كل سطر ويتم تحديد المستندات بأسطر فارغة):
doc1-sent1
doc1-sent2
doc1-sent3
doc2-sent1
doc3-sent1
doc3-sent2
يتم الحصول على مجموعة مراجعة الكتب من مجموعة بيانات تصنيف مشاعر مراجعة الكتب. نقوم بإزالة التصنيفات وتقسيم المراجعة إلى جزأين من المنتصف لإنشاء مستند يتكون من جملتين (راجع book_review_bert.txt في مجلد المجموعة ).
تنسيق مجموعة بيانات التصنيف هو كما يلي:
label text_a
1 instance1
0 instance2
1 instance3
يتم فصل التسمية والمثيل بواسطة t . الصف الأول عبارة عن قائمة بأسماء الأعمدة. يجب أن يكون معرف التسمية عددًا صحيحًا بين (بما في ذلك) 0 وn-1 لتصنيف n-way.
نحن نستخدم ملف المفردات الصينية الخاص بـ Googlemodels /google_zh_vocab.txt ، والذي يحتوي على 21128 حرفًا صينيًا.
نقوم أولاً بالمعالجة المسبقة لمراجعة الكتاب. في مرحلة ما قبل المعالجة، يجب معالجة المجموعة بالتنسيق المطلوب بواسطة نموذج التدريب المسبق المحدد ( --data_processor ):
python3 preprocess.py --corpus_path corpora/book_review_bert.txt --vocab_path models/google_zh_vocab.txt
--dataset_path dataset.pt --processes_num 8 --data_processor bert
لاحظ أن ستة>=1.12.0 مطلوب.
تستغرق المعالجة المسبقة وقتًا طويلاً. يمكن أن يؤدي استخدام عمليات متعددة إلى تسريع سرعة المعالجة المسبقة ( --processes_num ). يتم استخدام رمز BERT بشكل افتراضي ( --tokenizer bert ). بعد المعالجة المسبقة، يتم تحويل النص الخام إلى dataset.pt ، وهو مدخل pretrain.py . ثم نقوم بتنزيل نموذج BERT الصيني المدرّب مسبقًا من Google google_zh_model.bin (بتنسيق TencentPretrain والنموذج الأصلي من هنا)، ووضعه في مجلد النماذج . نقوم بتحميل نموذج BERT الصيني المدرب مسبقًا ونقوم بتدريبه مسبقًا على مجموعة مراجعة الكتب. يتكون نموذج ما قبل التدريب عادةً من طبقات التضمين والتشفير والطبقات المستهدفة. لبناء نموذج ما قبل التدريب، يجب علينا تقديم المعلومات ذات الصلة. يحدد ملف التكوين ( --config_path ) الوحدات النمطية والمعلمات الفائقة المستخدمة في نماذج ما قبل التدريب. يمكن العثور على مزيد من التفاصيل في models/bert/base_config.json . لنفترض أن لدينا جهاز يحتوي على 8 وحدات معالجة رسوميات:
python3 pretrain.py --dataset_path dataset.pt --vocab_path models/google_zh_vocab.txt
--pretrained_model_path models/google_zh_model.bin
--config_path models/bert/base_config.json
--output_model_path models/book_review_model.bin
--world_size 8 --gpu_ranks 0 1 2 3 4 5 6 7
--total_steps 5000 --save_checkpoint_steps 1000 --batch_size 32
mv models/book_review_model.bin-5000 models/book_review_model.bin
لاحظ أن النموذج الذي تم تدريبه بواسطة pretrain.py تم ربطه باللاحقة التي تسجل خطوة التدريب ( --total_steps ). يمكننا إزالة اللاحقة لسهولة الاستخدام.
ثم نقوم بضبط النموذج المُدرب مسبقًا على مجموعة بيانات التصنيف النهائية. نحن نستخدم طبقات التضمين والتشفير من book_review_model.bin ، وهو ناتج pretrain.py :
python3 finetune/run_classifier.py --pretrained_model_path models/book_review_model.bin
--vocab_path models/google_zh_vocab.txt
--config_path models/bert/base_config.json
--train_path datasets/book_review/train.tsv
--dev_path datasets/book_review/dev.tsv
--test_path datasets/book_review/test.tsv
--epochs_num 3 --batch_size 32
المسار الافتراضي لنموذج المصنف المضبوط هو models/finetuned_model.bin . من الملاحظ أن حجم الدفعة الفعلي للتدريب المسبق هو --batch_size times --world_size ؛ حجم الدفعة الفعلي للمهمة النهائية (مثل التصنيف) هو --batch_size . ثم نقوم بالاستدلال باستخدام النموذج المضبوط بدقة.
python3 inference/run_classifier_infer.py --load_model_path models/finetuned_model.bin
--vocab_path models/google_zh_vocab.txt
--config_path models/bert/base_config.json
--test_path datasets/book_review/test_nolabel.tsv
--prediction_path datasets/book_review/prediction.tsv
--labels_num 2
--test_path يحدد مسار الملف المتوقع. يجب أن يحتوي الملف على عمود text_a. --prediction_path يحدد مسار الملف مع نتائج التنبؤ. نحتاج إلى تحديد عدد التصنيفات بشكل صريح بواسطة --labels_num . مجموعة البيانات المذكورة أعلاه عبارة عن مجموعة بيانات تصنيف ثنائية الاتجاه.
يوفر المحتوى أعلاه طرقًا أساسية لاستخدام TencentPretrain للمعالجة المسبقة والتدريب المسبق والضبط الدقيق والاستدلال. يمكن العثور على المزيد من حالات الاستخدام كاملة ➡️ Quickstart ⬅️ . تحتوي البداية السريعة الكاملة على حالات استخدام وفيرة، تغطي معظم سيناريوهات التطبيق ذات الصلة بالتدريب المسبق. من المستحسن أن يقوم المستخدمون بقراءة البداية السريعة الكاملة لاستخدام المشروع بشكل معقول.
يوفر هذا القسم روابط لمجموعة من ➡️ بيانات ما قبل التدريب ⬅️ . يمكن لـ TencentPretrain تحميل بيانات التدريب المسبق هذه مباشرةً.
يوفر هذا القسم روابط لمجموعة من ➡️ مجموعات البيانات النهائية ⬅️ . يمكن لـ TencentPretrain تحميل مجموعات البيانات هذه مباشرة.
بمساعدة TencentPretrain، قمنا بتدريب نماذج ذات خصائص مختلفة مسبقًا (على سبيل المثال نماذج تعتمد على طرائق ومشفرات وأهداف مختلفة). يمكن العثور على المقدمة التفصيلية للنماذج المدربة مسبقًا وروابط تنزيلها في ➡️modelzoo⬅️ . يمكن تحميل جميع النماذج المدربة مسبقًا بواسطة TencentPretrain مباشرةً.
يتم تنظيم TencentPretrain على النحو التالي:
TencentPretrain/
|--tencentpretrain/
| |--embeddings/ # contains modules of embedding component
| |--encoders/ # contains modules of encoder component such as RNN, CNN, Transformer
| |--decoders/ # contains modules of decoder component
| |--targets/ # contains modules of target component such as language modeling, masked language modeling
| |--layers/ # contains frequently-used NN layers
| |--models/ # contains model.py, which combines modules of different components
| |--utils/ # contains frequently-used utilities
| |--model_builder.py
| |--model_loader.py
| |--model_saver.py
| |--opts.py
| |--trainer.py
|
|--corpora/ # contains pre-training data
|--datasets/ # contains downstream tasks
|--models/ # contains pre-trained models, vocabularies, and configuration files
|--scripts/ # contains useful scripts for pre-training models
|--finetune/ # contains fine-tuning scripts for downstream tasks
|--inference/ # contains inference scripts for downstream tasks
|
|--preprocess.py
|--pretrain.py
|--README.md
|--README_ZH.md
|--requirements.txt
|--LICENSE
يتم تنظيم الكود بناءً على المكونات (مثل التضمينات وأجهزة التشفير). يمكن للمستخدمين استخدامه وتوسيع نطاقه بجهود قليلة.
يمكن العثور على أمثلة شاملة لاستخدام TencentPretrain في ➡️ التعليمات ⬅️، والتي تساعد المستخدمين على التنفيذ السريع لنماذج التدريب المسبق مثل BERT وGPT-2 وELMo وT5 وCLIP وضبط النماذج المدربة مسبقًا على مجموعة من المهام النهائية.
لقد تم استخدام TencentPretrain في الفوز بالحلول في العديد من المسابقات. في هذا القسم، نقدم بعض الأمثلة على استخدام TencentPretrain لتحقيق نتائج SOTA في المسابقات، مثل CLUE. راجع ➡️ حلول المنافسة ⬅️ للحصول على معلومات أكثر تفصيلاً.
@article{zhao2023tencentpretrain,
title={TencentPretrain: A Scalable and Flexible Toolkit for Pre-training Models of Different Modalities},
author={Zhao, Zhe and Li, Yudong and Hou, Cheng and Zhao, Jing and others},
journal={ACL 2023},
pages={217},
year={2023}
}