الأدلة والتعليمات البرمجية والتكوينات لعائلة طراز ReplitLM .
يتم تحديث هذا باستمرار لإضافة المزيد من الطرق لاستخدام نماذجنا والبناء عليها.
نموذج | نقطة تفتيش [سيسي بي-سا 4.0] | المفردات [سيسي بي-سا 4.0] | الكود [أباتشي 2.0] |
---|---|---|---|
إعادة-رمز-v1-3b | رابط التحميل | تحميل | الريبو |
إعادة-رمز-v1_5-3b | (قريباً) | (قريباً) | قريباً |
2 مايو 2023: replit-code-v1-3b
لدينا أيضًا مساحة مدعومة بوحدة معالجة الرسومات لنموذج replit-code-v1-3b
حيث يمكنك استخدام النموذج مباشرة!
عرض توضيحي مستضاف مدعوم بوحدة معالجة الرسومات
جميع نماذج Replit التي تم إصدارها متاحة على Hugging Face ضمن صفحة مؤسسة Replit ويمكن استخدامها مع مكتبة Hugging Face Transformers.
يمكنك استخدام نماذج Replit مع مكتبة Hugging Face Transformers. يحتوي الملف التمهيدي لكل نموذج تم إصداره على تعليمات حول كيفية استخدام النموذج مع Hugging Face Transformers. تأكد من تعيين clean_up_tokenization_spaces=False
عند فك التشفير باستخدام الرمز المميز وكذلك استخدام المعالجة اللاحقة الموصى بها الواردة في ملف README.
نموذج | التمهيدي |
---|---|
إعادة-رمز-v1-3b | التوثيق |
نوصي بإجراء المزيد من التدريب والتدريب المسبق والضبط الدقيق لنماذج Replit باستخدام LLM Foundry and Composer في MosaicML.
تتوافق نماذج Replit الخاصة بنا مع LLM Foundry ويمكن تدريبها/ضبطها بطريقة محسنة للغاية باستخدام LLM Foundry + Composer باستخدام أحدث تقنيات التدريب والمكونات المعمارية والمحسنات والمزيد. جميع النماذج وLLM Foundry وإطار تدريب الملحن تعتمد على Pytorch. باستخدام هذه يمكنك تدريب نماذج Replit على مجموعات البيانات الخاصة بك.
تمنحك الخطوات التالية الخطوط العريضة لما يجب القيام به لتدريب النماذج مع روابط إلى أقسام وثائق LLM Foundry اللازمة لكل خطوة:
تثبيت مسبك LLM
للبدء مع LLM Foundry، يمكنك اتباع LLM Foundry README من أجل:
على مستوى عالٍ، يتم استخدام LLM Foundry عن طريق تحديد تكوين yaml ثم تشغيل البرنامج النصي للتدريب train/train.py
في LLM Foundry repo مع تكوين yaml المحدد باستخدام أمر مثل composer train/train.py <configuration_yaml_path> <extra_args>
. تحتوي البرامج النصية/القطار/yamls dir على أمثلة YAMLs لكل من الضبط الدقيق والتثبيت المسبق.
قم بتثبيت المتطلبات الأخرى لنماذج Replit
سيتعين عليك بعد ذلك تثبيت بعض التبعيات الأخرى المحددة في ملف requirements.txt
.
للتدريب مع LLM Foundry، تحتاج إلى تحويل مجموعة البيانات الخاصة بك إلى تنسيق Mosaic StreamingDataset.
أنواع مصادر مجموعات البيانات المدعومة هي مجموعات بيانات JSON ومجموعات بيانات Hugging Face.
توفر وثائق إعداد البيانات في LLM Foundry خطوات حول كيفية القيام بذلك.
عند تشغيل convert_dataset_hf.py
أو convert_dataset_json.py
في الخطوات المذكورة أعلاه، سيتعين عليك تحديد أنك تستخدم Replit tokenizer عن طريق تمرير الوسيطة --tokenizer replit/replit-code-v1-3b
. تتمثل الخطوة الأساسية (بسبب التنفيذ الحالي لـ llm-foundry
) في تحرير scripts/data_prep/convert_dataset_hf.py
عن طريق تمرير trust_remote_code=True
kwarg إلى استدعاء AutoTokenizer.from_pretrained
عندما يتم تحميل الرمز المميز في الطريقة main()
.
اختبار مجموعة البيانات المحولة
لاختبار مجموعة البيانات المحولة والتحقق من أنها تعمل مع أداة تحميل البيانات، يمكنك اتباع قسم اختبار أداة تحميل البيانات في مستندات LLM Foundry.
للتدريب مع LLM Foundry، تحتاج إلى تحديد تشغيل تكوين yaml. يحدد yaml النموذج ومجموعة بيانات التدريب ومجموعة بيانات التقييم والمقياس ومعلمات التدريب والمزيد.
استخدام نماذج Replit
بالنسبة لأي تكوين YAML تحدده للتدريب/الضبط باستخدام LLM Foundry، يمكنك توصيل نموذج Replit واستخدامه عن طريق استبدال مفاتيح النموذج والرمز المميز في YAML الخاص بك كما يلي:
...
model:
name: hf_causal_lm
pretrained: true
pretrained_model_name_or_path: replit/replit-code-v1-3b
config_overrides:
attn_config:
attn_impl: triton
attn_uses_sequence_id: false
tokenizer:
name: replit/replit-code-v1-3b
kwargs:
model_max_length: ${max_seq_len}
trust_remote_code: true
...
سيؤدي هذا إلى تحميل نموذجنا بأوزانه من Hugging Face للتكوين الخاص بك.
بعد تحويل مجموعة البيانات الخاصة بك وتحديد تشغيل تكوين yaml، يمكنك تشغيل التدريب باستخدام LLM Foundry.
اتبع قسم كيفية بدء التدريب في مستندات LLM Foundry لتشغيل التدريب. يوضح لك القسم كيفية تشغيل تدريب أحادي العقدة ومتعدد العقد. على نحو فعال، سوف تقوم بتشغيل البرنامج النصي للتدريب scripts/train/train.py
في LLM Foundry repo مع التكوين المحدد yaml باستخدام أمر مثل composer train/train.py <configuration_yaml_path> <extra_args>
.
هناك بعض المنطق المضمن في Composer والذي نحتاج إلى التحايل عليه لحفظ نقاط التفتيش. في البرنامج النصي التدريبي scripts/train/train.py
، أضف السطر model.tokenizer = None
مباشرة بعد تهيئة النموذج وقبل إعداد أداة تحميل بيانات القطار، أي في لحظة الكتابة، السطر 147 في main()
. وهذا يضمن بشكل فعال أننا لا ننقذ الرمز المميز بحالة نقطة التفتيش. نحن بحاجة إلى هذا الحل البديل لأن Composer حاليًا لا يمكنه التعامل مع نقاط التحقق المحفوظة باستخدام الرموز المميزة التي تتضمن ملفات *.py
.
يمكنك توجيه ضبط نماذج ReplitLM الخاصة بنا لتناسب حالة الاستخدام الخاصة بك. بالنسبة لمعظم حالات استخدام ضبط التعليمات، نوصي بالبدء من أمثلة Hugging Face أدناه. بخلاف ذلك، فإننا نقدم أيضًا دليلاً تفصيليًا للقيام بضبط التعليمات باستخدام LLM Foundry.
يمكنك توجيه ضبط نموذج replit-code-v1-3b
على مجموعات البيانات بنمط Alpaca باستخدام مكتبة transformers
.
لتحقيق ذلك، ستحتاج إلى مجموعة بيانات ضبط التعليمات الموجودة بالفعل بتنسيق نمط Alpaca، مثل:
قام المساهم مفتوح المصدر Teknium بتقسيم مستودع Alpaca الأصلي إلى مستودع stanford_alpaca-replit الذي تم تكوينه مسبقًا للعمل مع نماذجنا. نوصي بشدة باستخدام هذا كنقطة انطلاق.
يحتوي الريبو على تعليمات حول كيفية إعداد المدرب وتشغيله. تم وصف تنسيق مجموعة البيانات المطلوبة على طراز Alpaca هنا. أي مجموعة بيانات منسقة بنمط الألبكة ستعمل مع المدرب. على سبيل المثال، يمكن استخدام مجموعة بيانات Code Alpaca لتوجيه ضبط نموذجنا باستخدام البرنامج النصي التدريبي الموجود في مستودع Teknium.
يمكنك أيضًا استخدام LLM Foundry للقيام بضبط التعليمات. وللقيام بذلك، يتعين عليك اتباع الخطوات التالية على مستوى عالٍ، مع ربط التفاصيل والخطوات المحددة التي يتعين عليك اتباعها حسب الحاجة:
تثبيت مسبك LLM
للبدء مع LLM Foundry، يمكنك اتباع LLM Foundry README من أجل:
على مستوى عالٍ، يتم استخدام LLM Foundry عن طريق تحديد تكوين yaml ثم تشغيل البرنامج النصي للتدريب train/train.py
في LLM Foundry repo مع تكوين yaml المحدد باستخدام أمر مثل composer train/train.py <configuration_yaml_path> <extra_args>
. تحتوي البرامج النصية/القطار/yamls dir على أمثلة YAMLs لكل من ضبط الضبط المسبق.
قم بتثبيت المتطلبات الأخرى لنماذج Replit
سيتعين عليك بعد ذلك تثبيت بعض التبعيات الأخرى المحددة في ملف requirements.txt
.
يمكن أن يكون أي مما يلي:
اعتمادًا على مجموعة البيانات التي تستخدمها، قد تحتاج أو لا تحتاج إلى تنسيق مجموعة البيانات بالتنسيق المتوقع بواسطة LLM Foundry.
مجموعات البيانات التي لا تحتاج إلى معالجة مسبقة مخصصة لها
بعض مجموعات البيانات مثل Mosaicml/dolly_hhrlhf تأتي بالفعل مع وظيفة المعالجة المسبقة التي يمكنك استخدامها على الفور. اعتبارًا من وقت النشر، جاءت مجموعات بيانات Hugging Face التالية مزودة بوظيفة معالجة مسبقة مسجلة مسبقًا: HuggingFaceH4/databricks_dolly_15k
و Muennighoff/P3
و Muennighoff/flan
و bigscience/P3
و tatsu-lab/alpaca
.
مجموعات البيانات التي تحتاج إلى معالجة مسبقة مخصصة لها
إذا كنت لا تستخدم أيًا من مجموعات البيانات المذكورة أعلاه، فستحتاج إلى كتابة وظيفة المعالجة المسبقة الخاصة بك وتسجيلها.
بالنسبة لأي مجموعة بيانات، تحتاج إلى تنسيق كل مثال على هيئة قاموس بالمفاتيح التالية:
formatted_example = { 'prompt' : < prompt_text > , 'response' : < response_text > }
أي أن كل عينة عبارة عن قاموس به مفتاحين. هذا هو التنسيق الذي يتوقعه برنامج تحميل البيانات finetuning
.
دليل لتنسيق مجموعة البيانات الخاصة بك
يصف قسم تنسيق البيانات في مستودع LLM Foundry الأصلي كيفية القيام بذلك.
في حالة احتياجك إلى إنشاء وظيفة معالجة مسبقة مخصصة للحصول على بياناتك بالتنسيق الصحيح، وكانت الخطوات الواردة في وثائق LLM Foundry مربكة لك، فإن إعادة صياغة TL;DR هي كما يلي:
preprocess.py
) في مكان ما في قاعدة التعليمات البرمجية الخاصة بك، على سبيل المثال، في نفس الدليل مثل البرنامج النصي للتدريب الخاص بك، طالما أنه يمكن استيراده بواسطة البرنامج النصي للتدريب الخاص بك.preprocess_function()
التي تأخذ عينة واحدة من مجموعة البيانات الخاصة بك كمدخلات وترجع قاموسًا يتضمن prompt
response
للمفاتيح كما هو موضح أعلاه، وفقًا للمنطق الخاص بك لكيفية تنسيق العينة في التنسيق المطلوب.preprocess.py
) والوظيفة (على سبيل المثال، preprocess_function()
) التي قمت بإنشائها. يمكنك الآن استخدام مجموعة البيانات الخاصة بك لضبط نموذج Replit.
مرشد
يصف قسم الاستخدام في مستودع LLM Foundry الأصلي كيفية استخدام مجموعة البيانات الخاصة بك وضبط نموذج Replit.
إذا كنت تستخدم الخيارين 1) أو 2) في هذا القسم، فسوف تقوم بتعديل train_loader
و eval_loader
إن أمكن، في تدريب YAML الخاص بك بناءً على ما فعلته في الخطوتين السابقتين. إذا كنت تستخدم الخيار 3) (أي مجموعة البيانات المتدفقة)، فستقوم أولاً بتحويل مجموعة البيانات إلى التنسيق الصحيح باستخدام مفاتيح المطالبة والاستجابة، ثم ستقوم بكتابتها إلى مجموعة بيانات MDS محلية. بعد ذلك يمكنك تعديل YAML الخاص بك للإشارة إلى ذلك.