first commit
This commit is contained in:
45
dev/functions/processor.py
Normal file
45
dev/functions/processor.py
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
def quant_post_process(artifacts, version, model_type):
|
||||
quant_dtype = artifacts.quant_type
|
||||
if artifacts.extra is not None:
|
||||
i8scales = artifacts.extra.get("i8scales")
|
||||
i8zeros = artifacts.extra.get("i8zeros")
|
||||
else:
|
||||
i8scales = None
|
||||
i8zeros = None
|
||||
|
||||
for idx, name in enumerate(artifacts.names):
|
||||
weight = artifacts.qweight[idx] # [#experts, m, n]
|
||||
scale = artifacts.scale[idx] # [#experts, m, 1]
|
||||
i8scale = None if i8scales is None else i8scales[idx]
|
||||
i8zero = None if i8zeros is None else i8zeros[idx]
|
||||
|
||||
num_experts = weight.shape[0]
|
||||
|
||||
if "expert" in name and "shared" not in name:
|
||||
scale = scale.contiguous().view(num_experts, 1, -1) if version == 2 else scale.contiguous()
|
||||
if model_type == "qwen3_vl_moe":
|
||||
weight = weight.transpose(-2, -1).contiguous()
|
||||
if quant_dtype == "int4":
|
||||
scale = scale.transpose(-2, -1).contiguous()
|
||||
elif quant_dtype == "int8":
|
||||
scale = scale.transpose(-2, -1).contiguous()
|
||||
|
||||
if quant_dtype == "int8":
|
||||
scale = scale.transpose(-2, -1).contiguous()
|
||||
|
||||
if i8scale is not None:
|
||||
i8scale.squeeze_(0)
|
||||
assert i8scale.dim() == 2
|
||||
|
||||
if i8zero is not None:
|
||||
i8zero.squeeze_(0)
|
||||
assert i8zero.dim() == 2
|
||||
|
||||
if num_experts == 1:
|
||||
weight = weight.squeeze(0)
|
||||
scale = scale.squeeze(0)
|
||||
|
||||
# TODO: i8scale, i8zero
|
||||
|
||||
yield name, weight, scale, i8scale, i8zero
|
||||
Reference in New Issue
Block a user