ছোট এলএলএম-এর জন্য ব্যবহারিক প্রম্পট ইঞ্জিনিয়ারিং

মড নলপাস
Maud Nalpas

একটি বৃহৎ ভাষা মডেলের কার্যকারিতা আমাদের দেওয়া নির্দেশাবলীর উপর ব্যাপকভাবে নির্ভর করে। প্রম্পট ইঞ্জিনিয়ারিং হল এমনভাবে প্রশ্ন তৈরি করার প্রক্রিয়া যা একটি এলএলএম থেকে সেরা আউটপুট পায়। এটি একটি LLM-ভিত্তিক বৈশিষ্ট্য বাস্তবায়নের একটি গুরুত্বপূর্ণ পদক্ষেপ।

প্রম্পট ইঞ্জিনিয়ারিং একটি পুনরাবৃত্তিমূলক প্রক্রিয়া। আপনি যদি বিভিন্ন এলএলএম নিয়ে পরীক্ষা-নিরীক্ষা করে থাকেন, আপনি সম্ভবত লক্ষ্য করেছেন যে আরও ভাল ফলাফল অর্জনের জন্য আপনাকে আপনার প্রম্পট পরিবর্তন করতে হবে।

এটি বিভিন্ন আকারের মডেলগুলির জন্যও সত্য।

বড় এলএলএম দ্বারা চালিত চ্যাট ইন্টারফেস, যেমন জেমিনি বা চ্যাটজিপিটি, প্রায়ই ন্যূনতম প্রম্পটিং প্রচেষ্টার সাথে সন্তোষজনক ফলাফল দিতে পারে। যাইহোক, যখন একটি ডিফল্ট, ছোট LLM এর সাথে কাজ করার সময় যেটি সূক্ষ্ম টিউন করা হয়নি, আপনাকে আপনার পদ্ধতির সাথে মানিয়ে নিতে হবে।

ছোট এলএলএমগুলি কম শক্তিশালী এবং এর থেকে আঁকতে তথ্যের একটি ছোট পুল রয়েছে।

"ছোট এলএলএম" বলতে আমরা কী বুঝি?

এলএলএম আকার নির্ধারণ করা জটিল, এবং সেগুলি সর্বদা নির্মাতারা প্রকাশ করেন না।

এই নথিতে, "ছোট LLMs" মানে 30B প্যারামিটারের অধীনে যেকোনো মডেল। আজ অবধি, কয়েক মিলিয়ন থেকে কয়েক বিলিয়ন প্যারামিটার সহ মডেলগুলি বাস্তবসম্মতভাবে ব্রাউজারে, গ্রাহক-গ্রেড ডিভাইসগুলিতে চালানো যেতে পারে।

ছোট এলএলএম কোথায় ব্যবহার করা হয়?

  • অন-ডিভাইস/ইন-ব্রাউজার জেনারেটিভ AI , উদাহরণস্বরূপ যদি আপনি MediaPipe-এর LLM ইনফারেন্স API (এমনকি শুধুমাত্র CPU-এর জন্য উপযুক্ত) বা Transformers.js- এর সাথে ব্রাউজারে DistilBert-এর সাথে Gemma 2B ব্যবহার করছেন। একটি মডেল ডাউনলোড করা এবং ব্যবহারকারীর ডিভাইসে অনুমান চালানো কেবলমাত্র এই ছোট LLMগুলির সাথেই সম্ভব, যাতে ওয়েব ডাউনলোডগুলিকে যুক্তিসঙ্গত রাখা যায় এবং একটি ডিভাইসের মেমরি এবং GPU/CPU সীমাবদ্ধতার সাথে মানানসই হয়৷
  • কাস্টম সার্ভার-সাইড জেনারেটিভ এআই । Gemma 2B, Gemma 7B বা Gemma 27B এর মতো ছোট ওপেন-ওয়েট মডেলগুলি আপনার নিজের সার্ভারে চালানোর জন্য উপলব্ধ (এবং ঐচ্ছিকভাবে সূক্ষ্ম টিউন)।

শুরু করুন

জেমিনি বা ChatGPT-এর মতো বড় LLM দ্বারা চালিত চ্যাট ইন্টারফেসগুলি প্রায়ই ন্যূনতম প্রম্পটিং প্রচেষ্টার সাথে সন্তোষজনক ফলাফল দিতে পারে। যাইহোক, ছোট এলএলএম-এর সাথে কাজ করার সময়, আপনাকে আপনার পদ্ধতির সাথে মানিয়ে নিতে হবে। ছোট এলএলএমগুলি কম শক্তিশালী এবং এর থেকে আঁকতে তথ্যের একটি ছোট পুল রয়েছে।

