الهدف من هذا الريبو هو توفير تنفيذ بسيط لنماذج GPT التي يمكن استخدامها لتطبيقات الإنتاج. يدعم الرمز حاليًا حالات الاستخدام التالية:
لا تتردد في توتر هذا الريبو واستخدامه كقالب لتطوير تطبيقات GPT الخاصة بك.
نريد أن ندرج في نهاية المطاف التثبيت المستند إلى RL من ChatGPT. بشكل عام ، لا يغير هذا نموذج المعرفة الأساسي ولكنه يجعل التفاعل مع النموذج يشبه الإنسان.
يعد إعداد الرمز ضئيلًا إلى حد ما ويمكن استنساخه بسهولة في بيئات VM المحلية أو السحابية.*
conda create -n python38 python=3.8
conda activate python38
conda install --file requirements.txt
* في المستقبل سنحاول تقديم نسخة من هذا الإعداد.
نحن نقدم رمز النماذج الذي يقوم بتنزيل ومعالجة مجموعة بيانات Tiny-Shakespeare للتدريب والضبط. استخدم هذا الرمز كقالب لإنشاء معالجة البيانات المسبقة لبياناتك الخاصة.
python src/data_io/fetch_shakespeare.py
تدريب طراز GPT صغير جدًا من نقطة الصفر على مجموعة بيانات Tiny-Shakespeare التي تم إنشاؤها في الخطوة السابقة. لن يكون النموذج الناتج قابلاً للتعميم للغاية لأنه صغير إلى حد ما ومدرب على مجموعة بيانات صغيرة جدًا ولكنه يمكن أن يولد اقتباسات تشبه شكسبير.
قم بتغيير ملف التكوين ومن أجل تدريب نموذج من نقطة الصفر على بياناتك الخاصة. في هذه المرحلة ، يمكنك التوسع تقنيًا إلى أحجام طرازات كبيرة جدًا وفقًا لحجم البيانات ومواردك.*
python src/training/train_main.py --config_file config/train_shakespeare_small.yml
* لهذه الخطوة ، ربما تحتاج إلى وحدة معالجة الرسومات أو متعددة.
صقل نموذج GPT2 مفتوح المصدر على بياناتك. من الممكن استخدام أي نموذج يشبه GPT مفتوح المصدر (GPT2-Medium و GPT2-XL وما إلى ذلك). هذا هو الخيار الأكثر شيوعًا لأنه يتطلب أقل من البيانات والموارد (من الممكن تشغيل هذا حتى على وحدة المعالجة المركزية) وهو أسرع بكثير من التدريب من نقطة الصفر.
python src/training/train_main.py --config_file config/finetune_shakespeare.yml
عينة من عدد من المخرجات من نموذج مدرب بالنظر إلى موجه الإدخال. يمكن استخدام هذا لاستنتاج الدُفعات.
python src/inference/sample_main.py --config_file config/sample_shakespeare.yml
خادم Lightweigth الذي يخدم نموذجًا مدربًا في واجهة برمجة تطبيقات REST.
uvicorn src.inference.service_main:app --reload --reload-include config/sample_gpt2.yml
بمجرد تشغيل الخادم ، يمكنك الاستعلام عن نقطة النهاية باستخدام موجه (كطلب نشر). لمزيد من التفاصيل حول تفاصيل الاستعلام ، إلقاء نظرة على نص الاختبار التالي.
بمجرد تشغيل الخادم الخاص بك ، يمكنك اختبار نقطة النهاية باستخدام البرنامج النصي التالي.
python src/inference/test_query.py
تم نشر هذا الريبو مع مراعاة تطبيق الإنتاج ويتضمن اختبار الوحدة والتكامل.
* tesing ليس أجهزة الصراف الآلي واسعة النطاق ، لكننا سنحاول زيادة التغطية في المستقبل.
تم تضمين اختبارات الوحدة لتغطية الوظيفة الرئيسية. يمكنك تشغيل جناح اختبار الوحدة الكامل مع الأمر التالي:
pytest test/unit/
بالإضافة إلى اختبارات الوحدة ، قمنا بتضمين بعض اختبارات التكامل للتدريب ، والضبط والأخذ في أخذ العينات.
pytest test/integration/
* يتطلب اختبار التكامل حاليًا أن تعمل البيانات (انظر أعلاه).
يُنصح عمومًا بتمكين السنانير المسبقة عند العمل مع الريبو. يدير حاليًا بعض عمليات فحص التنسيق الأساسية ويدير جناح اختبار الوحدة (ولكن ليس اختبارات التكامل).
conda install -c conda-forge pre-commit
pre-commit install
تطبيق GPT في هذا الريبو مستوحى من repo nanogpt من قبل Andrej Karpathy. كان هدفنا هو إعادة تنفيذ وإعادة هيكله وتوسيع نطاقه مع الوحدات النمطية التي تجعل من السهل بناء أنواع مختلفة من تطبيقات الإنتاج فوقها.