Daha küçük LLM'ler için pratik hızlı mühendislik

Büyük bir dil modelinin etkinliği, ona verdiğimiz talimatlara büyük ölçüde bağlıdır. İstem mühendisliği, büyük dil modelinden en iyi çıktıyı alacak şekilde soru oluşturma sürecidir. Bu, LLM tabanlı bir özelliği uygulamada önemli bir adımdır.

İstem mühendisliği, tekrara dayalı bir süreçtir. Farklı LLM'lerle denemeler yaptıysanız daha iyi sonuçlar elde etmek için isteminizi değiştirmeniz 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 üretebilir. Ancak ince ayarı yapılmamış, daha küçük ve varsayılan 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 havuzundan yararlanır.

"Daha küçük LLM'ler" ile neyi kastediyoruz?

LLM boyutlarını tanımlamak karmaşıktır ve bu boyutlar her zaman üreticiler tarafından açıklanmaz.

Bu belgede "daha küçük LLM'ler", 30 milyardan az parametreye sahip tüm modelleri ifade eder. Bugün itibarıyla, birkaç milyondan birkaç milyar parametreye sahip modeller, tüketici sınıfı cihazlarda tarayıcıda gerçekçi bir şekilde çalıştırılabiliyor.

Daha küçük LLM'ler nerede kullanılır?

  • Cihaz üzerinde/tarayıcıda üretken yapay zeka: Örneğin, MediaPipe'ın LLM Inference API'si ile Gemma 2B'yi (yalnızca CPU'lu cihazlar için bile uygundur) veya Transformers.js ile tarayıcıda DistilBert'ü kullanıyorsanız. Web'den indirme işlemlerinin makul düzeyde tutulması ve cihazın bellek ile GPU/CPU kısıtlamalarına uygun olması için yalnızca bu küçük LLM'ler kullanılarak model indirilebilir ve kullanıcının cihazında çıkarım çalıştırılabilir.
  • Ö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 ince ayar yapabilirsiniz).

Başlayın

Gemini veya ChatGPT gibi büyük LLM'ler tarafından desteklenen sohbet arayüzleri, genellikle çok az istemle tatmin edici sonuçlar üretebilir. 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 havuzundan yararlanır.

Bağlam ve kesin biçim talimatları sağlama

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ış (puan)
  Daha büyük LLM (Gemini 1.5) Daha küçük LLM (Gemma 2B)
Kalıbına bayıldım. Ağırlığı iyi dağıtır ve tüm gün süren yürüyüşlerde bile şaşırtıcı derecede rahattır. Öneririm. 5 5 üzerinden 4 yıldız**
Askılar dayanıksız ve ağır yükler altında omuzlarımı acıtmaya başladı. 1 2/5

Gemini 1.5 bu basit istemle istenen çıkışı sağlarken Gemma'nın çıkışı tatmin edici değil:

  • Biçim yanlış. Puan için tamsayı istedik.
  • Puanlama pek doğru görünmüyor. İlk yorum, 5 yıldızlı bir yorum olduğunu gösterecek kadar coşkulu.

Bu sorunu düzeltmek için istem mühendisliği tekniklerini kullanmamız gerekir. Tek, birkaç ve çok görevli istem ve düşünce zinciri istemi. Ayrıca, net biçim talimatları sağlamalı ve modelin tüm puan aralığını kullanması gerektiğini belirtmeliyiz.

Ö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ış

Kalıbına bayıldım. Ağırlığı iyi dağıtır ve tüm gün süren yürüyüşlerde bile şaşırtıcı derecede rahattır. Öneririm.

Analiz: Bu yorum oldukça olumlu ve ürünün uyumunu ve rahatlığını vurguluyor. Bu da üründen büyük memnuniyet duyulduğunu gösteriyor. Bu, yüksek bir puanı haklı çıkarır.

Puan (tam sayı): 5

Askılar dayanıksız ve ağır yükler altında omuzlarımı kesmeye başladı.

**Analiz:** Yorumda, kayışlarla ilgili önemli bir konfor sorunu vurgulanıyor. Ayrıca, ürünün ağır yükler veya uzun süreli geziler için uygun olmayabileceği de belirtiliyor.

**Puan:** 1 (en kötü)

Daha ayrıntılı istemimiz, az örnekli istem ve düşünce zinciri istemi teknikleriyle birleştiğinde daha doğru derecelendirmeler sunar.

Manuel çıktı ayrıştırma bekleniyor

LLM'lerin çıkışlarını her zaman manuel olarak temizleyip yorumlamanız gerekir. Bu durum, özellikle daha az net sonuçlar üretebilen ve düşünce zinciri istemi gerektirebilen daha küçük LLM'ler için geçerlidir.

İlk örnekte, düşünce zinciri istemi kullandığımız için çıkış hem analiz hem de derecelendirme içeriyordu ve derecelendirme için manuel olarak ayrıştırma yapmamız gerekiyordu. Ayrıca, önceki bölümdeki çıktıda tutarsız biçimlendirme olduğunu da unutmayın: Model bazen Markdown çıktısı veriyor ancak her zaman değil.

// 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ında veya MediaPipe LLM Inference API ya da Transformers.js gibi tarayıcı içi yapay zeka API'leri kullanılarak erişilen daha küçük LLM'lerde her zaman kullanılamaz. Bu durum teknik bir sınırlama olmasa da tarayıcı içi yapay zeka API'leri daha yalın olma eğilimindedir.

Mind jetonu sınırları

Daha küçük LLM'ler için isteminizde örnekler veya daha ayrıntılı talimatlar yer alması gerektiğinden isteminiz daha uzun olabilir ve varsa giriş jetonu sınırınızın daha büyük bir kısmını kullanabilir.

Ayrıca, daha küçük modellerin giriş jetonu sınırı daha düşüktür. Örneğin, Gemini 1.5 Pro'nun 1 milyon giriş jetonu sınırı varken Gemma modellerinin 8 bin parçalık bağlam penceresi vardır.

Sınıra ulaşmamak için parça sayısı işlevlerini kullanın.

Süre tahminlerinizi uyarlama

Mühendislik süresi tahminlerinizde istem tasarımını ve testini hesaba katın.

API farklılıkları ve jeton sınırları nedeniyle, isteminizi büyük bir LLM için oluşturmaktan daha küçük bir LLM için oluşturmak muhtemelen daha fazla zaman ve çaba gerektirecektir. Ayrıca LLM'nin çıkışını test etmek ve doğrulamak daha fazla çaba gerektirebilir.

İstem mühendisliği ve ince ayar arasındaki fark nedir?

Web geliştiriciler için istem mühendisliği, özel eğitim ve ince ayar yerine üretken yapay zekadan yararlanmak için tercih ettiğimiz yöntemdir. Ancak bazı kullanım alanlarında, özellikle daha küçük bir LLM kullanıyorsanız gelişmiş istem mühendisliği bile yeterli olmayabilir.

Aşağıdaki durumlarda ince ayar kullanın:

  • Belirli bir görev için üst düzey doğruluk ve performans istiyorsanız. İnce ayar, optimum sonuçlar için modelin dahili parametrelerini doğrudan ayarlar.
  • Görevle alakalı, tercih edilen çıkışlarla etiketlenmiş iyi düzenlenmiş verileriniz var. Etkili ince ayar için bu verilere ihtiyacınız vardır.
  • Modeli aynı amaçla tekrar tekrar kullanıyorsunuz. İnce ayar bir kez yapılabilir ve belirli bir görev için yeniden kullanılabilir.