Diffusers documentation

AutoRound

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

AutoRound

AutoRound هو مجموعة أدوات متقدمة للكمّية. يحقق دقة عالية عند عرض بت منخفض للغاية (2-4 بت) مع ضبطٍ محدود، وذلك بالاستفادة من هبوط التدرّج الإشاري وتوفير توافق واسع مع الأجهزة. راجع أبحاثنا SignRoundV1 وSignRoundV2 لمزيد من التفاصيل.

قم بتثبيت auto-round (الإصدار ≥ 0.13.0):

pip install "auto-round>=0.13.0"

لاستخدام نواة Marlin للاستدلال الأسرع على CUDA، ثبّت gptqmodel:

pip install "gptqmodel>=5.8.0"

تحميل نموذج مُكمَّم

قم بتحميل نموذج AutoRound مُكمَّم مسبقًا عن طريق تمرير AutoRoundConfig إلى from_pretrained(). يعمل هذا الأسلوب مع أي نموذج يُحمَّل عبر Accelerate ويحتوي على طبقات torch.nn.Linear.

يمكنك استخدام PipelineQuantizationConfig لتكميم مكونات محددة من خط الأنابيب:

import torch
from diffusers import DiffusionPipeline, PipelineQuantizationConfig, AutoRoundConfig

pipeline_quant_config = PipelineQuantizationConfig(
    quant_mapping={"transformer": AutoRoundConfig(backend="auto")}
)
pipe = DiffusionPipeline.from_pretrained(
    "INCModel/Z-Image-W4A16-AutoRound",
    quantization_config=pipeline_quant_config,
    dtype=torch.bfloat16,
    device_map="cuda",  # or "mps", "xpu", "cpu"
)

image = pipe("a cat holding a sign that says hello").images[0]
image.save("output.png")

أو حمّل مكوّن نموذج مُكمَّم مباشرةً:

import torch
from diffusers import ZImageTransformer2DModel, ZImagePipeline, AutoRoundConfig

model_id = "INCModel/Z-Image-W4A16-AutoRound"

quantization_config = AutoRoundConfig(backend="auto")
transformer = ZImageTransformer2DModel.from_pretrained(
    model_id,
    subfolder="transformer",
    quantization_config=quantization_config,
    dtype=torch.bfloat16,
    device_map="cuda",  # or "mps", "xpu", "cpu"
)

pipe = ZImagePipeline.from_pretrained(
    model_id,
    transformer=transformer,
    dtype=torch.bfloat16,
    device_map="cuda",
)

image = pipe("a cat holding a sign that says hello").images[0]
image.save("output.png")

يدعم AutoRound في Diffusers تحميل النماذج المكمّمة مسبقًا فقط. ولكي تُكمّم نموذجًا من الصفر، استخدم AutoRound CLI أو واجهة Python API مباشرة، ثم حمّل النتيجة باستخدام Diffusers.

torch.compile

يتوافق AutoRound مع torch.compile للحصول على استدلال أسرع. يمكنك تجميع المحوّل الكمي (DiT) لتحسين الأداء:

import torch
from diffusers import DiffusionPipeline, PipelineQuantizationConfig, AutoRoundConfig

pipeline_quant_config = PipelineQuantizationConfig(
    quant_mapping={"transformer": AutoRoundConfig(backend="auto")}
)
pipe = DiffusionPipeline.from_pretrained(
    "INCModel/Z-Image-W4A16-AutoRound",
    quantization_config=pipeline_quant_config,
    dtype=torch.bfloat16,
    device_map="cuda",  # or "mps", "xpu", "cpu"
)

pipe.transformer = torch.compile(pipe.transformer, mode="default", fullgraph=False)

واجهات الخلفية

يدعم AutoRound عدة محركات استنتاج لنماذج الكمّية على مستوى الأوزان فقط. يتحكم المحرك في النواة التي تتعامل مع فكّ الكمّية أثناء المرور الأمامي. اضبط معامل backend في AutoRoundConfig لاختيار أحد المحركات:

الواجهة الخلفيةالقيمةالجهازالمتطلباتملاحظات
Auto"auto"أي—الافتراضي. يختار تلقائيًا أفضل واجهة خلفية متاحة.
PyTorch"torch"CPU / CUDA—تنفيذ نقي باستخدام PyTorch. أوسع توافق.
تريتون"tritonv2"CUDAtritonنواة مبنية على Triton للاستدلال على وحدة معالجة الرسوميات.
ExllamaV2"exllamav2"CUDAgptqmodel>=5.8.0أداء جيد لـ CUDA عبر نواة ExllamaV2.
Marlin"marlin"CUDAgptqmodel>=5.8.0أفضل أداء لـ CUDA عبر نواة Marlin.
from diffusers import AutoRoundConfig

# Auto-select (default)
config = AutoRoundConfig()

# Explicit Triton backend for CUDA
config = AutoRoundConfig(backend="tritonv2")

# Marlin backend for best CUDA performance (requires gptqmodel>=5.8.0)
config = AutoRoundConfig(backend="marlin")

# ExllamaV2 backend for good CUDA performance (requires gptqmodel>=5.8.0)
config = AutoRoundConfig(backend="exllamav2")

# PyTorch backend for CPU/CUDA inference
config = AutoRoundConfig(backend="torch")

الحفظ والتحميل

حفظ
load

يتطلب AutoRound معايرة البيانات لكي يقوم بتكميم النموذج. يتم ذلك خارج Diffusers باستخدام مكتبة AutoRound مباشرةً:

from auto_round import AutoRound

autoround = AutoRound(
    "Tongyi-MAI/Z-Image",
    scheme="W4A16",  # W4G128 symmetric
    enable_torch_compile=True,
    num_inference_steps=3,
    guidance_scale=7.5,
    dataset="coco2014",
)
autoround.quantize_and_save("Z-Image-W4A16-AutoRound")

لمزيد من التفاصيل حول خيارات المعايرة، راجع توثيق AutoRound.

مخططات الكمّات المدعومة

يدعم AutoRound عدة مخططات:

  • W4A16(bits:4,group_size:128,sym:True,act_bits:16)
  • W8A16(bits:8,group_size:128,sym:True,act_bits:16)
  • W3A16(bits:3,group_size:128,sym:True,act_bits:16)
  • W2A16(bits:2,group_size:128,sym:True,act_bits:16)
  • GGUF:Q4_K_M(جميع أنواع Q_K,Q_0,Q*_1 التي يوفرها llamacpp مدعومة)
  • NVFP4 (ميزة تجريبية، يُنصح بالتصدير إلى صيغة llm_compressor data_type nvfp4,act_data_type nvfp4,static_global_scale,group_size 16)
  • MXFP4(ميزة بحثية، لا يوجد نواة حقيقية، MXFP4 القياسي، data_type mxfp,act_data_type mxfp,bits 4, act_bits 4, group_size 32)
  • MXINT4(ميزة بحثية، لا يوجد نواة حقيقية، MXINT4 القياسية، data_type mxint,act_data_type mxint,bits 4, act_bits 4, group_size 32)
  • MXFP4_RCEIL(ميزة بحثية، لا يوجد نواة حقيقية، متغير NVIDIA، data_type mxfp، act_data_type mxfp_rceil، bits 4، act_bits 4، group_size 32)
  • MXFP8(ميزة بحثية، لا يوجد نواة حقيقية، data_type mxfp,act_data_type mxfp_rceil,group_size 32)
  • FPW8A16(ميزة بحثية، لا يوجد نواة حقيقية، data_type fp8,group_size 0->per tensor )
  • FP8_STATIC(ميزة بحثية، لا يوجد نواة حقيقية، data_type:fp8، act_data_type:fp8، group_size -1 -> لكل قناة، act_group_size=0-> لكل مخطط)

علاوة على ذلك، يمكنك تعديل group_size وbits وsym وكثير من الإعدادات الأخرى التي تريدها، على الرغم من أنه قد لا توجد نواة حقيقية.

الموارد

Update on GitHub