تخصيص نموذج مع ضبط دقيق

تتيح لك خدمة Azure OpenAI تخصيص نماذجنا لمجموعات بياناتك الشخصية باستخدام عملية تعرف باسم الضبط الدقيق. تتيح لك خطوة التخصيص هذه الحصول على المزيد من الخدمة من خلال توفير:

  • نتائج ذات جودة أعلى مما يمكنك الحصول عليه فقط من الهندسة الفورية
  • القدرة على التدريب على أمثلة أكثر مما يمكن أن يتناسب مع الحد الأقصى لسياق الطلب للنموذج.
  • توفير الرمز المميز بسبب المطالبات الأقصر
  • طلبات زمن انتقال أقل، خاصة عند استخدام نماذج أصغر.

على النقيض من التعلم ذي اللقطات القليلة، يعمل الضبط الدقيق على تحسين النموذج من خلال التدريب على العديد من الأمثلة أكثر مما يمكن أن يتناسب مع المطالبة، ما يتيح لك تحقيق نتائج أفضل على عدد كبير من المهام. نظرا لأن الضبط الدقيق يضبط أوزان النموذج الأساسي لتحسين الأداء في مهمة معينة، فلن تضطر إلى تضمين العديد من الأمثلة أو الإرشادات في المطالبة. وهذا يعني إرسال نص أقل و عدد أقل من الرموز المميزة التي تمت معالجتها على كل استدعاء لواجهة برمجة التطبيقات، مما قد يؤدي إلى توفير التكلفة وتحسين زمن انتقال الطلب.

نحن نستخدم LoRA، أو تقريب الرتبة المنخفضة، لضبط النماذج بطريقة تقلل من تعقيدها دون التأثير بشكل كبير على أدائها. تعمل هذه الطريقة عن طريق تقريب المصفوفة الأصلية عالية الرتبة مع مرتبة أدنى، وبالتالي فقط ضبط مجموعة فرعية أصغر من المعلمات "المهمة" أثناء مرحلة التدريب الخاضعة للإشراف، ما يجعل النموذج أكثر قابلية للإدارة والكفاءة. بالنسبة للمستخدمين، هذا يجعل التدريب أسرع وأكثر بأسعار معقولة من التقنيات الأخرى.

المتطلبات الأساسية

إشعار

حاليا، يجب إرسال تطبيق للوصول إلى خدمة Azure OpenAI. للتقدم للحصول على حق الوصول، أكمل هذا النموذج.

النماذج

تدعم النماذج التالية الضبط الدقيق:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

راجع صفحة النماذج للتحقق من المناطق التي تدعم حاليا الضبط الدقيق.

إذا كنت تخطط لاستخدام gpt-4 الضبط الدقيق، فيرجى الرجوع إلى إرشادات تقييم سلامة المعاينة العامة GPT-4

مراجعة سير العمل ل Azure OpenAI Studio

خذ لحظة لمراجعة سير عمل الضبط الدقيق لاستخدام Azure OpenAI Studio:

  1. إعداد بيانات التدريب والتحقق من الصحة.
  2. استخدم معالج إنشاء نموذج مخصص في Azure OpenAI Studio لتدريب نموذجك المخصص.
    1. حدد نموذج أساسي.
    2. اختر بيانات التدريب الخاصة بك.
    3. اختياريا، اختر بيانات التحقق من الصحة.
    4. اختياريا، قم بتكوين خيارات متقدمة لمهمة الضبط الدقيق.
    5. راجع اختياراتك ودرب نموذجك المخصص الجديد.
  3. تحقق من حالة النموذج المخصص المضبط.
  4. انشر النموذج المخصص للاستخدام.
  5. استخدم النموذج المخصص الخاص بك.
  6. اختياريا، قم بتحليل نموذجك المخصص للأداء والاحتواء.

إعداد بيانات التدريب والتحقق من الصحة

تتكون بيانات التدريب ومجموعات بيانات التحقق من الصحة من أمثلة الإدخال والإخراج لكيفية أداء النموذج.

تتطلب أنواع النماذج المختلفة تنسيقا مختلفا لبيانات التدريب.

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL). بالنسبة gpt-35-turbo-0613 لمجموعة بيانات الضبط الدقيق، يجب تنسيقها بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة .

إذا كنت ترغب في متابعة خطوة بخطوة لضبط gpt-35-turbo-0613 نموذج، فيرجى الرجوع إلى البرنامج التعليمي لضبط Azure OpenAI.

مثال على تنسيق الملف

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

تنسيق ملف دردشة متعدد الأدوار

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب jsonl. لتخطي الضبط الدقيق على رسائل مساعدة معينة، أضف زوج قيمة المفتاح الاختياري weight . weight حاليا يمكن تعيين إلى 0 أو 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

بالإضافة إلى تنسيق JSONL، يجب ترميز ملفات بيانات التدريب والتحقق من الصحة في UTF-8 وتضمين علامة ترتيب البايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

إنشاء مجموعات بيانات التدريب والتحقق من الصحة

كلما زادت أمثلة التدريب لديك، كان ذلك أفضل. لن تستمر مهام الضبط الدقيق دون 10 أمثلة تدريبية على الأقل، ولكن هذا العدد الصغير لا يكفي للتأثير بشكل ملحوظ على استجابات النموذج. من أفضل الممارسات تقديم مئات، إن لم يكن الآلاف، من أمثلة التدريب لتكون ناجحة.

بشكل عام، يمكن أن يؤدي مضاعفة حجم مجموعة البيانات إلى زيادة خطية في جودة النموذج. ولكن ضع في اعتبارك أن الأمثلة منخفضة الجودة يمكن أن تؤثر سلبا على الأداء. إذا قمت بتدريب النموذج على كمية كبيرة من البيانات الداخلية، دون أن تقوم أولا بتقليم مجموعة البيانات للحصول على أمثلة عالية الجودة فقط، فقد ينتهي بك الأمر بنموذج يعمل بشكل أسوأ بكثير من المتوقع.

استخدام معالج إنشاء نموذج مخصص

يوفر Azure OpenAI Studio معالج إنشاء نموذج مخصص، بحيث يمكنك إنشاء نموذج دقيق وتدريبه بشكل تفاعلي لمورد Azure الخاص بك.

  1. افتح Azure OpenAI Studio في https://oai.azure.com/ وسجل الدخول باستخدام بيانات الاعتماد التي لديها حق الوصول إلى مورد Azure OpenAI. أثناء سير عمل تسجيل الدخول، حدد الدليل المناسب واشتراك Azure ومورد Azure OpenAI.

  2. في Azure OpenAI Studio، استعرض للوصول إلى جزء نماذج الإدارة>، وحدد إنشاء نموذج مخصص.

    لقطة شاشة توضح كيفية الوصول إلى معالج إنشاء نموذج مخصص في Azure OpenAI Studio.

يفتح معالج إنشاء نموذج مخصص.

حدد النموذج الأساسي

الخطوة الأولى في إنشاء نموذج مخصص هي اختيار نموذج أساسي. يتيح لك جزء النموذج الأساسي اختيار نموذج أساسي لاستخدامه للنموذج المخصص. يؤثر اختيارك على أداء النموذج وتكلفته.

حدد النموذج الأساسي من القائمة المنسدلة نوع النموذج الأساسي، ثم حدد التالي للمتابعة.

يمكنك إنشاء نموذج مخصص من أحد النماذج الأساسية المتوفرة التالية:

  • babbage-002

  • davinci-002

  • gpt-35-turbo (0613)

  • gpt-35-turbo (1106)

  • gpt-35-turbo (0125)

  • gpt-4 (0613)

  • أو يمكنك ضبط نموذج تم ضبطه مسبقا، تم تنسيقه كنموذج أساسي.ft-{jobid}.

لقطة شاشة لخيارات النموذج مع نموذج مخصص مضبوط.

لمزيد من المعلومات حول نماذجنا الأساسية التي يمكن ضبطها بدقة، راجع النماذج.

اختيار بيانات التدريب

الخطوة التالية هي إما اختيار بيانات التدريب المعدة الحالية أو تحميل بيانات التدريب المعدة الجديدة لاستخدامها عند تخصيص النموذج الخاص بك. يعرض جزء بيانات التدريب أي مجموعات بيانات موجودة تم تحميلها مسبقا ويوفر أيضا خيارات لتحميل بيانات تدريب جديدة.

لقطة شاشة لجزء بيانات التدريب لمعالج إنشاء نموذج مخصص في Azure OpenAI Studio.

بالنسبة لملفات البيانات الكبيرة، نوصي بالاستيراد من مخزن Azure Blob. يمكن أن تصبح الملفات الكبيرة غير مستقرة عند تحميلها من خلال نماذج متعددة الأقسام لأن الطلبات ذرية ولا يمكن إعادة محاولة أو استئنافها. لمزيد من المعلومات حول Azure Blob Storage، راجع ما هو Azure Blob Storage؟

إشعار

يجب تنسيق ملفات بيانات التدريب كملفات JSONL، مشفرة في UTF-8 بعلامة ترتيب بايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

تحميل بيانات التدريب من ملف محلي

يمكنك تحميل مجموعة بيانات تدريب جديدة إلى الخدمة من ملف محلي باستخدام إحدى الطرق التالية:

  • اسحب الملف وأفلته في منطقة العميل في جزء بيانات التدريب، ثم حدد تحميل الملف.

  • حدد استعراض بحثا عن ملف من منطقة العميل في جزء بيانات التدريب، واختر الملف الذي تريد تحميله من مربع الحوار فتح ، ثم حدد تحميل الملف.

بعد تحديد مجموعة بيانات التدريب وتحميلها، حدد التالي للمتابعة.

لقطة شاشة لجزء بيانات التدريب لمعالج إنشاء نموذج مخصص، مع خيارات الملف المحلي.

استيراد بيانات التدريب من مخزن Azure Blob

يمكنك استيراد مجموعة بيانات تدريب من Azure Blob أو موقع ويب مشترك آخر عن طريق توفير اسم الملف وموقعه.

  1. أدخل اسم الملف للملف.

  2. بالنسبة إلى موقع الملف، قم بتوفير عنوان URL الخاص ب Azure Blob أو توقيع الوصول المشترك ل Azure Storage (SAS) أو ارتباط آخر إلى موقع ويب مشترك يمكن الوصول إليه.

  3. حدد Upload file لاستيراد مجموعة بيانات التدريب إلى الخدمة.

بعد تحديد مجموعة بيانات التدريب وتحميلها، حدد التالي للمتابعة.

لقطة شاشة لجزء بيانات التدريب لمعالج إنشاء نموذج مخصص، مع Azure Blob وخيارات موقع الويب المشترك.

اختيار بيانات التحقق من الصحة

توفر الخطوة التالية خيارات لتكوين النموذج لاستخدام بيانات التحقق من الصحة في عملية التدريب. إذا كنت لا تريد استخدام بيانات التحقق من الصحة، يمكنك اختيار التالي للمتابعة إلى الخيارات المتقدمة للنموذج. وإلا، إذا كان لديك مجموعة بيانات التحقق من الصحة، يمكنك إما اختيار بيانات التحقق من الصحة المعدة الموجودة أو تحميل بيانات التحقق من الصحة المعدة الجديدة لاستخدامها عند تخصيص النموذج الخاص بك.

يعرض جزء بيانات التحقق من الصحة أي مجموعات بيانات تدريب وتحقق موجودة تم تحميلها مسبقا ويوفر خيارات يمكنك من خلالها تحميل بيانات التحقق من الصحة الجديدة.

لقطة شاشة لجزء بيانات التحقق من الصحة لمعالج إنشاء نموذج مخصص في Azure OpenAI Studio.

بالنسبة لملفات البيانات الكبيرة، نوصي بالاستيراد من مخزن Azure Blob. يمكن أن تصبح الملفات الكبيرة غير مستقرة عند تحميلها من خلال نماذج متعددة الأقسام لأن الطلبات ذرية ولا يمكن إعادة محاولة أو استئنافها.

إشعار

على غرار ملفات بيانات التدريب، يجب تنسيق ملفات بيانات التحقق من الصحة كملفات JSONL، مشفرة في UTF-8 بعلامة ترتيب بايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

تحميل بيانات التحقق من الصحة من الملف المحلي

يمكنك تحميل مجموعة بيانات تحقق جديدة إلى الخدمة من ملف محلي باستخدام إحدى الطرق التالية:

  • اسحب الملف وأفلته في منطقة العميل في جزء بيانات التحقق من الصحة، ثم حدد تحميل الملف.

  • حدد استعراض بحثا عن ملف من منطقة العميل في جزء بيانات التحقق من الصحة، واختر الملف الذي تريد تحميله من مربع الحوار فتح، ثم حدد تحميل الملف.

بعد تحديد مجموعة بيانات التحقق من الصحة وتحميلها، حدد التالي للمتابعة.

لقطة شاشة لجزء بيانات التحقق من الصحة لمعالج إنشاء نموذج مخصص، مع خيارات الملف المحلي.

استيراد بيانات التحقق من الصحة من مخزن Azure Blob

يمكنك استيراد مجموعة بيانات التحقق من الصحة من Azure Blob أو موقع ويب مشترك آخر عن طريق توفير اسم الملف وموقعه.

  1. أدخل اسم الملف للملف.

  2. بالنسبة إلى موقع الملف، قم بتوفير عنوان URL الخاص ب Azure Blob أو توقيع الوصول المشترك ل Azure Storage (SAS) أو ارتباط آخر إلى موقع ويب مشترك يمكن الوصول إليه.

  3. حدد Upload file لاستيراد مجموعة بيانات التدريب إلى الخدمة.

