Open-ChatGPT
هي مكتبة مفتوحة المصدر تسمح لك بتدريب نموذج ذكاء اصطناعي شديد التخصيص يشبه ChatGPT باستخدام بياناتك الخاصة وأقل قدر ممكن من الحوسبة.
Open-ChatGPT
هو إطار عمل عام للنظام لتمكين تجربة تدريب شاملة للنماذج المشابهة لـ ChatGPT. يمكن أن يأخذ نماذج اللغة الكبيرة المفضلة لديك والمدربة مسبقًا تلقائيًا من خلال ثلاث مراحل لنمط OpenAI InstructGPT لإنتاج نموذج ChatGPT عالي الجودة الخاص بك.
لقد قمنا بتنفيذ RLHF (التعلم المعزز بالملاحظات البشرية) المدعوم من مكتبة المحولات وDeepsSpeed. وهو يدعم التدريب الموزع والتفريغ، والذي يمكن أن يناسب النماذج الكبيرة للغاية.
إذا أعجبك المشروع، يرجى إظهار دعمك من خلال ترك نجمة.
[2023/05] نقوم بتنفيذ ستانفورد ألباكا لورا .
[2023/05] نقوم بتنفيذ ستانفورد ألباكا .
[2023/04] أصدرنا خط أنابيب RLHF (التعلم المعزز بالملاحظات البشرية) .
[2023/03] أصدرنا الكود OpenChatGPT: مكتبة مفتوحة المصدر لتدريب ChatBot مثل ChatGPT .
Open-ChatGPT: تطبيق مفتوح المصدر لـ ChatGPT
لا توجد ذاكرة كافية
ضبط Alpaca-7B
باستخدام DeepSpeed
ضبط Alpaca-7B باستخدام Lora
مجموعات بيانات التعليمات
مجموعات بيانات RLHF
المعالجة المسبقة للبيانات
تنسيق البيانات
مقدمة
أخبار
جدول المحتويات
جمع البيانات
ثَبَّتَ
تعليمات فينتون
الاستدلال
المساهمة
رخصة
شكر وتقدير
الاقتباس
مجموعة من مجموعات بيانات ضبط التعليمات مفتوحة المصدر لتدريب LLM القائم على الدردشة (GPT-4 وChatGPT وLLaMA وAlpaca) (النص ومتعدد الوسائط).
بالإشارة إلى هذا (@jianzhnie)، قمنا بتسمية كل مجموعة بيانات تم جمعها وفقًا للقواعد التالية:
(لانج)العلامات اللغوية:
AR: مجموعات بيانات التعليمات باللغة الإنجليزية
CN: مجموعات بيانات التعليمات باللغة الصينية
ML: مجموعات بيانات التعليمات [متعددة اللغات] بلغات متعددة
(المهمة)علامات المهام:
MT: مجموعات بيانات [متعددة المهام] تحتوي على مهام متعددة
TS: مجموعات بيانات [خاصة بالمهمة] مصممة لمهام محددة
(الجنرال) طريقة التوليد:
HG: [مجموعة البيانات التي أنشأها الإنسان] مجموعات البيانات التي أنشأها البشر
SI: مجموعات البيانات [التعليم الذاتي] التي تم إنشاؤها باستخدام أساليب التوجيه الذاتي
MIX: تحتوي مجموعة البيانات [مجموعة البيانات المختلطة] على بيانات تم إنشاؤها بواسطة الإنسان والآلية
COL: مجموعة البيانات [مجموعة البيانات] مصنوعة من مجموعة من مجموعات البيانات الأخرى
مشروع | مجموعات البيانات | منظمة | أرقام | لانج | مهمة | الجنرال | يكتب | سرك |
---|---|---|---|---|---|---|---|---|
سلسلة الفكر | cot_data |few_shot_data | جوجل | 74771 | إن/CN | طن متري | زئبق | إرشاد مع المنطق المهد | شرح CoT على البيانات الموجودة |
GPT4all | nomic-ai/gpt4all-j-prompt-أجيال | nom-ai | 806199 | إن | طن متري | كول | الكود والقصص والحوارات | التقطير من GPT-3.5-turbo |
GPTeacher | GPT-4 تعليمات عامة | تعليمات لعب الأدوار | تعليمات التعليمات البرمجية | صانع الأدوات | تكنيوم1 | 29013 | إن | طن متري | سي | عام، لعب الأدوار، صانع الأدوات | GPT-4 وصانع الأدوات |
جواناكو | جوزيفوس تشيونج / مجموعة بيانات جواناكو | جوزيفوس تشيونغ | 534610 | مل | طن متري | سي | المهام اللغوية المختلفة | النص دافينشي-003 |
HC3 | مرحبا-SimpleAI/HC3 | مرحباً-SimpleAI | في الحقيقة | 37175 | إن/CN | TS | مزج | تقييم الحوار | human أو ChatGPT |
HC3-صيني | مرحبا-SimpleAI/HC3-الصينية | Hello-SimpleAI|万得资讯 | 13 ألف | CN | TS | مزج | تقييم الحوار | human أو ChatGPT |
الألبكة | تاتسو لاب/ألبكة | تاتسو مختبر | 52002 | إن | طن متري | سي | تعليمات عامة | النص دافينشي-003 |
AlpacaDataCleaned | ياما / الألبكة تنظيفها | ياما | 52 ألف | إن | طن متري | سي | تعليمات عامة | النص دافينشي-003 |
الصينية-اللاما-الألبكة | alpaca_data_zh_51k | يمكي (讯飞) | 51 ألف | CN | طن متري | سي | تعليمات عامة | النص دافينشي-003 |
Luotuo-الصينية-LLM 骆驼 | trans_chinese_alpaca_data | LC1332 (المنتجات) | 52 ألف | CN | طن متري | سي | تعليمات عامة | النص دافينشي-003 |
تعليمات طبيعية | مهمة Allen AI 61 | مهمة 1.5 كيلو | ألين آي | 5040134 | مل | طن متري | كول | مهام البرمجة اللغوية العصبية المتنوعة | جمع مجموعات البيانات المشروحة البشرية |
belle_cn | BelleGroup/train_1M_CN |BelleGroup/train_0.5M_CN | بيلي جروب(链家) | 1079517 | CN | تيسي/مت | سي | المنطق العام والرياضي والحوار |
هنا، ندرج فقط جزءًا صغيرًا من قائمة مجموعات بيانات ضبط التعليمات، للعثور على المزيد من مجموعات البيانات، يرجى مراجعة الروابط التالية: jianzhnie/awesome-instruction-datasets: مجموعة من مجموعات البيانات مفتوحة المصدر لتدريب ماجستير إدارة الأعمال (LLM) الذي يتبع التعليمات (ChatGPT) ، اللاما، الألبكة).
تعد مجموعة بيانات ضبط / تعزيز التعلم من التعليقات البشرية (RLHF) مكونًا رئيسيًا في دورات LLM التي تتبع التعليمات مثل ChatGPT. Follwing عبارة عن قائمة شاملة لمجموعات البيانات المستخدمة لضبط التعليمات في مختلف LLMs، مما يسهل على الباحثين والمطورين الوصول إلى هذه الموارد واستخدامها.
مشروع | منظمة | أرقام | لانج | ملخص |
---|---|---|---|---|
webgpt_comparisons | أوبيناي | 19,578 | إنجليزي | في ورقة WebGPT، قام المؤلفون بتدريب نموذج المكافأة من ردود الفعل البشرية. لقد استخدموا نموذج المكافأة لتدريب نموذج الإجابة على الأسئلة الطويلة للتوافق مع التفضيلات البشرية. هذه هي مجموعة البيانات لجميع المقارنات التي تم تحديدها على أنها مناسبة لنمذجة المكافآت بنهاية مشروع WebGPT. هناك 19,578 مقارنات في المجموع. |
إس إتش بي | stanfordnlp | 349 ك | إنجليزي | SHP عبارة عن مجموعة بيانات تضم 385 ألف تفضيل بشري جماعي حول الإجابات على الأسئلة/التعليمات في 18 مجالًا مختلفًا، من الطبخ إلى المشورة القانونية. تهدف التفضيلات إلى عكس مدى فائدة استجابة واحدة على أخرى، ويُقصد استخدامها لتدريب نماذج مكافأة RLHF ونماذج تقييم NLG (على سبيل المثال، SteamSHP). |
rlhf-مكافأة-مجموعات البيانات | yitingxie | 76.3 ك | إنجليزي | |
داهوا/كامل-hh-rlhf | داهوا | 112 ك | إنجليزي | تمت إعادة تنسيق مجموعة بيانات Anthropic's HH إلى عينات سريعة ومختارة ومرفوضة. |
Dahoas/synthetic-instruct-gptj-pairwise | داهوا | إنجليزي | ||
داهوا/RM-ثابت | داهوا | 76.3 ألف | إنجليزي | انقسام hh-static يستخدم لنماذج المكافآت التدريبية بعد الضبط الدقيق تحت الإشراف. |
الأنثروبي / hh-rlhf | أنثروبي | 22 ألف | إنجليزي | مجموعة بيانات RLHF هذه عبارة عن مجموعة بيانات متكررة "عبر الإنترنت" تتضمن بيانات من نماذج لغة 52B. يحتوي على 22 ألف مقارنات للمساعدة ولا توجد بيانات للفريق الأحمر. |
ضبط التعليمات باستخدام-GPT-4/GPT-4-LLM | تعليمات ضبط مع GPT-4 | 52 ألف | إنجليزي | الاستجابات المصنفة (ملاحظة: يتم تقييم البيانات بواسطة نموذج GPT-4 وليس الإنسان) لمطالبات Alpaca من ثلاثة نماذج (GPT-4 وGPT-3.5 وOPT-IML) عن طريق مطالبة GPT-4 بتقييم الجودة. يعتقد المؤلف أن "GPT-4 قادر على تحديد أخطائه وإصلاحها، والحكم بدقة على جودة الاستجابات" |
الخميس كواي / مطالبات السلامة | الخميس كواي | 100 ألف | الصينية | المطالبات التي يجب أن تتوصل إليها هي أن تكون قادرًا على تحقيق النجاح في المستقبل. |
مشروع Chatgpt-مقارنة-الكشف |
للعثور على المزيد من مجموعات البيانات، يرجى مراجعة الروابط التالية: jianzhnie/awesome-instruction-datasets: مجموعة من مجموعات البيانات مفتوحة المصدر لتدريب طلاب ماجستير إدارة الأعمال الذين يتبعون التعليمات (ChatGPT، LLaMA، Alpaca).
لقد قمنا بتطوير كود المعالجة المسبقة للبيانات الذي يوفر واجهة موحدة لمختلف نماذج اللغات الكبيرة. يمكن استخدام هذا الرمز لمعالجة البيانات مسبقًا لمجموعة متنوعة من الأغراض، مثل مهام نمذجة Instruct Tuning وRLHF. إذا كنت مهتمًا بمعرفة المزيد، فيرجى مراجعة الروابط التالية لمجموعة البيانات السريعة وأدوات البيانات المساعدة الخاصة بنا:
Prompt_dataset.py
data_utils.py
في مجموعتنا، تم تنسيق كافة البيانات باستخدام نفس القوالب. تتبع كل عينة الهيكل التالي:
[ {"instruction": instruction string, "input": input string, # (may be empty) "output": output string} ]
استنساخ بوابة https://github.com/jianzhnie/open-chatgpt.git تثبيت النقطة -r متطلبات.txt
بيفت
إذا كنت ترغب في استخدام LORA مع طرق أخرى فعالة للمعلمات، فيرجى تثبيت peft باعتباره تبعية إضافية.
السرعة العميقة
إذا كنت ترغب في تسريع تدريب LLM باستخدام تقنيات مثل توازي خطوط الأنابيب وفحص التدرج واندماج الموتر. الرجاء تثبيت DeepSpeed.
نقوم بضبط نماذجنا باستخدام كود تدريب Hugging Face القياسي. قمنا بضبط LLaMA-7B وLLaMA-13B باستخدام المعلمات الفائقة التالية:
المعلمة المفرطة | لاما-7ب | لاما-13ب |
---|---|---|
حجم الدفعة | 128 | 128 |
معدل التعلم | 2ه-5 | 1ه-5 |
العصور | 3 | 5 |
أقصى طول | 512 | 512 |
اضمحلال الوزن | 0 | 0 |
يمكنك استخدام الأمر التالي لتدريب Alpaca-7B باستخدام 4 x A100 (40 جيجابايت).
أمثلة على القرص المضغوط/الألبكة/ بيثون Train_alpaca.py --model_name_or_path "decapoda-research/llama-7b-hf" --data_path tatsu-lab/alpaca --output_dirwork_dir/ --num_train_epochs 3 --per_device_train_batch_size 1 --per_device_eval_batch_size 1 --gradient_accumulation_steps 16 --استراتيجية_التقييم "لا" --حفظ_استراتيجية "الخطوات" --save_steps 2000 --save_total_limit 5 --معدل_التعلم 2هـ-5 --اضمحلال الوزن 0. --نسبة الإحماء 0.03 --lr_scheduler_type "جيب التمام" --loging_steps 1
إذا واجهت خطأ OOM، ففكر في هذا.
ومن السذاجة أن الضبط الدقيق لنموذج 7B يتطلب حوالي 7 × 4 × 4 = 112 جيجابايت من VRAM. تعمل الأوامر المذكورة أعلاه على تمكين تقسيم المعلمات، لذلك لا يتم تخزين نسخة نموذج زائدة عن الحاجة على أي وحدة معالجة رسومات. إذا كنت ترغب في تقليل مساحة الذاكرة بشكل أكبر، فإليك بعض الخيارات:
قم بتشغيل إلغاء تحميل وحدة المعالجة المركزية لـ FSDP باستخدام --fsdp "full_shard auto_wrap offload"
. وهذا يوفر VRAM على حساب وقت تشغيل أطول.
في تجربتنا، يمكن أن تكون المرحلة 3 من DeepSpeed (مع إلغاء التحميل) في بعض الأحيان أكثر كفاءة في الذاكرة من FSDP مع إلغاء التحميل. فيما يلي مثال لاستخدام DeepSpeed Stage-3 مع 4 وحدات معالجة رسوميات مع إلغاء تحميل المعلمة والمُحسِّن:
تثبيت النقاط على أمثلة Deepspeedcd/alpaca/ torchrun --nproc_per_node=8 Train_alpaca.py --model_name_or_path "decapoda-research/llama-7b-hf" --data_path tatsu-lab/alpaca --output_dirwork_dir/ --num_train_epochs 3 --per_device_train_batch_size 2 --per_device_eval_batch_size 2 --gradient_accumulation_steps 8 --استراتيجية_التقييم "لا" --حفظ_استراتيجية "الخطوات" --save_steps 2000 --save_total_limit 5 --معدل_التعلم 2هـ-5 --اضمحلال الوزن 0. --نسبة الإحماء 0.03 --deepspeed "البرامج النصية/ds_config_zero3_auto.json"
يقوم LoRA بضبط الشرائح ذات الرتبة المنخفضة من رؤوس تضمين الاستعلام والمفتاح والقيمة. يمكن أن يؤدي ذلك إلى تقليل إجمالي مساحة الذاكرة من 112 جيجابايت إلى حوالي 7 × 4 = 28 جيجابايت.
هذا الجزء يعيد إنتاج نتائج ستانفورد ألباكا باستخدام التكيف ذو الرتبة المنخفضة (LoRA).
للضبط بتكلفة منخفضة وكفاءة، نستخدم PEFT الخاص بـ Hugging Face بالإضافة إلى وحدات bitsandbytes الخاصة بـ Tim Dettmers.
يحتوي هذا الملف على تطبيق مباشر لـ PEFT على نموذج LLaMA، بالإضافة إلى بعض التعليمات البرمجية المتعلقة بالإنشاء الفوري والترميز.
بيثون Train_alpaca_lora.py --model_name_or_path decapoda-research/llama-7b-hf --data_path tatsu-lab/alpaca --output_dirwork_dir_lora/ --num_train_epochs 3 --per_device_train_batch_size 4 --per_device_eval_batch_size 4 --gradient_accumulation_steps 8 --استراتيجية_التقييم "لا" --حفظ_استراتيجية "الخطوات" --save_steps 2000 --save_total_limit 5 --معدل_التعلم 2هـ-5 --اضمحلال الوزن 0. --نسبة الإحماء 0.03 --lr_scheduler_type "جيب التمام" --loging_steps 1
يقرأ هذا الملف النموذج الأساسي من مركز نموذج Hugging Face وأوزان LoRA من tloen/alpaca-lora-7b
، ويقوم بتشغيل واجهة Gradio للاستدلال على مدخلات محددة. يجب على المستخدمين التعامل مع هذا كمثال للتعليمات البرمجية لاستخدام النموذج، وتعديله حسب الحاجة.
مثال على الاستخدام:
بيثون generator_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b
إذا لم يكن لديك ذاكرة كافية، فيمكنك تمكين ضغط 8 بت عن طريق إضافة --load-8bit
إلى الأوامر أعلاه. يمكن أن يؤدي ذلك إلى تقليل استخدام الذاكرة بمقدار النصف تقريبًا مع انخفاض طفيف في جودة النموذج. وهو متوافق مع وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) والواجهة الخلفية المعدنية. يمكن تشغيل Alpaca-7B مع ضغط 8 بت على وحدة معالجة الرسومات NVIDIA 3090/4080/T4/V100 (16 جيجابايت) واحدة.
بيثون generator_server.py --model_name_or_path decapoda-research/llama-7b-hf --lora_model_name_or_path tloen/alpaca-lora-7b --load_8bit
هدفنا هو جعل هذا الريبو أفضل. إذا كنت مهتمًا بالمساهمة، فيرجى الرجوع إلى هنا للحصول على تعليمات المساهمة.
تم إصدار Openn-ChatGPT
بموجب ترخيص Apache 2.0.
نحن نقدر العمل الذي قام به العديد من المساهمين في المصادر المفتوحة، وخاصة:
الألبكة-لورا
لورا
ستانفورد ألباكا
تعانق الوجه
لاما
فيكونا
يرجى الاستشهاد بالريبو إذا كنت تستخدم البيانات أو الكود الموجود في هذا الريبو.
@misc{open-chatgpt, author = {jianzhnie}, title = {Open-ChatGPT, a chatbot based on Llama model}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {url{https://github.com/jianzhnie/open-chatgpt}}, }