[الملف التمهيدي] [?HF Repo] [?إصدار الويب]
الصينية | انجليزية
يتم الحصول على نموذج Yayi الكبير من خلال تعليمات الضبط الدقيق لملايين بيانات المجال عالية الجودة التي تم إنشاؤها يدويًا. وتغطي بيانات التدريب خمسة مجالات رئيسية مثل الدعاية الإعلامية، وتحليل الرأي العام، والأمن العام، ومراقبة المخاطر المالية، والحوكمة الحضرية. المئات من مهام تعليم اللغة الطبيعية. أثناء العملية التكرارية لنموذج Yayi الكبير بدءًا من أوزان تهيئة ما قبل التدريب وحتى نماذج المجال، قمنا تدريجيًا بتعزيز قدراته الصينية الأساسية وقدرات تحليل المجال، وأضفنا جولات متعددة من الحوار وبعض قدرات المكونات الإضافية. وفي الوقت نفسه، ومن خلال التحسين المستمر للملاحظات اليدوية أثناء عملية الاختبار الداخلي لمئات المستخدمين، قمنا بتحسين أداء النموذج وأمانه.
من خلال المصدر المفتوح لنموذج Yayi الكبير، سنساهم بجهودنا الخاصة في تعزيز تطوير مجتمع مفتوح المصدر للنموذج الكبير الصيني المدرب مسبقًا. من خلال المصدر المفتوح، سنقوم ببناء النظام البيئي النموذجي الكبير لـ Yayi مع كل شريك.
الأخبار: قام Yayi Large Model بإصدار إصدار نموذج التحسين الصيني مفتوح المصدر استنادًا إلى LLaMA 2 لاستكشاف أحدث الممارسات المناسبة للمهام الصينية متعددة المجالات.
اسم النموذج | ؟ تحديد نموذج التردد العالي | عنوان التحميل |
---|---|---|
YAYI -7 ب | ينجي البحث / YAYI -7b | تحميل النموذج |
YAYI -7B-Llama2 | ينجي-الأبحاث/ YAYI -7b-llama2 | تحميل النموذج |
YAYI -13B-Llama2 | بحث وينجي/ YAYI -13b-llama2 | تحميل النموذج |
git clone https://github.com/wenge-research/YAYI.git
cd YAYI
conda create --name YAYI python=3.8
conda activate YAYI
pip install -r requirements.txt
لا يوصى بأن تكون إصدارات torch
transformers
أقل من الإصدارات الموصى بها.
لقد تم فتح مصادر أوزان النماذج (الإصدار 7 ب) في مستودع نماذج Huggingface الخاص بنا، ويمكنك تنزيلها واستخدامها. فيما يلي نموذج للتعليمة البرمجية الذي يستدعي ببساطة YAYI -7b
لاستدلال المهمة النهائية، ويمكن تشغيله على وحدة معالجة رسومات واحدة مثل A100/A800/3090، ويستهلك حوالي 20 جيجابايت من ذاكرة الفيديو عند استخدام الاستدلال الدقيق FP16:
from transformers import AutoTokenizer , AutoModelForCausalLM , GenerationConfig
import torch
YAYI _7b_path = "wenge-research/ YAYI -7b"
tokenizer = AutoTokenizer . from_pretrained ( YAYI _7b_path )
model = AutoModelForCausalLM . from_pretrained ( YAYI _7b_path , device_map = "auto" , torch_dtype = torch . bfloat16 )
prompt = "你好"
formatted_prompt = f"<|System|>: n A chat between a human and an AI assistant named YAYI . n YAYI is a helpful and harmless language model developed by Beijing Wenge Technology Co.,Ltd. n n <|Human|>: n { prompt } n n <| YAYI |>:"
inputs = tokenizer ( formatted_prompt , return_tensors = "pt" ). to ( model . device )
eos_token_id = tokenizer ( "<|End|>" ). input_ids [ 0 ]
generation_config = GenerationConfig (
eos_token_id = eos_token_id ,
pad_token_id = eos_token_id ,
do_sample = True ,
max_new_tokens = 100 ,
temperature = 0.3 ,
repetition_penalty = 1.1 ,
no_repeat_ngram_size = 0
)
response = model . generate ( ** inputs , generation_config = generation_config )
print ( tokenizer . decode ( response [ 0 ]))
لاحظ أنه تتم إضافة الرمز المميز <|End|>
كحرف النهاية أثناء تدريب النموذج، لذلك يتم تعيين eos_token_id
على معرف الرمز المميز المطابق لحرف النهاية في GenerationConfig
للكود أعلاه. يختلف رمز الاستدلال المستند إلى نموذج الضبط الدقيق لتعليمات LlaMA2 قليلاً للحصول على التفاصيل، يرجى الرجوع إلى الإصدار المقابل في مستودع نماذج Huggingface الخاص بنا.
يعتمد هذا المشروع على إطار عمل deepspeed
للتدريب النموذجي، بعد تكوين البيئة، قم بتنفيذ البرنامج النصي المقابل لبدء التدريب. يدعم الضبط الدقيق للمعلمات الكاملة لبيانات الأوامر، والضبط الدقيق لبيانات الأوامر في LoRA، والضبط الدقيق للمعلمات الكاملة لبيانات الحوار متعدد الجولات، وضبط LoRA لبيانات الحوار متعدد الجولات.
تنسيق البيانات : ارجع إلى data/ YAYI _train_example.json
، الذي يعتمد تنسيق بيانات jsonline لمشروع Alpaca. يحتوي كل سطر على قطعة واحدة من بيانات json، تتكون من ثلاثة حقول "instruction"
، "input"
، و "output"
. من بينها، "instruction"
و "input"
هما إدخال التعليمات، و "output"
هو إجابة الإخراج.
تعليمات التشغيل : قم بتشغيل الأمر التالي لبدء الضبط الدقيق للمعلمات الكاملة لنموذج Yayi الكبير. يدعم هذا الأمر التدريب على عدة بطاقات على جهاز واحد. إذا كنت بحاجة إلى تكوين تدريب على أجهزة متعددة وبطاقات متعددة، فيرجى الرجوع إلى الوثائق الرسمية للسرعة العميقة. يوصى باستخدام تكوين الأجهزة 4*A100(80G) أو أعلى.
deepspeed --num_gpus=8
--module training.trainer
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-6
--seed 515
تنسيق البيانات : كما هو مذكور أعلاه، راجع data/ YAYI _train_example.json
.
تعليمات التشغيل : LoRA هي طريقة ضبط دقيقة منخفضة الموارد وفعالة، ويمكن لبطاقة واحدة تدريب عشرات المليارات من نماذج المعلمات. ينفذ هذا المشروع بشكل أساسي الضبط الدقيق لـ LoRA استنادًا إلى peft
. قم بتشغيل الأمر التالي لبدء الضبط الدقيق لـ LoRA لنموذج Yayi الكبير. يمكن إكمال الضبط الدقيق باستخدام بطاقة واحدة A100 (80G)، ويمكن تعديل معدل التعلم إلى قيمة أكبر. من بينها، --lora-dim
يحدد رتبة مصفوفة التحديث، كلما زادت القيمة، زاد عدد معلمات التدريب؛ --lora-module-name
يعين وحدة مصفوفة تحديث LoRA، والتي يمكن تغييرها وفقا لنوع النموذج.
deepspeed --num_gpus=1
--module training.trainer_lora
--data-path ./data/ YAYI _train_example.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-4
--seed 515
--lora-dim 16
--lora-module-name query_key_value
تنسيق البيانات : راجع data/ YAYI _train_example_multi_rounds.json
، وهو ملف JSON قياسي. تتكون كل قطعة من البيانات من "system"
و "conversations"
، حيث "system"
هي معلومات إعداد الدور العام ويمكن أن تكون سلسلة فارغة، "conversations"
هي حوار متعدد الجولات بين شخصيتين، الإنسان و YAYI .
تعليمات التشغيل : قم بتشغيل الأمر التالي لبدء الضبط الدقيق للمعلمات الكاملة لنموذج Yayi الكبير بالنسبة لبيانات الحوار متعدد الجولات، يتم حساب فقدان الرد الناتج عن النموذج فقط. يدعم هذا الأمر التدريب على عدة بطاقات على جهاز واحد. إذا كنت بحاجة إلى تكوين تدريب على أجهزة متعددة وبطاقات متعددة، فيرجى الرجوع إلى الوثائق الرسمية للسرعة العميقة. يوصى باستخدام تكوين الأجهزة 4*A100(80G) أو أعلى.
deepspeed --num_gpus=8
--module training.trainer_multi_rounds
--data-path ./data/ YAYI _train_example_multi_rounds.json
--input-model ./checkpoints/ YAYI -7b
--deepspeed ./config/deepspeed_zero2_bf16.json
--epochs 2
--local-output-dir ./checkpoints
--per-device-train-batch-size 8
--per-device-eval-batch-size 8
--logging-steps 1
--save-steps 100
--save-total-limit 10
--eval-steps 100
--warmup-steps 100
--test-size 400
--lr 5e-7
--seed 515
data/ YAYI _train_example_multi_rounds.json
.تم تدريب نموذج Yayi الكبير استنادًا إلى مجموعة بيانات الضبط الدقيق لتعليمات المجال عالية الجودة الخاصة بـ Zhongke Wenge، ونحن نفتح مصدر 50000 مجموعة بيانات تدريبية هذه المرة، والتي يمكن تنزيلها من مستودع بيانات Huggingface الخاص بنا. تغطي مجموعة البيانات بشكل أساسي العديد من المجالات الرئيسية مثل التمويل والأمن والرأي العام والإعلام. لقد أضفنا بادئات سريعة منفصلة لمعظم بيانات المهام في كل مجال لتمييز البيانات في كل مجال. بالإضافة إلى ذلك، تتضمن بيانات التدريب أيضًا بعض بيانات تحسين الأمان، وبيانات قدرة المكونات الإضافية، وبيانات الحوار متعدد الجولات، وما إلى ذلك.
لا يزال نموذج SFT الذي تم تدريبه بناءً على البيانات الحالية والنماذج الأساسية يعاني من المشكلات التالية من حيث الفعالية:
بناءً على قيود النموذج المذكورة أعلاه، نطلب من المطورين استخدام التعليمات البرمجية مفتوحة المصدر والبيانات والنماذج والمشتقات اللاحقة التي تم إنشاؤها بواسطة هذا المشروع فقط لأغراض البحث وليس للأغراض التجارية أو الاستخدامات الأخرى التي من شأنها أن تسبب ضررًا للمجتمع. يرجى توخي الحذر في تحديد واستخدام المحتوى الذي تم إنشاؤه بواسطة Yayi Big Model، وعدم نشر المحتوى الضار الذي تم إنشاؤه على الإنترنت. في حالة حدوث أي عواقب سلبية، سيكون المتصل مسؤولاً.
لا يمكن استخدام هذا المشروع إلا لأغراض البحث، ولا يتحمل مطور المشروع مسؤولية أي ضرر أو خسارة ناجمة عن استخدام هذا المشروع (بما في ذلك على سبيل المثال لا الحصر، البيانات والنماذج والأكواد وما إلى ذلك). يرجى الرجوع إلى إخلاء المسؤولية للحصول على التفاصيل.
الكود الموجود في هذا المشروع مفتوح المصدر وفقًا لبروتوكول Apache-2.0، وتعتمد البيانات بروتوكول CC BY-NC 4.0، ويجب أن يتبع استخدام أوزان نماذج سلسلة YAYI ترخيص النموذج.