بعد تحديد مجموعة بيانات التحقق من الصحة وتحميلها، حدد التالي للمتابعة.

لقطة شاشة لجزء بيانات التحقق من الصحة لمعالج إنشاء نموذج مخصص، مع Azure Blob وخيارات موقع الويب المشترك.

تكوين الخيارات المتقدمة

يعرض معالج إنشاء نموذج مخصص معلمات تدريب النموذج الذي تم ضبطه بدقة على جزء الخيارات المتقدمة. تتوفر المعلمات التالية:

الاسم النوع الوصف
batch_size integer حجم الدفعة المراد استخدامه للتدريب. حجم الدفعة هو عدد أمثلة التدريب المستخدمة لتدريب تمرير واحدة أمامي وخلفي. بشكل عام، وجدنا أن أحجام الدُفعات الأكبر تميل إلى العمل بشكل أفضل مع مجموعات البيانات الأكبر. القيمة الافتراضية بالإضافة إلى القيمة القصوى لهذه الخاصية خاصة بنموذج أساسي. يعني حجم الدفعة الأكبر أن معلمات النموذج يتم تحديثها بشكل أقل تكرارا، ولكن مع تباين أقل.
learning_rate_multiplier رقم مضاعف معدل التعلم الذي يجب استخدامه للتدريب. معدل التعلم الدقيق هو معدل التعلم الأصلي المستخدم للتدريب المسبق مضروبًا في هذه القيمة. تميل معدلات التعلم الأكبر إلى الأداء بشكل أفضل مع أحجام الدفعات الأكبر. نوصي بتجربة القيم في النطاق من 0.02 إلى 0.2 لمعرفة ما ينتج أفضل النتائج. قد يكون معدل التعلم الأصغر مفيدا لتجنب الإفراط في الاحتواء.
n_epochs integer عدد الفترات لتدريب النموذج لها. الفترة تشير إلى دورة كاملة واحدة من خلال مجموعة بيانات التدريب.
seed integer تتحكم البذور في إمكانية إعادة إنتاج الوظيفة. يجب أن يؤدي تمرير نفس معلمات البذور والوظيفة إلى نفس النتائج، ولكن قد يختلف في حالات نادرة. إذا لم يتم تحديد البذور، فسيتم إنشاء واحد لك

لقطة شاشة لجزء الخيارات المتقدمة لمعالج إنشاء نموذج مخصص، مع تحديد الخيارات الافتراضية.

حدد Default لاستخدام القيم الافتراضية لمهمة الضبط الدقيق، أو حدد Advanced لعرض قيم المعلمة الفائقة وتحريرها. عند تحديد الإعدادات الافتراضية، نحدد القيمة الصحيحة خوارزمية استنادا إلى بيانات التدريب الخاصة بك.

بعد تكوين الخيارات المتقدمة، حدد التالي لمراجعة اختياراتك وتدريب النموذج الذي تم ضبطه.

مراجعة اختياراتك وتدريب نموذجك

يعرض جزء المراجعة في المعالج معلومات حول خيارات التكوين.

لقطة شاشة لجزء المراجعة لمعالج إنشاء نموذج مخصص في Azure OpenAI Studio.

إذا كنت مستعدا لتدريب النموذج الخاص بك، فحدد Start Training job لبدء مهمة الضبط الدقيقة والعودة إلى جزء Models .

التحقق من حالة النموذج المخصص

يعرض جزء Models معلومات حول النموذج المخصص في علامة التبويب Customed models. تتضمن علامة التبويب معلومات حول حالة ومعرف الوظيفة لمهمة ضبط النموذج المخصص. عند اكتمال المهمة، تعرض علامة التبويب معرف الملف لملف النتيجة. قد تحتاج إلى تحديد Refresh لمشاهدة حالة محدثة لمهمة تدريب النموذج.

لقطة شاشة لجزء النماذج من Azure OpenAI Studio، مع عرض نموذج مخصص.

بعد بدء مهمة ضبط، قد يستغرق إكمالها بعض الوقت. قد تكون وظيفتك في قائمة الانتظار خلف وظائف أخرى على النظام. قد يستغرق تدريب النموذج الخاص بك دقائق أو ساعات اعتمادا على النموذج وحجم مجموعة البيانات.

فيما يلي بعض المهام التي يمكنك القيام بها في جزء النماذج :

  • تحقق من حالة مهمة الضبط الدقيقة للنموذج المخصص في عمود الحالة في علامة التبويب النماذج المخصصة.

  • في العمود اسم النموذج، حدد اسم النموذج لعرض مزيد من المعلومات حول النموذج المخصص. يمكنك مشاهدة حالة مهمة الضبط الدقيقة ونتائج التدريب وأحداث التدريب والمقاييس الفائقة المستخدمة في الوظيفة.

  • حدد تنزيل ملف التدريب لتنزيل بيانات التدريب التي استخدمتها للنموذج.

  • حدد تنزيل النتائج لتنزيل ملف النتائج المرفق بمهمة الضبط الدقيق للنموذج الخاص بك وتحليل نموذجك المخصص للتدريب وأداء التحقق من الصحة.

  • حدد تحديث لتحديث المعلومات على الصفحة.

لقطة شاشة لجزء Models في Azure OpenAI Studio، مع عرض نموذج مخصص.

خزينة الضبط الدقيق ل GPT-4 - المعاينة العامة

GPT-4 هو نموذجنا الأكثر تقدما الذي يمكن ضبطه بدقة لاحتياجاتك. كما هو الحال مع نماذج Azure OpenAI بشكل عام، تأتي القدرات المتقدمة للنماذج الدقيقة مع زيادة التحديات المسؤولة الذكاء الاصطناعي المتعلقة بالمحتوى الضار، والتلاعب، والسلوك الش مثل الإنسان، ومشكلات الخصوصية، والمزيد. تعرف على المزيد حول المخاطر والقدرات والقيود في نظرة عامة على ممارسات الذكاء الاصطناعي المسؤولة وملاحظة الشفافية. للمساعدة في التخفيف من المخاطر المرتبطة بنماذج GPT-4 الدقيقة، قمنا بتنفيذ خطوات تقييم إضافية للمساعدة في اكتشاف المحتوى الضار ومنعه في تدريب النماذج الدقيقة ومخرجاتها. يتم إنشاء هذه الخطوات في تصفية محتوى Microsoft Responsible الذكاء الاصطناعي Standard وAzure OpenAI Service.

  • وتجرى التقييمات في مساحات عمل خاصة ومخصصة للعملاء؛
  • نقاط نهاية التقييم في نفس الجغرافيا مثل مورد Azure OpenAI؛
  • لا يتم تخزين بيانات التدريب فيما يتعلق بإجراء التقييمات؛ يستمر تقييم النموذج النهائي فقط (قابل للنشر أو غير قابل للنشر)؛ و

يتم تعيين عوامل تصفية تقييم النموذج المضبطة GPT-4 إلى حدود محددة مسبقا ولا يمكن للعملاء تعديلها؛ وهي غير مرتبطة بأي تكوين مخصص لتصفية المحتوى قد تكون قمت بإنشائه.

تقييم البيانات

قبل بدء التدريب، يتم تقييم بياناتك للمحتوى الذي يحتمل أن يكون ضارا (العنف والجنسي والكراهية والإنصاف وإيذاء النفس - راجع تعريفات الفئات هنا). إذا تم الكشف عن محتوى ضار أعلى من مستوى الخطورة المحدد، فستفشل مهمة التدريب الخاصة بك، وستتلقى رسالة تخبرك بفئات الفشل.

نموذج الرسالة:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

يتم تقييم بيانات التدريب تلقائيا ضمن مهمة استيراد البيانات كجزء من توفير إمكانية الضبط الدقيق.

إذا فشلت مهمة الضبط بسبب الكشف عن المحتوى الضار في بيانات التدريب، فلن يتم تحصيل رسوم منك.

تقييم النماذج

بعد اكتمال التدريب ولكن قبل أن يتوفر النموذج المضبوط للنشر، يتم تقييم النموذج الناتج للاستجابات الضارة المحتملة باستخدام مقاييس المخاطر والسلامة المضمنة في Azure. باستخدام نفس النهج للاختبار الذي نستخدمه لنماذج اللغة الكبيرة الأساسية، تحاكي إمكانية التقييم لدينا محادثة مع نموذجك المضبوط لتقييم إمكانية إخراج محتوى ضار، مرة أخرى باستخدام فئات محتوى ضارة محددة (العنف والجنسي والكراهية والإنصاف والضرر الذاتي).

إذا تم العثور على نموذج لإنشاء إخراج يحتوي على محتوى تم اكتشافه على أنه ضار بمعدل أعلى من المعدل المقبول، فسيتم إعلامك بأن النموذج الخاص بك غير متوفر للتوزيع، مع معلومات حول فئات معينة من الضرر المكتشف:

نموذج الرسالة:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

لقطة شاشة لمهمة ضبط فاشلة بسبب تقييم السلامة

كما هو الحال مع تقييم البيانات، يتم تقييم النموذج تلقائيا ضمن مهمة الضبط الدقيق كجزء من توفير إمكانية الضبط الدقيق. يتم تسجيل التقييم الناتج فقط (القابل للنشر أو غير القابل للنشر) بواسطة الخدمة. إذا فشل نشر النموذج المضبوط بسبب الكشف عن المحتوى الضار في مخرجات النموذج، فلن يتم محاسبتك على تشغيل التدريب.

توزيع نموذج مخصص

عند نجاح مهمة الضبط الدقيقة، يمكنك نشر النموذج المخصص من جزء Models . يجب نشر النموذج المخصص الخاص بك لجعله متاحا للاستخدام مع استدعاءات الإكمال.

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

إشعار

يسمح بنشر واحد فقط لنموذج مخصص. يتم عرض رسالة خطأ إذا قمت بتحديد نموذج مخصص تم نشره بالفعل.

لنشر النموذج المخصص، حدد النموذج المخصص لنشره، ثم حدد Deploy model.

لقطة شاشة توضح كيفية نشر نموذج مخصص في Azure OpenAI Studio.

يتم فتح مربع الحوار Deploy model . في مربع الحوار، أدخل اسم النشر ثم حدد إنشاء لبدء نشر النموذج المخصص.

لقطة شاشة لمربع حوار Deploy Model في Azure OpenAI Studio.

يمكنك مراقبة تقدم النشر الخاص بك في جزء Deployments في Azure OpenAI Studio.

توزيع عبر المناطق

يدعم الضبط الدقيق نشر نموذج دقيق في منطقة مختلفة عن المنطقة التي تم فيها ضبط النموذج في الأصل. يمكنك أيضا النشر إلى اشتراك/منطقة مختلفة.

القيود الوحيدة هي أن المنطقة الجديدة يجب أن تدعم أيضا الضبط الدقيق وعند نشر الاشتراك المشترك، يجب أن يكون للحساب الذي ينشئ رمز التخويل للنشر حق الوصول إلى كل من اشتراكات المصدر والوجهة.

يمكن إنجاز التوزيع عبر الاشتراك/المنطقة عبر Python أو REST.

استخدام نموذج مخصص تم نشره

بعد نشر النموذج المخصص الخاص بك، يمكنك استخدامه مثل أي نموذج آخر تم نشره. يمكنك استخدام Playgrounds في Azure OpenAI Studio لتجربة التوزيع الجديد. يمكنك الاستمرار في استخدام نفس المعلمات مع النموذج المخصص الخاص بك، مثل temperature و max_tokens، كما يمكنك مع النماذج الأخرى المنشورة. بالنسبة للنماذج والنماذج davinci-002 الدقيقةbabbage-002، ستستخدم ملعب الإكمال وواجهة برمجة تطبيقات الإكمال. بالنسبة للنماذج الدقيقة gpt-35-turbo-0613 ، ستستخدم ملعب الدردشة وواجهة برمجة تطبيقات إكمال الدردشة.

لقطة شاشة لجزء Playground في Azure OpenAI Studio، مع تمييز الأقسام.

تحليل النموذج المخصص

يقوم Azure OpenAI بإرفاق ملف نتيجة يسمى results.csv بكل مهمة ضبط بعد اكتمالها. يمكنك استخدام ملف النتيجة لتحليل أداء التدريب والتحقق من صحة النموذج المخصص. يتم سرد معرف الملف لملف النتيجة لكل نموذج مخصص في العمود معرف ملف النتيجة في جزء Models ل Azure OpenAI Studio. يمكنك استخدام معرف الملف لتعريف ملف النتيجة وتنزيله من جزء ملفات البيانات في Azure OpenAI Studio.

ملف النتيجة هو ملف CSV يحتوي على صف رأس وصف لكل خطوة تدريب يتم تنفيذها بواسطة مهمة الضبط الدقيقة. يحتوي ملف النتيجة على الأعمدة التالية:

اسم العمود ‏‏الوصف
step عدد خطوة التدريب. تمثل خطوة التدريب تمريرة واحدة، للأمام والخلف، على دفعة من بيانات التدريب.
train_loss خسارة دفعة التدريب.
train_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التدريب التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
valid_loss فقدان دفعة التحقق من الصحة.
validation_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التحقق من الصحة التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
full_valid_loss فقدان التحقق من الصحة المحسوب في نهاية كل فترة. عندما يسير التدريب بشكل جيد، يجب أن ينخفض الخسارة.
full_valid_mean_token_accuracy متوسط دقة الرمز المميز الصالحة المحسوبة في نهاية كل فترة. عندما يسير التدريب على ما يرام، يجب أن تزيد دقة الرمز المميز.

