إنتقل إلى المحتوى الرئيسي

الفصل 2: التكميم (INT8، INT4)

لماذا نقوم بالتكميم؟​

تقليل الذاكرة وزيادة السرعة باستخدام دقة أقل:

الدقةالبتاتالذاكرةالجودة
FP3232100%100%
FP161650%~100%
INT8825%~99%
INT4412.5%~95-98%

GPTQ​

التكميم بعد التدريب المحسن لنماذج على نمط GPT:

from transformers import AutoModelForCausalLM
from auto_gptq import AutoGPTQForCausalLM

model = AutoGPTQForCausalLM.from_quantized(
"TheBloke/Llama-2-7B-GPTQ",
device="cuda:0"
)

AWQ (تكميم الأوزان المدرك للتفعيل)​

يحافظ على الأوزان المهمة:

from awq import AutoAWQForCausalLM

model = AutoAWQForCausalLM.from_quantized(
"TheBloke/Llama-2-7B-AWQ",
fuse_layers=True
)

bitsandbytes​

التكميم أثناء التشغيل:

from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b",
quantization_config=bnb_config
)