Transformers documentation
Intel Gaudi
Intel Gaudi
تعمل مُسرِّعات Intel Gaudi على تشغيل PyTorch ضمن مجموعة Intel Gaudi، مع استخدام سلسلة الأجهزة hpu. يشغّل Gaudi PyTorch في الوضع الفوري (eager mode) افتراضيًا. في الوضع الفوري، يُنفَّذ كل عملية فور استدعائها، تمامًا كما يعمل PyTorch على وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسوميات (GPU)، لذا تعمل نماذج Transformers على Gaudi دون الحاجة إلى تعديلات خاصة بـ Gaudi. ولالتقاط النموذج في رسم بياني (graph) بدلاً من ذلك، قم بتجميعه باستخدام torch.compile.
التثبيت
قم بتثبيت برنامج Intel Gaudi وحزمة PyTorch الخاصة به (habana-torch-plugin، والتي يتم استيرادها باسم habana_frameworks) باستخدام دليل تثبيت Intel Gaudi، بالإضافة إلى Accelerate الإصدار 1.5.0 أو أحدث.
يستخدم Transformers تينسورات من نوع int64 لمعرّفات الرموز، لذا فعّل دعم int64 على Gaudi. تعمل اختبارات Gaudi المستمرة في Transformers مع نفس الإعداد.
export PT_ENABLE_INT64_SUPPORT=1تحقق من أن Transformers يمكنه رؤية الجهاز.
from transformers import is_torch_hpu_available
print(is_torch_hpu_available())يطبع True عندما يكون Gaudi جاهزًا للاستخدام، ويطبع False مع إصدارات Accelerate الأقدم من 1.5.0، حتى لو كان جهاز Gaudi موجودًا.
اختيار الأجهزة
اختر أجهزة Gaudi التي يمكن لحاوية Docker استخدامها عند تشغيلها. اضبط HABANA_VISIBLE_MODULES على معرّفات الوحدات، وهي تبقى ثابتة عبر عمليات إعادة التشغيل وإعادة تثبيت برامج التشغيل، أو اضبط HABANA_VISIBLE_DEVICES على فهارس الأجهزة، وهي قد تتغير. إذا لم تضبط أيًّا منهما، فسيستخدم PyTorch أي جهاز Gaudi متاح على الخادم.
docker run --runtime=habana -e HABANA_VISIBLE_MODULES=0,1,2,3 ...
شغّل hl-smi -Q index,module_id -f csv لربط فهارس الأجهزة بمعرّفات الوحدات. بالنسبة إلى عبء عمل موزّع على جزء من خادم، تدعم Intel مجموعات مكوّنة من جهازين وأربعة أجهزة فقط. راجع عدة حاويات Docker، كل منها يحمل عبء عمل واحدًا لمعرفة تركيبات معرّفات الوحدات المدعومة.
تشغيل الاستدلال
مرّر device_map="hpu" إلى from_pretrained(). يختار pipeline() Gaudi تلقائيًا عندما لا تمرّر device.
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B", device_map="hpu")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
inputs = tokenizer("Intel Gaudi is", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=50, do_sample=False)
print(tokenizer.decode(output[0], skip_special_tokens=True))كمّ النماذج
bitsandbytes يكمّم النماذج إلى 4 أو 8 بت على Gaudi 2 و Gaudi 3. عند عدم تمرير device_map، يضع النموذج على جهاز Gaudi الحالي.
لضبط نموذج لا يتسع على جهاز واحد، حمّله بدقة 4 بت باستخدام bitsandbytes ودرّب محولات LoRA باستخدام PEFT.
التدريب باستخدام Trainer
يتعرّف TrainingArguments على Gaudi ويضبط الجهاز على hpu، لذا يتدرّب Trainer عليه دون أي إعدادات للأجهزة. تدعم جميع أجيال Gaudi نمط bf16.
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
)
print(training_args.device)يطبع جهاز hpu عندما سيُدرّب Trainer على Gaudi.
تجميع النموذج
يغلّف Transformers استدعاء torch.compile على Gaudi، لذا فإن أي استدعاء بخلفية أخرى غير hpu_backend أو eager، بما في ذلك زخرفة @torch.compile في كود النمذجة، يبدّل إلى hpu_backend ويسجّل تحذيراً. ينطبق هذا الغلاف على كل استدعاء لـ torch.compile، سواء للاستدلال أو التدريب.
لترجمة نموذج للتدريب، اضبط torch_compile=True في TrainingArguments، مما يضبط torch_compile_backend على "hpu_backend".
from transformers import TrainingArguments
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
torch_compile=True,
)التدريب الموزّع
يستخدم التدريب الموزّع واجهة HCCL الجماعية. يختار Transformers هذه الواجهة على Gaudi، كما يمكنك ضبطها صراحةً باستخدام ddp_backend="hccl".
training_args = TrainingArguments(
output_dir="./outputs",
bf16=True,
ddp_backend="hccl",
)شغّل عملية واحدة لكل جهاز Gaudi باستخدام torchrun أو accelerate launch، بعد اختيار الأجهزة. يحدد accelerate launch عدد العمليات مساوياً لعدد أجهزة Gaudi عندما لا تمرر --num_processes.
accelerate launch train.py
الخطوات التالية
- اقرأ توثيق Intel Gaudi للحصول على تفاصيل العتاد، ومكدس البرمجيات، وبنية Gaudi.
- جرّب Optimum for Intel Gaudi للحصول على تنسيقات نماذج مُحسّنة لـ Gaudi للتدريب والاستدلال.