Buckets:

mishig's picture
|
download
raw
8.44 kB
# AutoRound
[AutoRound](https://github.com/intel/auto-round) هو مجموعة أدوات متقدمة للكمّية. يحقق دقة عالية عند عرض بت منخفض للغاية (2-4 بت) مع ضبطٍ محدود، وذلك بالاستفادة من هبوط التدرّج الإشاري وتوفير توافق واسع مع الأجهزة. راجع أبحاثنا [SignRoundV1](https://arxiv.org/pdf/2309.05516) و[SignRoundV2](https://arxiv.org/abs/2512.04746) لمزيد من التفاصيل.
قم بتثبيت `auto-round` (الإصدار ≥ 0.13.0):
```bash
pip install "auto-round>=0.13.0"
```
لاستخدام نواة Marlin للاستدلال الأسرع على CUDA، ثبّت `gptqmodel`:
```bash
pip install "gptqmodel>=5.8.0"
```
## تحميل نموذج مُكمَّم
قم بتحميل نموذج AutoRound مُكمَّم مسبقًا عن طريق تمرير `AutoRoundConfig` إلى [from_pretrained()](/docs/diffusers/v0.43.0/ar/api/models/overview#diffusers.ModelMixin.from_pretrained). يعمل هذا الأسلوب مع أي نموذج يُحمَّل عبر [Accelerate](https://hf.co/docs/accelerate/index) ويحتوي على طبقات `torch.nn.Linear`.
يمكنك استخدام [PipelineQuantizationConfig](/docs/diffusers/v0.43.0/ar/api/quantization#diffusers.PipelineQuantizationConfig) لتكميم مكونات محددة من خط الأنابيب:
```python
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")
```
أو حمّل مكوّن نموذج مُكمَّم مباشرةً:
```python
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")
```
> [!NOTE]
> يدعم AutoRound في Diffusers تحميل النماذج *المكمّمة مسبقًا* فقط. ولكي تُكمّم نموذجًا من الصفر، استخدم [AutoRound CLI أو واجهة Python API](https://github.com/intel/auto-round) مباشرة، ثم حمّل النتيجة باستخدام Diffusers.
## torch.compile
يتوافق AutoRound مع [`torch.compile`](../optimization/fp16#torchcompile) للحصول على استدلال أسرع. يمكنك تجميع المحوّل الكمي (DiT) لتحسين الأداء:
```python
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"` | CUDA | `triton` | نواة مبنية على Triton للاستدلال على وحدة معالجة الرسوميات. |
| **ExllamaV2** | `"exllamav2"` | CUDA | `gptqmodel>=5.8.0` | أداء جيد لـ CUDA عبر نواة ExllamaV2. |
| **Marlin** | `"marlin"` | CUDA | `gptqmodel>=5.8.0` | أفضل أداء لـ CUDA عبر نواة Marlin. |
```python
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")
```
## الحفظ والتحميل
يتطلب AutoRound معايرة البيانات لكي يقوم بتكميم النموذج. يتم ذلك خارج Diffusers باستخدام مكتبة [AutoRound](https://github.com/intel/auto-round) مباشرةً:
```python
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](https://github.com/intel/auto-round).
```python
import torch
from diffusers import ZImageTransformer2DModel, ZImagePipeline
model_id = "INCModel/Z-Image-W4A16-AutoRound"
# The inference backend will be automatically selected.
pipe = ZImagePipeline.from_pretrained(
model_id,
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")
```
### مخططات الكمّات المدعومة
يدعم 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` وكثير من الإعدادات الأخرى التي تريدها، على الرغم من أنه قد لا توجد نواة حقيقية.
## الموارد
- [نماذج AutoRound المُكمّاة مسبقًا على Hub](https://huggingface.co/models?search=autoround)

Xet Storage Details

Size:
8.44 kB
·
Xet hash:
745154b9a0e5cb2e73e40cdbe0d741813232a0c8cb10d9bd1cd5ac9bb07d5824

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.