مشاركة عبر


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

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

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

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

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

هناك تجربتان فريدتان للضبط الدقيق في مدخل Azure الذكاء الاصطناعي Foundry:

إذا كنت تقوم فقط بضبط نماذج Azure OpenAI، نوصي بتجربة ضبط مركزية ل Azure OpenAI المتوفرة عن طريق الانتقال إلى https://ai.azure.com/resource/overview.

هام

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

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

النماذج المدعومة

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

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

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

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

  1. إعداد بيانات التدريب والتحقق من الصحة.
  2. استخدم مربع الحوار Create a fine-tuned model في مدخل Microsoft Azure الذكاء الاصطناعي Foundry لتدريب النموذج المخصص.
    1. حدد أسلوب تدريب.
    2. حدد نموذج أساسي.
    3. اختيار نوع التدريب الخاص بك
    4. اختر بيانات التدريب الخاصة بك.
    5. اختياريا، اختر بيانات التحقق من الصحة.
    6. اختياريا، قم بتكوين معلمات المهمة لمهمة الضبط الدقيقة.
    7. اختياريا، قم بتمكين النشر التلقائي للنموذج المخصص الناتج.
    8. راجع اختياراتك ودرب نموذجك المخصص الجديد.
  3. تحقق من حالة النموذج المخصص المضبط.
  4. انشر النموذج المخصص للاستخدام.
  5. استخدم النموذج المخصص الخاص بك.
  6. اختياريا، قم بتحليل نموذجك المخصص للأداء والاحتواء.

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

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

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL) ويجب تنسيقها بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة.

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

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

{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}

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

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب 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}]}

إكمال الدردشة مع الرؤية

{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}

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

مراعاة حجم مجموعات البيانات

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

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

إنشاء نموذج دقيق

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

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

  2. في مدخل Microsoft Azure الذكاء الاصطناعي Foundry، استعرض للوصول إلى جزء Tools > Fine-tuning ، وحدد Fine-tune model.

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

  3. حدد نموذجا لضبطه، ثم حدد التالي للمتابعة.

    لقطة شاشة لمربع حوار تحديد النموذج في مدخل Microsoft Azure الذكاء الاصطناعي Foundry.

يجب أن تشاهد الآن مربع الحوار Create a fine-tuned model .

لقطة شاشة لمربع حوار Create a fine-tuned model.

اختر أسلوب التدريب الخاص بك

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

  • الضبط الدقيق الخاضع للإشراف (SFT): مدعوم من قبل جميع النماذج غير المنطقية.
  • تحسين التفضيل المباشر (معاينة) (DPO): مدعوم من قبل GPT-4o.
  • الضبط الدقيق للتعزيز (معاينة) (RFT): مدعوم بنماذج المنطق، مثل o4-mini.

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

اختيار نوع التدريب الخاص بك

حدد مستوى التدريب الذي تريد استخدامه لمهمة الضبط الدقيقة:

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

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

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

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

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

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

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

    • حدد الملف من القائمة المنسدلة المعروضة.
  • لتحميل بيانات تدريب جديدة، استخدم أحد الخيارات التالية:

    • حدد تحميل الملفات لتحميل بيانات التدريب من ملف محلي.
    • حدد Azure blob أو مواقع ويب مشتركة أخرى لاستيراد بيانات التدريب من Azure Blob أو موقع ويب مشترك آخر.

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

ملاحظة

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

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

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

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

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

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

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

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

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

ملاحظة

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

جعل النموذج الخاص بك قابلا للتعري (اختياري)

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

تكوين معلمات التدريب (اختياري)

يمكنك توفير قيمة أولية اختيارية وضبط المعلمات الفائقة الإضافية.

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

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

تتوفر المعلمات الفائقة التالية للضبط عبر مدخل Azure الذكاء الاصطناعي Foundry:

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

تمكين النشر التلقائي (اختياري)

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

لقطة شاشة للتبديل بين التوزيع التلقائي في معالج إنشاء نموذج مخصص في مدخل Microsoft Azure الذكاء الاصطناعي Foundry.

ملاحظة

يتم حاليا دعم عمليات توزيع Global Standard و Developer فقط للتوزيع التلقائي. لا يوفر أي من هذين الخيارين موقع البيانات. راجع وثائق نوع التوزيع لمزيد من التفاصيل.

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

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

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

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

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

