# DeepSeek-V4

[DeepSeek-V4](https://huggingface.co/deepseek-ai) هو نموذج اللغة من الجيل التالي من نوع MoE من DeepSeek ([الورقة البحثية](https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash/blob/main/DeepSeek_V4.pdf)). تستبدل البنية المعمارية تقنية Multi-head Latent Attention (MLA) المستخدمة في DeepSeek-V3 بتصميم هجين يجمع بين الانتباه المحلي والانتباه طويل المدى، وتُبدّل الاتصالات المتبقية (residual connections) بتقنية Manifold-Constrained Hyper-Connections (mHC)، وتُهيّئ أول طبقات MoE القليلة باستخدام جدول تجزئة ثابت يربط بين معرّف الرمز (token-id) ومعرّف الخبير (expert-id).

تغطي هذه النسخة `DeepSeek-V4-Flash` و`DeepSeek-V4-Pro` وإصداريهما `-Base` المُدرَّبين مسبقًا. تتشارك النسخ الأربع نفس البنية المعمارية، ولا تختلف إلا في العرض/العمق/عدد الخبراء والأوزان.

> [!TIP]
> اضبط `use_kernels=True` في [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لاستبدال الطبقات المدعومة بنوى مُحسَّنة من Hub. راجع [تحميل النوى](../kernel_doc/loading_kernels) لمعرفة المزيد.

## Architecture (الورقة §2)

### الانتباه الهجين (§2.3)

كل كتلة مُفكِّك (decoder) تنتمي إلى أحد أنواع الانتباه الثلاثة، وتُوجَّه بواسطة `config.layer_types[i]`:

* **انتباه كامل بنافذة منزلقة** (`"sliding_attention"`): النافذة المحلية المكونة من `sliding_window` رموز فقط، دون فرع المدى الطويل. يتطابق مع أسلوب "Full Attention" في V3 لطبقات الإقلاع.
* **الانتباه المتناثر المضغوط** (`"compressed_sparse_attention"`، **CSA** — الورقة §2.3.1): حوض ضغط منخفض (`compress_rate_csa`، الافتراضي `m=4`) مع نوافذ متداخلة، بالإضافة إلى **Lightning Indexer** (المعادلات 13–17) الذي يقيّم الاستعلامات مقابل الحوض ويجمع أفضل `index_topk` كتل لكل استعلام قبل وصولها إلى الانتباه الأساسي.
* **انتباه مضغوط بشدة** (`"heavily_compressed_attention"`، **HCA** — الورقة §2.3.2): مجمّع ضغط عالٍ (`compress_rate_hca`، الافتراضي `m'=128`) مع نوافذ غير متداخلة. لا يوجد فهرس — كل عنصر مجمّع يساهم في الانتباه.

تشارك جميع الأنواع الثلاثة نفس العمود الفقري:

* **انتباه الاستعلام متعدد الرؤوس المشترك K=V**: `num_key_value_heads = 1`; ينتج `kv_proj` رأس KV واحدًا ويُقرأ نفس الموتر كقيمة مفتاح وقيمة.
* **RoPE الجزئي** (توزيع أزواج متداخلة، القسم 2.3.3 من الورقة البحثية "Partial Rotary Positional Embedding") على القنوات الأخيرة `qk_rope_head_dim = head_dim * partial_rotary_factor` لكل رأس. يُطبَّق الدوران نفسه مع الموضع `-i` على شريحة rope الخاصة بمخرجات الانتباه (المعادلة 26) بحيث يبقى مساهمة كل عنصر KV دالةً للمسافة *النسبية* إلى الاستعلام.
* **مغصّ انتباه قابل للتعلم لكل رأس** (المعادلة 27).
* **إسقاط مخرجات منخفض الرتبة مجمّع** (القسم 2.3.1 "إسقاط المخرجات المجمّع"): مجموعات رؤوس `o_groups` → `o_lora_rank` لكل مجموعة → `hidden_size`، يُحسب بواسطة `DeepseekV4GroupedLinear` (`o_a_proj`) يليه `o_b_proj`. يقلل تكلفة المخرجات الواسعة للانتباه لكل رمز دون فقدان القدرة التعبيرية.
* **فرع K=V المشترك بنافذة المنزلقة** بحجم `sliding_window` ("فرع إضافي لانتباه النافذة المنزلقة"، §2.3.1) يحافظ على الاعتماديات المحلية الدقيقة؛ يتم دمج مخرجات ضاغط المدى الطويل مع قيم KVs لهذا الفرع قبل الانتباه الأساسي.

### اتصالات فائقة مقيدة بمشعب (§2.2)

تُستبدل الاتصالات المتبقية بـ mHC (Xie et al., 2026): `hc_mult` من التدفقات المتبقية المتوازية تُحفظ في الشكل `[B, S, hc_mult, D]` طوال كل كتلة. تختلط التدفقات داخل وخارج حول طبقات الانتباه / MLP الفرعية عبر وحدتي `DeepseekV4HyperConnection` — `attn_hc` و`ffn_hc` — بواسطة ثلاثية `(pre, post, comb)`. مصفوفة `comb` هي إسقاط ثنائي الاحتمالية يُنتج عن طريق تكرارات Sinkhorn–Knopp لعدد `hc_sinkhorn_iters` على المانيفولد، مما يجعل انتشار الإشارة غير موسِّعة عبر الأكوام العميقة. تُقلّص `DeepseekV4HyperHead` النهائية التدفقات الـ`hc_mult` إلى تسلسل واحد قبل تطبيع النموذج.

### جدول MoE (§2.1)

يتم تكوين التوجيه لكل طبقة بواسطة `config.mlp_layer_types`، مع قيم من `{"hash_moe", "moe"}`:

* `"hash_moe"`: تأتي فهارس الخبراء من بحث مجمّد `tid2eid[input_ids]` مُعبّأ من نقطة التفتيش V4. لا يزال وزن البوابة المتعلّم `weight` ينتج درجات لكل خبير تُستخدم لوزن الخبراء المختارين؛ فجزء *أيّ الخبراء* هو الثابت فقط. يُستخدم ذلك للطبقات الأولى القليلة أثناء الإقلاع (الافتراضي 3، ويمكن تجاوز ذلك عبر `num_hash_layers` القديم).
* `"moe"`: نموذج MoE القياسي الموجَّه عبر top-k. يستخدم التقارب بين الخبراء **Sqrt(Softplus(·))** بدلاً من Sigmoid الخاص بالإصدار V3 («نغيّر دالة التنشيط التي تحسب درجات التقارب من Sigmoid(·) إلى Sqrt(Softplus(·))»، الورقة §2.1)، ويُستغنى عن قيد `n_group` / `topk_group` الخاص بالإصدار V3. كما يُحافظ على الاستراتيجية الخالية من الخسارة المساعدة (عبر `noaux_tc` من DeepSeek) من خلال مخزن `e_score_correction_bias` الذي يُحرّض argmax الخاص بـ top-k دون تدفّق التدرّجات.

تستخدم الخبراء الموجَّهون **SwiGLU المقيد** (`gate.clamp(max=swiglu_limit)`، `up.clamp(min=-swiglu_limit, max=swiglu_limit)`، ثم `act_fn(gate) * up`) فوق تخطيط أوزان الخبراء القياسي في Mixtral `[num_experts, 2 * moe_intermediate_size, hidden_size]`. يعمل خبير مشترك واحد (وهو شبكة MLP بسيطة من نوع SwiGLU بعرض `moe_intermediate_size`) بالتوازي على كل رمز.

### تخطيط قناع الانتباه

تمدد كل طبقة `DeepseekV4Attention` قناع الانزلاق النافذي السببي القياسي على محور المفاتيح باستخدام `block_bias` الذي تُرجعه ضاغطتها، ثم تُدخل القناع المُدمج إلى `eager_attention_forward`. القسم المنزلق (يسار، `[S, S]`) هو نفسه لجميع أنواع الطبقات؛ بينما يختلف القسم الخاص بالضاغط (يمين) حسب نوع الطبقة، وهو الجزء "الجديد" الفعلي الذي قدمته V4.

أُنشئت المخططات أدناه باستخدام تكوين صغير (`sliding_window=8`، وCSA `m=4`، وHCA `m'=8`، `index_topk=2`) على مدخل من 16 رمزًا، بحيث يتسع كامل قناع نوع الطبقة على الشاشة. الأخضر = القطر الخاص بالاستعلام/المفتاح في القسم المنزلق، الداكن = موضع KV قياسي مرئي، الفاتح = مقنّع، الكهرماني = خانة ضاغط/فهرس يُسمح للاستعلام بالانتباه إليها. الأعمدة الواقعة بعد الخط المتقطع تُضاف بواسطة الضاغط عبر `cat([sliding_causal_mask, block_bias], dim=-1)`.

**طبقة انزلاق فقط (`"sliding_attention"`).** لا يوجد ضاغط، ولا حشو يميني — القناع هو قناع الانزلاق النافذي السببي العادي من الشكل `[S, S]` (النافذة = 8). بالنسبة لـ `i ≥ window` يتم قطع المثلث السفلي الأيسر، مما يستعيد نمط الانتباه المحلي فقط.

**طبقة CSA (`"compressed_sparse_attention"`).** يقوم المُضِغط بتسوية مخرجه المجمَّعة لكل استعلام إلى `[B, 1, S·k, D]` ويملأ القناع من اليمين بـ `S·k` أعمدة. بالنسبة للاستعلام `t`، فإن الخانات `k` فقط عند الأعمدة `[S + t·k, S + (t+1)·k)` تحمل اختيارات المُفهرِس؛ بينما جميع أعمدة المُضِغط الأخرى تساوي `-inf`. الاستعلامات التي تسبق إغلاق النافذة الأولى (`t < m − 1`) لا تحصل على شيء — حيث ينتقل المقياس `-1` الخاص بالمُفهرِس مباشرةً إلى القناع. ومع ازدياد قيمة `t`، تصبح المزيد من الإدخالات المضغوطة جاهزة، فيتمكن المُفهرِس من ملء جميع الخانات `k`.

**طبقة HCA (`"heavily_compressed_attention"`).** لا يوجد فهرس — كل عنصر مضغوط مخزَّن في الذاكرة المؤقتة مرئي محتملًا. يتم حشوه على اليمين بـ `T_total = entry_count["compressor"]` أعمدة. لا يمكن للاستعلام `t` رؤية العنصر `w` إلا بعد إغلاق نافذته المصدرية، أي `w < (t + 1) // m`. وبما أن `m=8` هنا، فإن العنصر 0 (يغطي المواضع `0..7`) والعنصر 1 (يغطي `8..15`) لا يصبحان مرئيين إلا عند `t ≥ 7` و`t ≥ 15` على التوالي.

يمكن إعادة إنتاج هذه المخططات من البداية إلى النهاية عبر:

```bash
python docs/source/en/imgs/deepseek_v4/visualize_attention_masks.py \
    --svg docs/source/en/imgs/deepseek_v4
```

تنفّذ السكربت تمريرةً أمامية على هذا الإعداد الصغير، وتغلّف كل طبقة انتباه لالتقاط قناع ما بعد `cat([attention_mask, block_bias])` بدقة، ثم تعيد تعيين قناع الفتحات المسطحة `[S, S·k]` الخاص بـ CSA إلى عرض إظهار مدخلات `[S, T_entries]` (بحيث يكون كل عمود `C_w` *مدخلاً* مضغوطاً، وليس فتحة جمع)، وتكتب الرسوم الثلاث بصيغة SVG المذكورة أعلاه. كما تطبع شبكة ANSI إلى الإخراج القياسي لفحص سريع في الطرفية، وتُخرج اختيارات أعلى k لكل استعلام من الفهرس بحيث يمكن تدقيق حراس الإحماء واختيارات الاختيار.

### طبقات التخزين المؤقت

يتطلب كل كتلة انتباه غير منزلقة تمرير حالة ضاغط / فهرس عبر استدعاءات الأمامية. يأتي إصدار V4 بنوعين من طبقات الكاش التي تسجّل نفسها تلقائيًا مع `LAYER_TYPE_CACHE_MAPPING`:

* `DeepseekV4HCACache`: نافذة منزلقة K=V + مخزن ضغط HCA / مجمّع / عدّاد (بدون تداخل، وبدون فهرس).
* `DeepseekV4CSACache`: نافذة منزلقة K=V + ضاغط CSA (مع حالة تداخل) + مخزن/مجموعة/عدّاد/تداخل للمفهرس المتوازي عند `index_head_dim`.

يبني `DynamicCache(config=…)` طبقة التخزين المؤقت المناسبة لكل `config.layer_types[i]`.

## DeepseekV4Config[[transformers.DeepseekV4Config]]

#### transformers.DeepseekV4Config[[transformers.DeepseekV4Config]]

```python
transformers.DeepseekV4Config(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 = 129280, hidden_size: int = 4096, moe_intermediate_size: int = 2048, num_hidden_layers: int = 43, num_attention_heads: int = 64, num_key_value_heads: int = 1, head_dim: int = 512, q_lora_rank: int = 1024, num_experts_per_tok: int = 6, n_routed_experts: int = 256, n_shared_experts: int = 1, scoring_func: str = 'sqrtsoftplus', norm_topk_prob: bool = True, routed_scaling_factor: float = 1.5, max_position_embeddings: int = 1048576, rope_theta: float | int = 10000.0, layer_types: list[str] | None = None, compress_rates: dict | None = None, compress_rope_theta: float | int = 160000.0, hc_mult: int = 4, hc_sinkhorn_iters: int = 20, hc_eps: float = 1e-06, mlp_layer_types: list[str] | None = None, swiglu_limit: float = 10.0, sliding_window: int = 128, o_groups: int = 8, o_lora_rank: int = 1024, index_n_heads: int = 64, index_head_dim: int = 128, index_topk: int = 512, num_nextn_predict_layers: int = 1, output_router_logits: bool = False, router_aux_loss_coef: float = 0.001, router_jitter_noise: float = 0.0, hidden_act: str = 'silu', initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, use_cache: bool = True, pad_token_id: int | None = None, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 1, tie_word_embeddings: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, partial_rotary_factor: float | None = None, attention_bias: bool = False, mlp_bias: bool = False, attention_dropout: float = 0.0)
```

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

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

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

hidden_size (`int`، *اختياري*، القيمة الافتراضية `4096`) : بُعد التمثيلات المخفية.

moe_intermediate_size (`int`، *اختياري*، القيمة الافتراضية `2048`) : الحجم الوسيط لشبكات MLP للخبراء الموجَّهين.

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `43`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `64`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

num_key_value_heads (`int`، *اختياري*، القيمة الافتراضية `1`) : هذا هو عدد رؤوس key_value التي يجب استخدامها لتنفيذ Grouped Query Attention. إذا كان `num_key_value_heads=num_attention_heads`، فسيستخدم النموذج Multi Head Attention (MHA)، وإذا كان `num_key_value_heads=1` فسيستخدم النموذج Multi Query Attention (MQA)، وإلا فسيتم استخدام GQA. عند تحويل نقطة تحقق متعددة الرؤوس إلى نقطة تحقق GQA، يجب بناء كل مجموعة من رؤوس key و value عن طريق meanpooling جميع الرؤوس الأصلية داخل تلك المجموعة. لمزيد من التفاصيل، راجع [هذا الورق](https://huggingface.co/papers/2305.13245). إذا لم يتم تحديد القيمة، فستكون القيمة الافتراضية `num_attention_heads`.

head_dim (`int`، *اختياري*، القيمة الافتراضية `512`) : بُعد رأس الانتباه. إذا كانت القيمة None، فستكون القيمة الافتراضية هي hidden_size // num_attention_heads

q_lora_rank (`int`، *اختياري*، القيمة الافتراضية `1024`) : رتبة مصفوفات LoRA لإسقاطات الاستعلام.

num_experts_per_tok (`int`، *اختياري*، القيمة الافتراضية `6`) : عدد الخبراء الذين يُوجَّه إليهم كل رمز. هذه هي قيمة top-k الخاصة بتوجيه اختيار الرموز.

n_routed_experts (`int`، *اختياري*، القيمة الافتراضية `256`) : عدد الخبراء الموجَّهين.

n_shared_experts (`int`, *اختياري*, القيمة الافتراضية هي `1`) : عدد الخبراء المشتركين.

scoring_func (`str`، *اختياري*، القيمة الافتراضية `sqrtsoftplus`) : تنشيط الموجّه — `sqrtsoftplus` أو `softmax` أو `sigmoid`.

norm_topk_prob (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم تطبيع أوزان الخبراء الموجَّهين.

routed_scaling_factor (`float`، *اختياري*، القيمة الافتراضية `1.5`) : معامل التوسيع أو الخبراء الموجَّهون.

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

rope_theta (`Union[float, int]`، *اختياري*، القيمة الافتراضية `10000.0`) : الأساس الدوّار لـ RoPE في الانتباه الذاتي الرئيسي.

layer_types (`list[str]`، *اختياري*) : جدول انتباه لكل طبقة، بقيم من `{"compressed_sparse_attention", "heavily_compressed_attention"}`. الافتراضي في V4-Pro: 2× HCA bootstrap + CSA / HCA متناوبة.

compress_rates (`dict[str, int]`) : معدل الضغط لكل نوع طبقة. الافتراضي `{"compressed_sparse_attention": 4, "heavily_compressed_attention": 128}` (m=4 لـ CSA، m'=128 لـ HCA، الورقة §2.3.1 / §2.3.2). ملاحظة: الإعدادات التي تتضمن `compress_rate_csa` / `compress_rate_hca` كـ kwargs على مستوى أعلى تُدمج عند وقت `__post_init__`.

compress_rope_theta (`Union[float, int]`، *اختياري*، القيمة الافتراضية `160000.0`) : أساس RoPE للفروع المضغوطة (يُستخدم مع `rope_scaling` لـ YaRN).

hc_mult (`int`, *اختياري*, القيمة الافتراضية `4`) : معامل التوسعة n_hc لـ Manifold-Constrained Hyper-Connection (mHC) (نشط دائمًا؛ القسم 2.2).

hc_sinkhorn_iters (`int`، *اختياري*، القيمة الافتراضية `20`) : عدد تكرارات Sinkhorn-Knopp t_max لإسقاط إسقاط خرائط بقايا mHC على المصفوفات ذات الاحتمالات المزدوجة.

hc_eps (`float`، *اختياري*، القيمة الافتراضية `1e-06`) : الحد الأدنى العددي لتطبيع Sinkhorn-Knopp.

mlp_layer_types (`list[str]`, *اختياري*) : جدول MoE لكل طبقة، بقيم من `{"hash_moe", "moe"}`. `hash_moe` يوجّه عبر بحث مجمّد `tid2eid[input_ids]` (الورقة §2.1، "Hash-MoE bootstrap")؛ و`moe` هو MoE القياسي الموجّه top-k. الافتراضي: 3× `hash_moe` ثم `moe` للباقي. ملاحظة توافق: الإعدادات القديمة التي تتضمن `num_hash_layers` كمتغير kwarg في المستوى الأعلى تُدمج عند `__post_init__`.

swiglu_limit (`float`، *اختياري*، القيمة الافتراضية `10.0`) : قصّ التفعيلات المسبقة لبوابات/مداخل الخبراء الموجَّهين.

sliding_window (`int`، *اختياري*، القيمة الافتراضية `128`) : حجم النافذة المحلية n_win المستخدم في فرع النافذة المنزلقة لكل كتلة انتباه.

o_groups (`int`، *اختياري*، القيمة الافتراضية `8`) : عدد مجموعات الرؤوس g في الإسقاط المُجمَّع للإخراج (الورقة §2.3.1، "إسقاط الإخراج المُجمَّع").

o_lora_rank (`int`، *اختياري*، القيمة الافتراضية `1024`) : البعد الوسيط d_g لكل مجموعة في الإسقاط المُجمَّع للإخراج.

index_n_heads (`int`، *اختياري*، القيمة الافتراضية `64`) : عدد رؤوس استعلام الفهرس n_h^I (الورقة §2.3.1، المعادلة 14).

index_head_dim (`int`، *اختياري*، القيمة الافتراضية `128`) : بُعد رأس الفهرس c^I (الورقة §2.3.1).

index_topk (`int`، *اختياري*، القيمة الافتراضية `512`) : عدد الإدخالات المضغوطة لكل استعلام يحتفظ بها Lightning Indexer عبر top-k (الورقة §2.3.1، المعادلة 17).

num_nextn_predict_layers (`int`، *اختياري*، القيمة الافتراضية `1`) : عدد طبقات MTP في نقطة التفتيش الأصلية (لا يتم إنشاؤها هنا).

output_router_logits (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب على النموذج إرجاع قيم التوجيه (router logits) أم لا. تمكين هذا الخيار سيتيح أيضًا للنموذج إخراج الخسارة المساعدة، بما في ذلك خسارة موازنة الحمل وخسارة توجيه z.

router_aux_loss_coef (`float`، *اختياري*، القيمة الافتراضية `0.001`) : معامل خسارة موازنة الحمل المساعدة. يُستخدم لعقابلة التوجيه غير المتساوي للخبراء في نماذج MoE.

router_jitter_noise (`float`، *اختياري*، القيمة الافتراضية `0.0`) : كمية الضوضاء المضافة إلى قيم التوجيه (logits) أثناء التدريب لتحسين توازن الحمل.

hidden_act (`str`، *اختياري*، القيمة الافتراضية `silu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

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

rms_norm_eps (`float`، *اختياري*، القيمة الافتراضية `1e-06`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع rms.

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

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

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

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

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

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

partial_rotary_factor (`float`, *اختياري*) : نسبة من head_dim التي تحصل على RoPE. القيمة الافتراضية هي `qk_rope_head_dim / head_dim` بحيث تكون أحجام cos/sin مساوية لـ `qk_rope_head_dim`.

attention_bias (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.

mlp_bias (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام انحياز في طبقات up_proj و down_proj و gate_proj ضمن طبقات MLP.

attention_dropout (`float`, *اختياري*, القيمة الافتراضية `0.0`) : نسبة dropout لاحتمالات الانتباه.

هذه فئة الإعدادات المخزنة لإعدادات نموذج DeepseekV4Model. تُستخدم لاستحداث نموذج Deepseek V4 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ [deepseek-ai/DeepSeek-V4-Flash-Base](https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-Base)

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

#### validate_layer_type[[transformers.DeepseekV4Config.validate_layer_type]]

```python
validate_layer_type()
```

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

يضيّق الإصدار V4 النطاق العام لـ `ALLOWED_LAYER_TYPES` ليقتصر على أنواع كتل الانتباه الثلاثة وأنواع كتل MLP الاثنتين اللتين يوفرهما فعلياً، وذلك إلى جانب فحوصات الطول والعضوية في النوع القياسية.

## DeepseekV4Model[[transformers.DeepseekV4Model]]

#### transformers.DeepseekV4Model[[transformers.DeepseekV4Model]]

```python
transformers.DeepseekV4Model(config: DeepseekV4Config)
```

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

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

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

نموذج Deepseek V4 الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [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.DeepseekV4Model.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = 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/deepseek_v4/modeling_deepseek_v4.py#L1328)

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

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)

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` إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.

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

**يعيد:** `MoeModelOutputWithPast` أو `tuple(torch.Tensor)`

`MoeModelOutputWithPast` أو مجموعة من `torch.Tensor` (في حال تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتمادًا على الإعداد ([DeepseekV4Config](/docs/transformers/main/ar/model_doc/deepseek_v4#transformers.DeepseekV4Config)) والمدخلات.

تُعيد طريقة [DeepseekV4Model](/docs/transformers/main/ar/model_doc/deepseek_v4#transformers.DeepseekV4Model) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

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

- **last_hidden_state** (`torch.Tensor` من الشكل `(batch_size, sequence_length, hidden_size)`) -- تسلسل من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من النموذج.
- **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).

  تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي، وفي كتل الانتباه المتقاطع اختياريًا إذا كان `config.is_encoder_decoder=True`) يمكن استخدامها (انظر مدخل `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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **router_logits** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_router_probs=True` و`config.add_router_probs=True` أو عند `config.output_router_probs=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, sequence_length, num_experts)`.

  قيمات التوجيه الخام (بعد تطبيق دالة softmax) التي تحسبها وحدات التوجيه في نماذج مزيج الخبراء (MoE)، وتُستخدم هذه القيم لحساب الخسارة المساعدة في نماذج مزيج الخبراء.

## DeepseekV4ForCausalLM[[transformers.DeepseekV4ForCausalLM]]

#### transformers.DeepseekV4ForCausalLM[[transformers.DeepseekV4ForCausalLM]]

```python
transformers.DeepseekV4ForCausalLM(config: DeepseekV4Config)
```

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

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

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

نموذج Deepseek V4 لنمذجة اللغة السببية.

يرث هذا النموذج من [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.DeepseekV4ForCausalLM.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = 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, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, output_router_logits: 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/deepseek_v4/modeling_deepseek_v4.py#L1473)

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

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)

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

output_router_logits (`bool`، *اختياري*) : ما إذا كان يجب إرجاع قيم logits لجميع الموجّهات (routers) أم لا. تُفيد هذه القيم في حساب خسارة الموجّه (router loss)، ولا ينبغي إرجاعها أثناء الاستدلال.

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

**يعيد:** `MoeCausalLMOutputWithPast` أو `tuple(torch.Tensor)`

`MoeCausalLMOutputWithPast` أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([DeepseekV4Config](/docs/transformers/main/ar/model_doc/deepseek_v4#transformers.DeepseekV4Config)) والمدخلات.

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

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

- **loss** (`torch.Tensor` من الشكل `(1,)`، *اختياري*، يُعاد عند توفير `labels`) -- خسارة نمذجة اللغة (لتوقع الرمز التالي).
- **logits** (`torch.Tensor` من الشكل `(batch_size, sequence_length, config.vocab_size)`) -- درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).
- **aux_loss** (`torch.Tensor`، *اختياري*، يُعاد عند تمرير `output_router_logits=True` أو عند تعيين `config.output_router_logits=True`، وفي حال تدريب النموذج لموجّهه باستخدام خسارة توازن الأحمال) -- خسارة مساعدة لتوازن الأحمال الخاصة بالوحدات المتناثرة. تُعيد النماذج التي توازن خبرائها باستخدام انحياز الموجّه بدلاً من ذلك (DeepSeek-V3 والهندسات المشتقة منه) قيمة `None` هنا مع الاستمرار في إرجاع `router_logits`.
- **router_logits** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_router_logits=True` أو عند تعيين `config.output_router_logits=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة متناثرة) بأبعاد `(batch_size * sequence_length, num_experts)`.

  قيمات التوجيه الخام (logits) التي يحسبها موجّهات MoE. يمكن استخدامها لحساب خسارة موازنة الحمل أو لفحص كيفية توزيع الرموز على الخبراء.
- **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, DeepseekV4ForCausalLM

>>> model = DeepseekV4ForCausalLM.from_pretrained("mistralai/DeepseekV4-8x7B-v0.1")
>>> tokenizer = AutoTokenizer.from_pretrained("mistralai/DeepseekV4-8x7B-v0.1")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
```