يمكنك أيضا عرض البيانات في ملف results.csv كمخططات في Azure OpenAI Studio. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

ابحث عن انخفاض فقدانك بمرور الوقت، وزيادة دقتك. إذا رأيت اختلافا بين بيانات التدريب والتحقق من الصحة، فقد يشير ذلك إلى أنك مفرط في المتانة. جرب التدريب مع فترات أقل، أو مضاعف معدل تعلم أصغر.

تنظيف عمليات النشر والنماذج المخصصة وملفات التدريب

عند الانتهاء من النموذج المخصص، يمكنك حذف التوزيع والنموذج. يمكنك أيضا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها إلى الخدمة، إذا لزم الأمر.

حذف توزيع النموذج الخاص بك

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

يمكنك حذف النشر للنموذج المخصص في جزء Deployments في Azure OpenAI Studio. حدد النشر المراد حذفه، ثم حدد حذف لحذف النشر.

حذف النموذج المخصص

يمكنك حذف نموذج مخصص في جزء Models في Azure OpenAI Studio. حدد النموذج المخصص لحذفه من علامة التبويب Customed models ، ثم حدد Delete لحذف النموذج المخصص.

إشعار

لا يمكنك حذف نموذج مخصص إذا كان لديه نشر موجود. يجب عليك أولا حذف نشر النموذج الخاص بك قبل أن تتمكن من حذف النموذج المخصص الخاص بك.

احذف ملفات التدريب الخاصة بك

يمكنك اختياريا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها للتدريب، وملفات النتائج التي تم إنشاؤها أثناء التدريب، في جزء ملفات بيانات الإدارة>في Azure OpenAI Studio. حدد الملف المراد حذفه، ثم حدد حذف لحذف الملف.

الضبط المستمر

بمجرد إنشاء نموذج دقيق، قد ترغب في الاستمرار في تحسين النموذج بمرور الوقت من خلال مزيد من الضبط الدقيق. الضبط المستمر هو العملية التكرارية لاختيار نموذج تم ضبطه بالفعل كنموذج أساسي وضبطه بشكل أكبر على مجموعات جديدة من أمثلة التدريب.

لإجراء ضبط على نموذج قمت بضبطه مسبقا، ستستخدم نفس العملية كما هو موضح في إنشاء نموذج مخصص ولكن بدلا من تحديد اسم نموذج أساسي عام، يمكنك تحديد النموذج الذي تم ضبطه بالفعل. سيبدو النموذج المخصص المضبط بدقة مثل gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

لقطة شاشة لإنشاء واجهة مستخدم نموذج مخصص مع تمييز نموذج دقيق.

نوصي أيضا بتضمين المعلمة suffix لتسهيل التمييز بين التكرارات المختلفة للنموذج المضبوط. suffix يأخذ سلسلة، ويتم تعيينه لتحديد النموذج المضبط بدقة. باستخدام OpenAI Python API، يتم دعم سلسلة تصل إلى 18 حرفا ستتم إضافتها إلى اسم النموذج الذي تم ضبطه بدقة.

هام

قد تتوفر بعض الميزات الموضحة في هذه المقالة فقط في المعاينة. يتم توفير هذه المعاينة دون اتفاقية على مستوى الخدمة، ولا نوصي بها لأحمال عمل الإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

المتطلبات الأساسية

  • اقرأ دليل ضبط متى تستخدم Azure OpenAI.

  • اشتراك Azure - أنشئ اشتراكاً مجاناً.

  • الوصول الممنوح إلى Azure OpenAI في اشتراك Azure المطلوب.

  • مورد مركز Azure الذكاء الاصطناعي.

  • مشروع Azure الذكاء الاصطناعي في Azure الذكاء الاصطناعي Studio.

  • اتصال Azure OpenAI بمورد في منطقة يتم فيها دعم الضبط الدقيق.

  • يتطلب الوصول الدقيق دور مساهم OpenAI للخدمات المعرفية على مورد Azure OpenAI.

  • إذا لم يكن لديك بالفعل حق الوصول لعرض الحصة النسبية ونشر النماذج في Azure الذكاء الاصطناعي Studio، فأنت بحاجة إلى المزيد من الأذونات.

إشعار

حاليا، يجب إرسال تطبيق للوصول إلى خدمة Azure OpenAI. للتقدم للحصول على حق الوصول، أكمل هذا النموذج.

النماذج

تدعم النماذج التالية الضبط الدقيق:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

راجع صفحة النماذج للتحقق من المناطق التي تدعم حاليا الضبط الدقيق.

إذا كنت تخطط لاستخدام gpt-4 الضبط الدقيق، فيرجى الرجوع إلى إرشادات تقييم سلامة المعاينة العامة GPT-4

مراجعة سير العمل ل Azure الذكاء الاصطناعي Studio

خذ لحظة لمراجعة سير عمل الضبط الدقيق لاستخدام Azure الذكاء الاصطناعي Studio:

  1. إعداد بيانات التدريب والتحقق من الصحة.
  2. استخدم معالج ضبط النموذج في Azure الذكاء الاصطناعي Studio لتدريب النموذج المخصص.
    1. حدد نموذجا.
    2. اختر بيانات التدريب الخاصة بك.
    3. اختياريا، اختر بيانات التحقق من الصحة.
    4. اختياريا، قم بتكوين المعلمات الخاصة بك لمهمة الضبط الدقيق.
    5. راجع اختياراتك ودرب نموذجك المخصص الجديد.
  3. تحقق من حالة النموذج الذي تم ضبطه بدقة.
  4. اختياريا، قم بتحليل النموذج الذي تم ضبطه للأداء والاحتواء.
  5. انشر النموذج الذي تم ضبطه للاستخدام.
  6. استخدم النموذج الذي تم ضبطه بدقة.

إعداد بيانات التدريب والتحقق من الصحة

تتكون بيانات التدريب ومجموعات بيانات التحقق من الصحة من أمثلة الإدخال والإخراج لكيفية أداء النموذج.

تتطلب أنواع النماذج المختلفة تنسيقا مختلفا لبيانات التدريب.

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL). بالنسبة gpt-35-turbo-0613 لمجموعة بيانات الضبط الدقيق، يجب تنسيقها بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة .

إذا كنت ترغب في متابعة خطوة بخطوة لضبط gpt-35-turbo-0613 نموذج، فيرجى الرجوع إلى البرنامج التعليمي لضبط Azure OpenAI.

مثال على تنسيق الملف

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

تنسيق ملف دردشة متعدد الأدوار

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب jsonl. لتخطي الضبط الدقيق على رسائل مساعدة معينة، أضف زوج قيمة المفتاح الاختياري weight . weight حاليا يمكن تعيين إلى 0 أو 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

بالإضافة إلى تنسيق JSONL، يجب ترميز ملفات بيانات التدريب والتحقق من الصحة في UTF-8 وتضمين علامة ترتيب البايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

إنشاء مجموعات بيانات التدريب والتحقق من الصحة

كلما زادت أمثلة التدريب لديك، كان ذلك أفضل. لن تستمر مهام الضبط الدقيق دون 10 أمثلة تدريبية على الأقل، ولكن هذا العدد الصغير لا يكفي للتأثير بشكل ملحوظ على استجابات النموذج. من أفضل الممارسات تقديم مئات، إن لم يكن الآلاف، من أمثلة التدريب لتكون ناجحة.

بشكل عام، يمكن أن يؤدي مضاعفة حجم مجموعة البيانات إلى زيادة خطية في جودة النموذج. ولكن ضع في اعتبارك أن الأمثلة منخفضة الجودة يمكن أن تؤثر سلبا على الأداء. إذا قمت بتدريب النموذج على كمية كبيرة من البيانات الداخلية، دون أن تقوم أولا بتقليم مجموعة البيانات للحصول على أمثلة عالية الجودة فقط، فقد ينتهي بك الأمر بنموذج يعمل بشكل أسوأ بكثير من المتوقع.

إنشاء النموذج الذي تم ضبطه بدقة

لضبط نموذج Azure OpenAI في مشروع Azure الذكاء الاصطناعي Studio موجود، اتبع الخطوات التالية:

  1. سجل الدخول إلى Azure الذكاء الاصطناعي Studio وحدد مشروعك. إذا لم يكن لديك مشروع بالفعل، فبادر أولا بإنشاء مشروع.

  2. من القائمة اليمنى القابلة للطي، حدد "Fine-tuning>+ Fine-tune model".

    لقطة شاشة لخيار البدء في إنشاء نموذج جديد تم ضبطه.

حدد النموذج الأساسي

  1. حدد نموذجا أساسيا لضبطه. يؤثر اختيارك على أداء النموذج وتكلفته. في هذا المثال، نختار gpt-35-turbo النموذج. ثم حدد تأكيد.

    لقطة شاشة لخيار تحديد نموذج لضبطه.

  2. لدينا gpt-35-turbo إصدارات مختلفة متاحة للضبط الدقيق، لذا يرجى اختيار الإصدار الذي تريد ضبطه. سنختار (0301).

  3. نوصي أيضا بتضمين المعلمة suffix لتسهيل التمييز بين التكرارات المختلفة للنموذج المضبوط. suffix يأخذ سلسلة، ويتم تعيينه لتحديد النموذج المضبط بدقة. باستخدام OpenAI Python API، يتم دعم سلسلة تصل إلى 18 حرفا ستتم إضافتها إلى اسم النموذج الذي تم ضبطه بدقة.

إذا كان لديك أكثر من اتصال Azure OpenAI ممكن للضبط الدقيق، فاختر المورد الذي تريد استخدامه. يرجى ملاحظة أن جميع المستخدمين الذين لديهم حق الوصول إلى مورد Azure OpenAI الخاص بك سيكون لديهم حق الوصول إلى هذا النموذج الدقيق.

  1. بعد ذلك حدد التالي.

    لقطة شاشة للإعدادات الأساسية لضبط نموذج.

اختيار بيانات التدريب

الخطوة التالية هي إما اختيار بيانات التدريب المعدة الحالية أو تحميل بيانات التدريب المعدة الجديدة لاستخدامها عند تخصيص النموذج الخاص بك. يعرض جزء بيانات التدريب أي مجموعات بيانات موجودة تم تحميلها مسبقا ويوفر أيضا خيارات لتحميل بيانات تدريب جديدة.

لقطة شاشة لجزء بيانات التدريب لمعالج نموذج ضبط في Azure الذكاء الاصطناعي Studio.

  • إذا كانت بيانات التدريب الخاصة بك موجودة بالفعل في مشروعك، فحدد البيانات في Azure الذكاء الاصطناعي Studio.

    • حدد الملف من القائمة المعروضة في جزء بيانات التدريب.
  • إذا تم تحميل بيانات التدريب الخاصة بك بالفعل إلى خدمة Azure OpenAI، فحدد اتصال Azure OpenAI ضمن Azure OpenAI الاتصال ion.

  • لتحميل بيانات التدريب لضبط النموذج الخاص بك، حدد Upload data ثم حدد Upload file.

    • تأكد من أن جميع أمثلة التدريب الخاصة بك تتبع التنسيق المتوقع للاستدلال. لضبط النماذج بشكل فعال، تأكد من مجموعة بيانات متوازنة ومتنوعة. يتضمن ذلك الحفاظ على توازن البيانات، بما في ذلك السيناريوهات المختلفة، وتحسين بيانات التدريب بشكل دوري لتتماشى مع توقعات العالم الحقيقي، مما يؤدي في النهاية إلى استجابات نموذج أكثر دقة وتوازنا. راجع إعداد البيانات لمزيد من المعلومات.
    • بالنسبة لملفات البيانات الكبيرة، نوصي بالاستيراد من مخزن Azure Blob. يمكن أن تصبح الملفات الكبيرة غير مستقرة عند تحميلها من خلال نماذج متعددة الأقسام لأن الطلبات ذرية ولا يمكن إعادة محاولة أو استئنافها. لمزيد من المعلومات حول Azure Blob Storage، راجع ما هو Azure Blob Storage؟

إشعار

يجب تنسيق ملفات بيانات التدريب كملفات JSONL، مشفرة في UTF-8 بعلامة ترتيب بايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

لقطة شاشة لخيار تحميل بيانات التدريب محليا.

بعد تحميل الملفات، سترى معاينة لبيانات التدريب الخاصة بك. حدد التالي للمتابعة.

لقطة شاشة لمعاينة بيانات التدريب.

اختيار بيانات التحقق من الصحة

اختياريا، يمكنك اختيار توفير بيانات التحقق من الصحة لضبط النموذج الخاص بك. إذا كنت لا تريد استخدام بيانات التحقق من الصحة، يمكنك تحديد بلا وتحديد التالي للمتابعة إلى الخيارات المتقدمة للنموذج.

وإلا، إذا كان لديك مجموعة بيانات تحقق من الصحة، يمكنك إما الاختيار من بين البيانات التي تم تحميلها مسبقا أو تحميل بيانات التحقق من الصحة المعدة حديثا لاستخدامها في ضبط النموذج الخاص بك.

إشعار

على غرار ملفات بيانات التدريب، يجب تنسيق ملفات بيانات التحقق من الصحة كملفات JSONL، مشفرة في UTF-8 بعلامة ترتيب بايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

