Keras'ta Gemma Modellerini Analiz Etmek İçin LIT'yi Kullanma

Üretken yapay zekaya göz atın Google Colab'de çalıştır Kaynağı GitHub'da görüntüleyin Codelab'lerde Öğrenin

Giriş

Üretken yapay zeka ürünleri nispeten yenidir ve bir uygulamanın davranışları önceki yazılım biçimlerinden daha fazla farklılık gösterebilir. Bu nedenle, kullanılan makine öğrenimi modellerini araştırmak, model davranışıyla ilgili örnekleri incelemek ve sürprizleri araştırmak önemlidir.

Öğrenme Yorumlanabilirliği Aracı (LIT; web sitesi, GitHub), makine öğrenimi modellerinde neden ve nasıl davrandıklarını anlamak için hata ayıklama ve analiz etme platformudur.

Bu codelab'de, Google'ın Gemma modelinden daha fazla yararlanmak için LIT'yi nasıl kullanacağınızı öğreneceksiniz. Bu codelab'de, farklı istem mühendislik yaklaşımlarını analiz etmek için bir yorumlanabilirlik tekniği olan sıralı salience tekniğinin nasıl kullanılacağı gösterilmektedir.

Öğrenme hedefleri:

  1. Dizi belirginliğini ve bunun model analizinde kullanımlarını anlama.
  2. İstem çıkışları ve dizi güvenliği hesaplaması amacıyla Gemma için LIT ayarlanıyor.
  3. İstem tasarımlarının model çıkışları üzerindeki etkisini anlamak için LM Salience modülüyle dizi belirginliğini kullanma.
  4. LIT'de hipotez içeren istem iyileştirmeleri test etme ve etkilerini görme.

Not: Bu codelab'in, arka uç için Gemma'nın KerasNLP uygulamasını ve TensorFlow v2'yi kullandığını unutmayın. İşlem için bir GPU çekirdeği kullanmanız önemle tavsiye edilir.

Dizi Salience ve Bunun Model Analizinde Kullanımları

Gemma gibi metinden metne oluşturma modelleri, jetonlu metin biçiminde bir giriş dizisi alır ve bu girişin devamı veya tamamlaması olan yeni jetonlar oluşturur. Bu oluşturma işlemi, her defasında bir jeton gerçekleşir ve model bir durdurma koşuluna ulaşana kadar, yeni oluşturulan her jetonu ve önceki nesilleri girişe ekler (döngü halinde). Modelin bir dizi sonu (EOS) jetonu oluşturduğu veya önceden tanımlanmış maksimum uzunluğa ulaştığı durumlar buna örnek olarak gösterilebilir.

Salience yöntemleri, bir girişin hangi bölümlerinin çıktının farklı kısımlarında model için önemli olduğunu size söyleyebilecek bir açıklanabilir AI (XAI) teknikleri sınıfıdır. LIT, çeşitli sınıflandırma görevleri için dikkat yöntemlerini destekler. Bu yöntemler, bir giriş jetonu dizisinin tahmin edilen etiket üzerindeki etkisini açıklar. Dizi belirginliği, bu yöntemleri metinden metne üretme modellerine genelleştirir ve önceki jetonların oluşturulan jetonlar üzerindeki etkisini açıklar.

Burada dizi belirginliği için Grad L2 Norm yöntemini kullanacaksınız. Bu yöntem, modelin renk geçişlerini analiz eder ve önceki her bir jetonun çıkış üzerinde sahip olduğu etkinin büyüklüğünü sağlar. Bu yöntemin basit ve etkili olmasının yanı sıra sınıflandırma ve diğer ayarlarda iyi performans gösterdiği gösterilmiştir. Sapma puanı ne kadar yüksekse etki o kadar yüksektir. Bu yöntem, iyi anlaşıldığı ve yorumlanabilirlik araştırma topluluğunda yaygın bir şekilde kullanıldığından LIT'de kullanılır.

