Diffusers documentation

AutoModel

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

and get access to the augmented documentation experience

to get started

AutoModel

تكتشف فئة AutoModel وتحمّل فئة النموذج الصحيحة (UNet، transformer، VAE) تلقائيًا من ملف config.json. لا تحتاج إلى معرفة اسم فئة النموذج المحدد مسبقًا. تدعم أنواع البيانات وتحديد الجهاز، وتعمل عبر أنواع النماذج والمكتبات.

يُحمّل المثال أدناه محوّلاً من Diffusers ومشفّر نصوص من Transformers. استخدم معامل subfolder لتحديد مكان تحميل ملف config.json من.

import torch
from diffusers import AutoModel, DiffusionPipeline

transformer = AutoModel.from_pretrained(
    "Qwen/Qwen-Image", subfolder="transformer", dtype=torch.bfloat16, device_map="cuda"  # or "mps", "xpu", "cpu"
)

text_encoder = AutoModel.from_pretrained(
    "Qwen/Qwen-Image", subfolder="text_encoder", dtype=torch.bfloat16, device_map="cuda"
)

نماذج مخصصة

AutoModel also loads models from the Hub that aren’t included in Diffusers. Set trust_remote_code=True in AutoModel.from_pretrained() to load custom models.

يتطلب مستودع نموذج مخصص وحدة Python تحتوي على فئة النموذج، وملف config.json يحتوي على إدخال auto_map يربط "AutoModel" بـ "module_file.ClassName".

custom/custom-transformer-model/
├── config.json
├── my_model.py
└── diffusion_pytorch_model.safetensors

يتضمن config.json حقل auto_map الذي يشير إلى الفئة المخصصة.

{
  "auto_map": {
    "AutoModel": "my_model.MyCustomModel"
  }
}

ثم حمّله باستخدام trust_remote_code=True.

import torch
from diffusers import AutoModel

transformer = AutoModel.from_pretrained(
    "custom/custom-transformer-model", trust_remote_code=True, dtype=torch.bfloat16, device_map="cuda"  # or "mps", "xpu", "cpu"
)

كمثال واقعي، يستضيف Overworld/Waypoint-1-Small فئة WorldModel مخصصة عبر عدة وحدات في مجلد transformer الفرعي الخاص به.

transformer/
├── config.json          # auto_map: "model.WorldModel"
├── model.py
├── attn.py
├── nn.py
├── cache.py
├── quantize.py
├── __init__.py
└── diffusion_pytorch_model.safetensors
import torch
from diffusers import AutoModel

transformer = AutoModel.from_pretrained(
    "Overworld/Waypoint-1-Small", subfolder="transformer", trust_remote_code=True, dtype=torch.bfloat16, device_map="cuda"  # or "mps", "xpu", "cpu"
)

إذا ورث النموذج المخصص من فئة ModelMixin، فيحصل على نفس الميزات المتاحة لفئات نماذج Diffusers، مثل التجميع الإقليمي وإزاحة المجموعات.

كإجراء احترازي عند استخدام trust_remote_code=True، قم بتمرير تجزئة الالتزام (commit hash) إلى معامل revision في AutoModel.from_pretrained() للتأكد من أن الكود لم يتم تحديثه بكود خبيث جديد (ما لم تكن تثق تماماً بأصحاب النموذج).

transformer = AutoModel.from_pretrained(
    "Overworld/Waypoint-1-Small", subfolder="transformer", trust_remote_code=True, revision="a3d8cb2"
)

حفظ النماذج المخصصة

استخدم register_for_auto_class() لإضافة إدخال auto_map إلى config.json تلقائيًا عند الحفظ. وهذا يتجنب الحاجة إلى تحرير ملف الإعدادات يدويًا.

# my_model.py
from diffusers import ModelMixin, ConfigMixin

class MyCustomModel(ModelMixin, ConfigMixin):
    ...

MyCustomModel.register_for_auto_class("AutoModel")

model = MyCustomModel(...)
model.save_pretrained("./my_model")

ستتضمن config.json المحفوظة حقل auto_map.

{
  "auto_map": {
    "AutoModel": "my_model.MyCustomModel"
  }
}

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

تعرف على المزيد حول تنفيذ نماذج مخصصة في دليل مكونات المجتمع.

Update on GitHub