تكوين المعلمات الخاصة بك

اختياريا، قم بتكوين معلمات لمهمة الضبط الدقيق. النطاقات التالية متاحة:

الاسم النوع الوصف
batch_size integer حجم الدفعة المراد استخدامه للتدريب. حجم الدفعة هو عدد أمثلة التدريب المستخدمة لتدريب تمرير واحدة أمامي وخلفي. بشكل عام، وجدنا أن أحجام الدُفعات الأكبر تميل إلى العمل بشكل أفضل مع مجموعات البيانات الأكبر. القيمة الافتراضية بالإضافة إلى القيمة القصوى لهذه الخاصية خاصة بنموذج أساسي. يعني حجم الدفعة الأكبر أن معلمات النموذج يتم تحديثها بشكل أقل تكرارا، ولكن مع تباين أقل. عند التعيين إلى -1، يتم حساب batch_size ك 0.2٪ من الأمثلة في مجموعة التدريب والحد الأقصى هو 256.
learning_rate_multiplier رقم مضاعف معدل التعلم الذي يجب استخدامه للتدريب. معدل التعلم الدقيق هو معدل التعلم الأصلي المستخدم للتدريب المسبق مضروبًا في هذه القيمة. تميل معدلات التعلم الأكبر إلى الأداء بشكل أفضل مع أحجام الدفعات الأكبر. نوصي بتجربة القيم في النطاق من 0.02 إلى 0.2 لمعرفة ما ينتج أفضل النتائج. قد يكون معدل التعلم الأصغر مفيدا لتجنب الإفراط في الاحتواء.
n_epochs integer عدد الفترات لتدريب النموذج لها. الفترة تشير إلى دورة كاملة واحدة من خلال مجموعة بيانات التدريب. إذا تم تعيينه إلى -1، يتم تحديد عدد العهود ديناميكيا استنادا إلى بيانات الإدخال.
seed integer تتحكم البذور في إمكانية إعادة إنتاج الوظيفة. يجب أن يؤدي تمرير نفس معلمات البذور والوظيفة إلى نفس النتائج، ولكن قد يختلف في حالات نادرة. إذا لم يتم تحديد البذور، فسيتم إنشاء واحد لك.

يمكنك اختيار ترك التكوين الافتراضي أو تخصيص القيم حسب تفضيلك. بعد الانتهاء من إجراء التكوينات الخاصة بك، حدد التالي.

مراجعة اختياراتك وتدريب نموذجك

راجع اختياراتك وحدد إرسال لبدء تدريب النموذج الجديد الذي تم ضبطه.

التحقق من حالة النموذج الذي تم ضبطه بدقة

بعد إرسال مهمة الضبط الدقيق، سترى صفحة تحتوي على تفاصيل حول النموذج الذي تم ضبطه بدقة. يمكنك العثور على الحالة والمزيد من المعلومات حول النموذج الذي تم ضبطه بدقة في صفحة النماذج> الدقيقة في Azure الذكاء الاصطناعي Studio.

قد تكون وظيفتك في قائمة الانتظار خلف وظائف أخرى على النظام. قد يستغرق تدريب النموذج الخاص بك دقائق أو ساعات اعتمادا على النموذج وحجم مجموعة البيانات.

تحليل النموذج الذي تم ضبطه بدقة

بعد اكتمال الضبط بنجاح، يمكنك تنزيل ملف نتيجة يسمى results.csv من صفحة النموذج الدقيقة ضمن علامة التبويب تفاصيل . يمكنك استخدام ملف النتيجة لتحليل أداء التدريب والتحقق من صحة النموذج المخصص.

ملف النتيجة هو ملف CSV يحتوي على صف رأس وصف لكل خطوة تدريب يتم تنفيذها بواسطة مهمة الضبط الدقيقة. يحتوي ملف النتيجة على الأعمدة التالية:

اسم العمود ‏‏الوصف
step عدد خطوة التدريب. تمثل خطوة التدريب تمريرة واحدة، للأمام والخلف، على دفعة من بيانات التدريب.
train_loss خسارة دفعة التدريب.
train_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التدريب التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
valid_loss فقدان دفعة التحقق من الصحة.
validation_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التحقق من الصحة التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
full_valid_loss فقدان التحقق من الصحة المحسوب في نهاية كل فترة. عندما يسير التدريب بشكل جيد، يجب أن ينخفض الخسارة.
full_valid_mean_token_accuracy متوسط دقة الرمز المميز الصالحة المحسوبة في نهاية كل فترة. عندما يسير التدريب على ما يرام، يجب أن تزيد دقة الرمز المميز.

يمكنك أيضا عرض البيانات في ملف results.csv كمخططات في Azure الذكاء الاصطناعي Studio ضمن علامة التبويب Metrics في النموذج المضبوط بدقة. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

ابحث عن انخفاض فقدانك بمرور الوقت، وزيادة دقتك. إذا رأيت اختلافا بين بيانات التدريب والتحقق من الصحة التي قد تشير إلى أنك مفرط في المتانة. جرب التدريب مع فترات أقل، أو مضاعف معدل تعلم أصغر.

خزينة الضبط الدقيق ل GPT-4 - المعاينة العامة

GPT-4 هو نموذجنا الأكثر تقدما الذي يمكن ضبطه بدقة لاحتياجاتك. كما هو الحال مع نماذج Azure OpenAI بشكل عام، تأتي القدرات المتقدمة للنماذج الدقيقة مع زيادة التحديات المسؤولة الذكاء الاصطناعي المتعلقة بالمحتوى الضار، والتلاعب، والسلوك الش مثل الإنسان، ومشكلات الخصوصية، والمزيد. تعرف على المزيد حول المخاطر والقدرات والقيود في نظرة عامة على ممارسات الذكاء الاصطناعي المسؤولة وملاحظة الشفافية. للمساعدة في التخفيف من المخاطر المرتبطة بنماذج GPT-4 الدقيقة، قمنا بتنفيذ خطوات تقييم إضافية للمساعدة في اكتشاف المحتوى الضار ومنعه في تدريب النماذج الدقيقة ومخرجاتها. يتم إنشاء هذه الخطوات في تصفية محتوى Microsoft Responsible الذكاء الاصطناعي Standard وAzure OpenAI Service.

  • وتجرى التقييمات في مساحات عمل خاصة ومخصصة للعملاء؛
  • نقاط نهاية التقييم في نفس الجغرافيا مثل مورد Azure OpenAI؛
  • لا يتم تخزين بيانات التدريب فيما يتعلق بإجراء التقييمات؛ يستمر تقييم النموذج النهائي فقط (قابل للنشر أو غير قابل للنشر)؛ و

يتم تعيين عوامل تصفية تقييم النموذج المضبطة GPT-4 إلى حدود محددة مسبقا ولا يمكن للعملاء تعديلها؛ وهي غير مرتبطة بأي تكوين مخصص لتصفية المحتوى قد تكون قمت بإنشائه.

تقييم البيانات

قبل بدء التدريب، يتم تقييم بياناتك للمحتوى الذي يحتمل أن يكون ضارا (العنف والجنسي والكراهية والإنصاف وإيذاء النفس - راجع تعريفات الفئات هنا). إذا تم الكشف عن محتوى ضار أعلى من مستوى الخطورة المحدد، فستفشل مهمة التدريب الخاصة بك، وستتلقى رسالة تخبرك بفئات الفشل.

نموذج الرسالة:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

يتم تقييم بيانات التدريب تلقائيا ضمن مهمة استيراد البيانات كجزء من توفير إمكانية الضبط الدقيق.

إذا فشلت مهمة الضبط بسبب الكشف عن المحتوى الضار في بيانات التدريب، فلن يتم تحصيل رسوم منك.

تقييم النماذج

بعد اكتمال التدريب ولكن قبل أن يتوفر النموذج المضبوط للنشر، يتم تقييم النموذج الناتج للاستجابات الضارة المحتملة باستخدام مقاييس المخاطر والسلامة المضمنة في Azure. باستخدام نفس النهج للاختبار الذي نستخدمه لنماذج اللغة الكبيرة الأساسية، تحاكي إمكانية التقييم لدينا محادثة مع نموذجك المضبوط لتقييم إمكانية إخراج محتوى ضار، مرة أخرى باستخدام فئات محتوى ضارة محددة (العنف والجنسي والكراهية والإنصاف والضرر الذاتي).

إذا تم العثور على نموذج لإنشاء إخراج يحتوي على محتوى تم اكتشافه على أنه ضار بمعدل أعلى من المعدل المقبول، فسيتم إعلامك بأن النموذج الخاص بك غير متوفر للتوزيع، مع معلومات حول فئات معينة من الضرر المكتشف:

نموذج الرسالة:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

لقطة شاشة لمهمة ضبط فاشلة بسبب تقييم السلامة

كما هو الحال مع تقييم البيانات، يتم تقييم النموذج تلقائيا ضمن مهمة الضبط الدقيق كجزء من توفير إمكانية الضبط الدقيق. يتم تسجيل التقييم الناتج فقط (القابل للنشر أو غير القابل للنشر) بواسطة الخدمة. إذا فشل نشر النموذج المضبوط بسبب الكشف عن المحتوى الضار في مخرجات النموذج، فلن يتم محاسبتك على تشغيل التدريب.

توزيع نموذج دقيق

بمجرد ضبط النموذج الخاص بك، يمكنك نشر النموذج واستخدامه في التطبيق الخاص بك. لا يمكنك نشر نموذج دقيق من صفحة عمليات التوزيع أو صفحة الملعب في Azure الذكاء الاصطناعي Studio. الطريقة الوحيدة، حاليا، لنشر نموذج دقيق هي من صفحة تفاصيل النموذج لهذا النموذج.

عند نشر النموذج، فإنك تجعل النموذج متاحا للاستدلال، وهذا يتطلب رسوم استضافة كل ساعة. ومع ذلك، يمكن تخزين النماذج الدقيقة في Azure الذكاء الاصطناعي Studio دون أي تكلفة حتى تصبح جاهزا لاستخدامها.

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

إشعار

يسمح بنشر واحد فقط لنموذج دقيق. يتم عرض رسالة خطأ إذا قمت بتحديد نموذج تم ضبطه مسبقا.

يمكنك مراقبة تقدم النشر الخاص بك على صفحة Deployments في Azure الذكاء الاصطناعي Studio.

استخدام نموذج تم توزيعه بدقة

بعد نشر النموذج الذي تم ضبطه بدقة، يمكنك استخدامه مثل أي نموذج آخر تم نشره. يمكنك استخدام Playground في Azure الذكاء الاصطناعي Studio لتجربة التوزيع الجديد. يمكنك أيضا استخدام واجهة برمجة تطبيقات REST لاستدعاء النموذج المضبوط من تطبيقك الخاص. يمكنك حتى البدء في استخدام هذا النموذج الجديد المضبط في تدفق المطالبة لإنشاء تطبيق الذكاء الاصطناعي التوليدي.

إشعار

بالنسبة لنماذج الدردشة، يجب أن تكون رسالة النظام التي تستخدمها لتوجيه النموذج الذي تم ضبطه (سواء تم نشره أو متوفر للاختبار في الملعب) هي نفس رسالة النظام التي استخدمتها للتدريب. إذا كنت تستخدم رسالة نظام مختلفة، فقد لا يعمل النموذج كما هو متوقع.

تنظيف عمليات النشر والنماذج الدقيقة وملفات التدريب

عند الانتهاء من النموذج الذي تم ضبطه، يمكنك حذف التوزيع والنموذج. يمكنك أيضا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها إلى الخدمة، إذا لزم الأمر.

حذف توزيع النموذج الذي تم ضبطه بدقة

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

يمكنك حذف النشر للنموذج الذي تم ضبطه في صفحة Deployments في Azure الذكاء الاصطناعي Studio. حدد النشر المراد حذفه، ثم حدد حذف لحذف النشر.

احذف نموذجك الدقيق

يمكنك حذف نموذج دقيق في صفحة الضبط الدقيق في Azure الذكاء الاصطناعي Studio. حدد النموذج الذي تم ضبطه لحذفه ثم حدد حذف لحذف النموذج الذي تم ضبطه بدقة.

إشعار

لا يمكنك حذف نموذج تم ضبطه بدقة إذا كان لديه توزيع موجود. يجب عليك أولا حذف نشر النموذج الخاص بك قبل أن تتمكن من حذف النموذج الذي تم ضبطه بدقة.

احذف ملفات التدريب الخاصة بك

يمكنك اختياريا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها للتدريب، وملفات النتائج التي تم إنشاؤها أثناء التدريب. لهذا تحتاج إلى الانتقال إلى Azure OpenAI Studio والانتقال إلى جزء ملفات بيانات الإدارة>. حدد الملف المراد حذفه، ثم حدد حذف لحذف الملف.

المتطلبات الأساسية

  • اقرأ دليل ضبط متى تستخدم Azure OpenAI.
  • اشتراك Azure. أنشئ حسابًا مجانًا.
  • الوصول الممنوح إلى Azure OpenAI في اشتراك Azure المطلوب.
  • مورد Azure OpenAI. لمزيد من المعلومات، راجع إنشاء مورد ونشر نموذج باستخدام Azure OpenAI.
  • مكتبات Python التالية: os، ، ، requests. openaijson
  • يجب أن تكون مكتبة OpenAI Python الإصدار 0.28.1 على الأقل.
  • يتطلب الوصول الدقيق إلى Cognitive Services OpenAI Contributor.
  • إذا لم يكن لديك حق الوصول بالفعل لعرض الحصة النسبية، ونشر النماذج في Azure OpenAI Studio، فستتطلب أذونات إضافية.

