Diffusers documentation
AutoModel
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.safetensorsimport 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