chen459664's picture
Add files using upload-large-folder tool
64ddf8d verified
Raw
History Blame Contribute Delete
1.63 kB
import numpy as np
import pandas as pd
import torch
from hqq.core.quantize import Quantizer as hQuant
from lm_quant_toolkit.utils.hub import get_hf_model_storge_base_dir
from lm_quant_toolkit.utils.safetensors import get_tensor
def quant_hqq(tensor, nbits, group_size=64, lp_norm=0.7, optimize=True):
opt_params = {
"lp_norm": lp_norm,
"iters": 100,
"early_stop": False,
}
wq, meta = hQuant.quantize(
tensor, nbits=nbits, group_size=group_size, optimize=optimize, **opt_params
)
return hQuant.dequantize(wq, meta)
if __name__ == "__main__":
model_id = "meta-llama/Llama-2-7b-hf"
base_dir = get_hf_model_storge_base_dir(model_id)
layer = 31
module = "self_attn.o_proj"
matrix_name = f"model.layers.{layer}.{module}.weight"
w = get_tensor(matrix_name, base_dir)
dick = []
for lp_norm in np.linspace(0.1, 0.9, 9):
for b in [3, 4, 8]:
for g in [32, 64, 128]:
wq_hqq = quant_hqq(w, nbits=b, lp_norm=lp_norm, group_size=g)
norm_hqq = torch.norm(w - wq_hqq)
dick.append(
{
"model": model_id.split("/")[1],
"layer": layer,
"module": module,
"lp_norm": lp_norm,
"b": b,
"g": g,
"fnorm": norm_hqq.item(),
}
)
print(f"FNorm HQQ(lp_norm={lp_norm:.2f}): {norm_hqq}")
df = pd.DataFrame(dick)
df.to_csv("lp_norm_tuning.csv", index=False)