إشعار

حاليا، يجب إرسال تطبيق للوصول إلى خدمة Azure OpenAI. للتقدم للحصول على حق الوصول، أكمل هذا النموذج.

النماذج

تدعم النماذج التالية الضبط الدقيق:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

إذا كنت تخطط لاستخدام gpt-4 الضبط الدقيق، فيرجى الرجوع إلى إرشادات تقييم سلامة المعاينة العامة GPT-4

أو يمكنك ضبط نموذج تم ضبطه مسبقا، تم تنسيقه كنموذج أساسي.ft-{jobid}.

لقطة شاشة لخيارات النموذج مع نموذج مخصص مضبوط.

راجع صفحة النماذج للتحقق من المناطق التي تدعم حاليا الضبط الدقيق.

مراجعة سير العمل ل Python SDK

خذ لحظة لمراجعة سير عمل الضبط الدقيق لاستخدام Python SDK مع Azure OpenAI:

  1. إعداد بيانات التدريب والتحقق من الصحة.
  2. حدد نموذج أساسي.
  3. تحميل بيانات التدريب الخاصة بك.
  4. تدريب النموذج المخصص الجديد الخاص بك.
  5. تحقق من حالة النموذج المخصص.
  6. انشر النموذج المخصص للاستخدام.
  7. استخدم النموذج المخصص الخاص بك.
  8. اختياريا، قم بتحليل النموذج المخصص للأداء والاحتواء.

إعداد بيانات التدريب والتحقق من الصحة

تتكون بيانات التدريب ومجموعات بيانات التحقق من الصحة من أمثلة الإدخال والإخراج لكيفية أداء النموذج.

تتطلب أنواع النماذج المختلفة تنسيقا مختلفا لبيانات التدريب.

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL). بالنسبة gpt-35-turbo-0613 لمجموعة بيانات الضبط الدقيق، يجب تنسيقها بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة .

إذا كنت ترغب في متابعة خطوة بخطوة لضبط gpt-35-turbo-0613 يرجى الرجوع إلى البرنامج التعليمي لضبط Azure OpenAI

مثال على تنسيق الملف

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

تنسيق ملف دردشة متعدد الأدوار

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب jsonl. لتخطي الضبط الدقيق على رسائل مساعدة معينة، أضف زوج قيمة المفتاح الاختياري weight . weight حاليا يمكن تعيين إلى 0 أو 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

بالإضافة إلى تنسيق JSONL، يجب ترميز ملفات بيانات التدريب والتحقق من الصحة في UTF-8 وتضمين علامة ترتيب البايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

إنشاء مجموعات بيانات التدريب والتحقق من الصحة

كلما زادت أمثلة التدريب لديك، كان ذلك أفضل. لن تستمر مهام الضبط الدقيق دون 10 أمثلة تدريبية على الأقل، ولكن هذا العدد الصغير لا يكفي للتأثير بشكل ملحوظ على استجابات النموذج. من أفضل الممارسات تقديم مئات، إن لم يكن الآلاف، من أمثلة التدريب لتكون ناجحة.

بشكل عام، يمكن أن يؤدي مضاعفة حجم مجموعة البيانات إلى زيادة خطية في جودة النموذج. ولكن ضع في اعتبارك أن الأمثلة منخفضة الجودة يمكن أن تؤثر سلبا على الأداء. إذا قمت بتدريب النموذج على كمية كبيرة من البيانات الداخلية، دون أن تقوم أولا بتقليم مجموعة البيانات للحصول على أمثلة عالية الجودة فقط، فقد ينتهي بك الأمر بنموذج يعمل بشكل أسوأ بكثير من المتوقع.

تحميل بيانات التدريب الخاصة بك

الخطوة التالية هي إما اختيار بيانات التدريب المعدة الحالية أو تحميل بيانات التدريب المعدة الجديدة لاستخدامها عند تخصيص النموذج الخاص بك. بعد إعداد بيانات التدريب الخاصة بك، يمكنك تحميل ملفاتك إلى الخدمة. هناك طريقتان لتحميل بيانات التدريب:

بالنسبة لملفات البيانات الكبيرة، نوصي بالاستيراد من مخزن Azure Blob. يمكن أن تصبح الملفات الكبيرة غير مستقرة عند تحميلها من خلال نماذج متعددة الأقسام لأن الطلبات ذرية ولا يمكن إعادة محاولة أو استئنافها. لمزيد من المعلومات حول تخزين Azure Blob، راجع ما هو تخزين Azure Blob؟

إشعار

يجب تنسيق ملفات بيانات التدريب كملفات JSONL، مشفرة في UTF-8 بعلامة ترتيب بايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

يقوم مثال Python التالي بتحميل ملفات التدريب والتحقق من الصحة المحلية باستخدام Python SDK، ويسترد معرفات الملفات التي تم إرجاعها.

# Upload fine-tuning files

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-05-01-preview"  # This API version or later is required to access seed/events/checkpoint capabilities
)

training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

# Upload the training and validation dataset files to Azure OpenAI with the SDK.

training_response = client.files.create(
    file=open(training_file_name, "rb"), purpose="fine-tune"
)
training_file_id = training_response.id

validation_response = client.files.create(
    file=open(validation_file_name, "rb"), purpose="fine-tune"
)
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

قم بإنشاء نموذج مخصص

بعد تحميل ملفات التدريب والتحقق من الصحة، تكون مستعدا لبدء مهمة الضبط الدقيقة.

توضح التعليمات البرمجية Python التالية مثالا على كيفية إنشاء مهمة ضبط جديدة باستخدام Python SDK:

في هذا المثال، نقوم أيضا بتمرير المعلمة الأولية. تتحكم البذور في إمكانية إعادة إنتاج الوظيفة. يجب أن يؤدي تمرير نفس معلمات البذور والوظيفة إلى نفس النتائج، ولكن قد يختلف في حالات نادرة. إذا لم يتم تحديد البذور، فسيتم إنشاء واحد لك.

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
    seed = 105  # seed parameter controls reproducibility of the fine-tuning job. If no seed is specified one will be generated automatically.
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

يمكنك أيضا تمرير معلمات اختيارية إضافية مثل المعلمات الفائقة للتحكم بشكل أكبر في عملية الضبط الدقيقة. للتدريب الأولي، نوصي باستخدام الإعدادات الافتراضية التلقائية الموجودة دون تحديد هذه المعلمات.

المعلمات الفائقة المدعومة الحالية للضبط الدقيق هي:

الاسم النوع الوصف
batch_size integer حجم الدفعة المراد استخدامه للتدريب. حجم الدفعة هو عدد أمثلة التدريب المستخدمة لتدريب تمرير واحدة أمامي وخلفي. بشكل عام، وجدنا أن أحجام الدُفعات الأكبر تميل إلى العمل بشكل أفضل مع مجموعات البيانات الأكبر. القيمة الافتراضية بالإضافة إلى القيمة القصوى لهذه الخاصية خاصة بنموذج أساسي. يعني حجم الدفعة الأكبر أن معلمات النموذج يتم تحديثها بشكل أقل تكرارا، ولكن مع تباين أقل.
learning_rate_multiplier رقم مضاعف معدل التعلم الذي يجب استخدامه للتدريب. معدل التعلم الدقيق هو معدل التعلم الأصلي المستخدم للتدريب المسبق مضروبًا في هذه القيمة. تميل معدلات التعلم الأكبر إلى الأداء بشكل أفضل مع أحجام الدفعات الأكبر. نوصي بتجربة القيم في النطاق من 0.02 إلى 0.2 لمعرفة ما ينتج أفضل النتائج. يمكن أن يكون معدل التعلم الأصغر مفيدا لتجنب الإفراط في الماحتواء.
n_epochs integer عدد الفترات لتدريب النموذج لها. الفترة تشير إلى دورة كاملة واحدة من خلال مجموعة بيانات التدريب.

لتعيين المعلمات الفائقة المخصصة مع الإصدار 1.x من OpenAI Python API:

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
  hyperparameters={
    "n_epochs":2
  }
)

التحقق من حالة مهمة الضبط الدقيق

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

سرد أحداث الضبط الدقيق

لفحص أحداث الضبط الفردية التي تم إنشاؤها أثناء التدريب:

قد تحتاج إلى ترقية مكتبة عميل OpenAI إلى أحدث إصدار باستخدام pip install openai --upgrade لتشغيل هذا الأمر.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Checkpoints

عندما تكتمل كل فترة تدريب، يتم إنشاء نقطة تحقق. نقطة التحقق هي نسخة تعمل بكامل طاقتها من النموذج والتي يمكن نشرها واستخدامها كنموذج مستهدف لوظائف الضبط الدقيقة اللاحقة. يمكن أن تكون نقاط التحقق مفيدة بشكل خاص، لأنها يمكن أن توفر لقطة من النموذج الخاص بك قبل حدوث المطابقات الزائدة. عند اكتمال مهمة ضبط، سيكون لديك أحدث ثلاثة إصدارات من النموذج متاحة للتوزيع. سيتم تمثيل الفترة النهائية بنموذجك المضبط، وستكون الفترة السابقة متاحة كنقاط تحقق.

يمكنك تشغيل أمر نقاط التحقق من القائمة لاسترداد قائمة نقاط التحقق المقترنة بمهمة ضبط فردية:

قد تحتاج إلى ترقية مكتبة عميل OpenAI إلى أحدث إصدار باستخدام pip install openai --upgrade لتشغيل هذا الأمر.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

خزينة الضبط الدقيق ل GPT-4 - المعاينة العامة

GPT-4 هو نموذجنا الأكثر تقدما الذي يمكن ضبطه بدقة لاحتياجاتك. كما هو الحال مع نماذج Azure OpenAI بشكل عام، تأتي القدرات المتقدمة للنماذج الدقيقة مع زيادة التحديات المسؤولة الذكاء الاصطناعي المتعلقة بالمحتوى الضار، والتلاعب، والسلوك الش مثل الإنسان، ومشكلات الخصوصية، والمزيد. تعرف على المزيد حول المخاطر والقدرات والقيود في نظرة عامة على ممارسات الذكاء الاصطناعي المسؤولة وملاحظة الشفافية. للمساعدة في التخفيف من المخاطر المرتبطة بنماذج GPT-4 الدقيقة، قمنا بتنفيذ خطوات تقييم إضافية للمساعدة في اكتشاف المحتوى الضار ومنعه في تدريب النماذج الدقيقة ومخرجاتها. يتم إنشاء هذه الخطوات في تصفية محتوى Microsoft Responsible الذكاء الاصطناعي Standard وAzure OpenAI Service.

  • وتجرى التقييمات في مساحات عمل خاصة ومخصصة للعملاء؛
  • نقاط نهاية التقييم في نفس الجغرافيا مثل مورد Azure OpenAI؛
  • لا يتم تخزين بيانات التدريب فيما يتعلق بإجراء التقييمات؛ يستمر تقييم النموذج النهائي فقط (قابل للنشر أو غير قابل للنشر)؛ و

يتم تعيين عوامل تصفية تقييم النموذج المضبطة GPT-4 إلى حدود محددة مسبقا ولا يمكن للعملاء تعديلها؛ وهي غير مرتبطة بأي تكوين مخصص لتصفية المحتوى قد تكون قمت بإنشائه.

تقييم البيانات

قبل بدء التدريب، يتم تقييم بياناتك للمحتوى الذي يحتمل أن يكون ضارا (العنف والجنسي والكراهية والإنصاف وإيذاء النفس - راجع تعريفات الفئات هنا). إذا تم الكشف عن محتوى ضار أعلى من مستوى الخطورة المحدد، فستفشل مهمة التدريب الخاصة بك، وستتلقى رسالة تخبرك بفئات الفشل.

نموذج الرسالة:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

يتم تقييم بيانات التدريب تلقائيا ضمن مهمة استيراد البيانات كجزء من توفير إمكانية الضبط الدقيق.

إذا فشلت مهمة الضبط بسبب الكشف عن المحتوى الضار في بيانات التدريب، فلن يتم تحصيل رسوم منك.

تقييم النماذج

بعد اكتمال التدريب ولكن قبل أن يتوفر النموذج المضبوط للنشر، يتم تقييم النموذج الناتج للاستجابات الضارة المحتملة باستخدام مقاييس المخاطر والسلامة المضمنة في Azure. باستخدام نفس النهج للاختبار الذي نستخدمه لنماذج اللغة الكبيرة الأساسية، تحاكي إمكانية التقييم لدينا محادثة مع نموذجك المضبوط لتقييم إمكانية إخراج محتوى ضار، مرة أخرى باستخدام فئات محتوى ضارة محددة (العنف والجنسي والكراهية والإنصاف والضرر الذاتي).

إذا تم العثور على نموذج لإنشاء إخراج يحتوي على محتوى تم اكتشافه على أنه ضار بمعدل أعلى من المعدل المقبول، فسيتم إعلامك بأن النموذج الخاص بك غير متوفر للتوزيع، مع معلومات حول فئات معينة من الضرر المكتشف:

نموذج الرسالة:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

لقطة شاشة لمهمة ضبط فاشلة بسبب تقييم السلامة

