Transformers documentation
Quark
Quark
Quark là bộ công cụ lượng tử hóa học sâu được thiết kế để không phụ thuộc vào các kiểu dữ liệu, thuật toán và phần cứng cụ thể. Các chiến lược tiền xử lý, thuật toán và kiểu dữ liệu khác nhau có thể được kết hợp trong Quark.
Hỗ trợ PyTorch được tích hợp thông qua 🤗 Transformers chủ yếu nhắm đến CPU và GPU của AMD, và chủ yếu được thiết kế để sử dụng cho mục đích đánh giá. Ví dụ, bạn có thể sử dụng lm-evaluation-harness với backend 🤗 Transformers để đánh giá liền mạch một loạt các mô hình đã được lượng tử hóa thông qua Quark.
Người dùng quan tâm đến Quark có thể tham khảo tài liệu của nó để bắt đầu lượng tử hóa mô hình và sử dụng chúng trong các thư viện mã nguồn mở được hỗ trợ!
Mặc dù Quark có định dạng checkpoint / cấu hình riêng, thư viện này cũng hỗ trợ tạo ra các mô hình với bố cục chuỗi hóa tương thích với các triển khai lượng tử hóa/thời gian chạy khác (AutoAWQ, fp8 native trong 🤗 Transformers).
Để có thể tải các mô hình lượng tử hóa Quark trong Transformers, trước tiên cần cài đặt thư viện:
pip install amd-quark
Ma trận hỗ trợ
Các mô hình được lượng tử hóa thông qua Quark hỗ trợ một phạm vi lớn các tính năng, có thể kết hợp với nhau. Tất cả các mô hình đã lượng tử hóa, bất kể cấu hình của chúng, đều có thể được nạp lại một cách liền mạch thông qua PretrainedModel.from_pretrained.
Bảng dưới đây liệt kê một số tính năng được hỗ trợ bởi Quark:
| Tính năng | Tập con được hỗ trợ trong Quark | |
|---|---|---|
| Các kiểu dữ liệu | int8, int4, int2, bfloat16, float16, fp8_e5m2, fp8_e4m3, fp6_e3m2, fp6_e2m3, fp4, OCP MX, MX6, MX9, bfp16 | |
| Biến đổi trước khi lượng tử hóa | SmoothQuant, QuaRot, SpinQuant, AWQ | |
| Thuật toán lượng tử hóa | GPTQ | |
| Các toán tử được hỗ trợ | nn.Linear, nn.Conv2d, nn.ConvTranspose2d, nn.Embedding, nn.EmbeddingBag | |
| Độ hạt | theo tensor, theo kênh, theo khối, theo lớp, kiểu theo lớp | |
| Bộ đệm KV | fp8 | |
| Hiệu chuẩn kích hoạt | MinMax / Phân vị / MSE | |
| Chiến lược lượng tử hóa | chỉ trọng số, tĩnh, động, có hoặc không có lượng tử hóa đầu ra |
Các mô hình trên Hugging Face Hub
Các mô hình công khai sử dụng định dạng native serialization của Quark có thể được tìm thấy tại https://huggingface.co/models?other=quark.
Mặc dù Quark cũng hỗ trợ các mô hình sử dụng quant_method="fp8" và các mô hình sử dụng quant_method="awq", nhưng Transformers thường tải các mô hình này thông qua AutoAWQ hoặc sử dụng hỗ trợ fp8 bản địa trong 🤗 Transformers.
Sử dụng các mô hình Quark trong Transformers
Dưới đây là một ví dụ về cách tải một mô hình Quark trong Transformers:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "EmbeddedLLM/Llama-3.1-8B-Instruct-w_fp8_per_channel_sym"
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
print(model.model.layers[0].self_attn.q_proj)
# QParamsLinear(
# (weight_quantizer): ScaledRealQuantizer()
# (input_quantizer): ScaledRealQuantizer()
# (output_quantizer): ScaledRealQuantizer()
# )
tokenizer = AutoTokenizer.from_pretrained(model_id)
inp = tokenizer("Where is a good place to cycle around Tokyo?", return_tensors="pt")
inp = inp.to(model.device)
res = model.generate(**inp, min_new_tokens=50, max_new_tokens=100)
print(tokenizer.batch_decode(res)[0])
# <|begin_of_text|>Where is a good place to cycle around Tokyo? There are several places in Tokyo that are suitable for cycling, depending on your skill level and interests. Here are a few suggestions:
# 1. Yoyogi Park: This park is a popular spot for cycling and has a wide, flat path that's perfect for beginners. You can also visit the Meiji Shrine, a famous Shinto shrine located in the park.
# 2. Imperial Palace East Garden: This beautiful garden has a large, flat path that's perfect for cycling. You can also visit the