# Bayt Gizli Dönüştürücü (BLT)

## Genel Bakış

BLT modeli, Artidoro Pagnoni, Ram Pasunuru, Pedro Rodriguez, John Nguyen, Benjamin Muller, Margaret Li1, Chunting Zhou, Lili Yu, Jason Weston, Luke Zettlemoyer, Gargi Ghosh, Mike Lewis, Ari Holtzman†, Srinivasan Iyer tarafından [Byte Latent Transformer: Patches Scale Better Than Tokens](https://huggingface.co/papers/2412.09871) makalesinde önerilmiştir. BLT, entropi tabanlı dinamik yama (patching) yoluyla tokenizasyon düzeyinde performans elde eden bayt düzeyinde bir LLM'dir.

Makalenin özeti aşağıdaki gibidir:

*Bayt Latent Dönüştürücü'yü (BLT) tanıtıyoruz. BLT, ilk kez tokenizasyona dayalı LLM performansını ölçek düzeyinde eşitlerken çıkarım verimliliğinde ve sağlamlıkta önemli iyileştirmeler sunan yeni bir bayt düzeyinde LLM mimarisidir. BLT, baytları dinamik boyutlu yamalar (patch) olarak kodlar; bu yamalar hesaplamanın birincil birimleri olarak görev yapar. Yamalar, bir sonraki baytın entropisine göre segmentlenir ve artan veri karmaşıklığının gerektirdiği yerlere daha fazla hesaplama ve model kapasitesi tahsis edilir. 8B parametreye ve 4T eğitim baytına kadar bayt düzeyinde modellerin ilk flop kontrollü ölçekleme çalışmasını sunuyoruz. Sonuçlarımız, sabit bir sözlük olmadan ham baytlar üzerinde eğitilen modellerin ölçeklendirilebilirliğini kanıtlamaktadır. Veri öngörülebilir olduğunda uzun yamaların dinamik olarak seçilmesi sayesinde hem eğitim hem de çıkarım verimliliği artmakta; ayrıca akıl yürütme ve uzun kuyruk genellemede nitel iyileşmeler gözlemlenmektedir. Genel olarak, sabit çıkarım maliyetleri için BLT, hem yama hem de model boyutunu eş zamanlı olarak büyütmesi sayesinde tokenizasyona dayalı modellere kıyasla önemli ölçüde daha iyi ölçekleme göstermektedir.*

## Kullanım İpuçları

- **Çift Model Mimarisi**: BLT, iki ayrı eğitilmiş modelden oluşur:
  - **Patcher (Entropy Model)**: Bayt düzeyinde entropiyi tahmin ederek yama sınırlarını belirleyen ve girdiyi segmentlere ayıran daha küçük bir transformer modeli.
  - **Ana Transformer Modeli**: Yamaçları (patch) Yerel Kodlayıcı (Local Encoder), Küresel Transformer ve Yerel Çözücü (Local Decoder) üzerinden işleyen birincil model.

- **Dinamik Yama**: Model, şu şekilde entropi tabanlı dinamik yama kullanır:
  - Yüksek entropili bölgeler (karmaşık veriler) daha fazla hesaplama dikkati alan daha kısa yamalar alır
  - Düşük entropili bölgeler (öngörülebilir veriler), verimlilik için daha uzun yamalar alır
  - Bu, modelin hesaplama kaynaklarını en çok ihtiyaç duyulan yerlere tahsis etmesini sağlar

- **Yerel Kodlayıcı**: Bayt dizilerini, yama gömme (patch embeddings) ile çapraz dikkat (cross-attention) kullanarak işler
- **Global Transformer**: Patch düzeyindeki temsilleri, patchler arasında tam dikkat ile işler
- **Yerel Çözücü**: Çıkışı, orijinal bayt dizisine çapraz dikkat (cross-attention) ile üretir

- **Bayt Düzeyli Sözcükleştirici**: Öğrenilmiş sözlükler kullanan geleneksel sözcükleştiricilerin aksine, BLT'nin sözcükleştiricisi metni yalnızca UTF-8 baytlarına dönüştürür ve her baytı bir sözcük kimliğine eşler. Sözlük gerektirmez.

Model şu şekilde yüklenebilir:

```python
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("itazap/blt-1b-hf")
model = AutoModelForCausalLM.from_pretrained(
    "itazap/blt-1b-hf",
    device_map="auto",
)

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

prompt = "my name is"
generated_ids = model.generate(
    **inputs, max_new_tokens=NUM_TOKENS_TO_GENERATE, do_sample=False, use_cache=False
)

print(tokenizer.decode(generated_ids[0]))
```

Bu model [itazap](https://huggingface.co/) tarafından katkıda bulunmuştur. Orijinal kod [burada]() bulunabilir.

## BltConfig[[transformers.BltConfig]]

#### transformers.BltConfig[[transformers.BltConfig]]

```python
transformers.BltConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 260, max_position_embeddings: int = 4096, patch_in_forward: bool | None = True, patch_size: int | None = 4, patching_mode: str | None = 'entropy', patching_threshold: float | None = 1.335442066192627, patching_batch_size: int | None = 1, max_patch_length: int | None = None, local_attention_window_len: int | None = 512, cross_attn_k: int | None = 2, encoder_hash_byte_group_size: list[int] | None = None, encoder_hash_byte_group_vocab: int | None = 500002, encoder_hash_byte_group_nb_functions: int | None = 1, patcher_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, global_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, tie_word_embeddings: bool = False, use_cache: bool = True, pad_token_id: int | None = None, bos_token_id: int | None = None, eos_token_id: int | list[int] | None = None, initializer_range: float = 0.02, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/configuration_blt.py#L167)

**Parametreler:**

vocab_size (`int`, *isteğe bağlı*, varsayılan `260`) : Modelin sözlük boyutu. `input_ids` tarafından temsil edilebilecek farklı token sayısını tanımlar.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `4096`) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

patch_in_forward (`bool`, *isteğe bağlı*, varsayılan `True`) : İleri geçiş sırasında yama (patching) uygulanıp uygulanmayacağı.

patch_size (`int`, *isteğe bağlı*, varsayılan 4) : Yama mekanizmasında kullanılan yamaların boyutu.

patching_mode (`str`, *isteğe bağlı*, varsayılan `"entropy"`) : Entropiye dayalı yama gibi, yama için kullanılan mod.

patching_threshold (`float`, *isteğe bağlı*, varsayılan 1.34) : Yama uygulanacak zamanı belirlemek için kullanılan eşik değeri.

patching_batch_size (`int`, *isteğe bağlı*, varsayılan 1) : Yama (patching) işlemi sırasında kullanılan parti (batch) boyutu.

max_patch_length (`int`, *isteğe bağlı*) : Üretilebilecek yamaların (patch) maksimum uzunluğu.

local_attention_window_len (`int`, *opsiyonel*, varsayılan 512) : Yerel kodlayıcı ve yerel çözücü tarafından kullanılan yerel dikkat penceresinin boyutu, yayınlanan kontrol noktalarındaki `local_attention_window_len` ile eşleşir. Bunun yerine tam nedensel bağlama dikkat etmesi için `None` olarak ayarlayın.

cross_attn_k (`int`, *isteğe bağlı*, varsayılan 2) : Modelde kullanılan çapraz dikkat başlarının sayısı.

encoder_hash_byte_group_size (`list`, *isteğe bağlı*) : Kodlayıcı hash işlevinde kullanılan bayt grup boyutları.

encoder_hash_byte_group_vocab (`int`, *isteğe bağlı*, varsayılan 500002) : Kodlayıcı hash bayt grupları için sözlük boyutu.

encoder_hash_byte_group_nb_functions (`int`, *isteğe bağlı*, varsayılan 1) : Kodlayıcı bayt gruplamasında kullanılan karma fonksiyonlarının sayısı.

patcher_config (`BltPatcherConfig`, *isteğe bağlı*) : Modelin patcher bileşeni için yapılandırma.

encoder_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *isteğe bağlı*) : Encoder iskeletinin yapılandırma nesnesi veya sözlüğü.

decoder_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *isteğe bağlı*) : Dekoder omurgasının yapılandırma nesnesi veya sözlüğü.

global_config (`BltGlobalTransformerConfig`, *isteğe bağlı*) : Modelin küresel dönüştürücü bileşeni için yapılandırma.

tie_word_embeddings (`bool`, *isteğe bağlı*, varsayılan `False`) : Ağırlık gömme bağlamalarının, modelin `tied_weights_keys` eşlemesine göre yapılıp yapılmayacağını belirtir.

use_cache (`bool`, *isteğe bağlı*, varsayılan `True`) : Modelin son anahtar/değer dikkatlerini döndürüp döndürmeyeceğini belirtir (tüm modellerde kullanılmaz). Yalnızca `config.is_decoder=True` olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.

pad_token_id (`int`, *isteğe bağlı*) : Sözlükte dolgu için kullanılan token kimliği.

bos_token_id (`int`, *isteğe bağlı*) : Sözlükte akış başlangıcı için kullanılan token kimliği.

eos_token_id (`Union[int, list[int]]`, *isteğe bağlı*) : Sözlükte akış sonu için kullanılan token kimliği.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *isteğe bağlı*) : RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, `rope_theta` için bir değer içermeli ve daha uzun `max_position_embeddings` ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan parametreleri isteğe bağlı olarak içermelidir.

Bu, bir BltModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Blt modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, [itazap/blt-1b-hf](https://huggingface.co/itazap/blt-1b-hf) modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:
```python
>>> from transformers import BltModel, BltConfig

>>> # Initializing a Blt configuration
>>> configuration = BltConfig()

>>> # Initializing a model from the configuration
>>> model = BltModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

#### transformers.BltModel[[transformers.BltModel]]

```python
transformers.BltModel(config: BltConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/modeling_blt.py#L1144)

#### forward[[transformers.BltModel.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, patch_lengths: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/modeling_blt.py#L1165)

## BltForCausalLM[[transformers.BltForCausalLM]]

#### transformers.BltForCausalLM[[transformers.BltForCausalLM]]

```python
transformers.BltForCausalLM(config: BltConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/modeling_blt.py#L1327)

**Parametreler:**

config ([BltConfig](/docs/transformers/main/tr/model_doc/blt#transformers.BltConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine göz atın.

Üstünde bir dil modelleme kafası bulunan Blt Metin Modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### forward[[transformers.BltForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.LongTensor] = None, cross_attention_states: typing.Optional[torch.LongTensor] = None, cross_attention_mask: typing.Optional[torch.LongTensor] = None, full_text_row_masked_out_mask: tuple[torch.Tensor, torch.Tensor] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, logits_to_keep: typing.Union[int, torch.Tensor] = 0, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/modeling_blt.py#L1342)

**Parametreler:**

input_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yoksayılır. İndeksler [AutoTokenizer](/docs/transformers/main/tr/model_doc/auto#transformers.AutoTokenizer) kullanılarak elde edilebilir. Ayrıntılar için [PreTrainedTokenizer.encode()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) ve [PreTrainedTokenizer.__call__()](/docs/transformers/main/tr/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) yöntemlerine bakın. [Girdi kimlikları (input IDs) nedir?](../glossary#input-ids)

attention_mask (`torch.Tensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Dolgu (padding) token indekslerinde dikkat (attention) işleminin uygulanmamasını sağlayan maske. `[0, 1]` aralığında seçilen maske değerleri:  - **maske uygulanmayan** tokenlar için 1, - **maske uygulanan** tokenlar için 0.  [Dikkat maskeleri nelerdir?](../glossary#attention-mask)

position_ids (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Girdi dizisi token'larının konum gömme (position embeddings) içindeki konum indeksleri. `[0, config.n_positions - 1]` aralığında seçilir.  [Konum kimlikleri (position IDs) nedir?](../glossary#position-ids)

cross_attention_states (`torch.Tensor`, *isteğe bağlı*) : Görsel modelin çıktısı, çapraz dikkat (cross-attention) için kullanılır. Bu tensör, dil modelinin dikkate alacağı işlenmiş görüntü özelliklerini içerir.

cross_attention_mask (`torch.Tensor`, şekli `(batch_size, seq_length, max_num_images, max_num_tiles)`, *isteğe bağlı*) : Metin token'ları ile görüntü karoları arasındaki etkileşimi kontrol etmek için çapraz dikkat maskesi. Bu 4B tensör, her metin token'ının hangi görüntü karolarına dikkat etmesi gerektiğini tanımlar. Her metin token'ı için (seq_length içinde): - 1, token'ın ilgili görüntü karo'suna **dikkat etmesi gerektiğini** belirtir - 0, token'ın ilgili görüntü karo'suna **dikkat etmemesi gerektiğini** belirtir

full_text_row_masked_out_mask (`tuple[torch.Tensor, torch.Tensor]`, *isteğe bağlı*) : Çapraz dikkat mekanizmasında satırları maskeleyen iki tensörü içeren bir demet: - İlk tensörün şekli `(batch_size, 1, seq_length, 1)` şeklindedir ve 0 veya 1 değerleri içerir. 0 değeri, ilgili metin token'ının çapraz dikkat matrisindeki tüm satırının maskelemesi gerektiğini (tüm görüntü token'larının yok sayılacağını) belirtir. - İkinci tensör aynı şekle sahiptir ve çapraz dikkat katmanlarının ileri geçişinde maskelemenin uygulanması için dahili olarak kullanılır. Bu maske, cross_attention_mask'ten türetilir ve bir metin token'ının hiçbir görüntü token'ına dikkat etmemesi gereken durumları ele almak için kullanılır.

past_key_values (`~cache_utils.Cache`, *isteğe bağlı*) : Sıralı çözümlemeyi hızlandırmak için kullanılabilen, önceden hesaplanmış gizli durumlar (self-attention bloklarındaki ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle, `use_cache=True` veya `config.use_cache=True` olduğunda, çözümlemenin önceki bir aşamasında modelin döndürdüğü `past_key_values` değerlerinden oluşur. Girdi olarak yalnızca [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneği kabul edilir, bkz. [kv cache kılavuzu](https://huggingface.co/docs/transformers/en/kv_cache). `past_key_values` geçirilmezse, varsayılan olarak [DynamicCache](/docs/transformers/main/tr/internal/generation_utils#transformers.DynamicCache) başlatılır. Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak verecektir. `past_key_values` kullanılıyorsa, kullanıcının, bu modele geçmiş anahtar-değer durumları verilmemiş olan, yalnızca işlenmemiş `input_ids` değerlerini (şekli `(batch_size, unprocessed_length)` olan) girmesi beklenir; bunun yerine, şekli `(batch_size, sequence_length)` olan tüm `input_ids` değerleri girilmez.

inputs_embeds (`torch.Tensor`, şekli `(batch_size, sequence_length, hidden_size)`, *isteğe bağlı*) : `input_ids` parametresini iletmek yerine, gömülü bir temsil doğrudan iletmeyi tercih edebilirsiniz. Bu, `input_ids` indekslerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisine kıyasla daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.

labels (`torch.LongTensor`, şekli `(batch_size, sequence_length)`, *isteğe bağlı*) : Maskeli dil modelleme kaybını hesaplamak için etiketler. Endeksler `[0, ..., config.vocab_size]` aralığında olmalı ya da -100 olmalı (`input_ids` docstring'ine bakın). Endeksleri `-100` olarak ayarlanan tokenlar yok sayılır (maskelenir), kayıp yalnızca `[0, ..., config.vocab_size]` aralığında etiketlere sahip tokenlar için hesaplanır.

use_cache (`bool`, *isteğe bağlı*) : `True` olarak ayarlanırsa, `past_key_values` anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`, *isteğe bağlı*, varsayılan `0`) : `int` ise, son `logits_to_keep` token için logits hesaplanır. `0` ise, tüm `input_ids` için logits hesaplanır (özel durum). Üretim için yalnızca son token'ın logits'ine ihtiyaç duyulur ve bunların yalnızca o token için hesaplanması bellek tasarrufu sağlar; bu, uzun diziler veya büyük sözlük boyutu için oldukça önemli hale gelir. `torch.Tensor` ise, dizi uzunluğu boyutunda tutulacak indekslere karşılık gelen 1B olmalıdır. Bu, paketlenmiş tensor biçimini (batch ve dizi uzunluğu için tek boyut) kullanırken faydalıdır.

**Dönüş:** [CausalLMOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) veya `tuple(torch.Tensor)`

[CausalLMOutputWithPast](/docs/transformers/main/tr/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) veya bir `torch.Tensor` demeti (`return_dict=False` geçirildiğinde veya `config.return_dict=False` olduğunda); yapılandırma ([BltConfig](/docs/transformers/main/tr/model_doc/blt#transformers.BltConfig)) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[BltForCausalLM](/docs/transformers/main/tr/model_doc/blt#transformers.BltForCausalLM) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **loss** (`torch.Tensor`, şekli `(1,)`, *isteğe bağlı*, `labels` sağlandığında döndürülür) -- Dil modelleme kaybı (sonraki token tahmini için).
- **logits** (`torch.Tensor`, şekli `(batch_size, sequence_length, config.vocab_size)`) -- Dil modelleme başlığının tahmin puanları (SoftMax öncesi her sözlük jetonu için puanlar).
- **past_key_values** (`Cache`, *isteğe bağlı*, `use_cache=True` geçirildiğinde veya `config.use_cache=True` olduğunda döndürülür) -- Bir [Cache](/docs/transformers/main/tr/internal/generation_utils#transformers.Cache) örneğidir. Daha fazla ayrıntı için [kv cache kılavuzumuza](https://huggingface.co/docs/transformers/en/kv_cache) bakın.

  Sıralı çözümlemeyi hızlandırmak için (bkz. `past_key_values` girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.
- **hidden_states** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_hidden_states=True` geçirildiğinde veya `config.output_hidden_states=True` olduğunda döndürülür) -- `torch.Tensor` (gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için bir tane) içeren, `(batch_size, sequence_length, hidden_size)` biçiminde bir demet.

  Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.
- **attentions** (`tuple(torch.Tensor)`, *isteğe bağlı*, `output_attentions=True` geçirildiğinde veya `config.output_attentions=True` olduğunda döndürülür) -- `torch.Tensor` (her katman için bir tane) içeren bir tuple, şekli `(batch_size, num_heads, sequence_length, sequence_length)`.

  Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat kafalarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

Örnek:

```python
>>> from transformers import AutoTokenizer, BltForCausalLM

>>> model = BltForCausalLM.from_pretrained("itazap/blt-1b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("itazap/blt-1b-hf")

>>> prompt = "If I had to write a haiku, it would be:"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=40, do_sample=True, temperature=0.6)
>>> result = tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
>>> print(result)
If I had to write a haiku, it would be: "Snowflakes gently fall" - simple, yet peaceful.
I love the idea of snowflakes gently falling, each one
```

