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

Maud Nalpas
Maud Nalpas

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

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

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

غالبًا ما تؤدي واجهات Chat المستنِدة إلى النماذج اللغوية الكبيرة، مثل 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:
الإدخال (مراجعة) الناتج (التقييم)
  نموذج لغوي أكبر (Gemini 1.5) LLM أصغر (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?

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

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

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