Grad ⋅ Giriş ve entegre gradyanlar daha gelişmiş gradyan tabanlı vurgululuk yöntemleridir. Daha sağlam olabilen ancak çok daha pahalı olan LIME ve SHAP gibi çıkarmaya dayalı yöntemler de mevcuttur. Farklı duyarlılık sağlama yöntemlerinin ayrıntılı bir karşılaştırması için bu makaleye bakın.

Salience'ın etkileşimli olarak keşfedilebileceği bu tanıtım videosunda, salience yöntemlerinin bilimi hakkında daha fazla bilgi edinebilirsiniz.

İçe Aktarma, Ortam ve Diğer Kurulum Kodu

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
bigframes 0.21.0 requires scikit-learn>=1.2.2, but you have scikit-learn 1.0.2 which is incompatible.
google-colab 1.0.0 requires ipython==7.34.0, but you have ipython 8.14.0 which is incompatible.

Bunları göz ardı edebilirsiniz.

LIT ve Keras NLP yükleme

Bu codelab'de temel modeli indirmek için keras (3) keras-nlp (0.8.0) ve lit-nlp (1.1) sürümlerinin son sürümüne ve bir Kaggle hesabına ihtiyacınız vardır.

pip install -q -U lit-nlp
pip uninstall -y umap-learn
pip install -q -U keras-nlp
pip install -q -U keras

Kaggle Erişimi

Kaggle'a giriş yapmak için kaggle.json kimlik bilgileri dosyanızı ~/.kaggle/kaggle.json adresinde depolayabilir veya aşağıdaki komutu Colab ortamında çalıştırabilirsiniz. Daha fazla bilgi için kagglehub paketi belgelerine göz atın.

import kagglehub

kagglehub.login()

Gemma lisans sözleşmesini de kabul ettiğinizden emin olun.

Gemma için LIT'yi ayarlama

LIT modellerini ayarlama

import os

os.environ["KERAS_BACKEND"] = "tensorflow"
import keras
import keras_nlp

# Run at half precision.
keras.config.set_floatx("bfloat16")
model_name = 'gemma_instruct_2b_en'
gemma_model = keras_nlp.models.GemmaCausalLM.from_preset(model_name)

Aşağıdaki kod, Gemma modelinde salience'i desteklemek için LIT sarmalayıcılarını başlatır. LIT çerçevesi, bunları model olarak belirtir ancak bu durumda, yukarıda yüklediğiniz aynı temel gemma_model için yalnızca farklı uç noktalardır. Bu, LIT'in istek üzerine oluşturma, jetona dönüştürme ve güvenlik işlemlerini hesaplamasını sağlar.

from lit_nlp.examples.models import instrumented_keras_lms

batch_size = 1
max_sequence_length = 512
init_models = instrumented_keras_lms.initialize_model_group_for_salience
models = init_models(model_name, gemma_model,
                     batch_size=batch_size,
                     max_length=max_sequence_length)

LIT veri kümelerini ayarlama

Gemma, metin girişi alıp metin çıkışı üreten bir metinden metne üretme modelidir. LIT modelleri, oluşturma işlemini desteklemek için veri kümelerinin aşağıdaki alanları sağlayacağını varsayar:

  • prompt: KerasGenerationModel öğesinin girişi.
  • target: "Kesin referans" (altın) yanıt veya modelden önceden oluşturulmuş bir yanıt gibi isteğe bağlı bir hedef dizisi.

LIT, aşağıdakiler gibi birkaç farklı kaynaktan örnekler içeren küçük bir sample_prompts grubu içerir:

  • [GSM8K][GSM8K]: Sınıfta matematik problemlerini birkaç çekimli örneklerle çözme.
  • [Gigaword Benchmark][gigaword]: Kısa makalelerden oluşan bir koleksiyon için başlık oluşturma.
  • [Anayasa İstemi][anayasal-istem]: Nesnelerin yönergeler/sınırlar ile nasıl kullanılacağı konusunda yeni fikirler üretme