نقاط التفتيش

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

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

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

ملف النتيجة هو ملف 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 الذكاء الاصطناعي Foundry. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

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

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

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

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

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

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

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

ملاحظة

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

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

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

لإجراء ضبط على نموذج قمت بضبطه مسبقا، ستستخدم نفس العملية كما هو موضح في إنشاء نموذج دقيق ولكن بدلا من تحديد اسم نموذج أساسي عام، يمكنك تحديد النموذج الذي تم ضبطه بالفعل. سيبدو النموذج المخصص المضبط بدقة مثل gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ft

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

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

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

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

هام

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

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

يمكنك حذف التوزيع لنموذجك المخصص في جزء Deployments في مدخل Microsoft Azure الذكاء الاصطناعي Foundry. حدد النشر المراد حذفه، ثم حدد حذف لحذف النشر.

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

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

ملاحظة

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

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

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

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

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

ملاحظة

لا تدعم واجهة برمجة تطبيقات REST حاليا مهام التدريب العمومية . قد يؤدي فحص مهام التدريب العمومية عبر واجهة برمجة التطبيقات إلى إرجاع معلومات غير صحيحة.

النماذج المدعومة

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

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

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

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

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

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

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

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL) ويجب تنسيقها بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة.

إذا كنت ترغب في متابعة خطوة بخطوة لضبط gpt-4o-mini-2024-07-18 يرجى الرجوع إلى البرنامج التعليمي لضبط Azure OpenAI

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

{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}

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

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب 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}]}

إكمال الدردشة مع الرؤية

{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}

بالإضافة إلى تنسيق 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-10-21"  # 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-4.1-2025-04-14", # 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 العدد الصحيح حجم الدفعة المراد استخدامه للتدريب. حجم الدفعة هو عدد أمثلة التدريب المستخدمة لتدريب تمرير واحدة أمامي وخلفي. بشكل عام، وجدنا أن أحجام الدُفعات الأكبر تميل إلى العمل بشكل أفضل مع مجموعات البيانات الأكبر. كما أن القيمة الافتراضية بالإضافة إلى القيمة القصوى لهذه الخاصية خاصة بنموذج أساسي. يعني حجم الدفعة الأكبر أن معلمات النموذج يتم تحديثها بشكل أقل تكرارا، ولكن مع تباين أقل.
learning_rate_multiplier رقم مضاعف معدل التعلم الذي يجب استخدامه للتدريب. معدل التعلم الدقيق هو معدل التعلم الأصلي المستخدم للتدريب المسبق مضروبًا في هذه القيمة. تميل معدلات التعلم الأكبر إلى الأداء بشكل أفضل مع أحجام الدفعات الأكبر. نوصي بتجربة القيم في النطاق من 0.02 إلى 0.2 لمعرفة ما ينتج أفضل النتائج. يمكن أن يكون معدل التعلم الأصغر مفيدا لتجنب الإفراط في الماحتواء.
n_epochs العدد الصحيح عدد العهود لتدريب النموذج لها. تشير الفترة إلى دورة كاملة واحدة من خلال مجموعة بيانات التدريب.
seed العدد الصحيح تتحكم البيانات الأولية في إمكانية إعادة إنتاج الوظيفة. يجب أن يؤدي في نفس البيانات الأولية ونفس معلمات الوظيفة أن ينتج نفس النتائج، لكن قد يحدث اختلاف في حالات نادرة. إذا لم يتم تحديد البذور، إنشاء واحد لك.

لتعيين المعلمات الفائقة المخصصة مع الإصدار 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-10-21"  # This API version or later is required
)

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-4.1-2025-04-14", # 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))

نقاط التفتيش

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

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

response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))

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

يقوم 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 الذكاء الاصطناعي Foundry. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

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

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

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

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

على عكس أوامر 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-4.1-2025-04-14.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-41-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2024-10-01"} # control plane API version rather than dataplane API for this call 
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-4.1-2025-04-14.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())

تعرف على المزيد حول النشر عبر المناطق واستخدم النموذج المنشور هنا.

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

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

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

