使用 FP8 量化 Mixtral-8x7B-Instruct-v0.1 模型
此目录包含使用静态每张量 FP8 量化方案量化 LLM 的示例脚本。
安装
要开始,请执行以下命令安装必要的依赖项
快速入门
提供的示例脚本演示了一个端到端的量化算法应用过程
创建量化的 MoE 模型
本示例利用 llm-compressor 和 compressed-tensors 来创建 FP8 量化的 Mixtral-8x7B-Instruct-v0.1 模型。该模型使用 ultrachat_200k 数据集进行校准和训练。
您可以按照下面的详细步骤进行操作,或者直接运行示例脚本:
步骤 1:选择模型、数据集和配方
在此步骤中,您将选择一个基础模型用于量化、一个用于校准的数据集以及一个量化配方。
- 模型:可以从本地目录引用,也可以从 Hugging Face Hub 检索。
- 数据集:也可以来自本地目录或 Hugging Face Hub。
- 配方:这些是 YAML 文件或 Python 修改器对象,它们描述了模型在训练期间或训练后应如何进行优化。在此示例中,我们使用一个
QuantizationModifier对象,并将方案设置为FP8。
from llmcompressor.modifiers.quantization import QuantizationModifier
recipe = QuantizationModifier(scheme="FP8", targets="Linear", ignore=["lm_head", "re:.*block_sparse_moe.gate"])
注意:.*block_sparse_moe.gate 层量化效果不佳,因此将被忽略!
步骤 2:使用 Oneshot 进行量化
oneshot 方法将选定的配方应用于您的模型和数据集,而无需进行任何微调。模型将被稀疏化并保存到 Mixtral-8x7B-Instruct-v0.1-FP8。
from llmcompressor import oneshot
output_dir = "Mixtral-8x7B-Instruct-v0.1-FP8"
oneshot(
model=model,
dataset=dataset,
recipe=recipe,
save_compressed=True,
output_dir=output_dir,
max_seq_length=2048,
num_calibration_samples=512,
)
自定义量化
注意:截至目前 (vllm==0.6.1),vLLM 只支持每张量量化。
该存储库通过配方支持多种量化技术。支持的策略包括 tensor、group 和 channel 量化。
在上例中,量化是通过 FP8 方案指定的。对于其他预设方案,请参阅 compressed-tensors 库中的 量化方案。
也可以使用 config_groups 指定自定义方案。
# Example of defining a custom quantization scheme
from llmcompressor.modifiers.quantization.gptq import GPTQModifier
config_groups = {
"group_0": {
"targets": ["Linear"],
"input_activations": None,
"output_activations": None,
"weights": {
"num_bits": 8,
"type": "int",
"symmetric": True,
"strategy": "group",
"group_size": 128,
}
}
}
recipe = GPTQModifier(config_groups=config_groups)