Buckets:
| # Quanto | |
| > [!WARNING] | |
| > Quanto arka ucu kullanımdan kaldırılmıştır ve 1.0.0 sürümünde kaldırılacaktır. [bitsandbytes](./bitsandbytes) veya [torchao](./torchao) gibi diğer desteklenen [kuantizasyon arka uçlarından](./overview) birine geçmeyi düşünün. | |
| [Quanto](https://github.com/huggingface/optimum-quanto), [Optimum](https://huggingface.co/docs/optimum/en/index) için bir PyTorch kuantizasyon arka ucudur. Çok yönlülük ve sadelik göz önünde bulundurularak tasarlanmıştır: | |
| - Tüm özellikler, acil modda (eager mode) kullanılabilir (izlenemeyen modellerle çalışır) | |
| - Kuantizasyon farkındalıklı eğitimi destekler | |
| - Kantize modeller `torch.compile` ile uyumludur | |
| - Quantize edilmiş modeller cihazdan bağımsızdır (ör. CUDA, XPU, MPS, CPU) | |
| Quanto arka ucunu kullanabilmek için öncelikle `optimum-quanto>=0.2.6` ve `accelerate` paketlerini yüklemeniz gerekir. | |
| ```shell | |
| pip install optimum-quanto accelerate | |
| ``` | |
| Artık `QuantoConfig` nesnesini `from_pretrained()` metoduna geçirerek bir modeli kuantize edebilirsiniz. Quanto kütüphanesi `nn.Conv2d` ve `nn.LayerNorm` modüllerini kuantize etmeye izin verse de, Diffusers şu anda yalnızca bir modeldeki `nn.Linear` katmanlarındaki ağırlıkların kuantize edilmesini desteklemektedir. Aşağıdaki kod parçası, Quanto ile `float8` kuantizasyonunun nasıl uygulanacağını göstermektedir. | |
| ```python | |
| import torch | |
| from diffusers import FluxTransformer2DModel, QuantoConfig | |
| model_id = "black-forest-labs/FLUX.1-dev" | |
| quantization_config = QuantoConfig(weights_dtype="float8") | |
| transformer = FluxTransformer2DModel.from_pretrained( | |
| model_id, | |
| subfolder="transformer", | |
| quantization_config=quantization_config, | |
| dtype=torch.bfloat16, | |
| ) | |
| pipe = FluxPipeline.from_pretrained(model_id, transformer=transformer, dtype=dtype) | |
| pipe.to("cuda") # or "mps", "xpu", "cpu" | |
| prompt = "A cat holding a sign that says hello world" | |
| image = pipe( | |
| prompt, num_inference_steps=50, guidance_scale=4.5, max_sequence_length=512 | |
| ).images[0] | |
| image.save("output.png") | |
| ``` | |
| ## Belirli modüllerde Kuantizasyonu Atlayın | |
| `QuantoConfig` içindeki `modules_to_not_convert` argümanını kullanarak belirli modüller üzerinde kuantizasyon uygulamasını atlamak mümkündür. Lütfen bu argümana geçirilen modüllerin `state_dict` içindeki modüllerin anahtarlarıyla eşleştiğinden emin olun. | |
| ```python | |
| import torch | |
| from diffusers import FluxTransformer2DModel, QuantoConfig | |
| model_id = "black-forest-labs/FLUX.1-dev" | |
| quantization_config = QuantoConfig(weights_dtype="float8", modules_to_not_convert=["proj_out"]) | |
| transformer = FluxTransformer2DModel.from_pretrained( | |
| model_id, | |
| subfolder="transformer", | |
| quantization_config=quantization_config, | |
| dtype=torch.bfloat16, | |
| ) | |
| ``` | |
| ## Quanto Backend ile `from_single_file` kullanımı | |
| `QuantoConfig`, `~FromOriginalModelMixin.from_single_file` ile uyumludur. | |
| ```python | |
| import torch | |
| from diffusers import FluxTransformer2DModel, QuantoConfig | |
| ckpt_path = "https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/flux1-dev.safetensors" | |
| quantization_config = QuantoConfig(weights_dtype="float8") | |
| transformer = FluxTransformer2DModel.from_single_file(ckpt_path, quantization_config=quantization_config, dtype=torch.bfloat16) | |
| ``` | |
| ## Kantize Edilmiş Modellerin Kaydedilmesi | |
| Diffusers, `~ModelMixin.save_pretrained` yöntemi kullanılarak Quanto modellerini serialize etmeyi destekler. | |
| Doğrudan Quanto kütüphanesiyle kuantize edilen modeller ile Diffusers kullanılarak Quanto arka uç olarak kullanılan modeller için seri hale getirme ve yükleme gereksinimleri farklıdır. Şu anda, doğrudan Quanto ile kuantize edilen modelleri `~ModelMixin.from_pretrained` kullanarak Diffusers'a yüklemek mümkün değildir. | |
| ```python | |
| import torch | |
| from diffusers import FluxTransformer2DModel, QuantoConfig | |
| model_id = "black-forest-labs/FLUX.1-dev" | |
| quantization_config = QuantoConfig(weights_dtype="float8") | |
| transformer = FluxTransformer2DModel.from_pretrained( | |
| model_id, | |
| subfolder="transformer", | |
| quantization_config=quantization_config, | |
| dtype=torch.bfloat16, | |
| ) | |
| # save quantized model to reuse | |
| transformer.save_pretrained("<your quantized model save path>") | |
| # you can reload your quantized model with | |
| model = FluxTransformer2DModel.from_pretrained("<your quantized model save path>") | |
| ``` | |
| ## Quanto ile `torch.compile` kullanımı | |
| Şu anda Quanto arka ucu aşağıdaki kuantizasyon türleri için `torch.compile` desteklemektedir: | |
| - `int8` ağırlıkları | |
| ```python | |
| import torch | |
| from diffusers import FluxPipeline, FluxTransformer2DModel, QuantoConfig | |
| model_id = "black-forest-labs/FLUX.1-dev" | |
| quantization_config = QuantoConfig(weights_dtype="int8") | |
| transformer = FluxTransformer2DModel.from_pretrained( | |
| model_id, | |
| subfolder="transformer", | |
| quantization_config=quantization_config, | |
| dtype=torch.bfloat16, | |
| ) | |
| transformer = torch.compile(transformer, mode="max-autotune", fullgraph=True) | |
| pipe = FluxPipeline.from_pretrained( | |
| model_id, transformer=transformer, dtype=dtype | |
| ) | |
| pipe.to("cuda") # or "mps", "xpu", "cpu" | |
| images = pipe("A cat holding a sign that says hello").images[0] | |
| images.save("flux-quanto-compile.png") | |
| ``` | |
| ## Desteklenen Kuantizasyon Türleri | |
| ### Ağırlıklar | |
| - float8 | |
| - int8 | |
| - int4 | |
| - int2 | |
Xet Storage Details
- Size:
- 5.33 kB
- Xet hash:
- 5cd093bde4090526d904fc0b5fe61a000aaf09cf74e70644feebf26ee389ef58
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.