Transformers documentation

Quark

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.23.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Quark

Quark est un kit d’outils de quantification pour l’apprentissage profond, conçu pour être indépendant des types de données, des algorithmes et du matériel spécifiques. Différentes stratégies de prétraitement, algorithmes et types de données peuvent être combinés dans Quark.

La prise en charge de PyTorch intégrée via 🤗 Transformers cible principalement les CPU et GPU AMD, et est destinée avant tout à des fins d'évaluation. Par exemple, il est possible d'utiliser lm-evaluation-harness avec le backend 🤗 Transformers pour évaluer de manière transparente une large gamme de modèles quantifiés via Quark.

Les utilisateurs intéressés par Quark peuvent consulter sa documentation pour commencer à quantifier des modèles et les utiliser dans les bibliothèques open source prises en charge !

Bien que Quark possède son propre format de point de contrôle / de configuration, la bibliothèque prend également en charge la production de modèles avec une disposition de sérialisation compatible avec d'autres implémentations de quantification/temps d'exécution (AutoAWQ, fp8 natif dans 🤗 Transformers).

Pour pouvoir charger des modèles quantifiés Quark dans Transformers, il faut d’abord installer la bibliothèque :

pip install amd-quark

Matrice de prise en charge

Les modèles quantifiés via Quark prennent en charge un large éventail de fonctionnalités, qui peuvent être combinées entre elles. Tous les modèles quantifiés, quelle que soit leur configuration, peuvent être rechargés sans accroc via PretrainedModel.from_pretrained.

Le tableau ci-dessous présente quelques fonctionnalités prises en charge par Quark :

FonctionnalitéSous-ensemble pris en charge dans Quark
Types de donnéesint8, int4, int2, bfloat16, float16, fp8_e5m2, fp8_e4m3, fp6_e3m2, fp6_e2m3, fp4, OCP MX, MX6, MX9, bfp16
Transformation de pré-quantificationSmoothQuant, QuaRot, SpinQuant, AWQ
Algorithme de quantificationGPTQ
Opérateurs pris en chargenn.Linear, nn.Conv2d, nn.ConvTranspose2d, nn.Embedding, nn.EmbeddingBag
Granularitépar tenseur, par canal, par bloc, par couche, type par couche
Cache KVfp8
Calibration des activationsMinMax / Percentile / MSE
Stratégie de quantificationweight-only, statique, dynamique, avec ou sans quantification de la sortie

Modèles sur Hugging Face Hub

Les modèles publics utilisant la sérialisation native de Quark sont disponibles à l’adresse https://huggingface.co/models?other=quark.

Bien que Quark prenne également en charge les modèles utilisant quant_method="fp8" et les modèles utilisant quant_method="awq", Transformers charge ces modèles plutôt via AutoAWQ ou en utilisant le support natif de fp8 dans 🤗 Transformers.

Utilisation des modèles Quark dans Transformers

Voici un exemple de la manière de charger un modèle Quark dans 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
Update on GitHub