هندسة الطلبات العملية للنماذج اللغوية الكبيرة الأصغر حجمًا

Maud Nalpas
Maud Nalpas

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

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

وينطبق ذلك أيضًا على الطُرز ذات الأحجام المختلفة.

إنّ واجهات المحادثات المستندة إلى نماذج لغوية كبيرة، مثل Gemini أو ChatGPT، يمكنها غالبًا تحقيق نتائج مرضية بأقل جهد ممكن. ومع ذلك، عند استخدام نموذج معالجة لغوية كبير تلقائيًا أصغر حجمًا لم يتم تحسينه، عليك تعديل نهجك.

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

ما المقصود بـ "النماذج اللغوية الكبيرة الأصغر حجمًا"؟

إنّ تحديد أحجام النماذج اللغوية الكبيرة أمر معقّد، ولا يكشف صنّاعها دائمًا عن هذه الأحجام.

في هذا المستند، تشير "النماذج اللغوية الكبيرة الأصغر حجمًا" إلى أي نموذج يضم أقل من 30 مليار مَعلمة. اعتبارًا من اليوم، يمكن تشغيل النماذج التي تحتوي على بضعة ملايين إلى بضعة مليارات مَعلمة بشكل واقعي في المتصفّح على الأجهزة المخصّصة للمستهلكين.

أين يتم استخدام النماذج اللغوية الصغيرة؟

  • الذكاء الاصطناعي التوليدي على الجهاز أو في المتصفّح، على سبيل المثال إذا كنت تستخدم Gemma 2B مع واجهة برمجة التطبيقات Inference API الخاصة بالنموذج اللغوي الكبير في MediaPipe (حتى إذا كانت مناسبة للأجهزة التي تعمل بالمعالج المركزي فقط) أو DistilBert في المتصفّح باستخدام Transformers.js. لا يمكن تنزيل نموذج وتنفيذ الاستنتاج على جهاز المستخدم إلا باستخدام نماذج اللغة الكبيرة الحجم هذه، وذلك للحفاظ على عمليات تنزيل الويب ضمن حدود معقولة وملائم لحدود ذاكرة الجهاز ووحدة معالجة الرسومات/وحدة المعالجة المركزية.
  • الذكاء الاصطناعي التوليدي المخصّص من جهة الخادم تتوفّر نماذج صغيرة مفتوحة المصدر، مثل Gemma 2B أو Gemma 7B أو Gemma 27B، ويمكنك تشغيلها على خادمك الخاص (وهناك إمكانية لتعديلها).

البدء

يمكن أن تحقّق واجهات المحادثات المستندة إلى النماذج اللغوية الكبيرة، مثل Gemini أو ChatGPT، نتائج مُرضية في أغلب الأحيان بأقل جهد ممكن. ومع ذلك، عند العمل مع نماذج لغوية كبيرة أصغر حجمًا، عليك تعديل نهجك. تكون النماذج اللغوية الكبيرة الأصغر حجمًا أقل فعالية وتستند إلى مجموعة معلومات أصغر.

تقديم سياق وإرشادات دقيقة حول التنسيق

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

على سبيل المثال:

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
Input (review) الناتج (التقييم)
  نموذج لغوي أكبر (Gemini 1.5) نموذج لغوي كبير أصغر حجمًا (Gemma 2B)
أحبّ التصميم كثيرًا. توزّع الوزن بشكل جيد وتكون مريحة بشكل مدهش حتى في الرحلات التي تستغرق يومًا كاملاً. أنصح به. 5 4 من أصل 5 نجوم**
أحزمة الحزام ضعيفة، وبدأت تضغط على كتفي عند حمل الأحمال الثقيلة. 1 2/5

على الرغم من أنّ Gemini 1.5 يقدّم النتيجة المطلوبة باستخدام هذا الطلب البسيط، فإنّ نتيجة Gemma ليست مرضية:

  • التنسيق غير صحيح. لقد طلبنا عددًا صحيحًا للتقييم.
  • يبدو أنّ التقييم غير دقيق. المراجعة الأولى إيجابية بما يكفي للإشارة إلى أنّها مراجعة بـ 5 نجوم.

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