كما هو الحال مع تقييم البيانات، يتم تقييم النموذج تلقائيا ضمن مهمة الضبط الدقيق كجزء من توفير إمكانية الضبط الدقيق. يتم تسجيل التقييم الناتج فقط (القابل للنشر أو غير القابل للنشر) بواسطة الخدمة. إذا فشل نشر النموذج المضبوط بسبب الكشف عن المحتوى الضار في مخرجات النموذج، فلن يتم محاسبتك على تشغيل التدريب.

توزيع نموذج مخصص

عند نجاح مهمة الضبط الدقيقة، يتم تعيين قيمة fine_tuned_model المتغير في نص الاستجابة إلى اسم النموذج المخصص. النموذج الخاص بك متاح الآن أيضا للاكتشاف من قائمة Models API. ومع ذلك، لا يمكنك إصدار استدعاءات الإكمال إلى النموذج المخصص حتى يتم نشر النموذج المخصص. يجب نشر النموذج المخصص لجعله متاحا للاستخدام مع استدعاءات الإكمال.

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

يمكنك استخدام إما Azure OpenAI أو Azure CLI لنشر النموذج المخصص الخاص بك.

إشعار

يسمح بنشر واحد فقط لنموذج مخصص. يحدث خطأ إذا قمت بتحديد نموذج مخصص تم نشره بالفعل.

توزيع نموذج مضبط بدقة

على عكس أوامر SDK السابقة، يجب إجراء النشر باستخدام واجهة برمجة تطبيقات مستوى التحكم التي تتطلب تخويلا منفصلا ومسار API مختلفا وإصدار API مختلفا.

المتغير التعريف
الرمز المميز هناك طرق متعددة لإنشاء رمز مميز للتخويل. أسهل طريقة للاختبار الأولي هي تشغيل Cloud Shell من مدخل Microsoft Azure. ثم شغّل az account get-access-token. يمكنك استخدام هذا الرمز المميز كرمز تخويل مؤقت لاختبار واجهة برمجة التطبيقات. نوصي بتخزين هذا في متغير بيئة جديد
الاشتراك معرف الاشتراك لمورد Azure OpenAI المقترن
مجموعة الموارد اسم مجموعة الموارد لمورد Azure OpenAI
resource_name اسم مورد Azure OpenAI
model_deployment_name الاسم المخصص لنشر النموذج الجديد الذي تم ضبطه. هذا هو الاسم الذي سيتم الرجوع إليه في التعليمات البرمجية الخاصة بك عند إجراء مكالمات إكمال الدردشة.
fine_tuned_model استرداد هذه القيمة من نتائج مهمة الضبط الدقيقة في الخطوة السابقة. سيكون شكلها على هذا النحوgpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. ستحتاج إلى إضافة هذه القيمة إلى deploy_data json. بدلا من ذلك يمكنك أيضا نشر نقطة تحقق، عن طريق تمرير معرف نقطة التحقق الذي سيظهر بالتنسيق ftchkpt-e559c011ecc04fc68eaa339d8227d02d
import json
import os
import requests

token= os.getenv("<TOKEN>") 
subscription = "<YOUR_SUBSCRIPTION_ID>"  
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}

deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"fine_tuned_model">, #retrieve this value from the previous call, it will look like gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83
            "version": "1"
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

توزيع عبر المناطق

يدعم الضبط الدقيق نشر نموذج دقيق في منطقة مختلفة عن المنطقة التي تم فيها ضبط النموذج في الأصل. يمكنك أيضا النشر إلى اشتراك/منطقة مختلفة.

القيود الوحيدة هي أن المنطقة الجديدة يجب أن تدعم أيضا الضبط الدقيق وعند نشر الاشتراك المشترك، يجب أن يكون للحساب الذي ينشئ رمز التخويل للنشر حق الوصول إلى كل من اشتراكات المصدر والوجهة.

فيما يلي مثال على نشر نموذج تم ضبطه بدقة في اشتراك/منطقة إلى أخرى.

import json
import os
import requests

token= os.getenv("<TOKEN>") 

subscription = "<DESTINATION_SUBSCRIPTION_ID>"  
resource_group = "<DESTINATION_RESOURCE_GROUP_NAME>"
resource_name = "<DESTINATION_AZURE_OPENAI_RESOURCE_NAME>"

source_subscription = "<SOURCE_SUBSCRIPTION_ID>"
source_resource_group = "<SOURCE_RESOURCE_GROUP>"
source_resource = "<SOURCE_RESOURCE>"


source = f'/subscriptions/{source_subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_resource}'

model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}



deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"FINE_TUNED_MODEL_NAME">, # This value will look like gpt-35-turbo-0613.ft-0ab3f80e4f2242929258fff45b56a9ce 
            "version": "1",
            "source": source
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

للنشر بين نفس الاشتراك، ولكن المناطق المختلفة سيكون لديك مجموعات الاشتراك والموارد متطابقة لكل من متغيرات المصدر والوجهة ويجب أن تكون أسماء موارد المصدر والوجهة فقط فريدة.

نشر نموذج باستخدام Azure CLI

يوضح المثال التالي كيفية استخدام Azure CLI لنشر النموذج المخصص. باستخدام Azure CLI، يجب تحديد اسم لنشر النموذج المخصص. لمزيد من المعلومات حول كيفية استخدام Azure CLI لنشر نماذج مخصصة، راجع az cognitiveservices account deployment.

لتشغيل أمر Azure CLI هذا في نافذة وحدة تحكم، يجب استبدال العناصر النائبة> التالية <بالقيم المقابلة للنموذج المخصص:

Placeholder القيمة‬
<YOUR_AZURE_SUBSCRIPTION> اسم اشتراك Azure أو معرفه.
<YOUR_RESOURCE_GROUP> اسم مجموعة موارد Azure.
<YOUR_RESOURCE_NAME> اسم مورد Azure OpenAI.
<YOUR_DEPLOYMENT_NAME> الاسم الذي تريد استخدامه لنشر النموذج الخاص بك.
<YOUR_FINE_TUNED_MODEL_ID> اسم النموذج المخصص الخاص بك.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

استخدام نموذج مخصص منشور

بعد نشر النموذج المخصص الخاص بك، يمكنك استخدامه مثل أي نموذج آخر تم نشره. يمكنك استخدام Playgrounds في Azure OpenAI Studio لتجربة التوزيع الجديد. يمكنك الاستمرار في استخدام نفس المعلمات مع النموذج المخصص الخاص بك، مثل temperature و max_tokens، كما يمكنك مع النماذج الأخرى المنشورة. بالنسبة للنماذج والنماذج davinci-002 الدقيقةbabbage-002، ستستخدم ملعب الإكمال وواجهة برمجة تطبيقات الإكمال. بالنسبة للنماذج الدقيقة gpt-35-turbo-0613 ، ستستخدم ملعب الدردشة وواجهة برمجة تطبيقات إكمال الدردشة.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

تحليل النموذج المخصص

يقوم Azure OpenAI بإرفاق ملف نتيجة يسمى results.csv بكل مهمة ضبط بعد اكتمالها. يمكنك استخدام ملف النتيجة لتحليل أداء التدريب والتحقق من صحة النموذج المخصص. يتم سرد معرف الملف لملف النتيجة لكل نموذج مخصص، ويمكنك استخدام Python SDK لاسترداد معرف الملف وتنزيل ملف النتيجة للتحليل.

يسترد مثال Python التالي معرف الملف لملف النتيجة الأول المرفق بمهمة ضبط النموذج المخصص، ثم يستخدم Python SDK لتنزيل الملف إلى دليل العمل للتحليل.

# Retrieve the file ID of the first result file from the fine-tuning job
# for the customized model.
response = client.fine_tuning.jobs.retrieve(job_id)
if response.status == 'succeeded':
    result_file_id = response.result_files[0]

retrieve = client.files.retrieve(result_file_id)

# Download the result file.
print(f'Downloading result file: {result_file_id}')

with open(retrieve.filename, "wb") as file:
    result = client.files.content(result_file_id).read()
    file.write(result)

ملف النتيجة هو ملف CSV يحتوي على صف رأس وصف لكل خطوة تدريب يتم تنفيذها بواسطة مهمة الضبط الدقيقة. يحتوي ملف النتيجة على الأعمدة التالية:

اسم العمود ‏‏الوصف
step عدد خطوة التدريب. تمثل خطوة التدريب تمريرة واحدة، للأمام والخلف، على دفعة من بيانات التدريب.
train_loss خسارة دفعة التدريب.
train_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التدريب التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
valid_loss فقدان دفعة التحقق من الصحة.
validation_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التحقق من الصحة التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
full_valid_loss فقدان التحقق من الصحة المحسوب في نهاية كل فترة. عندما يسير التدريب بشكل جيد، يجب أن ينخفض الخسارة.
full_valid_mean_token_accuracy متوسط دقة الرمز المميز الصالحة المحسوبة في نهاية كل فترة. عندما يسير التدريب على ما يرام، يجب أن تزيد دقة الرمز المميز.

يمكنك أيضا عرض البيانات في ملف results.csv كمخططات في Azure OpenAI Studio. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

ابحث عن انخفاض فقدانك بمرور الوقت، وزيادة دقتك. إذا رأيت اختلافا بين بيانات التدريب والتحقق من الصحة التي يمكن أن تشير إلى أنك مفرط في المتانة. جرب التدريب مع فترات أقل، أو مضاعف معدل تعلم أصغر.

تنظيف عمليات النشر والنماذج المخصصة وملفات التدريب

عند الانتهاء من النموذج المخصص، يمكنك حذف التوزيع والنموذج. يمكنك أيضا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها إلى الخدمة، إذا لزم الأمر.

حذف توزيع النموذج الخاص بك

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

يمكنك استخدام أساليب مختلفة لحذف التوزيع للنموذج المخصص الخاص بك:

حذف النموذج المخصص

وبالمثل، يمكنك استخدام أساليب مختلفة لحذف النموذج المخصص:

إشعار

لا يمكنك حذف نموذج مخصص إذا كان لديه نشر موجود. يجب عليك أولا حذف نشر النموذج الخاص بك قبل أن تتمكن من حذف النموذج المخصص.

احذف ملفات التدريب الخاصة بك

يمكنك اختياريا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها للتدريب، وملفات النتائج التي تم إنشاؤها أثناء التدريب، من اشتراك Azure OpenAI. يمكنك استخدام الطرق التالية لحذف ملفات التدريب والتحقق من الصحة والنتيجة:

يستخدم مثال Python التالي Python SDK لحذف ملفات التدريب والتحقق من الصحة والنتيجة للنموذج المخصص:

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in our subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files, extracting the file IDs for the
# files with file names that match your training dataset file and
# validation dataset file names.
for item in files:
    if item["filename"] in [training_file_name, validation_file_name, result_file_name]:
        results.append(item["id"])
print(f'Found {len(results)} already uploaded files that match our files')

# Enumerate the file IDs for our files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

الضبط المستمر

بمجرد إنشاء نموذج دقيق، قد ترغب في الاستمرار في تحسين النموذج بمرور الوقت من خلال مزيد من الضبط الدقيق. الضبط المستمر هو العملية التكرارية لاختيار نموذج تم ضبطه بالفعل كنموذج أساسي وضبطه بشكل أكبر على مجموعات جديدة من أمثلة التدريب.

لإجراء ضبط على نموذج قمت بضبطه مسبقا، ستستخدم نفس العملية كما هو موضح في إنشاء نموذج مخصص ولكن بدلا من تحديد اسم نموذج أساسي عام، يمكنك تحديد معرف النموذج الذي تم ضبطه بالفعل. يبدو معرف النموذج المضبط بدقة مثل gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  
)

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

نوصي أيضا بتضمين المعلمة suffix لتسهيل التمييز بين التكرارات المختلفة للنموذج المضبوط. suffix يأخذ سلسلة، ويتم تعيينه لتحديد النموذج المضبط بدقة. باستخدام OpenAI Python API، يتم دعم سلسلة تصل إلى 18 حرفا ستتم إضافتها إلى اسم النموذج الذي تم ضبطه بدقة.

إذا لم تكن متأكدا من معرف النموذج الحالي المضبط، فيمكن العثور على هذه المعلومات في صفحة النماذج في Azure OpenAI Studio، أو يمكنك إنشاء قائمة بالنماذج لمورد Azure OpenAI معين باستخدام واجهة برمجة تطبيقات REST.

المتطلبات الأساسية

إشعار

حاليا، يجب إرسال تطبيق للوصول إلى خدمة Azure OpenAI. للتقدم للحصول على حق الوصول، أكمل هذا النموذج.

النماذج

تدعم النماذج التالية الضبط الدقيق:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

راجع صفحة النماذج للتحقق من المناطق التي تدعم حاليا الضبط الدقيق.

إذا كنت تخطط لاستخدامه gpt-4 للضبط الدقيق، فيرجى الرجوع إلى إرشادات تقييم سلامة المعاينة العامة GPT-4.

مراجعة سير العمل لواجهة برمجة تطبيقات REST

خذ لحظة لمراجعة سير عمل الضبط الدقيق لاستخدام REST APIS وPython مع Azure OpenAI:

  1. إعداد بيانات التدريب والتحقق من الصحة.
  2. حدد نموذج أساسي.
  3. تحميل بيانات التدريب الخاصة بك.
  4. تدريب النموذج المخصص الجديد الخاص بك.
  5. تحقق من حالة النموذج المخصص.
  6. انشر النموذج المخصص للاستخدام.
  7. استخدم النموذج المخصص الخاص بك.
  8. اختياريا، قم بتحليل النموذج المخصص للأداء والاحتواء.

