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

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

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

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

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

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

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

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

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

أين تُستخدَم النماذج اللغوية الكبيرة الأصغر حجمًا؟

  • الذكاء الاصطناعي التوليدي على الجهاز أو في المتصفّح، مثلاً إذا كنت تستخدم Gemma 2B مع LLM 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 آلاف رمز مميّز.

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

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

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

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

مقارنة بين هندسة الطلبات والضبط الدقيق

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

استخدِم ميزة الضبط الدقيق في الحالات التالية:

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