Ayrıca, kendi verilerinizi prompt ve isteğe bağlı olarak target alanlarına sahip kayıtlar içeren .jsonl dosyası olarak ([example][jsonl-example]) veya LIT'in Dataset API'sini kullanarak herhangi bir biçimden kolayca yükleyebilirsiniz.

Örnek istemleri yüklemek için aşağıdaki hücreyi çalıştırın.

from lit_nlp.examples.datasets import lm as lm_data

datasets = {
  'sample_prompts': lm_data.PromptExamples(
      lm_data.PromptExamples.SAMPLE_DATA_PATH
  ),
}

LIT kullanıcı arayüzünü ayarlama

LIT, kullanıcıların döngü içinde değerlendirilmesini ve model davranışını araştırmasını sağlayan etkileşimli bir model anlama aracıdır. LIT kullanıcı arayüzü, aşağıdakileri yapmanızı sağlayarak bu etkileşimi kolaylaştırır:

  • veri kümelerinizi ve model çıkışlarınızı canlı olarak görselleştirebilir,
  • model davranışını etkileyen giriş jetonlarını anlamak için belirginlik yöntemleri çalıştırma ve
  • hipotezleri test etmek için karşıt olgular oluşturma

LIT, tüm bunları aynı arayüzde mümkün kılarak farklı araçlar arasında geçiş yapmayı zorlaştırır. Bu, özellikle codelab'in ilerleyen bölümlerinde odaklanacağınız istem mühendisliği gibi görevler için yararlıdır.

Bu kullanıcı arayüzü düzeni, diğer tüm üretken dil modelleri için kullanılabilir. Burada listelenenlerin dışındaki özelliklerle ilgileniyorsanız tam listeye buradan ulaşabilirsiniz.

from lit_nlp.api import layout
modules = layout.LitModuleName

LM_SALIENCE_LAYOUT = layout.LitCanonicalLayout(
    left={
        'Data Table': [modules.DataTableModule],
        'Datapoint Editor': [modules.DatapointEditorModule],
    },
    upper={  # if 'lower' not specified, this fills the right side
        'Salience': [modules.LMSalienceModule],
    },
    layoutSettings=layout.LayoutSettings(leftWidth=40),
    description='Custom layout for language model salience.',
)

Bu hücre LIT sunucusunu başlatır. Bu işlem, modeli örnek istemlerde de çalıştırdığı ve sonucu önbelleğe aldığı için birkaç saniye sürebilir.

from lit_nlp import notebook as lit_notebook

lit_widget = lit_notebook.LitWidget(
    models=models,
    datasets=datasets,
    layouts={'default': LM_SALIENCE_LAYOUT},
    default_layout='default',
)

Artık kullanıcı arayüzünü gösterebilirsiniz:

lit_widget.render(height=800)
<IPython.core.display.Javascript object>

LIT'yi yeni bir sekmede tam sayfa olarak da açabilirsiniz. Bu hücreyi çalıştırın ve görüntülenen bağlantıyı tıklayın:

lit_widget.render(open_in_new_tab=True)
<IPython.core.display.Javascript object>

LIT'de Gemma ile ilgili birkaç çekim istemini analiz etme

Günümüzde istemde bulunmak, bilim kadar sanattır ve LIT, Gemma gibi büyük dil modelleri için istemleri deneysel olarak iyileştirmenize yardımcı olabilir. İleride, LIT'nin Gemma'nın davranışlarını incelemek, olası sorunları öngörmek ve güvenliğini iyileştirmek için nasıl kullanılabileceğine dair bir örnek göreceksiniz.

Karmaşık istemlerdeki hataları tanımlama

