Transformers documentation

BitNet

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

BitNet

يستبدل BitNet طبقات الخطية التقليدية في طبقات Multi-Head Attention والشبكات الأمامية بطبقات BitLinear متخصصة. تقوم طبقات BitLinear بتكميم الأوزان بدقة ثلاثية (بقيم -1 و0 و1) وتكميم التنشيطات بدقة 8 بت.

Alt Text
بنية BitNet مع طبقات BitLinear.

لا يمكن تكميم نماذج BitNet أثناء التشغيل. فهي تتطلب التكميم أثناء التدريب المسبق أو الضبط الدقيق، لأنها تعتمد على تقنية التدريب الواعي بالتكميم (QAT). خلال التدريب، يتم تكميم الأوزان إلى قيم ثلاثية باستخدام تكميم متماثل لكل مشغل.

  1. احسب متوسط القيم المطلقة لمصفوفة الأوزان واستخدمه كمقياس.
  2. اقسم الأوزان على معامل القياس، ثم قرّب القيم، وحدّها بين -1 و 1، وأعد قياسها لتستمر بالدقة الكاملة.
  3. تُكمَّم التفعيلات إلى عرض بت محدد (8 بت) باستخدام كمّية absmax (كمّية متناظرة لكل قناة). ويتضمن ذلك تحجيم التفعيلات إلى نطاق [−128,127].

راجع هذا PR لتدريب مسبق أو ضبط دقيق لنموذج بدقة 1.58 بت باستخدام Nanotron. ولضبط الدقة، قم بتحويل النموذج من صيغة Hugging Face إلى صيغة Nanotron. تجد خطوات التحويل في هذا PR.

حمّل نموذج BitNet المُكمَّم باستخدام from_pretrained().

from transformers import AutoModelForCausalLM
path = "/path/to/model"
model = AutoModelForCausalLM.from_pretrained(path, device_map="auto")

النوى

يُستخدم @torch.compile لفكّ حزم الأوزان وتنفيذ المرور الأمامي. وهو سهل التنفيذ للغاية ويحقق تحسينات كبيرة في السرعة. وسيتم دمج نوى مُحسّنة إضافية في الإصدارات المستقبلية.

الموارد

اقرأ ضبط نماذج اللغة الكبيرة بدقة 1.58 بت: تكميم متطرف بسهولة لمعرفة المزيد حول كيفية تدريب نماذج BitNet وضبطها.

Update on GitHub