Transformers documentation

FalconMamba

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

نُشر هذا النموذج في أوراق HF في 2024-10-07 وسُهم به في Hugging Face Transformers في 2024-08-12.

FalconMamba

FalconMamba هو نموذج لغة كبير بحجم 7B، متوفر بنسخة مُسبقة التدريب ونسخة مُهيّأة بالأوامر، ويعتمد على Mamba. يطبّق هذا نموذج تصميم Mamba خالص يركّز على الكفاءة الحسابية مع الحفاظ على أداء قوي. كما أن FalconMamba أسرع بكثير في الاستدلال ويتطلب ذاكرة أقل بكثير لتوليد تسلسلات طويلة. وقد تم تدريب النماذج مسبقاً على مجموعة بيانات متنوعة تضم 5.8 تريليون رمز، تشمل RefinedWeb والمحتوى التقني والكود والبيانات الرياضية.

يمكنك العثور على نقاط التفتيش الرسمية لـ FalconMamba في مجموعة FalconMamba 7B.

انقر على نماذج FalconMamba في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق FalconMamba على مهام لغوية مختلفة.

تُوضّح الأمثلة أدناه كيفية توليد النص باستخدام Pipeline وAutoModel ومن سطر الأوامر.

خط أنابيب
AutoModel
transformers CLI
from transformers import pipeline


pipeline = pipeline(
    "text-generation",
    model="tiiuae/falcon-mamba-7b-instruct",
    device=0
)
pipeline(
    "Explain the difference between transformers and SSMs",
    max_length=100,
    do_sample=True,
    temperature=0.7
)

تقلل عملية التكميم العبء على الذاكرة في النماذج الكبيرة من خلال تمثيل الأوزان بدقة أقل. راجع نظرة عامة على التكميم للاطلاع على المزيد من واجهات التكميم المتاحة.

يستخدم المثال أدناه bitsandbytes لتكميم الأوزان إلى 4 بتات.

from transformers import AutoTokenizer, BitsAndBytesConfig, FalconMambaForCausalLM


quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True,
)

tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-mamba-7b")
model = FalconMambaForCausalLM.from_pretrained(
    "tiiuae/falcon-mamba-7b",
    device_map="auto",
    quantization_config=quantization_config,
)

inputs = tokenizer("Explain the concept of state space models in simple terms", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

ملاحظات

  • استخدم التعبئة اليسرى (left padding) للتوليد المجمّع. راجع جانب التعبئة.

FalconMambaConfig

فئة transformers.FalconMambaConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 50280hidden_size: int = 768state_size: int = 16num_hidden_layers: int = 32layer_norm_epsilon: float = 1e-05pad_token_id: int | None = 0bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 0expand: int = 2conv_kernel: int = 4use_bias: bool = Falseuse_conv_bias: bool = Truehidden_act: str = 'silu'initializer_range: float = 0.1residual_in_fp32: bool = Truetime_step_rank: str | int = 'auto'time_step_scale: float = 1.0time_step_min: float = 0.001time_step_max: float = 0.1time_step_init_scheme: str = 'random'time_step_floor: float = 0.0001rescale_prenorm_residual: bool = Falseuse_cache: bool = Trueuse_mambapy: bool = Falseuse_associative_scan: bool = Truetie_word_embeddings: bool = Truemixer_rms_eps: float = 1e-06 )