إعداد بيانات التدريب والتحقق من الصحة

تتكون بيانات التدريب ومجموعات بيانات التحقق من الصحة من أمثلة الإدخال والإخراج لكيفية أداء النموذج.

تتطلب أنواع النماذج المختلفة تنسيقا مختلفا لبيانات التدريب.

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL). بالنسبة للنماذج gpt-35-turbo-0613 الأخرى ذات الصلة، يجب تنسيق مجموعة بيانات الضبط الدقيقة بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة .

إذا كنت ترغب في متابعة خطوة بخطوة لضبط gpt-35-turbo-0613 يرجى الرجوع إلى البرنامج التعليمي لضبط Azure OpenAI.

مثال على تنسيق الملف

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

تنسيق ملف دردشة متعدد الأدوار

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب jsonl. لتخطي الضبط الدقيق على رسائل مساعدة معينة، أضف زوج قيمة المفتاح الاختياري weight . weight حاليا يمكن تعيين إلى 0 أو 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

بالإضافة إلى تنسيق JSONL، يجب ترميز ملفات بيانات التدريب والتحقق من الصحة في UTF-8 وتضمين علامة ترتيب البايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

إنشاء مجموعات بيانات التدريب والتحقق من الصحة

كلما زادت أمثلة التدريب لديك، كان ذلك أفضل. لن تستمر مهام الضبط الدقيق دون 10 أمثلة تدريبية على الأقل، ولكن هذا العدد الصغير لا يكفي للتأثير بشكل ملحوظ على استجابات النموذج. من أفضل الممارسات تقديم مئات، إن لم يكن الآلاف، من أمثلة التدريب لتكون ناجحة.

بشكل عام، يمكن أن يؤدي مضاعفة حجم مجموعة البيانات إلى زيادة خطية في جودة النموذج. ولكن ضع في اعتبارك أن الأمثلة منخفضة الجودة يمكن أن تؤثر سلبا على الأداء. إذا قمت بتدريب النموذج على كمية كبيرة من البيانات الداخلية دون اقتطاع مجموعة البيانات أولا للحصول على أمثلة عالية الجودة فقط، فقد ينتهي بك الأمر بنموذج يعمل بشكل أسوأ بكثير من المتوقع.

حدد النموذج الأساسي

الخطوة الأولى في إنشاء نموذج مخصص هي اختيار نموذج أساسي. يتيح لك جزء النموذج الأساسي اختيار نموذج أساسي لاستخدامه للنموذج المخصص. يؤثر اختيارك على أداء النموذج وتكلفته.

حدد النموذج الأساسي من القائمة المنسدلة نوع النموذج الأساسي، ثم حدد التالي للمتابعة.

يمكنك إنشاء نموذج مخصص من أحد النماذج الأساسية المتوفرة التالية:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

أو يمكنك ضبط نموذج تم ضبطه مسبقا، تم تنسيقه كنموذج أساسي.ft-{jobid}.

لقطة شاشة لخيارات النموذج مع نموذج مخصص مضبوط.

لمزيد من المعلومات حول نماذجنا الأساسية التي يمكن ضبطها بدقة، راجع النماذج.

تحميل بيانات التدريب الخاصة بك

الخطوة التالية هي إما اختيار بيانات التدريب المعدة الحالية أو تحميل بيانات التدريب المعدة الجديدة لاستخدامها عند ضبط النموذج الخاص بك. بعد إعداد بيانات التدريب الخاصة بك، يمكنك تحميل ملفاتك إلى الخدمة. هناك طريقتان لتحميل بيانات التدريب:

بالنسبة لملفات البيانات الكبيرة، نوصي بالاستيراد من مخزن Azure Blob. يمكن أن تصبح الملفات الكبيرة غير مستقرة عند تحميلها من خلال نماذج متعددة الأقسام لأن الطلبات ذرية ولا يمكن إعادة محاولة أو استئنافها. لمزيد من المعلومات حول تخزين Azure Blob، راجع ما هو تخزين Azure Blob؟

إشعار

يجب تنسيق ملفات بيانات التدريب كملفات JSONL، مشفرة في UTF-8 بعلامة ترتيب بايت (BOM). يجب أن يكون حجم الملف أقل من 512 ميغابايت.

تحميل بيانات التدريب

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\training_set.jsonl;type=application/json"

تحميل بيانات التحقق من الصحة

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\validation_set.jsonl;type=application/json"

قم بإنشاء نموذج مخصص

بعد تحميل ملفات التدريب والتحقق من الصحة، تصبح جاهزا لبدء مهمة الضبط الدقيق. توضح التعليمات البرمجية التالية مثالا على كيفية إنشاء مهمة ضبط جديدة باستخدام واجهة برمجة تطبيقات REST.

في هذا المثال، نقوم أيضا بتمرير المعلمة الأولية. تتحكم البذور في إمكانية إعادة إنتاج الوظيفة. يجب أن يؤدي تمرير نفس معلمات البذور والوظيفة إلى نفس النتائج، ولكن يمكن أن يختلف في حالات نادرة. إذا لم يتم تحديد البذور، فسيتم إنشاء واحد لك.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105
}'

يمكنك أيضا تمرير معلمات اختيارية إضافية مثل المعلمات الفائقة للتحكم بشكل أكبر في عملية الضبط الدقيقة. للتدريب الأولي، نوصي باستخدام الإعدادات الافتراضية التلقائية الموجودة دون تحديد هذه المعلمات.

المعلمات الفائقة المدعومة الحالية للضبط الدقيق هي:

الاسم النوع الوصف
batch_size integer حجم الدفعة المراد استخدامه للتدريب. حجم الدفعة هو عدد أمثلة التدريب المستخدمة لتدريب تمرير واحدة أمامي وخلفي. بشكل عام، وجدنا أن أحجام الدُفعات الأكبر تميل إلى العمل بشكل أفضل مع مجموعات البيانات الأكبر. القيمة الافتراضية بالإضافة إلى القيمة القصوى لهذه الخاصية خاصة بنموذج أساسي. يعني حجم الدفعة الأكبر أن معلمات النموذج يتم تحديثها بشكل أقل تكرارا، ولكن مع تباين أقل.
learning_rate_multiplier رقم مضاعف معدل التعلم الذي يجب استخدامه للتدريب. معدل التعلم الدقيق هو معدل التعلم الأصلي المستخدم للتدريب المسبق مضروبًا في هذه القيمة. تميل معدلات التعلم الأكبر إلى الأداء بشكل أفضل مع أحجام الدفعات الأكبر. نوصي بتجربة القيم في النطاق من 0.02 إلى 0.2 لمعرفة ما ينتج أفضل النتائج. يمكن أن يكون معدل التعلم الأصغر مفيدا لتجنب الإفراط في الماحتواء.
n_epochs integer عدد الفترات لتدريب النموذج لها. الفترة تشير إلى دورة كاملة واحدة من خلال مجموعة بيانات التدريب.

التحقق من حالة النموذج المخصص

بعد بدء مهمة ضبط، قد يستغرق إكمالها بعض الوقت. قد تكون وظيفتك في قائمة الانتظار خلف وظائف أخرى في النظام. قد يستغرق تدريب النموذج الخاص بك دقائق أو ساعات اعتمادا على النموذج وحجم مجموعة البيانات. يستخدم المثال التالي واجهة برمجة تطبيقات REST للتحقق من حالة مهمة الضبط الدقيقة. يسترد المثال معلومات حول وظيفتك باستخدام معرف الوظيفة الذي تم إرجاعه من المثال السابق:

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY"

سرد أحداث الضبط الدقيق

لفحص أحداث الضبط الفردية التي تم إنشاؤها أثناء التدريب:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/events?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Checkpoints

عندما تكتمل كل فترة تدريب، يتم إنشاء نقطة تحقق. نقطة التحقق هي نسخة تعمل بكامل طاقتها من النموذج والتي يمكن نشرها واستخدامها كنموذج مستهدف لوظائف الضبط الدقيقة اللاحقة. يمكن أن تكون نقاط التحقق مفيدة بشكل خاص، لأنها يمكن أن توفر لقطة من النموذج الخاص بك قبل حدوث المطابقات الزائدة. عند اكتمال مهمة ضبط، سيكون لديك أحدث ثلاثة إصدارات من النموذج متاحة للتوزيع. سيتم تمثيل الفترة النهائية بنموذجك المضبط، وستكون الفترة السابقة متاحة كنقاط تحقق.

يمكنك تشغيل أمر نقاط التحقق من القائمة لاسترداد قائمة نقاط التحقق المقترنة بمهمة ضبط فردية:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

خزينة الضبط الدقيق ل GPT-4 - المعاينة العامة

GPT-4 هو نموذجنا الأكثر تقدما الذي يمكن ضبطه بدقة لاحتياجاتك. كما هو الحال مع نماذج Azure OpenAI بشكل عام، تأتي القدرات المتقدمة للنماذج الدقيقة مع زيادة التحديات المسؤولة الذكاء الاصطناعي المتعلقة بالمحتوى الضار، والتلاعب، والسلوك الش مثل الإنسان، ومشكلات الخصوصية، والمزيد. تعرف على المزيد حول المخاطر والقدرات والقيود في نظرة عامة على ممارسات الذكاء الاصطناعي المسؤولة وملاحظة الشفافية. للمساعدة في التخفيف من المخاطر المرتبطة بنماذج GPT-4 الدقيقة، قمنا بتنفيذ خطوات تقييم إضافية للمساعدة في اكتشاف المحتوى الضار ومنعه في تدريب النماذج الدقيقة ومخرجاتها. يتم إنشاء هذه الخطوات في تصفية محتوى Microsoft Responsible الذكاء الاصطناعي Standard وAzure OpenAI Service.

  • وتجرى التقييمات في مساحات عمل خاصة ومخصصة للعملاء؛
  • نقاط نهاية التقييم في نفس الجغرافيا مثل مورد Azure OpenAI؛
  • لا يتم تخزين بيانات التدريب فيما يتعلق بإجراء التقييمات؛ يستمر تقييم النموذج النهائي فقط (قابل للنشر أو غير قابل للنشر)؛ و

يتم تعيين عوامل تصفية تقييم النموذج المضبطة GPT-4 إلى حدود محددة مسبقا ولا يمكن للعملاء تعديلها؛ وهي غير مرتبطة بأي تكوين مخصص لتصفية المحتوى قد تكون قمت بإنشائه.

تقييم البيانات

قبل بدء التدريب، يتم تقييم بياناتك للمحتوى الذي يحتمل أن يكون ضارا (العنف والجنسي والكراهية والإنصاف وإيذاء النفس - راجع تعريفات الفئات هنا). إذا تم الكشف عن محتوى ضار أعلى من مستوى الخطورة المحدد، فستفشل مهمة التدريب الخاصة بك، وستتلقى رسالة تخبرك بفئات الفشل.

نموذج الرسالة:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

يتم تقييم بيانات التدريب تلقائيا ضمن مهمة استيراد البيانات كجزء من توفير إمكانية الضبط الدقيق.

إذا فشلت مهمة الضبط بسبب الكشف عن المحتوى الضار في بيانات التدريب، فلن يتم تحصيل رسوم منك.

تقييم النماذج

بعد اكتمال التدريب ولكن قبل أن يتوفر النموذج المضبوط للنشر، يتم تقييم النموذج الناتج للاستجابات الضارة المحتملة باستخدام مقاييس المخاطر والسلامة المضمنة في Azure. باستخدام نفس النهج للاختبار الذي نستخدمه لنماذج اللغة الكبيرة الأساسية، تحاكي إمكانية التقييم لدينا محادثة مع نموذجك المضبوط لتقييم إمكانية إخراج محتوى ضار، مرة أخرى باستخدام فئات محتوى ضارة محددة (العنف والجنسي والكراهية والإنصاف والضرر الذاتي).

إذا تم العثور على نموذج لإنشاء إخراج يحتوي على محتوى تم اكتشافه على أنه ضار بمعدل أعلى من المعدل المقبول، فسيتم إعلامك بأن النموذج الخاص بك غير متوفر للتوزيع، مع معلومات حول فئات معينة من الضرر المكتشف:

نموذج الرسالة:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

لقطة شاشة لمهمة ضبط فاشلة بسبب تقييم السلامة

كما هو الحال مع تقييم البيانات، يتم تقييم النموذج تلقائيا ضمن مهمة الضبط الدقيق كجزء من توفير إمكانية الضبط الدقيق. يتم تسجيل التقييم الناتج فقط (القابل للنشر أو غير القابل للنشر) بواسطة الخدمة. إذا فشل نشر النموذج المضبوط بسبب الكشف عن المحتوى الضار في مخرجات النموذج، فلن يتم محاسبتك على تشغيل التدريب.

توزيع نموذج مخصص

هام

بعد نشر نموذج مخصص، إذا ظل النشر غير نشط في أي وقت لأكثر من خمسة عشر (15) يوما، يتم حذف النشر. يعد نشر نموذج مخصص غير نشط إذا تم نشر النموذج منذ أكثر من خمسة عشر (15) يوما ولم يتم إجراء أي مكالمات إكمال أو إكمال دردشة إليه خلال فترة 15 يوما مستمرة.