لإجراء ضبط على نموذج قمت بضبطه مسبقا، ستستخدم نفس العملية كما هو موضح في إنشاء نموذج مخصص ولكن بدلا من تحديد اسم نموذج أساسي عام، يمكنك تحديد معرف النموذج الذي تم ضبطه بالفعل. يبدو معرف النموذج المضبط بدقة مثل gpt-4.1-2025-04-14.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-10-21"  
)

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7"
)

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 الذكاء الاصطناعي Foundry، أو يمكنك إنشاء قائمة بالنماذج لمورد Azure OpenAI معين باستخدام واجهة برمجة تطبيقات REST.

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

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

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

هام

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

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

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

ملاحظة

لا تدعم واجهة برمجة تطبيقات REST حاليا مهام التدريب العمومية . قد يؤدي فحص مهام التدريب العمومية عبر واجهة برمجة التطبيقات إلى إرجاع معلومات غير صحيحة.

النماذج المدعومة

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

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

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

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

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

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

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

يجب تنسيق بيانات التدريب والتحقق من الصحة التي تستخدمها كمستند خطوط JSON (JSONL) ويجب تنسيقها بتنسيق المحادثة الذي تستخدمه واجهة برمجة تطبيقات إكمال الدردشة.

إذا كنت ترغب في متابعة خطوة بخطوة لضبط gpt-4o-mini-2024-07-18 يرجى الرجوع إلى البرنامج التعليمي لضبط Azure OpenAI.

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

{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}

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

يتم أيضا دعم عمليات تحويل متعددة للمحادثة في سطر واحد من ملف تدريب 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}]}

إكمال الدردشة مع الرؤية

{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}

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

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

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

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

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

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

بالنسبة لملفات البيانات الكبيرة، نوصي بالاستيراد من مخزن 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-10-21 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4.1-2025-04-14",
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105
}'

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

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

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

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

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

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2024-10-21 \
  -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-10-21 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

نقاط التفتيش

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

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

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

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

يقوم 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 الذكاء الاصطناعي Foundry. حدد الارتباط الخاص بالنموذج المدرب، وسترى ثلاثة مخططات: الخسارة، والدقة المتوسطة للرمز المميز، ودقة الرمز المميز. إذا قمت بتوفير بيانات التحقق من الصحة، فستظهر كلتا مجموعات البيانات على نفس الرسم.

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

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

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

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

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

متغير التعريف
رمز مميز هناك طرق متعددة لإنشاء رمز مميز للتخويل. أسهل طريقة للاختبار الأولي هي تشغيل Cloud Shell من مدخل Microsoft Azure. ثم قم بتشغيل az account get-access-token. يمكنك استخدام هذا الرمز المميز كرمز تخويل مؤقت لاختبار واجهة برمجة التطبيقات. نوصي بتخزين هذا في متغير بيئة جديد.
الاشتراك معرف الاشتراك لمورد Azure OpenAI المقترن.
مجموعة الموارد اسم مجموعة الموارد لمورد Azure OpenAI.
resource_name اسم مورد Azure OpenAI.
model_deployment_name الاسم المخصص لنشر النموذج الجديد الذي تم ضبطه. هذا هو الاسم الذي سيتم الرجوع إليه في التعليمات البرمجية الخاصة بك عند إجراء مكالمات إكمال الدردشة.
fine_tuned_model استرداد هذه القيمة من نتائج مهمة الضبط الدقيقة في الخطوة السابقة. سيكون شكلها على هذا النحوgpt-4.1-2025-04-14.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=2024-10-21" \
  -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"
        }
    }
}'

تعرف على المزيد حول النشر عبر المناطق واستخدم النموذج المنشور هنا.

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

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

لإجراء ضبط على نموذج قمت بضبطه مسبقا، يمكنك استخدام نفس العملية كما هو موضح في إنشاء نموذج مخصص ولكن بدلا من تحديد اسم نموذج أساسي عام، يمكنك تحديد معرف النموذج الذي تم ضبطه بالفعل. يبدو معرف النموذج المضبط بدقة مثل gpt-4.1-2025-04-14.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-4.1-2025-04-14.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 الذكاء الاصطناعي Foundry، أو يمكنك إنشاء قائمة بالنماذج لمورد Azure OpenAI معين باستخدام واجهة برمجة تطبيقات REST.

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

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

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

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

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

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

ملاحظة

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

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

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

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