mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-05 08:37:06 +08:00
[Bug Fix] VL Support w4a8/w4afp8 (#3686)
Some checks failed
CE Compile Job / ce_job_pre_check (push) Has been cancelled
CE Compile Job / print_ce_job_pre_check_outputs (push) Has been cancelled
CE Compile Job / FD-Clone-Linux (push) Has been cancelled
CE Compile Job / Show Code Archive Output (push) Has been cancelled
CE Compile Job / BUILD_SM8090 (push) Has been cancelled
CE Compile Job / BUILD_SM8689 (push) Has been cancelled
CE Compile Job / CE_UPLOAD (push) Has been cancelled
Deploy GitHub Pages / deploy (push) Has been cancelled
Publish Job / publish_pre_check (push) Has been cancelled
Publish Job / print_publish_pre_check_outputs (push) Has been cancelled
Publish Job / FD-Clone-Linux (push) Has been cancelled
Publish Job / Show Code Archive Output (push) Has been cancelled
Publish Job / BUILD_SM8090 (push) Has been cancelled
Publish Job / BUILD_SM8689 (push) Has been cancelled
Publish Job / PADDLE_PYPI_UPLOAD_8090 (push) Has been cancelled
Publish Job / PADDLE_PYPI_UPLOAD_8689 (push) Has been cancelled
Publish Job / Run FastDeploy Unit Tests and Coverage (push) Has been cancelled
Publish Job / Run FastDeploy LogProb Tests (push) Has been cancelled
Publish Job / Extracted partial CE model tasks to run in CI. (push) Has been cancelled
Publish Job / Run Base Tests (push) Has been cancelled
Publish Job / Run Accuracy Tests (push) Has been cancelled
Some checks failed
CE Compile Job / ce_job_pre_check (push) Has been cancelled
CE Compile Job / print_ce_job_pre_check_outputs (push) Has been cancelled
CE Compile Job / FD-Clone-Linux (push) Has been cancelled
CE Compile Job / Show Code Archive Output (push) Has been cancelled
CE Compile Job / BUILD_SM8090 (push) Has been cancelled
CE Compile Job / BUILD_SM8689 (push) Has been cancelled
CE Compile Job / CE_UPLOAD (push) Has been cancelled
Deploy GitHub Pages / deploy (push) Has been cancelled
Publish Job / publish_pre_check (push) Has been cancelled
Publish Job / print_publish_pre_check_outputs (push) Has been cancelled
Publish Job / FD-Clone-Linux (push) Has been cancelled
Publish Job / Show Code Archive Output (push) Has been cancelled
Publish Job / BUILD_SM8090 (push) Has been cancelled
Publish Job / BUILD_SM8689 (push) Has been cancelled
Publish Job / PADDLE_PYPI_UPLOAD_8090 (push) Has been cancelled
Publish Job / PADDLE_PYPI_UPLOAD_8689 (push) Has been cancelled
Publish Job / Run FastDeploy Unit Tests and Coverage (push) Has been cancelled
Publish Job / Run FastDeploy LogProb Tests (push) Has been cancelled
Publish Job / Extracted partial CE model tasks to run in CI. (push) Has been cancelled
Publish Job / Run Base Tests (push) Has been cancelled
Publish Job / Run Accuracy Tests (push) Has been cancelled
This commit is contained in:
@@ -87,7 +87,10 @@ class Ernie4_5_VLMoeBlock(nn.Layer):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
moe_quant_type = ""
|
moe_quant_type = ""
|
||||||
if hasattr(fd_config.quant_config, "moe_quant_type"):
|
if hasattr(fd_config.quant_config, "moe_quant_type"):
|
||||||
moe_quant_type = fd_config.quant_config.moe_quant_type
|
if moe_tag == "Image" and hasattr(fd_config.quant_config, "image_moe_quant_type"):
|
||||||
|
moe_quant_type = fd_config.quant_config.image_moe_quant_type
|
||||||
|
else:
|
||||||
|
moe_quant_type = fd_config.quant_config.moe_quant_type
|
||||||
|
|
||||||
if moe_quant_type == "tensor_wise_fp8" or (
|
if moe_quant_type == "tensor_wise_fp8" or (
|
||||||
moe_quant_type == "block_wise_fp8" and fd_config.model_config.is_quantized
|
moe_quant_type == "block_wise_fp8" and fd_config.model_config.is_quantized
|
||||||
@@ -101,6 +104,17 @@ class Ernie4_5_VLMoeBlock(nn.Layer):
|
|||||||
"up_gate_proj_expert_in_scale_key": f"{prefix}.experts.{{}}.up_gate_proj.activation_scale",
|
"up_gate_proj_expert_in_scale_key": f"{prefix}.experts.{{}}.up_gate_proj.activation_scale",
|
||||||
"down_proj_expert_in_scale_key": f"{prefix}.experts.{{}}.down_proj.activation_scale",
|
"down_proj_expert_in_scale_key": f"{prefix}.experts.{{}}.down_proj.activation_scale",
|
||||||
}
|
}
|
||||||
|
elif moe_quant_type == "w4a8" or moe_quant_type == "w4afp8":
|
||||||
|
weight_key_map = {
|
||||||
|
"gate_weight_key": f"{prefix}.gate.weight",
|
||||||
|
"gate_correction_bias_key": f"{prefix}.moe_statics.e_score_correction_bias",
|
||||||
|
"up_gate_proj_expert_weight_key": f"{prefix}.experts.{{}}.up_gate_proj.quant_weight",
|
||||||
|
"down_proj_expert_weight_key": f"{prefix}.experts.{{}}.down_proj.quant_weight",
|
||||||
|
"up_gate_proj_expert_weight_scale_key": f"{prefix}.experts.{{}}.up_gate_proj.weight_scale",
|
||||||
|
"down_proj_expert_weight_scale_key": f"{prefix}.experts.{{}}.down_proj.weight_scale",
|
||||||
|
"up_gate_proj_expert_in_scale_key": f"{prefix}.experts.{{}}.up_gate_proj.activation_scale",
|
||||||
|
"down_proj_expert_in_scale_key": f"{prefix}.experts.{{}}.down_proj.activation_scale",
|
||||||
|
}
|
||||||
else:
|
else:
|
||||||
# wint4/wint8/bfloat16
|
# wint4/wint8/bfloat16
|
||||||
weight_key_map = {
|
weight_key_map = {
|
||||||
@@ -778,6 +792,52 @@ class Ernie4_5_VLPretrainedModel(PretrainedModel):
|
|||||||
),
|
),
|
||||||
WeightMeta(".embed_tokens.weight", False),
|
WeightMeta(".embed_tokens.weight", False),
|
||||||
WeightMeta("lm_head.weight", True),
|
WeightMeta("lm_head.weight", True),
|
||||||
|
# quant tensorwise
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.LAYER_ID}}}.self_attn.qkv_proj.quant_weight",
|
||||||
|
True,
|
||||||
|
tsm.GQA,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.LAYER_ID}}}.self_attn.o_proj.quant_weight",
|
||||||
|
False,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.FFN_LAYER_ID}}}.mlp.up_gate_proj.quant_weight",
|
||||||
|
True,
|
||||||
|
tsm.PairFused,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.FFN_LAYER_ID}}}.mlp.down_proj.quant_weight",
|
||||||
|
False,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.MOE_LAYER_ID}}}.mlp.experts.{{{layerid.TEXT_EXPERT_ID}}}.up_gate_proj.quant_weight",
|
||||||
|
True,
|
||||||
|
tsm.PairFused,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.MOE_LAYER_ID}}}.mlp.experts.{{{layerid.TEXT_EXPERT_ID}}}.down_proj.quant_weight",
|
||||||
|
False,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.MOE_LAYER_ID}}}.mlp.experts.{{{layerid.IMG_EXPERT_ID}}}.up_gate_proj.quant_weight",
|
||||||
|
True,
|
||||||
|
tsm.PairFused,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.MOE_LAYER_ID}}}.mlp.experts.{{{layerid.IMG_EXPERT_ID}}}.down_proj.quant_weight",
|
||||||
|
False,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.MOE_LAYER_ID}}}.mlp.shared_experts.up_gate_proj.quant_weight",
|
||||||
|
True,
|
||||||
|
tsm.PairFused,
|
||||||
|
),
|
||||||
|
WeightMeta(
|
||||||
|
f".layers.{{{layerid.MOE_LAYER_ID}}}.mlp.shared_experts.down_proj.quant_weight",
|
||||||
|
False,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
weight_vison = [
|
weight_vison = [
|
||||||
|
@@ -662,7 +662,9 @@ def initialize_fd_config(args, ranks: int = 1, local_rank: int = 0) -> FDConfig:
|
|||||||
quantization_config = model_config.quantization_config
|
quantization_config = model_config.quantization_config
|
||||||
if not model_config.is_quantized:
|
if not model_config.is_quantized:
|
||||||
if quantization_config is not None:
|
if quantization_config is not None:
|
||||||
if "kv_cache_quant_type" not in quantization_config:
|
if "is_quantized" in quantization_config:
|
||||||
|
model_config.is_quantized = quantization_config["is_quantized"]
|
||||||
|
elif "kv_cache_quant_type" not in quantization_config:
|
||||||
model_config.is_quantized = True
|
model_config.is_quantized = True
|
||||||
|
|
||||||
quant_config_name = None
|
quant_config_name = None
|
||||||
|
Reference in New Issue
Block a user