لا يؤدي حذف التوزيع غير النشط إلى حذف النموذج المخصص الأساسي أو التأثير عليه، ويمكن إعادة نشر النموذج المخصص في أي وقت. كما هو موضح في تسعير خدمة Azure OpenAI، يتحمل كل نموذج مخصص (تم ضبطه بدقة) يتم نشره تكلفة استضافة كل ساعة بغض النظر عما إذا كان يتم إجراء مكالمات إكمال أو إكمال الدردشة إلى النموذج. لمعرفة المزيد حول تخطيط التكاليف وإدارتها باستخدام Azure OpenAI، راجع الإرشادات الواردة في خطة لإدارة تكاليف خدمة Azure OpenAI.

يوضح مثال Python التالي كيفية استخدام واجهة برمجة تطبيقات REST لإنشاء نشر نموذج للنموذج المخصص. تنشئ واجهة برمجة تطبيقات REST اسما لنشر النموذج المخصص.

المتغير التعريف
الرمز المميز هناك طرق متعددة لإنشاء رمز مميز للتخويل. أسهل طريقة للاختبار الأولي هي تشغيل Cloud Shell من مدخل Microsoft Azure. ثم شغّل az account get-access-token. يمكنك استخدام هذا الرمز المميز كرمز تخويل مؤقت لاختبار واجهة برمجة التطبيقات. نوصي بتخزين هذا في متغير بيئة جديد
الاشتراك معرف الاشتراك لمورد Azure OpenAI المقترن
مجموعة الموارد اسم مجموعة الموارد لمورد Azure OpenAI
resource_name اسم مورد Azure OpenAI
model_deployment_name الاسم المخصص لنشر النموذج الجديد الذي تم ضبطه. هذا هو الاسم الذي سيتم الرجوع إليه في التعليمات البرمجية الخاصة بك عند إجراء مكالمات إكمال الدردشة.
fine_tuned_model استرداد هذه القيمة من نتائج مهمة الضبط الدقيقة في الخطوة السابقة. سيكون شكلها على هذا النحوgpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. ستحتاج إلى إضافة هذه القيمة إلى deploy_data json. بدلا من ذلك يمكنك أيضا نشر نقطة تحقق، عن طريق تمرير معرف نقطة التحقق الذي سيظهر بالتنسيق ftchkpt-e559c011ecc04fc68eaa339d8227d02d
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>",
            "version": "1"
        }
    }
}'

توزيع عبر المناطق

يدعم الضبط الدقيق نشر نموذج دقيق في منطقة مختلفة عن المنطقة التي تم فيها ضبط النموذج في الأصل. يمكنك أيضا النشر إلى اشتراك/منطقة مختلفة.

القيود الوحيدة هي أن المنطقة الجديدة يجب أن تدعم أيضا الضبط الدقيق وعند نشر الاشتراك المشترك، يجب أن يكون للحساب الذي ينشئ رمز التخويل للنشر حق الوصول إلى كل من اشتراكات المصدر والوجهة.

فيما يلي مثال على نشر نموذج تم ضبطه بدقة في اشتراك/منطقة إلى أخرى.

curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>", 
            "version": "1",
            "source": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}" 
        }
    }
}'

للنشر بين نفس الاشتراك، ولكن مناطق مختلفة، سيكون لديك مجموعات الاشتراك والموارد متطابقة لكل من متغيرات المصدر والوجهة ويجب أن تكون أسماء موارد المصدر والوجهة فقط فريدة.

نشر نموذج باستخدام Azure CLI

يوضح المثال التالي كيفية استخدام Azure CLI لنشر النموذج المخصص. باستخدام Azure CLI، يجب تحديد اسم لنشر النموذج المخصص. لمزيد من المعلومات حول كيفية استخدام Azure CLI لنشر نماذج مخصصة، راجع az cognitiveservices account deployment.

لتشغيل أمر Azure CLI هذا في نافذة وحدة تحكم، يجب استبدال العناصر النائبة> التالية <بالقيم المقابلة للنموذج المخصص:

Placeholder القيمة‬
<YOUR_AZURE_SUBSCRIPTION> اسم اشتراك Azure أو معرفه.
<YOUR_RESOURCE_GROUP> اسم مجموعة موارد Azure.
<YOUR_RESOURCE_NAME> اسم مورد Azure OpenAI.
<YOUR_DEPLOYMENT_NAME> الاسم الذي تريد استخدامه لنشر النموذج الخاص بك.
<YOUR_FINE_TUNED_MODEL_ID> اسم النموذج المخصص الخاص بك.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

استخدام نموذج مخصص منشور

بعد نشر النموذج المخصص الخاص بك، يمكنك استخدامه مثل أي نموذج آخر تم نشره. يمكنك استخدام Playgrounds في Azure OpenAI Studio لتجربة التوزيع الجديد. يمكنك الاستمرار في استخدام نفس المعلمات مع النموذج المخصص الخاص بك، مثل temperature و max_tokens، كما يمكنك مع النماذج الأخرى المنشورة. بالنسبة للنماذج والنماذج davinci-002 الدقيقةbabbage-002، ستستخدم ملعب الإكمال وواجهة برمجة تطبيقات الإكمال. بالنسبة للنماذج الدقيقة gpt-35-turbo-0613 ، ستستخدم ملعب الدردشة وواجهة برمجة تطبيقات إكمال الدردشة.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'

تحليل النموذج المخصص

يقوم Azure OpenAI بإرفاق ملف نتيجة يسمى results.csv بكل مهمة ضبط بعد اكتمالها. يمكنك استخدام ملف النتيجة لتحليل أداء التدريب والتحقق من صحة النموذج المخصص. يتم سرد معرف الملف لملف النتيجة لكل نموذج مخصص، ويمكنك استخدام واجهة برمجة تطبيقات REST لاسترداد معرف الملف وتنزيل ملف النتيجة للتحليل.

يستخدم مثال Python التالي واجهة برمجة تطبيقات REST لاسترداد معرف الملف لملف النتيجة الأول المرفق بمهمة ضبط النموذج المخصص، ثم يقوم بتنزيل الملف إلى دليل العمل للتحليل.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<JOB_ID>?api-version=2023-12-01-preview" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/files/<RESULT_FILE_ID>/content?api-version=2023-12-01-preview" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

ملف النتيجة هو ملف CSV يحتوي على صف رأس وصف لكل خطوة تدريب يتم تنفيذها بواسطة مهمة الضبط الدقيقة. يحتوي ملف النتيجة على الأعمدة التالية:

اسم العمود ‏‏الوصف
step عدد خطوة التدريب. تمثل خطوة التدريب تمريرة واحدة، للأمام والخلف، على دفعة من بيانات التدريب.
train_loss خسارة دفعة التدريب.
train_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التدريب التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
valid_loss فقدان دفعة التحقق من الصحة.
validation_mean_token_accuracy النسبة المئوية للرمز المميزة في دفعة التحقق من الصحة التي توقعها النموذج بشكل صحيح.
على سبيل المثال، إذا تم تعيين حجم الدفعة إلى 3 وتحتوي بياناتك على عمليات إكمال [[1, 2], [0, 5], [4, 2]]، يتم تعيين هذه القيمة إلى 0.83 (5 من 6) إذا توقع [[1, 1], [0, 5], [4, 2]]النموذج .
full_valid_loss فقدان التحقق من الصحة المحسوب في نهاية كل فترة. عندما يسير التدريب بشكل جيد، يجب أن ينخفض الخسارة.
full_valid_mean_token_accuracy متوسط دقة الرمز المميز الصالحة المحسوبة في نهاية كل فترة. عندما يسير التدريب على ما يرام، يجب أن تزيد دقة الرمز المميز.

يمكنك أيضا عرض البيانات في ملف results.csv كمخططات في Azure OpenAI Studio. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

ابحث عن انخفاض فقدانك بمرور الوقت، وزيادة دقتك. إذا رأيت اختلافا بين بيانات التدريب والتحقق من الصحة التي قد تشير إلى أنك مفرط في المتانة. جرب التدريب مع فترات أقل، أو مضاعف معدل تعلم أصغر.

تنظيف عمليات النشر والنماذج المخصصة وملفات التدريب

عند الانتهاء من النموذج المخصص، يمكنك حذف التوزيع والنموذج. يمكنك أيضا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها إلى الخدمة، إذا لزم الأمر.

حذف توزيع النموذج الخاص بك

يمكنك استخدام أساليب مختلفة لحذف التوزيع للنموذج المخصص الخاص بك:

حذف النموذج المخصص

وبالمثل، يمكنك استخدام أساليب مختلفة لحذف النموذج المخصص:

إشعار

لا يمكنك حذف نموذج مخصص إذا كان لديه نشر موجود. يجب عليك أولا حذف نشر النموذج الخاص بك قبل أن تتمكن من حذف النموذج المخصص.

احذف ملفات التدريب الخاصة بك

يمكنك اختياريا حذف ملفات التدريب والتحقق من الصحة التي قمت بتحميلها للتدريب، وملفات النتائج التي تم إنشاؤها أثناء التدريب، من اشتراك Azure OpenAI. يمكنك استخدام الطرق التالية لحذف ملفات التدريب والتحقق من الصحة والنتيجة:

الضبط المستمر

بمجرد إنشاء نموذج دقيق، قد ترغب في الاستمرار في تحسين النموذج بمرور الوقت من خلال مزيد من الضبط الدقيق. الضبط المستمر هو العملية التكرارية لاختيار نموذج تم ضبطه بالفعل كنموذج أساسي وضبطه بشكل أكبر على مجموعات جديدة من أمثلة التدريب.

لإجراء ضبط على نموذج قمت بضبطه مسبقا، يمكنك استخدام نفس العملية كما هو موضح في إنشاء نموذج مخصص ولكن بدلا من تحديد اسم نموذج أساسي عام، يمكنك تحديد معرف النموذج الذي تم ضبطه بالفعل. يبدو معرف النموذج المضبط بدقة مثل gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "suffix": "<additional text used to help identify fine-tuned models>"
}'

نوصي أيضا بتضمين المعلمة suffix لتسهيل التمييز بين التكرارات المختلفة للنموذج المضبوط. suffix يأخذ سلسلة، ويتم تعيينه لتحديد النموذج المضبط بدقة. يمكن أن تحتوي اللاحقة على ما يصل إلى 40 حرفا (a-z وA-Z و0-9 و_) ستتم إضافتها إلى اسم النموذج المضبط.

إذا لم تكن متأكدا من معرف النموذج الذي تم ضبطه بدقة، فيمكن العثور على هذه المعلومات في صفحة النماذج في Azure OpenAI Studio، أو يمكنك إنشاء قائمة بالنماذج لمورد Azure OpenAI معين باستخدام واجهة برمجة تطبيقات REST.

استكشاف الأخطاء وإصلاحها

كيف أعمل تمكين الضبط الدقيق؟ هل تم تعطيل إنشاء نموذج مخصص في Azure OpenAI Studio؟

من أجل الوصول إلى الضبط الدقيق بنجاح، تحتاج إلى تعيين مساهم OpenAI للخدمات المعرفية. حتى شخص ما بأذونات مسؤول istrator للخدمة عالية المستوى سيظل بحاجة إلى تعيين هذا الحساب بشكل صريح للوصول إلى الضبط الدقيق. لمزيد من المعلومات، يرجى مراجعة إرشادات التحكم في الوصول المستندة إلى الدور.

لماذا فشل تحميلي؟

إذا فشل تحميل الملف في Azure OpenAI Studio، يمكنك عرض رسالة الخطأ ضمن "ملفات البيانات" في Azure OpenAI Studio. مرر الماوس فوق المكان الذي يظهر فيه "خطأ" (أسفل عمود الحالة) وسيتم عرض شرح للفشل.

لقطة شاشة لرسالة خطأ الضبط الدقيق.

لا يبدو أن نموذجي المضبط قد تحسن

  • رسالة النظام المفقودة: تحتاج إلى توفير رسالة نظام عند ضبطها؛ ستحتاج إلى توفير نفس رسالة النظام هذه عند استخدام النموذج المضبط بدقة. إذا قمت بتوفير رسالة نظام مختلفة، فقد ترى نتائج مختلفة عما قمت بضبطه.

  • لا توجد بيانات كافية: في حين أن 10 هو الحد الأدنى لتشغيل البنية الأساسية لبرنامج ربط العمليات التجارية، فأنت بحاجة إلى مئات إلى آلاف نقاط البيانات لتعليم النموذج مهارة جديدة. هناك عدد قليل جدا من نقاط البيانات التي تخاطر بالإفراط في التهيئة وسوء التعميم. قد يعمل نموذجك المضبط بشكل جيد على بيانات التدريب، ولكنه ضعيف في البيانات الأخرى لأنه حفظ أمثلة التدريب بدلا من أنماط التعلم. للحصول على أفضل النتائج، خطط لإعداد مجموعة بيانات بمئات أو آلاف نقاط البيانات.

  • بيانات سيئة: ستنتج مجموعة بيانات منسقة بشكل سيئ أو غير ممثلة نموذجا منخفض الجودة. قد يتعلم نموذجك أنماطا غير دقيقة أو متحيزة من مجموعة البيانات الخاصة بك. على سبيل المثال، إذا كنت تقوم بتدريب روبوت دردشة لخدمة العملاء، ولكنك توفر فقط بيانات التدريب لسيناريو واحد (على سبيل المثال، إرجاع العنصر) فلن يعرف كيفية الاستجابة لسيناريوهات أخرى. أو، إذا كانت بيانات التدريب الخاصة بك سيئة (تحتوي على استجابات غير صحيحة)، فسيتعلم النموذج الخاص بك تقديم نتائج غير صحيحة.

الخطوات التالية