প্রসঙ্গ এবং সুনির্দিষ্ট বিন্যাস নির্দেশাবলী প্রদান করুন

ছোট LLM-এর সাহায্যে সর্বোত্তম ফলাফল পেতে, আরও বিস্তারিত এবং নির্দিষ্ট প্রম্পট তৈরি করুন।

যেমন:

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

Review: "${review}"
Rating:
ইনপুট (পর্যালোচনা) আউটপুট (রেটিং)
বড় LLM (মিথুন 1.5) ছোট LLM (Gemma 2B)
একেবারে ফিট ভালবাসা! সারাদিনের ট্র্যাকগুলিতেও ওজন ভাল এবং আশ্চর্যজনকভাবে আরামদায়ক বিতরণ করে। সুপারিশ করবে. 5 5 এর মধ্যে 4 তারা**
স্ট্র্যাপগুলি ক্ষীণ, এবং তারা ভারী বোঝার মধ্যে আমার কাঁধে খনন শুরু করে। 1 2/5

যদিও জেমিনি 1.5 এই সাধারণ প্রম্পটের সাথে পছন্দসই আউটপুট সরবরাহ করে, জেমার আউটপুট সন্তোষজনক নয়:

  • বিন্যাসটি ভুল। আমরা রেটিং জন্য একটি পূর্ণসংখ্যা অনুরোধ.
  • রেটিং বেশ সঠিক বলে মনে হচ্ছে না। প্রথম পর্যালোচনাটি একটি 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`
;
ইনপুট (পর্যালোচনা) একটি ছোট LLM সহ আউটপুট (জেমা 2B)

একেবারে ফিট ভালবাসা! সারাদিনের ট্র্যাকগুলিতেও ওজন ভাল এবং আশ্চর্যজনকভাবে আরামদায়ক বিতরণ করে। সুপারিশ করবে.

বিশ্লেষণ: এই পর্যালোচনাটি অত্যন্ত ইতিবাচক এবং পণ্যটির মানানসই এবং স্বাচ্ছন্দ্যের উপর জোর দেয়, পণ্যটির প্রতি মহান সন্তুষ্টি নির্দেশ করে। এই একটি উচ্চ রেটিং ন্যায্যতা.

রেটিং (পূর্ণসংখ্যা): 5

স্ট্র্যাপগুলি ক্ষীণ, এবং তারা ভারী বোঝার মধ্যে আমার কাঁধে খনন শুরু করে।

**বিশ্লেষণ:** পর্যালোচনাটি স্ট্র্যাপের সাথে একটি উল্লেখযোগ্য আরামের সমস্যা হাইলাইট করে। এটি আরও পরামর্শ দেয় যে পণ্যটি ভারী বোঝা বা দীর্ঘায়িত ভ্রমণের জন্য উপযুক্ত নাও হতে পারে।

**রেটিং:** 1 (সবচেয়ে খারাপ)

আমাদের আরও বিস্তৃত প্রম্পট, অল্প-শট প্রম্পটিং এবং চেইন-অফ-থট প্রম্পটিং কৌশলগুলির সাথে মিলিত, আরও সঠিক রেটিং দেয়।

ম্যানুয়াল আউটপুট পার্সিং আশা করুন

যদিও আপনার সবসময় ম্যানুয়ালি পরিষ্কার করা উচিত এবং একটি LLM-এর আউটপুট ব্যাখ্যা করা উচিত, এটি বিশেষ করে ছোট LLM-এর ক্ষেত্রে সত্য যা কম পালিশ ফলাফল আনতে পারে এবং চেইন-অফ-থট প্রম্পটিংয়ের প্রয়োজন হতে পারে।

প্রথম উদাহরণে, আমরা চেইন-অফ-থট প্রম্পটিং ব্যবহার করেছি, তাই আউটপুটে একটি বিশ্লেষণ এবং একটি রেটিং উভয়ই অন্তর্ভুক্ত ছিল এবং রেটিংটির জন্য আমাদের ম্যানুয়ালি পার্স করতে হবে। এছাড়াও আউটপুট এর পূর্ববর্তী বিভাগে অসামঞ্জস্যপূর্ণ বিন্যাস লক্ষ্য করুন: মডেল কখনও কখনও মার্কডাউন আউটপুট করে, কিন্তু প্রতিবার নয়।

// 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);
}

মাইন্ড এপিআই পার্থক্য

জেমিনি এপিআই বা ওপেনএআই-এর মতো এলএলএম ক্লাউড এপিআই, যা সাধারণত বড় এলএলএম-এর এন্ট্রি পয়েন্ট, সহজ প্রম্পট বৈশিষ্ট্যগুলি অফার করে। উদাহরণস্বরূপ, Gemini 1.5 Pro সিস্টেম নির্দেশাবলী এবং JSON মোড অফার করে।

এই মুহুর্তে, এই বৈশিষ্ট্যগুলি সর্বদা কাস্টম মডেল ব্যবহারের জন্য বা ইন-ব্রাউজার AI API, যেমন MediaPipe LLM Inference API বা Transformers.js ব্যবহার করে অ্যাক্সেস করা ছোট LLMগুলির জন্য উপলব্ধ নয়। যদিও এটি অগত্যা একটি প্রযুক্তিগত সীমাবদ্ধতা নয়, ইন-ব্রাউজার এআই এপিআইগুলি ক্ষীণ হতে থাকে।

মনের টোকেন সীমা

যেহেতু ছোট LLM-এর জন্য আপনার প্রম্পটে উদাহরণ বা আরও বিশদ নির্দেশাবলী অন্তর্ভুক্ত করতে হবে, এটি সম্ভবত দীর্ঘতর হবে এবং যদি একটি থাকে তবে আপনার ইনপুট টোকেন সীমার বেশি লাগবে।

উপরন্তু, ছোট মডেলের একটি ছোট ইনপুট টোকেন সীমা থাকে। উদাহরণস্বরূপ, জেমিনি 1.5 প্রো-এর একটি 1-মিলিয়ন ইনপুট টোকেন সীমা রয়েছে যেখানে জেমা মডেলগুলির একটি 8K প্রসঙ্গ উইন্ডো রয়েছে৷

সীমা আঘাত এড়াতে টোকেন গণনা ফাংশন ব্যবহার করুন।

আপনার সময়ের অনুমান মানিয়ে নিন

আপনার প্রকৌশল সময়ের অনুমানে প্রম্পট ডিজাইন এবং পরীক্ষার জন্য অ্যাকাউন্ট।

API পার্থক্য এবং টোকেন সীমার কারণে, আপনার সম্ভবত একটি বড় LLM থেকে একটি ছোট LLM-এর জন্য আপনার প্রম্পট তৈরি করতে আরও সময় এবং প্রচেষ্টার প্রয়োজন হবে৷ এলএলএম-এর আউটপুট পরীক্ষা এবং যাচাই করাও উচ্চতর প্রচেষ্টা হতে পারে।

প্রম্পট ইঞ্জিনিয়ার বনাম ফাইন টিউনিং?

ওয়েব ডেভেলপারদের জন্য, প্রম্পট ইঞ্জিনিয়ারিং হল কাস্টম ট্রেনিং এবং ফাইন-টিউনিং এর উপর জেনারেটিভ AI ব্যবহার করার আমাদের পছন্দের উপায়। কিন্তু এমনকি উন্নত প্রম্পট ইঞ্জিনিয়ারিং কিছু ব্যবহারের ক্ষেত্রে যথেষ্ট নাও হতে পারে, বিশেষ করে যদি আপনি একটি ছোট এলএলএম ব্যবহার করেন।

ফাইন-টিউনিং ব্যবহার করুন যখন:

  • একটি নির্দিষ্ট কাজের জন্য আপনার শীর্ষস্থানীয় নির্ভুলতা এবং কর্মক্ষমতা প্রয়োজন। সূক্ষ্ম টিউনিং সর্বোত্তম ফলাফলের জন্য মডেলের অভ্যন্তরীণ পরামিতিগুলিকে সরাসরি সামঞ্জস্য করে।
  • আপনার কাছে ভালভাবে কিউরেট করা ডেটা আছে, আপনার কাজের সাথে প্রাসঙ্গিক, ইতিমধ্যেই পছন্দের আউটপুট দিয়ে লেবেল করা আছে। কার্যকরী সূক্ষ্ম টিউনিংয়ের জন্য আপনার এই ডেটার প্রয়োজন৷
  • আপনি একই উদ্দেশ্যে বারবার মডেল ব্যবহার করেন। সূক্ষ্ম টিউনিং একবার করা যেতে পারে, এবং একটি নির্দিষ্ট কাজের জন্য পুনরায় ব্যবহার করা যেতে পারে।