Büyük dil modellerinin etkinliği büyük ölçüde onlara verdiğimiz talimatlara bağlıdır. İstem mühendisliği, soruları LLM'den en iyi çıkışı alacak şekilde oluşturma sürecidir. LLM tabanlı bir özelliği uygulamada önemli bir adımdır.
İstem mühendisliği yinelemeli bir süreçtir. Farklı LLM'leri denediyseniz daha iyi bir sonuç elde etmek için isteminizde değişiklik yapmanız gerektiğini fark etmişsinizdir.
Bu durum, farklı boyutlardaki modeller için de geçerlidir.
Gemini veya ChatGPT gibi büyük LLM'ler tarafından desteklenen sohbet arayüzleri, genellikle çok az istemle tatmin edici sonuçlar sağlayabilir. Ancak, hassas ayarlanmamış varsayılan, daha küçük bir LLM ile çalışırken yaklaşımınızı uyarlamanız gerekir.
Daha küçük LLM'ler daha az güçlüdür ve daha küçük bir bilgi havuzuna sahiptir.
"Daha küçük LLM'ler" ne anlama geliyor?
LLM boyutları karmaşıktır ve üreticiler tarafından her zaman açıklanmaz.
Bu belgede "daha küçük LLM'ler", 30 milyar parametrenin altındaki tüm modeller anlamına gelir. Şu anda, birkaç milyon ila birkaç milyar parametre içeren modeller, tüketici sınıfı cihazlarda tarayıcıda gerçekçi bir şekilde çalıştırılabilir.
Daha küçük LLM'ler nerede kullanılır?
- Cihaz üzerinde/tarayıcıda üretken yapay zeka. Örneğin, MediaPipe'in LLM Tahmini API'si ile Gemma 2B'yi (yalnızca CPU'lu cihazlar için bile uygundur) veya Transformers.js ile tarayıcıda DistilBert'i kullanıyorsanız. Web indirmelerinin makul bir düzeyde tutulması ve cihazın bellek ve GPU/CPU kısıtlamalarına uygun olması için bir modeli indirip kullanıcının cihazında çıkarım yapmak yalnızca bu küçük LLM'lerle mümkündür.
- Özel sunucu tarafı üretken yapay zeka. Gemma 2B, Gemma 7B veya Gemma 27B gibi küçük açık ağırlıklı modelleri kendi sunucunuzda çalıştırabilir (ve isteğe bağlı olarak hassas ayar yapabilirsiniz).
Başlayın
Gemini veya ChatGPT gibi büyük LLM'ler tarafından desteklenen sohbet arayüzleri, genellikle minimum düzeyde istemle tatmin edici sonuçlar sağlayabilir. Ancak daha küçük LLM'lerle çalışırken yaklaşımınızı uyarlamanız gerekir. Daha küçük LLM'ler daha az güçlüdür ve daha küçük bir bilgi havuzuna sahiptir.
Bağlam ve kesin biçim talimatları sağlayın
Küçük LLM'lerle optimum sonuçlar elde etmek için daha ayrıntılı ve spesifik istemler oluşturun.
Örneğin:
Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.
Review: "${review}"
Rating:
Giriş (yorum) | Çıkış (değerlendirme) | |
---|---|---|
Daha büyük LLM (Gemini 1.5) | Daha küçük LLM (Gemma 2B) | |
Kesinlikle mükemmel bir uyum. Ağırlığı iyi dağıtıyor ve tüm gün süren yürüyüşlerde bile şaşırtıcı derecede rahat. Öneririm. | 5 | 5 üzerinden 4 yıldız** |
Kayışlar ince ve ağır yükler altında omuzlarıma batmaya başladı. | 1 | 2/5 |
Gemini 1.5 bu basit istemle istenen çıkışı sağlarken Gemma'nın çıkışı tatmin edici değildir:
- Biçim yanlış. Derecelendirme için bir tam sayı istedik.
- Derecelendirme pek doğru değil. İlk yorum, 5 yıldızlı bir yorumu belirtecek kadar hevesli.
Bu sorunu düzeltmek için istem mühendisliği tekniklerini, tek, birkaç ve çok çekimli istemleri ve düşünce zinciri istemlerini kullanmamız gerekir. Ayrıca net biçim talimatları sağlamalı ve modelin tüm puan aralığını kullanması gerektiğini vurgulamalıyız.
Örneğin:
`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`;
Giriş (yorum) | Daha küçük bir LLM (Gemma 2B) ile çıkış |
---|---|
Kesinlikle mükemmel bir uyum. Ağırlığı iyi dağıtıyor ve gün boyu yapılan yürüyüşlerde bile şaşırtıcı derecede rahat. Öneririm. |
Analiz: Bu yorum son derece olumludur ve ürünün uyumluluğunu ve rahatlığını vurgulamaktadır. Bu da üründen memnun kalındığını gösterir. Bu nedenle yüksek puan aldı. Derecelendirme (tam sayı): 5 |
Askıları ince ve ağır yükler altında omuzlarıma batmaya başladı. |
**Analizi:** Yorumda, kayışlarla ilgili önemli bir konfor sorunu vurgulanmaktadır. Ayrıca, ürünün ağır yükler veya uzun süreli geziler için uygun olmayabileceğini de gösterir. **Derecelendirme:** 1 (en kötü) |
Daha ayrıntılı istemimiz, az sayıda istem ve düşünce zinciri istem teknikleriyle birlikte daha doğru derecelendirmeler sağlar.
Manuel çıkış ayrıştırması bekleniyor
LLM'lerin çıktılarını her zaman manuel olarak temizlemeniz ve yorumlamanız gerekir. Bu durum, özellikle daha az rafine sonuçlar üretebilecek ve düşünce zinciri istemi gerektirebilecek küçük LLM'ler için geçerlidir.
İlk örnekte düşünce zinciri istemi kullandık. Bu nedenle, çıkış hem analiz hem de derecelendirme içeriyordu ve derecelendirmeyi manuel olarak ayrıştırmamız gerekiyordu. Ayrıca, önceki bölümdeki çıkışta tutarsız biçimlendirmeye dikkat edin: Model bazen markdown çıkışı yapar ancak her zaman yapmaz.
// 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 farklılıkları
Genellikle daha büyük LLM'lere giriş noktası olan Gemini API veya OpenAI gibi LLM bulut API'leri kullanışlı istem özellikleri sunar. Örneğin, Gemini 1.5 Pro sistem talimatları ve JSON modu sunar.
Şu anda bu özellikler, özel model kullanımı veya MediaPipe LLM Tahmini API ya da Transformers.js gibi tarayıcı içi yapay zeka API'leri kullanılarak erişilen daha küçük LLM'ler için her zaman kullanılamaz. Bu durum teknik bir sınırlama olmasa da tarayıcı içi yapay zeka API'leri daha basit olma eğilimindedir.
Mind jetonu sınırları
Daha küçük LLM'ler için isteminizde örnekler veya daha ayrıntılı talimatlar bulunması gerektiğinden, isteminiz muhtemelen daha uzun olur ve varsa giriş jetonu sınırınızın daha büyük bir kısmını kaplar.
Ayrıca, küçük modellerin giriş jetonu sınırı daha küçüktür. Örneğin, Gemini 1.5 Pro'nun 1 milyon giriş jetonu sınırı varken Gemma modellerinin 8 bin bağlam penceresi vardır.
Sınıra ulaşmaktan kaçınmak için jeton sayısı işlevlerini kullanın.
Süre tahminlerinizi uyarlama
Mühendislik zaman tahminlerinizde hızlı tasarım ve test süresini hesaba katın.
API farklılıkları ve jeton sınırları nedeniyle, isteminizi daha küçük bir LLM için oluşturmak daha büyük bir LLM için oluşturmaktan daha fazla zaman ve çaba gerektirebilir. LLM'nin çıktısını test etmek ve doğrulamak da daha fazla çaba gerektirebilir.
İstem mühendisliği mi yoksa ince ayar mı?
Web geliştiricileri için, özel eğitim ve hassas ayarlama yerine üretken yapay zekadan yararlanmak üzere tercih ettiğimiz yöntem ise istem mühendisliğidir. Ancak özellikle daha küçük bir LLM kullanıyorsanız gelişmiş istem mühendisliği bile bazı kullanım alanlarında yeterli olmayabilir.
Aşağıdaki durumlarda hassas ayarı kullanın:
- Belirli bir görev için en üst düzey doğruluk ve performansa ihtiyacınız var. İnce ayar, optimum sonuçlar için modelin dahili parametrelerini doğrudan ayarlar.
- Görevinizle alakalı, tercih edilen çıktılarla etiketlenmiş, iyi seçilmiş verileriniz var. Etkili ince ayar yapmak için bu verilere ihtiyacınız vardır.
- Modeli aynı amaç için tekrar tekrar kullanıyorsanız. İnce ayar bir kez yapılabilir ve belirli bir görev için yeniden kullanılabilir.