# محوّل الكامنات البايتية (BLT)

## نظرة عامة

قُدِّم نموذج BLT في [Byte Latent Transformer: Patches Scale Better Than Tokens](https://huggingface.co/papers/2412.09871) من قِبل 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. BLT هو نموذج LLM على مستوى البايتات يُحقق أداءً بمستوى الترميز من خلال الترقيع الديناميكي القائم على الإنتروبيا.

المستخلص من الورقة البحثية هو كالتالي:

*نقدّم Byte Latent Transformer (BLT)، وهو معمارية جديدة لنماذج اللغة الكبيرة (LLM) على مستوى البايت، تتطابق لأوّل مرة مع أداء نماذج اللغة الكبيرة المعتمدة على التقطيع عند التوسع، مع تحسينات كبيرة في كفاءة الاستدلال والمتانة. يرمّز BLT البايتات إلى رقعات بحجم ديناميكي، تعمل كوحدة الحساب الأساسية. تُقسَّم الرقعات بناءً على إنتروبيا البايت التالي، حيث يُخصَّص مزيد من القدرة الحسابية وسعة النموذج حيثما تتطلب تعقيدات البيانات المتزايدة ذلك. نعرض أوّل دراسة توسع مُتحكَّم بها من حيث عدد العمليات العائمة (FLOPs) لنماذج على مستوى البايت تصل إلى 8 مليارات معامل و4 تريليونات بايت تدريب. تُظهر نتائجنا جدوى توسيع النماذج المدربة على بايت خام دون مفردات ثابتة. تتحسّن كفاءة التدريب والاستدلال على حدّ سواء بفضل الاختيار الديناميكي للرقعات الطويلة عندما تكون البيانات قابلة للتنبؤ، إلى جانب تحسينات نوعية في الاستدلال المنطقي والتعميم على الذيل الطويل. وبشكل عام، عند تكاليف استدلال ثابتة، يُظهر BLT توسعاً أفضل بكثير من النماذج المعتمدة على التقطيع، من خلال زيادة حجم الرقعة وحجم النموذج معاً.*

## نصائح للاستخدام

- **بنية النموذج المزدوج**: يتكون BLT من نموذجين منفصلين تم تدريبهما:
  - **مُرقّع (نموذج الإنتروبيا)**: نموذج تحويل أصغر يتنبأ بإنتروبيا مستوى البايت لتحديد حدود الرقع وقطع المدخلات.
  - **نموذج Transformer الرئيسي**: النموذج الأساسي الذي يعالج البقع (patches) عبر مشفّر محلي (Local Encoder) وTransformer شامل (Global Transformer) ومفكك محلي (Local Decoder).

- **التبديل الديناميكي**: يستخدم النموذج التبديل الديناميكي القائم على الإنتروبيا حيث:
  - تحصل المناطق عالية الإنتروبيا (البيانات المعقدة) على رقع أقصر مع اهتمام حسابي أكبر
  - تحصل المناطق منخفضة الإنتروبيا (البيانات القابلة للتنبؤ) على رقعات أطول من أجل الكفاءة
  - هذا يتيح للنموذج تخصيص موارد الحوسبة حيث تكون الحاجة إليها أكبر

- **المُشفِّر المحلي**: يعالج تسلسلات البايتات باستخدام الانتباه المتقاطع مع تمثيلات البُقع
- **المحوّل العام**: يعالج التمثيلات على مستوى البقع مع انتباه كامل عبر البقع
- **المفكك المحلي**: يولّد المخرجات مع انتباه متقاطع يعود إلى تسلسل البايتات الأصلي

- **Byte-Level Tokenizer**: على عكس المرمّزات التقليدية التي تستخدم مفردات متعلّمة، يحوّل مرمّز BLT النص ببساطة إلى بايتات UTF-8 ويُقرِن كل بايت مع معرّف رمز. لا حاجة إلى مفردات.

يمكن تحميل النموذج عبر:

```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]))
```

أُسهم بهذا النموذج بواسطة [itazap](https://huggingface.co/). يمكن العثور على الكود الأصلي [هنا]().

## 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)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/configuration_blt.py#L167)

**المعاملات:**

vocab_size (`int`، *اختياري*، الافتراضي هو `260`) : حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة `input_ids`.

max_position_embeddings (`int`، *اختياري*، القيمة الافتراضية `4096`) : الحد الأقصى لطول التسلسل الذي قد يُستخدم به هذا النموذج على الإطلاق.

patch_in_forward (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تنفيذ التصحيح أثناء المرور الأمامي.

patch_size (`int`، *اختياري*، القيمة الافتراضية 4) : حجم المقاطع المستخدمة في آلية التقطيع.

patching_mode (`str`, *اختياري*, الافتراضي هو `"entropy"`) : الوضع المستخدم للترقيع، مثل الترقيع القائم على الإنتروبيا.

patching_threshold (`float`, *اختياري*, القيمة الافتراضية 1.34) : القيمة العتبة المستخدمة لتحديد متى يتم تطبيق التصحيحات.

patching_batch_size (`int`، *اختياري*، القيمة الافتراضية 1) : حجم الدفعة المستخدمة أثناء عملية التصحيح.

max_patch_length (`int`, *اختياري*) : الحد الأقصى لطول المقاطع التي يمكن توليدها.

local_attention_window_len (`int`، *اختياري*، الافتراضي 512) : حجم نافذة الانتباه المحلية المستخدمة من قِبل المُشفِّر المحلي والمُفكِّك المحلي، متطابقة مع `local_attention_window_len` في نقاط التفتيش المنشورة. اضبطها على `None` للانتباه على السياق السببي الكامل بدلاً من ذلك.

cross_attn_k (`int`, *اختياري*, القيمة الافتراضية 2) : عدد رؤوس الانتباه المتقاطع المستخدمة في النموذج.

encoder_hash_byte_group_size (`list`, *اختياري*) : قائمة بأحجام مجموعات البايتات المستخدمة في دالة تجزئة المُشفِّر.

encoder_hash_byte_group_vocab (`int`, *اختياري*, الافتراضي 500002) : حجم المفردات لمجموعات بايتات التجزئة في المُشفِّر.

encoder_hash_byte_group_nb_functions (`int`, *اختياري*, القيمة الافتراضية 1) : عدد دوال التجزئة المستخدمة في تجميع بايتات المُشفِّر.

patcher_config (`BltPatcherConfig`, *اختياري*) : إعدادات مكوّن المُرقِّع في النموذج.

encoder_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : كائن الإعداد أو قاموس هيكل المشفّر.

decoder_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : كائن الإعداد أو القاموس لهيكل المُفكِّك.

global_config (`BltGlobalTransformerConfig`, *اختياري*) : إعدادات مكوّن التحوّل العام في النموذج.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

use_cache (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان `config.is_decoder=True` أو عندما يكون النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.

pad_token_id (`int`, *اختياري*) : معرّف الرمز (Token id) المستخدم للتعبئة (padding) في المفردات.

bos_token_id (`int`, *اختياري*) : معرّف الرمز المستخدم لبدء البث في المفردات.

eos_token_id (`Union[int, list[int]]`، *اختياري*) : معرّف الرمز المستخدم لنهاية البث في المفردات.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`، *اختياري*) : قاموس يحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـ `rope_theta`، وبشكل اختياري معاملات تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE مع `max_position_embeddings` أطول.

هذه فئة الإعدادات لحفظ إعدادات BltModel. تُستخدم لإنشاء نموذج Blt وفقًا للحجج المحددة، مع تحديد بنية النموذج. إنشاء إعدادات بقيم افتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ [itazap/blt-1b-hf](https://huggingface.co/itazap/blt-1b-hf)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:
```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)
```

[المصدر](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'>)
```

[المصدر](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)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/modeling_blt.py#L1327)

**المعاملات:**

config ([BltConfig](/docs/transformers/main/ar/model_doc/blt#transformers.BltConfig)) : فئة إعدادات النموذج التي تتضمن جميع معاملات النموذج. التهيئة باستخدام ملف إعدادات لا تُحمّل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Blt Text مع رأس نمذجة اللغة في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### 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'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/blt/modeling_blt.py#L1342)

**المعاملات:**

input_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا. يمكن الحصول على الفهارس باستخدام [AutoTokenizer](/docs/transformers/main/ar/model_doc/auto#transformers.AutoTokenizer). راجع [PreTrainedTokenizer.encode()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) و [PreTrainedTokenizer.__call__()](/docs/transformers/main/ar/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) للتفاصيل. [ما هي معرّفات الإدخال؟](../glossary#input-ids)

attention_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. قيم القناع المختارة من `[0, 1]`: - 1 للرموز التي **ليست مقنّعة**، - 0 للرموز التي **مقنّعة**.  [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

position_ids (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : فهارس مواضع رموز كل تسلسل إدخال في تضمينات المواضع. يتم اختيارها من النطاق `[0, config.n_positions - 1]`.  [ما هي معرّفات المواضع؟](../glossary#position-ids)

cross_attention_states (`torch.Tensor`, *اختياري*) : مخرجات نموذج الرؤية، تُستخدم للانتباه المتقاطع. تحتوي هذه المصفوفة على ميزات الصورة المعالجة التي سينتبه إليها نموذج اللغة.

cross_attention_mask (`torch.Tensor` of shape `(batch_size, seq_length, max_num_images, max_num_tiles)`, *اختياري*) : قناع الانتباه المتقاطع للتحكم في التفاعل بين رموز النص ومربعات الصور. يحدد هذا الموتر رباعي الأبعاد مربعات الصور التي يجب أن ينتبه إليها كل رمز نصي. لكل رمز نصي (ضمن seq_length): - 1 يشير إلى أن الرمز **يجب أن ينتبه** إلى مربع الصورة المقابل - 0 يشير إلى أن الرمز **يجب ألا ينتبه** إلى مربع الصورة المقابل

full_text_row_masked_out_mask (`tuple[torch.Tensor, torch.Tensor]`, *اختياري*) : مجموعة تحتوي على تينسورين يُخفيان صفوفًا في آلية الانتباه المتقاطع: - التينسور الأول له الشكل `(batch_size, 1, seq_length, 1)` ويحتوي على قيم 0 أو 1. القيمة 0 تعني أن الصف بأكمله للرمز النصي المقابل في مصفوفة الانتباه المتقاطع يجب إخفاؤه (تجاهل جميع رموز الصورة). - التينسور الثاني له نفس الشكل ويُستخدم داخليًا لتطبيق الإخفاء أثناء المرور الأمامي لطبقات الانتباه المتقاطع. يُشتق هذا القناع من cross_attention_mask ويُستخدم للتعامل مع الحالات التي يجب ألا ينتبه فيها رمز نصي إلى أي رمز صورة.

past_key_values (`~cache_utils.Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها لتسريع فك الترميز التسلسلي. يتكوّن هذا عادةً من `past_key_values` التي يعيدها النموذج في مرحلة سابقة من فك الترميز، عندما يكون `use_cache=True` أو `config.use_cache=True`. يُسمح فقط بتمرير كائن [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache) كمدخل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache). إذا لم يتم تمرير `past_key_values`، فسيتم تهيئة [DynamicCache](/docs/transformers/main/ar/internal/generation_utils#transformers.DynamicCache) افتراضيًا. سيُخرج النموذج نفس تنسيق الذاكرة المؤقتة المُدخل. إذا تم استخدام `past_key_values`، يُتوقع من المستخدم إدخال `input_ids` غير المعالجة فقط (تلك التي لم تُعطَ حالات مفاتيح وقيم سابقة لها في هذا النموذج) بأبعاد `(batch_size, unprocessed_length)` بدلاً من جميع `input_ids` بأبعاد `(batch_size, sequence_length)`.

inputs_embeds (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`، *اختياري*) : بدلاً من تمرير `input_ids`، يمكنك اختيار تمرير تمثيل مضمّن مباشرةً. هذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس `input_ids` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

labels (`torch.LongTensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : تسميات لحساب خسارة نمذجة اللغة المقنّعة. يجب أن تكون الفهارس إما ضمن `[0, ..., config.vocab_size]` أو -100 (انظر `input_ids` docstring). يتم تجاهل الرموز التي تكون فهارسها مضبوطة على `-100` (مقنّعة)، ولا تُحسب الخسارة إلا للرموز التي تسمياتها ضمن `[0, ..., config.vocab_size]`.

use_cache (`bool`، *اختياري*) : إذا تم ضبطه على `True`، تُعاد حالات المفاتيح والقيم `past_key_values` ويمكن استخدامها لتسريع فك الترميز (انظر `past_key_values`).

logits_to_keep (`Union[int, torch.Tensor]`، *اختياري*، القيمة الافتراضية `0`) : إذا كان `int`، يتم حساب القيم اللوجستية (logits) لآخر `logits_to_keep` رموز. إذا كانت `0`، يتم حساب القيم اللوجستية لجميع `input_ids` (حالة خاصة). لا تكون قيم اللوجستيات للرمز الأخير فقط ضرورية للتوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة، وهو ما يصبح ذا أهمية كبيرة للترتيبات الطويلة أو لحجم المفردات الكبير. إذا كان `torch.Tensor`، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول الترتيب. وهذا مفيد عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول الترتيب).

**يعيد:** [CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو `tuple(torch.Tensor)`

إما [CausalLMOutputWithPast](/docs/transformers/main/ar/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما `config.return_dict=False`) تتألف من عناصر مختلفة اعتمادًا على الإعداد ([BltConfig](/docs/transformers/main/ar/model_doc/blt#transformers.BltConfig)) والمدخلات.

تتجاوز طريقة [BltForCausalLM](/docs/transformers/main/ar/model_doc/blt#transformers.BltForCausalLM) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **past_key_values** (`Cache`، *اختياري*، يُعاد عند تمرير `use_cache=True` أو عند تعيين `config.use_cache=True`) -- هو كائن من نوع [Cache](/docs/transformers/main/ar/internal/generation_utils#transformers.Cache). لمزيد من التفاصيل، راجع [دليل ذاكرة kv](https://huggingface.co/docs/transformers/en/kv_cache).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها (انظر مدخل `past_key_values`) لتسريع فك الترميز التسلسلي.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لمخرجات التضمينات، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لمخرجات كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)`.

  حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

  أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

مثال:

```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
```