المعاملات

  • vocab_size (int، اختياري، القيمة الافتراضية 50280) — حجم مفردات النموذج. يحدد عدد الرموز المختلفة التي يمكن تمثيلها بواسطة input_ids.
  • hidden_size (int، اختياري، القيمة الافتراضية 768) — أبعاد التمثيلات المخفية.
  • state_size (int، اختياري، القيمة الافتراضية 16) — حجم حالة SSM (بعد الحالة الكامنة) في طبقات Mamba.
  • num_hidden_layers (int، اختياري، القيمة الافتراضية 32) — عدد الطبقات المخفية في مُفكِّك Transformer.
  • layer_norm_epsilon (float، اختياري، القيمة الافتراضية 1e-05) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.
  • pad_token_id (int، اختياري، القيمة الافتراضية 0) — معرّف الرمز المستخدم للتعبئة في المفردات.
  • bos_token_id (int, اختياري، القيمة الافتراضية 0) — معرّف الرمز المستخدم لبدء البث في المفردات.
  • eos_token_id (Union[int, list[int]]، اختياري، القيمة الافتراضية 0) — معرّف الرمز المستخدم لنهاية التدفق في المفردات.
  • expand (int, اختياري، القيمة الافتراضية 2) — معامل التوسيع المستخدم لتحديد الحجم الوسيط.
  • conv_kernel (int، اختياري، القيمة الافتراضية 4) — حجم نواة الالتفاف.
  • use_bias (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام الانحياز في [“in_proj”, “out_proj”] داخل كتلة المخلّط
  • use_conv_bias (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام الانحياز في طبقة الالتفاف داخل كتلة المخلّط.
  • hidden_act (str، اختياري، القيمة الافتراضية silu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وغيرها.
  • initializer_range (float، اختياري، القيمة الافتراضية 0.1) — انحراف معياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • residual_in_fp32 (bool، اختياري، القيمة الافتراضية True) — ما إذا كان ينبغي أن تكون البواقي (residuals) من نوع float32. إذا تم ضبطه على False، فستحتفظ البواقي بنفس dtype مثل باقي النموذج.
  • time_step_rank (Union[str, int]، اختياري، القيمة الافتراضية auto) — رتبة الإسقاط (خطوة الزمن). يمكن أن تكون "auto" لضبطها تلقائيًا.
  • time_step_scale (float، اختياري، القيمة الافتراضية 1.0) — المقياس المطبَّق على فرق خطوة الزمن قبل التقطيع.
  • time_step_min (float، اختياري، القيمة الافتراضية 0.001) — الحد الأدنى لـtime_step المستخدم لتحديد حد dt_proj.bias.
  • time_step_max (float، اختياري، القيمة الافتراضية 0.1) — القيمة القصوى لـtime_step المستخدمة لتحديد حد dt_proj.bias.
  • time_step_init_scheme (str، اختياري، القيمة الافتراضية random) — مخطط التهيئة لفرق خطوة الزمن. يمكن أن يكون "random" أو "uniform".
  • time_step_floor (float، اختياري، القيمة الافتراضية 0.0001) — القيمة الدنيا المسموح بها لخطوة الزمن المنفصلة الدلتا بعد تفعيل softplus.
  • rescale_prenorm_residual (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم إعادة تحجيم أوزان out_proj عند التهيئة أم لا.
  • use_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب على النموذج إرجاع قيم المفاتيح/القيم الأخيرة للانتباه (لا تستخدمها جميع النماذج). لا ينطبق إلا إذا كان config.is_decoder=True أو إذا كان النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.
  • use_mambapy (bool، اختياري، القيمة الافتراضية False) — يحدد استراتيجية الاحتياط أثناء التدريب إذا لم تتوفر النسخة الرسمية من Mamba المعتمدة على CUDA. إذا كانت القيمة True، فسيتم استخدام تنفيذ mamba.py. وإذا كانت False، فسيتم استخدام التنفيذ البسيط والأبطأ. يُنصح بالتبديل إلى النسخة البسيطة إذا كانت الذاكرة محدودة.
  • use_associative_scan (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب استخدام torch._higher_order_ops.associative_scan الخاص بـ PyTorch للمسح المتوازي بدلاً من التنفيذ التسلسلي البسيط. يكون المسح الترابطي نشطاً فقط أثناء تتبع torch.compile ويتطلب torch >= 2.9.0. تم اختبار المسارين لإنتاج نتائج متطابقة عددياً (انظر test_associative_scan_matches_sequential). اضبط القيمة على False للعودة إلى الحلقة التسلسلية.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.
  • mixer_rms_eps (float, اختياري، القيمة الافتراضية 1e-06) — قيمة إيبسيلون لمعايير RMS المستخدمة في معايير RMS الخاصة بمزيج B وC وحالات dt.

هذه فئة الإعدادات المخزنة لإعدادات نموذج FalconMambaModel. تُستخدم لتوليد نموذج Falcon Mamba وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن إنشاء إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ tiiuae/falcon-mamba-7b

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

مثال:

>>> from transformers import FalconMambaConfig, FalconMambaModel

>>> # Initializing a FalconMamba configuration
>>> configuration = FalconMambaConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = FalconMambaModel(configuration)

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

FalconMambaModel

فئة transformers.FalconMambaModel

< >

( config: FalconMambaConfig )

المعاملات

  • config (FalconMambaConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

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

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.LongTensor] = Nonecache_params: transformers.cache_utils.Cache | None = Noneuse_cache: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Noneattention_mask: typing.Optional[torch.LongTensor] = None**kwargs ) → FalconMambaOutput or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات الإدخال؟

  • inputs_embeds (torch.LongTensor of shape (batch_size, sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • cache_params (Cache، اختياري) — إذا تم تمريره، يستخدم النموذج الحالة السابقة في جميع الكتل (مما سيُنتج المخرجات الخاصة بـ input_ids المُقدَّمة وكأن النموذج أضاف state_input_ids + input_ids كسياق).
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، يُعاد cache_params ويمكن استخدامه لتوليد logits التالية بسرعة.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • return_dict (bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
  • attention_mask (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع في [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

يعيد

FalconMambaOutput أو tuple(torch.Tensor)

FalconMambaOutput أو مجموعة (tuple) من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (FalconMambaConfig) والمدخلات.

تتجاوز طريقة FalconMambaModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرجات الطبقة الأخيرة من النموذج.

  • cache_params (~cache_utils.Cache، اختياري) — حالة النموذج عند آخر خطوة زمنية. يمكن استخدامه في طريقة الأمامية مع input_ids التالية لتجنب تقديم input_ids القديمة.

    يتضمن مصفوفات حالة نموذج فضاء الحالة بعد المسح الانتقائي، وحالات التمرير

  • hidden_states (tuple[torch.Tensor]، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

FalconMambaLMHeadModel

فئة transformers.FalconMambaForCausalLM

< >

( config: FalconMambaConfig )

المعاملات

  • config (FalconMambaConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج FALCON_MAMBA من نوع transformer مع رأس لنمذجة اللغة في الأعلى (طبقة خطية بأوزان مرتبطة بتضمينات الإدخال).

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_params: transformers.cache_utils.Cache | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs ) → FalconMambaCausalLMOutput or tuple(torch.Tensor)

المعاملات

  • input_ids (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا.

    يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع PreTrainedTokenizer.encode() و PreTrainedTokenizer.call() للتفاصيل.

    ما هي معرّفات الإدخال؟

  • attention_mask (torch.LongTensor بشكل (batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع في [0, 1]:
    • 1 للرموز التي لم تُقنَّع،
    • 0 للرموز التي تم إخفاؤها.

    ما هي أقنعة الانتباه؟

  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • cache_params (Cache، اختياري) — إذا تم تمريره، يستخدم النموذج الحالة السابقة في جميع الكتل (مما سيُنتج المخرجات الخاصة بـ input_ids المُقدَّمة وكأن النموذج أضاف state_input_ids + input_ids كسياق).
  • labels (torch.LongTensor من الشكل (batch_size, sequence_length)، اختياري) — التسميات لنمذجة اللغة. لاحظ أن التسميات تُزاح داخل النموذج، أي يمكنك تعيين labels = input_ids يتم اختيار الفهارس من [-100, 0, ..., config.vocab_size] تُتجاهل (تُقنَّع) جميع التسميات المعينة إلى -100 ويتم حساب الخسارة فقط للتسميات الموجودة في [0, ..., config.vocab_size]
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • return_dict (bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
  • use_cache (bool، اختياري) — إذا تم تعيينه إلى True، يُعاد cache_params ويمكن استخدامه لتوليد logits التالية بسرعة.
  • logits_to_keep (Union[int, torch.Tensor]، اختياري، القيمة الافتراضية 0) — إذا كان int، يتم حساب logits لآخر logits_to_keep رموز. إذا كانت القيمة 0، يتم حساب logits لجميع input_ids (حالة خاصة). لا يُحتاج إلى logits إلا للرمز الأخير في عملية التوليد، ويمكن أن يوفر حسابها لذلك الرمز وحده ذاكرة كبيرة، وهو أمر مهم بشكل ملحوظ للتسلسلات الطويلة أو حجم المفردات الكبير. إذا كان torch.Tensor، يجب أن يكون بعدًا واحدًا (1D) ويتوافق مع الفهارس التي يجب الاحتفاظ بها في بُعد طول التسلسل. يكون هذا مفيدًا عند استخدام تنسيق المصفوفات المعبأة (packed tensor format) (بعد واحد لكل من الدفعة وطول التسلسل).

يعيد

FalconMambaCausalLMOutput أو tuple(torch.Tensor)

FalconMambaCausalLMOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (FalconMambaConfig) والمدخلات.

تتجاوز طريقة FalconMambaForCausalLM الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

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

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — خسارة نمذجة اللغة (لتوقع الرمز التالي).

  • logits (torch.Tensor من الشكل (batch_size, sequence_length, config.vocab_size)) — درجات التنبؤ لرأس نمذجة اللغة (درجات لكل رمز في المفردات قبل SoftMax).

  • cache_params (~cache_utils.Cache، اختياري) — حالة النموذج عند آخر خطوة زمنية. يمكن استخدامه في طريقة الأمامية مع input_ids التالية لتجنب تقديم input_ids القديمة.

    يتضمن مصفوفات حالة نموذج فضاء الحالة بعد المسح الانتقائي، وحالات التمرير

  • hidden_states (tuple[torch.Tensor]، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

مثال:

Update on GitHub