على سبيل المثال:

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`
;
Input (review) الإخراج باستخدام نموذج لغوي كبير (Gemma 2B) أصغر حجمًا

أحبّ التصميم كثيرًا. توزّع الوزن بشكل جيد وبشكل مفاجئ مريح حتى في الرحلات التي تستغرق يومًا كاملاً أنصح به.

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

التقييم (عدد صحيح): 5

أحزمة الحزام ضعيفة، وبدأت تضغط على كتفي عند حمل الأحمال الثقيلة.

**التحليل:** تُبرز المراجعة مشكلة كبيرة في الراحة تتعلّق بأحزمة الحذاء. ويشير ذلك أيضًا إلى أنّ المنتج قد لا يكون مناسبًا للحمولات الثقيلة أو الرحلات الطويلة.

**التقييم:** 1 (أسوأ)

تؤدي الطلبات الأكثر تفصيلاً، إلى جانب أساليب طلب التعليقات التي تستند إلى عدد قليل من اللقطات وسلسلة من الأفكار، إلى تقديم تقييمات أكثر دقة.

توقّع تحليل النتائج يدويًا

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

في المثال الأول، استخدمنا سلسلة من الطلبات المتعلّقة بمسار التفكير، لذا تضمنت النتيجة تحليلاً وتقييمًا، ويجب تحليل التقييم يدويًا. يُرجى أيضًا ملاحظة التنسيق غير المتّسق في الإخراج في القسم السابق: يعرض النموذج أحيانًا تنسيق Markdown، ولكن ليس في كل مرة.

// Use try/catch to catch (parsing) errors
try {
 
// Parse the output for a rating
 
const int = /[1-5]/;
 
const ratingAsString = llmOutput.match(int)[0];
 
// Parse as int
 
const ratingAsInt = parseInt(ratingAsString);
 
// `checkRating` checks the rating is a number between 1 and 5, since the
 
// regEx may catch a number like "100"
 
const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console
.error('Error', e);
}

الاختلافات في Mind API

توفّر واجهات برمجة التطبيقات في السحابة الإلكترونية للنماذج اللغوية الكبيرة، مثل Gemini API أو OpenAI، ميزات طلبات مفيدة، وهي عادةً نقطة دخول إلى نماذج لغوية كبيرة. على سبيل المثال، يوفّر Gemini 1.5 Pro تعليمات النظام و وضع JSON.

في الوقت الحالي، لا تتوفّر هذه الميزات دائمًا لاستخدام النماذج المخصّصة أو للنماذج اللغوية الصغيرة التي يتم الوصول إليها باستخدام واجهات برمجة تطبيقات الذكاء الاصطناعي داخل المتصفّح، مثل MediaPipe LLM Inference API أو Transformers.js. على الرغم من أنّ هذا ليس بالضرورة قيدًا تقنيًا، تميل واجهات برمجة تطبيقات الذكاء الاصطناعي المضمّنة في المتصفّح إلى أن تكون أبسط.

حدود الرموز المميّزة في Mind

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

بالإضافة إلى ذلك، تميل النماذج الأصغر حجمًا إلى أن يكون لها حدّ أصغر لرمز إدخال البيانات. على سبيل المثال، يتضمّن Gemini 1.5 Pro حدًا أقصى لملايين الرموز المميّزة التي يمكن إدخالها بينما تتضمّن نماذج Gemma 8, 000 رمز مميّز يستند إلى السياق.

استخدِم دوالّ احتساب عدد الرموز المميّزة لتجنُّب الوصول إلى الحدّ الأقصى.

تعديل تقديرات الوقت

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

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

Prompt engineer versus fine tuning?

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

استخدِم ميزة "التحسين" في الحالات التالية:

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