Yüksek kaliteli LLM tabanlı prototipler ve uygulamalar için en önemli istem tekniklerinden ikisi birkaç çekimli istem (istemdeki istenen davranış örnekleri dahil) ve düşünce zinciridir (LLM'nin nihai çıktısından önce bir açıklama veya akıl yürütme biçimi dahil). Ancak etkili bir istem oluşturmak çoğu zaman hâlâ zor bir iş.

Bir kişinin zevkine göre yemek sevip sevmeyeceğini değerlendirmesine yardımcı olan bir örneği düşünün. İlk prototip düşünce zinciri istem şablonu şöyle görünebilir:

def analyze_menu_item_template(food_likes, food_dislikes, menu_item):
  return f"""Analyze a menu item in a restaurant.

## For example:

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Onion soup
Analysis: it has cooked onions in it, which you don't like.
Recommendation: You have to try it.

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Baguette maison au levain
Analysis: Home-made leaven bread in france is usually great
Recommendation: Likely good.

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Macaron in france
Analysis: Sweet with many kinds of flavours
Recommendation: You have to try it.

## Now analyze one more example:

Taste-likes: {food_likes}
Taste-dislikes: {food_dislikes}
Suggestion: {menu_item}
Analysis:"""

Bu istemle ilgili sorunları fark ettiniz mi? LIT, LM Salience modülünü kullanarak istemi incelemenize yardımcı olur.

Hata ayıklama için dizi belirginliğini kullanma

Bu modül, modelin yanıtını oluştururken yanıt verdiği istem bölümlerini vurgular. Salience mümkün olan en küçük düzeyde hesaplanır (yani her bir giriş jetonu için) ancak LIT, jeton belirginliğini satır, cümle veya kelimeler gibi daha yorumlanabilir daha geniş aralıklarda toplayabilir. Saliency Explorable'da (Saliency Explorable) durgunluk ve istenmeyen önyargıları belirlemek için kullanımı hakkında daha fazla bilgi edinebilirsiniz.

İsteme istem şablonu değişkenleri için yeni bir örnek girişi vererek başlayalım:

food_likes = """Cheese"""
food_dislikes = """Can't eat eggs"""
menu_item = """Quiche Lorraine"""

prompt = analyze_menu_item_template(food_likes, food_dislikes, menu_item)
print(prompt)

fewshot_mistake_example = {'prompt': prompt}  # you'll use this below
Analyze a menu item in a restaurant.

## For example:

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Onion soup
Analysis: it has cooked onions in it, which you don't like.
Recommendation: You have to try it.

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Baguette maison au levain
Analysis: Home-made leaven bread in france is usually great
Recommendation: Likely good.

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Macaron in france
Analysis: Sweet with many kinds of flavours
Recommendation: You have to try it.

## Now analyze one more example:

Taste-likes: Cheese
Taste-dislikes: Can't eat eggs
Suggestion: Quiche Lorraine
Analysis:

LIT kullanıcı arayüzünü yukarıdaki hücrede veya ayrı bir sekmede açtıysanız bu istemi eklemek için LIT'nin Datapoint Editor'ını kullanabilirsiniz:

1_Datapoint_editor.png

Diğer bir yöntem de ilgili istemle widget'ı doğrudan yeniden oluşturmaktır:

lit_widget.render(data=[fewshot_mistake_example])
<IPython.core.display.Javascript object>

Modelin şaşırtıcı tamamlanmasına dikkat edin:

Taste-likes: Cheese
Taste-dislikes: Can't eat eggs
Suggestion: Quiche Lorraine
Analysis: A savoury tart with cheese and eggs
Recommendation: You might not like it, but it's worth trying.

Model neden yemeyeceğinizi açıkça belirttiğiniz bir şeyi yemenizi öneriyor?

Reklam dizisinin öne çıkarılması, birkaç çekimlik örneklerimizde yer alan temel sorunu vurgulamaya yardımcı olabilir. İlk örnekte, it has cooked onions in it, which you don't like analiz bölümündeki düşünce zinciri akıl yürütmesi, nihai öneriye You have to try it uymuyor.

LM Salience modülünde "Cümleler"i ve ardından öneri satırını seçin. Kullanıcı arayüzü şimdi şöyle görünmelidir:

3_few_shots_mistake..png

Şimdi, ilk örnekteki "Öneri"yi Avoid olarak düzeltip tekrar deneyelim. LIT'de, örnek istemlerde bu örnek önceden yüklenmiş olarak bulunur. Bu nedenle, bu küçük yardımcı program işlevini kullanarak söz konusu örneği alabilirsiniz:

def get_fewshot_example(source: str) -> str:
  for example in datasets['sample_prompts'].examples:
    if example['source'] == source:
      return example['prompt']
  raise ValueError(f'Source "{source}" not found in the dataset.')
lit_widget.render(data=[{'prompt': get_fewshot_example('fewshot-fixed')}])
<IPython.core.display.Javascript object>

Model tamamlama şöyle olur:

Taste-likes: Cheese
Taste-dislikes: Can't eat eggs
Suggestion: Quiche Lorraine
Analysis: This dish contains eggs and cheese, which you don't like.
Recommendation: Avoid.

Bu durumdan çıkarılacak önemli bir ders şudur: Erken prototip oluşturmak, önceden aklınıza gelmeyebilecek riskleri ortaya çıkarmanıza yardımcı olur. Dil modellerinin hataya açık doğası nedeniyle de hatalar için proaktif olarak tasarım yapmak gerekir. Bu konu hakkında daha ayrıntılı bilgiyi, yapay zeka ile tasarım hakkındaki Kişiler ve Yapay Zeka Kılavuzu'nda bulabilirsiniz.

Düzeltilmiş birkaç atış istemi daha iyi olsa da yine de pek doğru değil: Kullanıcıya yumurtadan uzak durmasını söylüyor, ama gerekçesi doğru değil, aslında kullanıcı yumurta yiyemeyeceğini belirttiği halde yumurta sevmediğini söylüyor. Aşağıdaki bölümde, performansınızı nasıl geliştirebileceğinizi görebilirsiniz.

Model davranışını iyileştirmek için hipotezleri test edin

LIT, istemlerde yapılan değişiklikleri aynı arayüzde test etmenizi sağlar. Bu örnekte, modelin davranışını iyileştirmek için bir anayasa eklemeyi test edeceksiniz. Anayasalar, modelin nesline yön vermeye yardımcı olacak ilkeler içeren tasarım istemlerini ifade eder. Son kullanılan yöntemler, anayasa ilkelerinin etkileşimli bir şekilde türetilmesini bile mümkün kılmaktadır.

İstemi daha da iyileştirmek için bu fikirden yararlanalım. İstemmizin üst kısmına oluşturma ilkelerini içeren bir bölüm ekleyin. Bu bölüm artık aşağıdaki gibi başlar:

Analyze a menu item in a restaurant.

* The analysis should be brief and to the point.
* The analysis and recommendation should both be clear about the suitability for someone with a specified dietary restriction.

## For example:

Taste-likes: I've a sweet-tooth
Taste-dislikes: Don't like onions or garlic
Suggestion: Onion soup
Analysis: it has cooked onions in it, which you don't like.
Recommendation: Avoid.

...

lit_widget.render(data=[{'prompt': get_fewshot_example('fewshot-constitution')}])
<IPython.core.display.Javascript object>

Bu güncellemeyle birlikte tekrar çalıştırılarak örnek çok farklı bir çıkış gözlemlenebilir:

Taste-likes: Cheese
Taste-dislikes: Can't eat eggs
Suggestion: Quiche Lorraine
Analysis: This dish containts eggs, which you can't eat.
Recommendation: Not suitable for you.

Bu değişikliğin nedenine dair bir fikir edinmek için, bu istemdeki öne çıkan bilgiler yeniden incelenebilir:

3_few_shot_constitution.png

Bu önerinin çok daha güvenli olduğuna dikkat edin. Ayrıca "Sizin için uygun değil", analizle birlikte diyet kısıtlamasına göre uygunluğun açıkça ifade edilmesi ilkesinden de (buna düşünce zinciri denir) etkilenir. Bu, sonucun doğru nedenden dolayı gerçekleştiğine dair daha fazla güven verir.

Teknik olmayan ekipleri model araştırma ve keşfetmeye dahil etme

Yorumlanabilirlik; XAI, politika, hukuk ve diğer alanlarda uzmanlığı kapsayan bir ekip çalışması anlamına gelir.

Modellerle erken geliştirme aşamalarında etkileşimde bulunmak geleneksel olarak dikkate değer bir teknik uzmanlık gerektiriyordu. Bu da bazı ortak çalışanların bunlara erişmesini ve bunları incelemesini zorlaştırıyordu. Geçmişte bu ekiplerin ilk prototip oluşturma aşamalarına dahil olmasını sağlayacak araçlar yoktu.

LIT ile bu paradigmanın değişebileceğini umuyorum. Bu codelab'de gördüğünüz gibi, LIT'in öne çıkma ve örnekleri keşfetme konusundaki görsel aracı ve etkileşimli özelliği, farklı paydaşların bulguları paylaşmasına ve iletmesine yardımcı olabilir. Bu sayede model keşfi, inceleme ve hata ayıklama için daha geniş bir ekip üyesi yelpazesini ekleyebilirsiniz. Öğrencileri bu teknik yöntemlerle kullanmak, modellerin nasıl çalıştığını daha iyi anlamalarını sağlayabilir. Buna ek olarak, erken model testlerindeki uzmanlık düzeyi de iyileştirilebilecek istenmeyen sonuçların ortaya çıkarılmasına yardımcı olabilir.

Özet

Özetle:

  • LIT kullanıcı arayüzü, etkileşimli model yürütme için bir arayüz sağlayarak kullanıcıların doğrudan çıkışlar oluşturmalarını ve "ne olur?" senaryolarını test etmelerini sağlar. Bu, özellikle farklı istem varyasyonlarının test edilmesinde yararlıdır.
  • LM Salience modülü, belirginliğin görsel bir temsilini sunar ve model merkezli yapılar (ör. jetonlar) yerine insan merkezli yapılar (ör. cümleler ve kelimeler) hakkında iletişim kurabilmeniz için kontrol edilebilir veri ayrıntı düzeyi sağlar.

Model değerlendirmelerinizde sorunlu örnekler bulduğunuzda bunları hata ayıklama için LIT'ye taşıyın. Mantıksal olarak modelleme göreviyle alakalı olduğunu düşündüğünüz en büyük ve mantıklı içerik birimini analiz edin. Modelin istem içeriğine doğru veya yanlış şekilde katıldığı noktaları görmek için görselleştirmelerden yararlanın. Ardından, olası düzeltmeleri belirlemek için gördüğünüz yanlış davranışı daha ayrıntılı şekilde açıklamak üzere daha küçük içerik birimlerini ayrıntılı olarak inceleyin.

Son olarak: Lit sürekli gelişir! Burada özelliklerimiz hakkında daha fazla bilgi edinin ve önerilerinizi paylaşın.

Ek: LIT, Dizi Salience'i Nasıl Hesaplar?

LIT, çok adımlı bir süreçte dizi belirginliğini hesaplar.

  1. Bir giriş dizesi (istem ve model oluşturma veya "altın" hedef dizisi) verildiğinde, model girişi için jeton oluşturun.
  2. Giriş jetonlarını bir konum sola yuvarlayarak bir "hedef" dizisi hesaplayın.
  3. için yerleştirmeleri ayıklayın ve oluşturma ile "hedef" sıraları arasındaki jeton başına kaybı hesaplayın.
  4. Açıklamak istediğiniz jetonları ayırmak için kaybı maskeleyin.
  5. Maskelenmiş kayba göre giriş yerleştirmelerinin gradyanlarını hesaplamak için tf.GradientTape.gradient() işlevini kullanın.
  6. Renk geçişlerini işleyerek her giriş jetonu için tek bir puan verin. Örneğin, her bir konumda gradyanın L2 normunu alarak bunu belirleyebilirsiniz.

Ek: Salience'i Programatik Olarak Hesaplama

LIT aracının dahili olarak çalıştırdığı adımların aynısını kullanarak salience puanlarını doğrudan Python'dan hesaplamak mümkündür. Bunu üç adımda yaparsınız:

  1. Bir örnek hazırlayıp model belirteç oluşturucuyu çalıştırın.
  2. Açıklanacak (tahmin edilen) jetonları seçen bir maske hazırlayın,
  3. Salience sarmalayıcısını çağırın.

LIT için giriş örneği oluşturun

{'prompt': 'Keras is a',
 'target': ' deep learning library for Python that provides a wide range of tools and functionalities for building, training, and evaluating deep learning models.\n\n**'}

Çağrı kurallarıyla ilgili bir not: Hem belirteç hem de öne çıkan sarmalayıcı, LIT'nin Model API'sini kullanır. Burada .predict() işlevi, bir örnek listesi (dikteler) alır ve bir oluşturucu yanıt (diktler) döndürür. Bu, daha büyük veri kümeleri veya daha yavaş modellerle çalışırken çok daha esnektir. Ancak şu anlama gelir: Sadece bir örnek üzerinde tahmin istiyorsanız artık, şunun gibi bir örnekle sarmalamanız gerekiyor: list(model.predict([example])[0]

Açıklama hedefleri seçebilmek için jeton alma

array(['<bos>', 'K', 'eras', '▁is', '▁a', '▁deep', '▁learning',
       '▁library', '▁for', '▁Python', '▁that', '▁provides', '▁a', '▁wide',
       '▁range', '▁of', '▁tools', '▁and', '▁functionalities', '▁for',
       '▁building', ',', '▁training', ',', '▁and', '▁evaluating', '▁deep',
       '▁learning', '▁models', '.', '\n\n', '**'], dtype='<U16')

Güvenliği hesaplamak için hangi (tahmin edilen) jetonların açıklanacağını belirten bir hedef maskesi oluşturmanız gerekir. Hedef maske, jetonlarla aynı uzunlukta bir dizi olur ve açıklamak istediğiniz jetonların konumlarında 1 sayısı bulunur. Hedefimiz ▁training ve ▁evaluating olsun:

Hedef maskeyi hazırlayın

{'prompt': 'Keras is a',
 'target': ' deep learning library for Python that provides a wide range of tools and functionalities for building, training, and evaluating deep learning models.\n\n**',
 'target_mask': array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0.],
       dtype=float32)}

