التقرير الفني: Longqlora: طريقة فعالة وفعالة لتوسيع طول سياق نماذج اللغة الكبيرة
Longqlora هي طريقة فعالة وفعالة للذاكرة لتوسيع طول سياق نماذج اللغة الكبيرة مع وحدات معالجة الرسومات التدريبية الأقل تدريبًا. على وحدة معالجة الرسومات 32GB V100 ، يمكن لـ Longqlora تمديد طول سياق LLAMA2 7B و 13B من 4096 إلى 8192 وحتى 12 كيلو. يحقق Longqlora أداءً تنافسيًا للحيرة على PG19 ومجموعة بيانات الإثبات بعد 1000 خطوة فقط ، يتفوق طرازنا على Longlora وهو قريب جدًا من MPT-7B-8K.
حيرة التقييم على مجموعات بيانات التحقق من صحة PG19 واختبار الإثبات في طول سياق التقييم 8192:
| نموذج | PG19 | إثبات الولادة |
|---|---|---|
| لاما 2-7 ب | > 1000 | > 1000 |
| MPT-7B-8K | 7.98 | 2.67 |
| Longlora-Lora-7B-8K | 8.20 | 2.78 |
| Longlora-full-7b-8k | 7.93 | 2.73 |
| Longqlora-7B-8K | 7.96 | 2.73 |
التقييم الحيرة لنماذج 7B على PG19 التحقق من صحة ومجموعات بيانات اختبار Pile في طول سياق التقييم من 1024 إلى 8192:

نأخذ عينات حوالي 54 كيلو بايت نص من مجموعة بيانات Redpajama إلى نماذج Finetune PretRained ، التي تتراوح أطوال الرمز المميز من 4096 إلى 32768.
نقوم أيضًا بإنشاء مجموعة بيانات تعليمات سياق طويلة لنماذج الدردشة الخاضعة للإشراف. تحتوي مجموعة البيانات هذه على بيانات تعليمات 39K ، بما في ذلك ملخص الكتب ، والأسئلة الطبيعية ، ومجموعة فرعية من LongQA و Evol-instruct of WizardLM. من أجل التكيف مع الطول المستهدف 8192 ، يكون عدد الرمز المميز الأقصى لكل بيانات 8192. التوزيع كما يلي.

| مجموعة البيانات | وصف |
|---|---|
| ؟ longqlora-pretrain-data-54k | قم بتضمين 54212 بيانات ، تستخدم في نموذج صفيح |
| ؟ longqlora-sft-data-39k | قم بتضمين 38821 بيانات ، تستخدم في نموذج الدردشة في Finetune |
| نموذج | طول السياق | وصف |
|---|---|---|
| ؟ longqlora-llama2-7b-8k | 8192 | تم تجهيزه مع Longqlora-pretrain-Data-54k لخطوات 1K استنادًا إلى llama2-7b |
| ؟ Longqlora-Vicuna-13B-8K | 8192 | تم تجهيزه مع Longqlora-SFT-Data-39K مقابل 1.7 ألف خطوة على أساس Vicuna-13B-V1.5 |
| ؟ longqlora-llama2-7b-8k-lora | 8192 | أوزان لورا |
| ؟ Longqlora-Vicuna-13B-8K-Lora | 8192 | أوزان لورا |
يتم حفظ تكوينات التدريب في دليل Train_args ، بعض المعلمات هي كما يلي:
sft : قم بعمل مهمة SFT إذا تم تعيينها على أنها مهمة ، وإلا قم مهمة ما قبل التدريب.model_max_length : طول السياق الهدف.max_seq_length : يجب أن يكون طول تسلسل الحد الأقصى في التدريب ، أقل من أو يساوي model_max_lengthlogging_steps : سجل التدريب خسارة كل خطوات n.save_steps : حفظ النموذج كل خطوات n.lora_rank : رتبة لورا في التدريب.تمديد طول سياق النموذج المسبق LLAMA2-7B:
deepspeed train.py --train_args_file ./train_args/llama2-7b-pretrain.yamlتمديد طول سياق طراز الدردشة Vicuna-13B:
deepspeed train.py --train_args_file ./train_args/vicuna-13b-sft.yamlيمكنك دمج وزن Lora إلى النموذج الأساسي:
cd script
python merge_lora.pyالاستدلال مع النموذج المسبق:
cd script/inference
python inference.pyالدردشة مع طراز الدردشة:
cd script/inference
python chat.pyقم بتنزيل رمز مجموعة بيانات التقييم بواسطة LLAMA2 بواسطة Longlora.
| مجموعة البيانات |
|---|
| ؟ PG19-Vality.bin |
| ؟ pg19-test.bin |
| ؟ |
تقييم حيرة النماذج. يمكنك تعيين load_in_4bit كما هو صحيح لحفظ الذاكرة:
cd script/evaluate
python evaluate.py
--batch_size 1
--base_model YeungNLP/LongQLoRA-Llama2-7b-8k
--seq_len 8192
--context_size 8192
--sliding_window 8192
--data_path pg19-validation.binتقييم حيرة النماذج مع أوزان Lora:
cd script/evaluate
python evaluate.py
--batch_size 1
--base_model YeungNLP/LongQLoRA-Llama2-7b-8k
--peft_model LongQLoRA-Llama2-7b-8k-lora
--seq_len 8192
--context_size 8192
--sliding_window 8192
--data_path pg19-validation.binالأمثلة التي تم إنشاؤها بواسطة Longqlora-Vicuna-13B-8K ARS على النحو التالي.
أمثلة على جيل السياق الطويل ، تتراوح أطوال سياق الإدخال بين 4096 و 8192 وهي أكبر من طول السياق الأصلي لـ LLAMA2.

أمثلة على جيل السياق القصير ، يحافظ النموذج على أداء التعليمات القصيرة التالية.

@misc{yang2023longqlora,
title={LongQLoRA: Efficient and Effective Method to Extend Context Length of Large Language Models},
author={Jianxin Yang},
year={2023},
eprint={2311.04879},
archivePrefix={arXiv},
primaryClass={cs.CL}
}