ملاحظات الإصدار
مقدمة
مصفوفة الدعم
أداء
تسريع تدريب المحولات
تسريع تدريب BERT
تسريع استنتاج المحولات
تسريع استنتاج BERT
تثبيت
التثبيت من PyPI
البناء من المصدر
ابدء
تدريب LightSeq من الصفر
تدريب LightSeq من Fairseq
تدريب LightSeq من Hugging Face BERT
استنتاج LightSeq من Fairseq
استنتاج LightSeq من عناق الوجه BERT
نشر LightSeq باستخدام خادم الاستدلال
استشهد بنا
نحن نوظف!
[2022.10.25] الإصدار v3.0.0، الذي يدعم التدريب والاستدلال المختلط الدقة int8. [中文介绍]
[2021.06.18] الإصدار v2.0.0 الذي يدعم التدريب المختلط الدقة على fp16. [中文介绍]
[2019.12.06] الإصدار v1.0.0، الذي يدعم الاستدلال المختلط الدقة fp16. [中文介绍]
LightSeq عبارة عن مكتبة تدريب واستدلال عالية الأداء لمعالجة التسلسل والتوليد المطبقة في CUDA. فهو يتيح حسابًا عالي الكفاءة لنماذج البرمجة اللغوية العصبية (NLP) والسيرة الذاتية (CV) الحديثة مثل BERT وGPT وTransformer وما إلى ذلك. ولذلك فهو مفيد جدًا للترجمة الآلية وتوليد النصوص وتصنيف الصور والمهام الأخرى ذات الصلة بالتسلسل.
تم إنشاء المكتبة على رأس مكتبة CUDA الرسمية (cuBLAS، Thrust، CUB) ووظائف kernel المخصصة التي تم دمجها وتحسينها خصيصًا لعائلة طرازات Transformer. بالإضافة إلى مكونات النموذج، توفر مكتبة الاستدلال أيضًا إدارة نماذج سهلة النشر وخدمة الواجهة الخلفية استنادًا إلى TensorRT Inference Server. باستخدام LightSeq، يمكن للمرء بسهولة تطوير بنية Transformer المعدلة مع القليل من التعليمات البرمجية الإضافية.
التدريب والاستدلال على LightSeq سريع جدًا. وفيما يلي الأداء العام:
يحقق تدريب LightSeq fp16 سرعة تصل إلى 3x ، مقارنة بتدريب PyTorch fp16.
يحقق تدريب LightSeq int8 سرعة تصل إلى 5x ، مقارنةً بـ PyTorch QAT (أي التدريب المدرك للتكميم).
يحقق استدلال LightSeq fp16 وint8 سرعة تصل إلى 12x و 15x ، مقارنة باستدلال PyTorch fp16، على التوالي.
يدعم LightSeq ميزات متعددة، كما هو موضح في الجدول أدناه.
سمات | قائمة الدعم |
---|---|
نموذج | محول، بيرت، بارت، GPT2، ViT، T5، MT5، XGLM، VAE، متعدد اللغات، MoE |
طبقة | التضمين، التشفير، فك التشفير، المعيار، المحسن |
دقة | FP32، FP16، int8 |
وضع | التدريب والاستدلال |
التوافق | Fairseq، معانقة الوجه، DeepSpeed |
خوارزمية فك التشفير | بحث الشعاع، بحث الشعاع المتنوع، أخذ العينات، CRF |
آحرون | تكميم الاتصالات التدرج، خوارزمية GEMM الضبط التلقائي |
يوضح الجدول أدناه أوضاع التشغيل والدقة التي تدعمها النماذج المختلفة حاليًا.
نماذج | تدريب fp16 | fp16 الاستدلال | التدريب int8 | int8 الاستدلال |
---|---|---|---|---|
محول | نعم | نعم | نعم | نعم |
بيرت | نعم | نعم | نعم | نعم |
جي بي تي 2 | نعم | نعم | نعم | نعم |
بارت | نعم | نعم | - | - |
T5 | - | نعم | - | - |
MT5 | - | نعم | - | - |
XGLM | - | نعم | - | - |
فيتامين | نعم | نعم | نعم | نعم |
ضريبة القيمة المضافة | - | نعم | - | - |
متعدد اللغات | - | نعم | - | نعم |
وزارة التربية والتعليم | - | نعم | - | - |
نحن نختبر تسريع تدريب LightSeq والاستدلال باستخدام دقة المزيج fp16 وint8 على طرازي Transformer وBERT. خط الأساس هو دقة المزيج PyTorch fp16. يتم اختبار تجارب التدريب على وحدة معالجة رسوميات A100 واحدة ويتم اختبار تجارب الاستدلال على ثماني وحدات معالجة رسومية A100.
المزيد من نتائج الأداء متاحة هنا.
حجم الرمز المميز للدفعة | باي تورش قطر | لايت سيك fp16 | لايت سيك int8 |
---|---|---|---|
512 | 0.36 | 1.99 | 1.86 |
1024 | 0.37 | 1.78 | 1.69 |
2048 | 0.37 | 1.56 | 1.50 |
4096 | 0.39 | 1.47 | 1.44 |
8192 | 0.41 | 1.44 | 1.44 |
15000 | 0.43 | 1.44 | 1.44 |
حجم الرمز المميز للدفعة | باي تورش قطر | لايت سيك fp16 | لايت سيك int8 |
---|---|---|---|
8 | 0.45 | 2.12 | 1.99 |
16 | 0.44 | 1.92 | 1.80 |
32 | 0.42 | 1.59 | 1.52 |
64 | 0.46 | 1.62 | 1.58 |
128 | 0.46 | 1.74 | 1.70 |
256 | 0.46 | 1.68 | 1.73 |
حجم الدفعة | طول التسلسل | لايت سيك fp16 | لايت سيك int8 |
---|---|---|---|
1 | 8 | 8.00 | 9.33 |
1 | 32 | 6.48 | 7.38 |
1 | 128 | 6.24 | 6.19 |
8 | 8 | 9.38 | 10.71 |
8 | 32 | 8.24 | 8.75 |
8 | 128 | 6.83 | 7.28 |
32 | 8 | 11.82 | 14.44 |
32 | 32 | 9.68 | 11.15 |
32 | 128 | 6.68 | 7.74 |
حجم الدفعة | طول التسلسل | لايت سيك fp16 | لايت سيك int8 |
---|---|---|---|
1 | 8 | 9.22 | 9.87 |
1 | 32 | 10.51 | 11.30 |
1 | 128 | 9.96 | 10.85 |
8 | 8 | 9.88 | 10.33 |
8 | 32 | 7.79 | 8.22 |
8 | 128 | 4.04 | 4.35 |
32 | 8 | 10.60 | 11.02 |
32 | 32 | 8.11 | 8.85 |
32 | 128 | 1.82 | 2.04 |
يمكنك تثبيت LightSeq من PyPI، الذي يدعم فقط Python 3.6 إلى 3.8 على Linux:
نقطة تثبيت Lightseq
يمكنك أيضًا البناء من المصدر:
PATH=/usr/local/hdf5/:$PATH ENABLE_FP32=0 ENABLE_DEBUG=0 تثبيت النقطة -e $PROJECT_DIR
مقدمة مفصلة للبناء متاحة هنا.
نحن نقدم عدة نماذج هنا لإظهار استخدام LightSeq. راجع دليل المستخدم الكامل والأمثلة لمزيد من التفاصيل.
يمكنك استخدام الوحدات التي توفرها LightSeq لإنشاء نماذجك الخاصة. فيما يلي مثال لبناء طبقة تشفير المحولات.
أولاً، قم باستيراد وحدة تشفير LightSeq Transformer:
من lightseq.training استيراد LSTransformerEncoderLayer
بعد ذلك، قم بإنشاء تكوين برنامج تشفير، وقم بإنشاء طبقة تشفير LightSeq Transformer تمت تهيئتها بالتكوين:
التكوين = LSTransformerEncoderLayer.get_config(max_batch_tokens=4096,max_seq_len=512,hidden_size=1024,intermediate_size=4096,nhead=16,attn_prob_d نسبة ropout_ratio=0.1,activation_dropout_ratio=0.1,hidden_dropout_ratio=0.1,pre_layer_norm=True,activation_fn="relu",fp16=True,local_rank=0, ) طبقة = LSTransformerEncoderLayer (التكوين)
بالإضافة إلى طبقات التشفير، يمكن إنشاء الوحدات الأخرى باستخدام طرق مشابهة، ثم يتم تدريبها كنماذج PyTorch عادية.
المزيد من الاستخدام متاح هنا.
يقوم LightSeq بدمج جميع الوحدات السريعة والخفيفة في Fairseq.
قم أولاً بتثبيت المتطلبين التاليين:
تثبيت النقطة fairseq==0.10.2 sacremoses
يمكنك تدريب مهمة الترجمة ذات الدقة المختلطة fp16 على مجموعة بيانات wmt14 en2de من خلال:
أمثلة ش/التدريب/fairseq/ls_fairseq_wmt14en2de.sh
(اختياري) يمكنك بعد ذلك بدء التدريب على دقة المزيج int8 على أساس نماذج التدريب المسبق لـ fp16 عن طريق:
أمثلة ش/training/fairseq/ls_fairseq_quant_wmt14en2de.sh
المزيد من الاستخدام متاح هنا.
يستبدل LightSeq طبقات التشفير الخاصة بـ Hugging Face BERT بطبقات LightSeq السريعة.
أولاً يجب عليك تثبيت هذه المتطلبات:
نقاط تثبيت المحولات مجموعات البيانات seqeval
قبل القيام بالتدريب التالي، تحتاج إلى التبديل إلى الدليل التالي:
أمثلة القرص المضغوط/التدريب/المعانقة/بيرت
ومن ثم يمكنك بسهولة ضبط BERT لمهام مختلفة. بأخذ مهمة التعرف على الكيان المسمى كمثال، يمكنك تدريب BERT بدقة مختلطة fp16 باستخدام:
بيثون Task_ner/run_ner.sh
(اختياري) يمكنك أيضًا بدء التدريب على دقة المزيج int8 على أساس نماذج التدريب المسبق لـ fp16 من خلال:
بايثون Task_ner/run_quant_ner.sh
المزيد من الاستخدام متاح هنا.
بعد التدريب باستخدام البرامج النصية المذكورة أعلاه، يمكنك استنتاج النماذج بسرعة باستخدام LightSeq.
يجب عليك تحويل أوزان fp16 PyTorch إلى LightSeq protobuf أو HDF5:
بايثون Export/fairseq/ls_fs_transformer_export.py
(اختياري) يمكنك أيضًا تحويل أوزان int8 PyTorch إلى LightSeq protobuf أو HDF5:
بايثون Export/fairseq/ls_fs_quant_transformer_export.py
بمجرد الحصول على أوزان LightSeq، يمكنك استنتاجها بسرعة باستخدام الكود التالي:
استيراد lightseq.inference كـ lsimodel = lsi.Transformer(MODEL_PATH, MAX_BATCH_SIZE)results = model.infer([[63, 47, 65, 1507, 88, 74, 10, 2057, 362, 9, 284, 6, 2, 1) ]])
هنا MODEL_PATH هو مسار أوزان LightSeq وMAX_BATCH_SIZE هو الحد الأقصى لحجم الدُفعة من جمل الإدخال الخاصة بك.
يمكنك أيضًا استنتاج أوزان int8 LightSeq سريعًا عن طريق استبدال lsi.Transformer
بـ lsi.QuantTransformer
.
المزيد من الاستخدام متاح هنا.
نحن نقدم مثالاً على قاعدة bert end2end لمعرفة مدى سرعة مقارنة Lightseq مع Hugging Face الأصلي.
يجب عليك أولاً تثبيت المتطلبات وتحديد موقع الدليل المحدد:
تثبيت النقطة - أمثلة على المحولات (CD) / الاستدلال / python
ثم يمكنك التحقق من الأداء بمجرد تشغيل الأوامر التالية. يتم استخدام hf_bert_export.py
لتحويل أوزان PyTorch إلى LightSeq protobuf أو HDF5.
بايثون Export/huggingface/hf_bert_export.py اختبار بايثون/ls_bert.py
المزيد من الاستخدام متاح هنا.
نحن نقدم صورة عامل إرساء تحتوي على مكتبة الارتباط الديناميكي tritonserver وLightSeq، ويمكنك نشر خادم الاستدلال ببساطة عن طريق استبدال ملف النموذج بملف النموذج الخاص بك.
Sudo docker pull hexisyztem/tritonserver_lightseq:22.01-1
المزيد من الاستخدام متاح هنا.
إذا كنت تستخدم LightSeq في بحثك، فيرجى الاستشهاد بالأبحاث التالية.
@InProceedings{wang2021lightseq, title = "{L}ight{S}eq: A High Performance Inference Library for Transformers", author = "Wang, Xiaohui and Xiong, Ying and Wei, Yang and Wang, Mingxuan and Li, Lei", booktitle = "Proceedings of the 2021 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Industry Papers (NAACL-HLT)", month = jun, year = "2021", publisher = "Association for Computational Linguistics", pages = "113--120", } @article{wang2021lightseq2, title={LightSeq2: Accelerated Training for Transformer-based Models on GPUs}, author={Wang, Xiaohui and Xiong, Ying and Qian, Xian and Wei, Yang and Li, Lei and Wang, Mingxuan}, journal={arXiv preprint arXiv:2110.05722}, year={2021} }
يقوم فريق LightSeq بتوظيف متدربين ومتدربين بدوام كامل من ذوي الخلفيات في نظام التعلم العميق، ومعالجة اللغة الطبيعية، ورؤية الكمبيوتر، والكلام، وما إلى ذلك . نحن موجودون في بكين وشانغهاي. إذا كنت مهتمًا، فيرجى إرسال سيرتك الذاتية إلى [email protected].