Dikkat modelini çağırma

{'grad_l2': array([45.75, 36.75, 61, 5.40625, 4.09375, 5.625, 6.46875, 7.3125, 3.375,
        5.03125, 3.23438, 4.5625, 2.375, 3.40625, 2.75, 1.97656, 3.95312,
        3.42188, 14.125, 4.53125, 11.375, 12.625, 18.5, 4.5625, 6.5, 0, 0,
        0, 0, 0, 0, 0], dtype=bfloat16),
 'grad_dot_input': array([-4.03125, 3.04688, -7.03125, -0.800781, 0.769531, -0.679688,
        -0.304688, 2.04688, 0.275391, -1.25781, -0.376953, -0.0664062,
        -0.0405273, -0.357422, 0.355469, -0.145508, -0.333984, 0.0181885,
        -5.0625, 0.235352, -0.470703, 2.25, 3.90625, -0.199219, 0.929688,
        0, 0, 0, 0, 0, 0, 0], dtype=bfloat16),
 'tokens': array(['<bos>', 'K', 'eras', '▁is', '▁a', '▁deep', '▁learning',
        '▁library', '▁for', '▁Python', '▁that', '▁provides', '▁a', '▁wide',
        '▁range', '▁of', '▁tools', '▁and', '▁functionalities', '▁for',
        '▁building', ',', '▁training', ',', '▁and', '▁evaluating', '▁deep',
        '▁learning', '▁models', '.', '\n\n', '**'], dtype='<U16')}

İşlem tamam! grad_l2 ve grad_dot_input alanlarındaki puanlar tokens ile hizalanmıştır ve LIT kullanıcı arayüzünde göreceğiniz puanların aynısıdır.

Son birkaç puanın 0 olduğuna dikkat edin: Modelimiz soldan sağa dil modeli olduğundan, hedef aralığımızın sağındaki simgelerin tahmin üzerinde hiçbir etkisi yoktur.