تدريب نموذج لغة المحولات GPT-2 على شركتك الخاصة مع رمز SentencePiece.
يحتوي هذا الريبو على تطبيق Pytorch لـ GPT-2 ، والذي يدعم التدريب متعدد GPU. كما أنه يحتوي على تطبيق TensorFlow في lm/gpt_2_tf ، ولكن لم يعد تطويره بعد الآن. يشاركون نفس البرامج النصية لإعداد البيانات. TF Training Command هو gpt-2-tf-train ويحتاج إلى TensorFlow 1.13. الوثائق أدناه مخصصة لإصدار Pytorch.
محتويات
Python 3.6+ مطلوب مع شعلة ليلية أو 1.6.0+. من المفترض أدناه العمل في VirtualEnv أدناه. قم بتثبيت الإصدار المناسب من Pytorch أولاً ، ثم:
PIP تثبيت -r متطلبات. txt Python setup.py تطوير
التعليمات أدناه. انظر أيضًا test/test_shakespeare.sh للحصول على عرض تجريبي كامل لخط الأنابيب على مجموعة صغيرة (يستغرق دقيقة واحدة على وحدة المعالجة المركزية).
تنسيق Corpus: دليل مع train من المستوى الأعلى ، المجلدات valid test . قد يحتوي كل مجلد من المستوى الأعلى على طابقين فرعيين. داخلها ، يجب أن يكون هناك ملفات نصية مشفرة UTF-8 مع امتداد .txt .
أوامر تدريب نموذج SentencePiece وترميز Corpus Support Corpora ، في أمثلة أدناه ، نفترض أنه يمكن إدراجها على أنها data/corpora-* .
طراز Sentsexpiece Train (يمكن إزالة sp-text.txt بعد التشغيل). يمكن أن يستهلك هذا كمية كبيرة من الذاكرة ، وضبط وسائط الحكام كما هو موضح إذا لزم الأمر (هذا غير مدعوم في أمر sp-train مباشرة):
بيانات SP-Train/Corpora-* sp-text.txt sp-model
تشفير Corpora ، وإنتاج ملفات numpy:
بيانات sp-encode/corpora-* sp-model.model بيانات/مشفرة
مثال الأمر:
GPT-2 Run-Root Data/SP-model.model.
سيحتوي run-root على نقاط تفتيش طراز وسجلات JSON-Lines ، والتي يمكن رسمها في دفتر Jupyter مع json_log_plots.plot("run-root") ، مع عدد من الرموز على محور X.
تتوافق المفرطات الافتراضية مع نموذج GPT-2 "صغير".
عندما تتوفر وحدات معالجة الرسومات المتعددة ، سيتم استخدامها للتدريب بمساعدة torch.distributed .
إذا كان المسار موجودًا ولم يتم تمرير المفتاح --clean ، فسيتم استئناف التدريب. لاحظ أنه لا يزال يتعين تحديد جميع المعلمات وأن معلمات النموذج تحتاج إلى مطابقة.
ملاحظات على معلمات التدريب:
--batch-size هو لكل GPU ، لذلك لا تحتاج إلى إعادة ضبطه عند تغيير عدد وحدات معالجة الرسومات ، فقط استخدم Max الذي يناسب الذاكرة.--g-accum-gradients هو العدد العالمي لتراكم التدرج ، يجب أن يكون قابلاً للقسمة على عدد وحدات معالجة الرسومات. حجم الدُفعة العالمي الفعال هو دائمًا batch_size * g_accum_gradients .--lr يلزم تغييرها عند التغيير --batch-size أو --g-accum-gradients معالجة الرسومات أو-- --n-ctx : تم تحجيم الخسارة بالفعل بشكل مناسب.مثال الأمر:
GPT-2-Gen Run-Root "الذكاء الاصطناعي"
قد يحتوي run-root على نقاط تفتيش نموذجية "Artificial intelligence" هو بادئة النص المستخدم كنقطة انطلاق لإنشاء الرموز المميزة
ملاحظات على معلمات الاستدلال:
--tokens-to-generate : عدد الرموز التي يجب توليدها ، الافتراضي هو 42--top-k : عدد المرشحين الرمزيين لتوليده لكل موقف (عرض الشعاع) ، الافتراضي هو 8. الترخيص هو معهد ماساتشوستس للتكنولوجيا.
يتم أخذ نموذج TensorFlow GPT-2 من https://github.com/openai/gpt-2/blob/master/src/model.py و tensorflow gpt-2 رمز التدريب
يعتمد منفذ Pytorch على رمز Openai الأصلي.
اختبار شكسبير كوربوس تحت tests/shakespeare من http://shakespeare.mit.edu تحت المجال العام.
انظر أيضًا Openai GPT-2 Paper and Blog.