اثربخشی یک مدل زبانی بزرگ به شدت به دستورالعملهایی که به آن میدهیم وابسته است. مهندسی سریع فرآیند طراحی سوالات به روشی است که بهترین خروجی را از یک LLM دریافت کند. این یک گام حیاتی در پیادهسازی یک ویژگی مبتنی بر LLM است.
مهندسی سریع یک فرآیند تکراری است. اگر با LLM های مختلف آزمایش کرده باشید، احتمالاً متوجه شدهاید که برای دستیابی به نتیجه بهتر، باید دستور خود را کمی تغییر دهید.
این موضوع در مورد مدلهایی با اندازههای مختلف نیز صادق است.
رابطهای چت که توسط LLM های بزرگ، مانند Gemini یا ChatGPT، پشتیبانی میشوند، اغلب میتوانند با حداقل تلاش برای فراخوانی، نتایج رضایتبخشی ایجاد کنند. با این حال، هنگام کار با یک LLM پیشفرض و کوچکتر که به خوبی تنظیم نشده است، باید رویکرد خود را تطبیق دهید.
LLM های کوچکتر قدرت کمتری دارند و اطلاعات کمتری برای استخراج دارند.
منظور ما از «LLM های کوچکتر» چیست؟
تعریف اندازههای LLM پیچیده است و سازندگان همیشه آنها را فاش نمیکنند.
در این سند، «LLM های کوچکتر» به معنای هر مدلی با پارامترهای کمتر از 30B است. امروزه، مدلهایی با چند میلیون تا چند میلیارد پارامتر میتوانند به طور واقعی در مرورگر و روی دستگاههای مصرفی اجرا شوند.
LLM های کوچکتر کجا استفاده می شوند؟
- هوش مصنوعی مولد روی دستگاه/در مرورگر ، برای مثال اگر از Gemma 2B با API استنتاج LLM مدیاپایپ (حتی مناسب برای دستگاههای فقط CPU) یا DistilBert در مرورگر با Transformers.js استفاده میکنید. دانلود یک مدل و اجرای استنتاج روی دستگاه کاربر فقط با این LLMهای کوچکتر امکانپذیر است، تا دانلودهای وب معقول باقی بمانند و با محدودیتهای حافظه و GPU/CPU دستگاه مطابقت داشته باشند.
- هوش مصنوعی مولد سفارشی سمت سرور . مدلهای کوچک و آزاد مانند Gemma 2B، Gemma 7B یا Gemma 27B برای اجرا روی سرور خودتان (و تنظیم دقیق اختیاری) در دسترس هستند.
شروع کنید
رابطهای چت که توسط LLM های بزرگ، مانند Gemini یا ChatGPT، پشتیبانی میشوند، اغلب میتوانند با حداقل تلاش برای ایجاد انگیزه، نتایج رضایتبخشی ایجاد کنند. با این حال، هنگام کار با LLM های کوچکتر، باید رویکرد خود را تطبیق دهید. 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 بزرگتر (Gemini 1.5) | LLM کوچکتر (Gemma 2B) | |
| کاملاً عاشق تناسبش شدم! وزن را به خوبی توزیع میکند و به طرز شگفتآوری حتی در پیادهرویهای تمام روز راحت است. توصیه میکنم. | ۵ | ۴ از ۵ ستاره** |
| بندها سست هستند و زیر بارهای سنگین شروع به فرو رفتن در شانههایم کردند. | ۱ | ۲/۵ |
در حالی که Gemini 1.5 با این دستور ساده خروجی مورد نظر را ارائه میدهد، خروجی Gemma رضایتبخش نیست:
- قالب نادرست است. ما برای رتبهبندی یک عدد صحیح درخواست کردیم.
- به نظر نمیرسد این رتبهبندی کاملاً دقیق باشد. اولین نقد به اندازه کافی مشتاقانه است که به آن ۵ ستاره بدهد.
برای رفع این مشکل، باید از تکنیکهای مهندسی سریع، یعنی راهنمایی تک مرحلهای، چند مرحلهای و چند مرحلهای و راهنمایی زنجیرهای افکار استفاده کنیم. همچنین باید دستورالعملهای قالببندی واضحی ارائه دهیم و اصرار کنیم که مدل باید از طیف کامل رتبهبندیها استفاده کند.
برای مثال:
`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) کوچکتر (Gemma 2B) |
|---|---|
کاملاً عاشق تناسبش شدم! وزن را به خوبی توزیع میکند و به طرز شگفتآوری حتی در پیادهرویهای تمام روز راحت است. توصیه میکنم. | تحلیل: این نقد بسیار مثبت است و بر تناسب و راحتی محصول تأکید دارد که نشاندهنده رضایت زیاد از محصول است. این موضوع امتیاز بالا را توجیه میکند. امتیاز (عدد صحیح): ۵ |
بندها سست هستند و زیر بارهای سنگین شروع به فرو رفتن در شانههایم کردند. | **تحلیل:** این بررسی، مشکل راحتی قابل توجهی را در مورد بندها برجسته میکند. همچنین نشان میدهد که این محصول ممکن است برای بارهای سنگین یا گردشهای طولانی مدت مناسب نباشد. **امتیاز:** ۱ (بدترین) |
روش دقیقتر ما برای یادآوری، همراه با تکنیکهای یادآوری چند مرحلهای و زنجیرهای از افکار، رتبهبندیهای دقیقتری ارائه میدهد.
انتظار تجزیه خروجی دستی را داشته باشید
اگرچه شما همیشه باید خروجی یک LLM را به صورت دستی تمیز و تفسیر کنید، این امر به ویژه در مورد LLM های کوچکتر صادق است که ممکن است نتایج کمتری ارائه دهند و ممکن است نیاز به ایجاد زنجیره ای از افکار داشته باشند.
در مثال اول، ما از زنجیره افکار استفاده کردیم، بنابراین خروجی شامل تحلیل و رتبهبندی بود و ما باید رتبهبندی را به صورت دستی تجزیه کنیم. همچنین به قالببندی متناقض در خروجی بخش قبل توجه کنید: مدل گاهی اوقات 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
APIهای ابری LLM مانند Gemini API یا OpenAI که معمولاً نقطه ورود به LLMهای بزرگتر هستند، ویژگیهای سریع و مفیدی ارائه میدهند. به عنوان مثال، Gemini 1.5 Pro دستورالعملهای سیستمی و حالت JSON را ارائه میدهد.
در حال حاضر، این ویژگیها همیشه برای استفاده از مدلهای سفارشی یا برای LLMهای کوچکتر که با استفاده از APIهای هوش مصنوعی درون مرورگری، مانند MediaPipe LLM Inference API یا Transformers.js ، قابل دسترسی هستند، در دسترس نیستند. اگرچه این لزوماً یک محدودیت فنی نیست، اما APIهای هوش مصنوعی درون مرورگری معمولاً کمحجمتر هستند.
محدودیتهای توکن ذهن
از آنجا که فرم درخواست شما برای LLM های کوچکتر باید شامل مثالها یا دستورالعملهای دقیقتری باشد، احتمالاً طولانیتر خواهد بود و در صورت وجود، بخش بیشتری از محدودیت توکن ورودی شما را اشغال خواهد کرد.
علاوه بر این، مدلهای کوچکتر معمولاً محدودیت توکن ورودی کمتری دارند. برای مثال، Gemini 1.5 Pro محدودیت توکن ورودی ۱ میلیون دارد در حالی که مدلهای Gemma دارای پنجره زمینه ۸K هستند.
برای جلوگیری از رسیدن به حد مجاز ، از توابع شمارش توکن استفاده کنید.
تخمینهای زمانی خود را تطبیق دهید
طراحی و آزمایش سریع را در تخمینهای زمانی مهندسی خود در نظر بگیرید.
با توجه به تفاوتهای API و محدودیتهای توکن، احتمالاً برای ایجاد یک LLM کوچکتر، به زمان و تلاش بیشتری نسبت به یک LLM بزرگتر نیاز خواهید داشت. آزمایش و اعتبارسنجی خروجی LLM نیز ممکن است تلاش بیشتری را طلب کند.
مهندس سریع در مقابل تنظیم دقیق؟
برای توسعهدهندگان وب، مهندسی سریع روش ترجیحی ما برای استفاده از هوش مصنوعی مولد به جای آموزش سفارشی و تنظیم دقیق است. اما حتی مهندسی سریع پیشرفته نیز ممکن است در برخی موارد استفاده کافی نباشد، به خصوص اگر از یک LLM کوچکتر استفاده میکنید.
از تنظیم دقیق زمانی استفاده کنید که:
- شما برای یک کار خاص به دقت و عملکرد درجه یک نیاز دارید. تنظیم دقیق، پارامترهای داخلی مدل را مستقیماً برای نتایج بهینه تنظیم میکند.
- شما دادههای بهخوبی گردآوریشده و مرتبط با وظیفهتان را دارید که از قبل با خروجیهای ترجیحی برچسبگذاری شدهاند. برای تنظیم دقیق و مؤثر به این دادهها نیاز دارید.
- شما از مدل برای یک هدف بارها و بارها استفاده میکنید. تنظیم دقیق میتواند یک بار انجام شود و برای یک کار خاص دوباره استفاده شود.