Buckets:
| # GGUF | |
| Định dạng tệp GGUF thường được sử dụng để lưu trữ các mô hình cho suy luận với [GGML](https://github.com/ggerganov/ggml) và hỗ trợ nhiều tùy chọn lượng tử hóa theo khối. Diffusers hỗ trợ nạp các checkpoint đã được lượng tử hóa trước và lưu ở định dạng GGUF thông qua việc nạp `from_single_file` với các lớp Model. Việc nạp checkpoint GGUF thông qua Pipelines hiện chưa được hỗ trợ. | |
| Ví dụ sau sẽ tải mô hình transformer [FLUX.1 DEV](https://huggingface.co/black-forest-labs/FLUX.1-dev) bằng cách sử dụng biến thể lượng tử hóa GGUF Q2_K. | |
| Trước khi bắt đầu, vui lòng cài đặt gguf trong môi trường của bạn | |
| ```shell | |
| pip install -U gguf | |
| ``` | |
| Vì GGUF là định dạng tệp đơn, hãy sử dụng `~FromSingleFileMixin.from_single_file` để tải mô hình và truyền vào [GGUFQuantizationConfig](/docs/diffusers/v0.43.0/vi/api/quantization#diffusers.GGUFQuantizationConfig). | |
| Khi sử dụng checkpoint GGUF, trọng lượng đã lượng tử hóa vẫn được giữ ở `dtype` bộ nhớ thấp (thường là `torch.uint8`) và được khử lượng tử hóa động rồi chuyển đổi sang `compute_dtype` đã cấu hình trong mỗi bước truyền tiến (forward pass) của từng module qua mô hình. `GGUFQuantizationConfig` cho phép bạn thiết lập `compute_dtype`. | |
| Các hàm được sử dụng cho quá trình khử lượng tử hóa động dựa trên công trình xuất sắc của [city96](https://github.com/city96/ComfyUI-GGUF), người đã tạo ra các phiên bản Pytorch của bản triển khai [`numpy`](https://github.com/ggerganov/llama.cpp/blob/master/gguf-py/gguf/quants.py) gốc do [compilade](https://github.com/compilade) thực hiện. | |
| ```python | |
| import torch | |
| from diffusers import FluxPipeline, FluxTransformer2DModel, GGUFQuantizationConfig | |
| ckpt_path = ( | |
| "https://huggingface.co/city96/FLUX.1-dev-gguf/blob/main/flux1-dev-Q2_K.gguf" | |
| ) | |
| transformer = FluxTransformer2DModel.from_single_file( | |
| ckpt_path, | |
| quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16), | |
| dtype=torch.bfloat16, | |
| ) | |
| pipe = FluxPipeline.from_pretrained( | |
| "black-forest-labs/FLUX.1-dev", | |
| transformer=transformer, | |
| dtype=torch.bfloat16, | |
| ) | |
| pipe.enable_model_cpu_offload() | |
| prompt = "A cat holding a sign that says hello world" | |
| image = pipe(prompt, generator=torch.manual_seed(0)).images[0] | |
| image.save("flux-gguf.png") | |
| ``` | |
| ## Sử dụng các nhân CUDA được tối ưu hóa với GGUF | |
| Các kernel CUDA được tối ưu hóa có thể tăng tốc suy luận mô hình lượng tử hóa GGUF lên khoảng 10%. Tính năng này yêu cầu GPU tương thích có `torch.cuda.get_device_capability` lớn hơn 7 và thư viện kernels: | |
| ```shell | |
| pip install -U kernels | |
| ``` | |
| Sau khi cài đặt, đặt `DIFFUSERS_GGUF_CUDA_KERNELS=true` để sử dụng các kernel tối ưu khi có sẵn. Lưu ý rằng các kernel CUDA có thể gây ra một số khác biệt nhỏ về mặt số học so với bản triển khai GGUF gốc, có thể dẫn đến những thay đổi tinh tế về mặt hình ảnh trong các hình ảnh được tạo ra. Để tắt việc sử dụng kernel CUDA, đặt biến môi trường `DIFFUSERS_GGUF_CUDA_KERNELS=false`. | |
| Các kernel GGUF được tải xuống từ kho [`Isotr0py/ggml`](https://huggingface.co/Isotr0py/ggml), nơi nhà phát hành không phải là nhà phát hành kernel đáng tin cậy trên Hub. Việc tải nó sẽ tải xuống và thực thi mã từ Hub, do đó Diffusers yêu cầu bạn phải xác nhận rõ ràng bằng cách đặt `DIFFUSERS_TRUST_REMOTE_KERNELS=true`. Xem [Trusting remote kernels](../optimization/attention_backends#trusting-remote-kernels) để biết thêm chi tiết. | |
| ## Các loại lượng hóa được hỗ trợ | |
| - BF16 | |
| - Q4_0 | |
| - Q4_1 | |
| - Q5_0 | |
| - Q5_1 | |
| - Q8_0 | |
| - Q2_K | |
| - Q3_K | |
| - Q4_K | |
| - Q5_K | |
| - Q6_K | |
| ## Chuyển đổi sang GGUF | |
| Sử dụng Space bên dưới để chuyển đổi checkpoint Diffusers sang định dạng GGUF để suy luận. chạy chuyển đổi: | |
| <iframe src="https://diffusers-internal-dev-diffusers-to-gguf.hf.space" frameborder="0" width="850" height="450" | |
| > | |
| ```py | |
| import torch | |
| from diffusers import FluxPipeline, FluxTransformer2DModel, GGUFQuantizationConfig | |
| ckpt_path = ( | |
| "https://huggingface.co/sayakpaul/different-lora-from-civitai/blob/main/flux_dev_diffusers-q4_0.gguf" | |
| ) | |
| transformer = FluxTransformer2DModel.from_single_file( | |
| ckpt_path, | |
| quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16), | |
| config="black-forest-labs/FLUX.1-dev", | |
| subfolder="transformer", | |
| dtype=torch.bfloat16, | |
| ) | |
| pipe = FluxPipeline.from_pretrained( | |
| "black-forest-labs/FLUX.1-dev", | |
| transformer=transformer, | |
| dtype=torch.bfloat16, | |
| ) | |
| pipe.enable_model_cpu_offload() | |
| prompt = "A cat holding a sign that says hello world" | |
| image = pipe(prompt, generator=torch.manual_seed(0)).images[0] | |
| image.save("flux-gguf.png") | |
| ``` | |
| Khi sử dụng checkpoint GGUF ở định dạng Diffusers, bạn bắt buộc phải cung cấp đường dẫn `config` của model. Nếu config của model nằm trong một `subfolder`, bạn cũng cần chỉ định đường dẫn đó. | |
Xet Storage Details
- Size:
- 5.36 kB
- Xet hash:
- c6e863c4638d7a22624ffa0be4b35d732b6ed9332298803186c94fac451d493e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.