Transformers documentation

Intel Gaudi

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

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

الخطوات التالية

Update on GitHub