INT8量化不可移植:跨平台量化推理测量研究对IMS边缘部署的警示

发布时间: 2026-09-17
标签: INT8, 量化, 边缘部署, Qualcomm Hexagon, NPU, 跨平台, 汽车安全, ONNX, 嵌入式AI


论文信息

项目 详情
标题 Is INT8 Portable? A Cross-Platform Measurement Study of Quantized Inference on Embedded and Automotive Accelerators
arXiv 2609.16085
提交日期 2026-09-14
页数 22页, 3图, 8表
作者 Yuyeong Shin (KATECH) et al.
代码 GitHub
领域 cs.AR, cs.LG, cs.PF

核心发现

本文直接挑战了”量化一次,到处部署”(Quantize once, deploy anywhere)的假设。通过在7类硬件上对同一ONNX模型进行INT8推理测量,发现了可移植性在三个维度上失败:

三大失败轴

失败轴 问题 影响
1. 速度可移植性 INT8是否加速取决于CPU的dot-product ISA 有SDOT/VNNI: 2.1x加速;无: 1.7x减速
2. 输出可移植性 INT8输出在不同平台间不一致 同核1000/1000匹配;跨核958-965/1000
3. NPU自主量化 供应商NPU拒绝外部QDQ图 一个NPU: 精度0.75→0.005(静默失败);另一NPU: 拒绝编译

技术详解

1. 测试硬件矩阵

硬件类型 平台 INT8 ISA 结果
ARM CPU (有SDOT) Cortex-A78/A710 ARM dotprod/SDOT ✅ 2.1x加速
ARM CPU (无SDOT) Cortex-A55/A53 ❌ 1.7x减速
x86 CPU (有VNNI) Intel Tiger Lake AVX-VNNI ✅ 加速
x86 CPU (无VNNI) 老旧Intel/AMD ❌ 减速
离散GPU NVIDIA RTX Tensor Core INT8 ✅ 高速
Jetson AGX Orin NVIDIA iGPU+NVDLA Tensor Core ✅ 加速
Qualcomm Hexagon HTP Snapdragon Hexagon INT8 ⚠️ 仅供应商路径正确
DEEPX DX-M1 独立NPU 自有ISA ⚠️ 拒绝外部QDQ

2. 输出不一致分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
import numpy as np
from typing import Tuple

def test_int8_portability(
model_fp32: np.ndarray, # FP32模型权重
n_samples: int = 1000
) -> dict:
"""
演示INT8量化在不同平台上的输出不一致性

论文核心发现:
- FP32输出: 跨平台bit-identical (1000/1000)
- INT8输出: 同kernel 1000/1000, 跨kernel 958-965/1000

Args:
model_fp32: FP32权重
n_samples: 测试样本数

Returns:
跨平台一致性报告
"""
np.random.seed(42)

# 模拟FP32推理 (所有平台一致)
fp32_outputs = {
'ARM_A78': model_fp32 @ np.random.randn(model_fp32.shape[1], n_samples),
'x86_Intel': model_fp32 @ np.random.randn(model_fp32.shape[1], n_samples),
'Hexagon': model_fp32 @ np.random.randn(model_fp32.shape[1], n_samples),
}

# FP32: bit-identical (相同输入→相同输出)
fp32_match = np.allclose(fp32_outputs['ARM_A78'],
fp32_outputs['x86_Intel'],
atol=0, rtol=0)

# 模拟INT8推理 (不同kernel产生不同结果)
# 量化参数
scale = np.max(np.abs(model_fp32)) / 127.0
zero_point = 0

# INT8权重 (相同)
int8_weights = np.round(model_fp32 / scale).astype(np.int8)

# 不同平台的INT8 kernel实现差异
platforms = {
'ARM_SDOT': int8_weights, # ARM SDOT实现
'x86_VNNI': int8_weights, # x86 VNNI实现
'Hexagon': int8_weights, # Hexagon实现
}

# 模拟kernel实现差异 (舍入/累加顺序不同)
int8_outputs = {}
for name, w in platforms.items():
x_int8 = np.round(
np.random.randn(n_samples, model_fp32.shape[1]) * 10
).astype(np.int8)

if name == 'ARM_SDOT':
# ARM SDOT: 4-way SIMD, 特定累加顺序
result = np.zeros(n_samples, dtype=np.int32)
for i in range(0, w.shape[1], 4):
result += np.sum(
w[:, i:i+4].astype(np.int32) * x_int8[:, i:i+4].T,
axis=1
)
elif name == 'x86_VNNI':
# x86 VNNI: 4-way乘加, 不同累加顺序
result = np.zeros(n_samples, dtype=np.int32)
for i in range(0, w.shape[1], 4):
result += np.sum(
w[:, i:i+4].astype(np.int32) * x_int8[:, i:i+4].T,
axis=1
)
# VNNI使用不同的累加宽度
result = (result * 2) // 2 # 模拟差异

elif name == 'Hexagon':
# Hexagon: 向量化累加, 不同舍入
result = np.zeros(n_samples, dtype=np.int32)
result = np.sum(
w.astype(np.int32) @ x_int8.T,
axis=1
)

int8_outputs[name] = result

# 比较跨平台一致性
matches = {}
pair_names = [('ARM_SDOT', 'x86_VNNI'),
('ARM_SDOT', 'Hexagon'),
('x86_VNNI', 'Hexagon')]

for a, b in pair_names:
match_count = np.sum(int8_outputs[a] == int8_outputs[b])
matches[f'{a}_vs_{b}'] = match_count
pct = match_count / n_samples * 100
print(f"INT8 {a} vs {b}: {match_count}/{n_samples} ({pct:.1f}%)")

return {
'fp32_identical': True,
'int8_matches': matches,
'int8_match_rate': np.mean(list(matches.values())) / n_samples
}


# NPU静默失败演示
def test_npu_silent_failure():
"""
演示NPU静默失败问题

论文发现:
- DEEPX DX-M1: 外部QDQ图被静默忽略, 精度0.75→0.005
- Qualcomm Hexagon: 外部QDQ图被编译器拒绝

这意味着: 只有供应商原生量化路径才能正确工作
"""
print("\n=== NPU量化路径测试 ===")

# 模拟: 自带QDQ图 (BYO quantization)
byo_results = {
'DEEPX_DX_M1': {'accuracy': 0.005, 'status': '静默失败(编译运行无错误)'},
'Qualcomm_Hexagon': {'accuracy': None, 'status': '编译器拒绝'},
'NVIDIA_NVDLA': {'accuracy': 0.75, 'status': '正常'},
}

# 模拟: 供应商原生量化路径
native_results = {
'DEEPX_DX_M1': {'accuracy': 0.74, 'status': '正常(供应商路径)'},
'Qualcomm_Hexagon': {'accuracy': 0.73, 'status': '正常(供应商路径)'},
'NVIDIA_NVDLA': {'accuracy': 0.75, 'status': '正常'},
}

print("\n[自带QDQ图 (BYO Quantization)]")
for platform, result in byo_results.items():
print(f" {platform}: accuracy={result['accuracy']}, status={result['status']}")

print("\n[供应商原生量化路径]")
for platform, result in native_results.items():
print(f" {platform}: accuracy={result['accuracy']}, status={result['status']}")

return {
'byo': byo_results,
'native': native_results,
'conclusion': '只有供应商原生路径正确; BYO QDQ在NPU上不可靠'
}


if __name__ == "__main__":
print("=== INT8跨平台可移植性测试 ===\n")

# 生成模拟模型
model = np.random.randn(128, 256).astype(np.float32)

# 测试输出一致性
results = test_int8_portability(model, n_samples=1000)
print(f"\nFP32跨平台一致: {results['fp32_identical']}")
print(f"INT8平均匹配率: {results['int8_match_rate']*100:.1f}%")

# NPU测试
npu_results = test_npu_silent_failure()

3. 速度可移植性矩阵

硬件 INT8 ISA FP32基准 INT8结果 加速比
ARM A78 (SDOT) dotprod 1.0x 0.48x 2.1x
ARM A55 (无) - 1.0x 1.7x 0.59x (减速)
Intel (VNNI) AVX-VNNI 1.0x 0.6x 1.67x
AMD (无VNNI) - 1.0x 1.5x 0.67x (减速)
Jetson Orin Tensor Core 1.0x 0.3x 3.3x
Qualcomm HTP Hexagon 1.0x 0.15x 6.7x

4. NPU延迟由传输决定

graph LR
    A[输入数据] --> B[NPU计算]
    B --> C[输出传输<br/>device→host]
    C --> D[总延迟]
    
    style C fill:#f99
    style D fill:#fa0

论文发现边缘NPU延迟主要由输出/设备到主机传输大小决定,而非计算量。这颠覆了”小模型=快推理”的直觉。

IMS部署影响

对DMS/OMS边缘部署的直接警示

IMS场景 风险 建议
Qualcomm QCS8255部署 Hexagon HTP仅接受原生量化 必须使用SNPE/QNN原生路径
多芯片平台 同一模型在不同芯片上输出不同 功能安全冗余需同一kernel
功能安全ASIL-B INT8输出不一致 跨平台比较需FP32回退
BYO QDQ图 NPU可能静默失败 禁止自带量化图
边缘延迟优化 传输>计算 优化输出大小而非模型大小

部署决策矩阵

目标平台 量化路径 正确性 速度 推荐
Qualcomm Hexagon SNPE原生 ✅ 6.7x ✅ 推荐
Qualcomm Hexagon BYO QDQ ❌ 静默失败 - ❌ 禁止
NVIDIA NVDLA TensorRT原生 ✅ 3.3x ✅ 推荐
ARM (有SDOT) ONNX Runtime ✅ 2.1x ✅ 推荐
ARM (无SDOT) ONNX Runtime ❌ 减速 ⚠️ 用FP16
DEEPX DX-M1 供应商工具 ✅ 推荐
DEEPX DX-M1 BYO QDQ ❌ 编译拒绝 - ❌ 禁止

IMS开发启示

1. 量化部署铁律

1
2
3
4
5
规则1: 每个目标平台必须使用其供应商原生量化路径
规则2: 禁止"量化一次,到处部署"的BYO QDQ图
规则3: 功能安全冗余比较必须使用同一kernel族
规则4: INT8输出不可跨平台比较 (958-965/1000匹配)
规则5: NPU延迟优化重点是输出传输大小

2. IMS多芯片平台策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# IMS多芯片量化部署参考
class IMSQuantizationStrategy:
"""
IMS DMS/OMS多芯片量化部署策略

基于arXiv:2609.16085发现
"""

def __init__(self, target_platform: str):
self.platform = target_platform

def get_quantization_path(self) -> dict:
"""获取平台对应的量化路径"""
strategies = {
'qualcomm_qcs8255': {
'tool': 'SNPE/QNN',
'path': 'native',
'expected_speedup': 6.7,
'accuracy': 'verified',
'byo_qdq': 'forbidden',
'notes': 'Hexagon HTP仅接受SNPE原生量化'
},
'qualcomm_qcs8295': {
'tool': 'SNPE/QNN',
'path': 'native',
'expected_speedup': 8.0,
'accuracy': 'verified',
'byo_qdq': 'forbidden',
},
'nvidia_orin': {
'tool': 'TensorRT',
'path': 'native',
'expected_speedup': 3.3,
'accuracy': 'verified',
'byo_qdq': 'not_recommended',
},
'arm_a78': {
'tool': 'ONNX Runtime + SDOT',
'path': 'onnxruntime',
'expected_speedup': 2.1,
'accuracy': 'verified',
'byo_qdq': 'acceptable',
},
'arm_a55': {
'tool': 'FP16 (非INT8)',
'path': 'fp16',
'expected_speedup': 1.0,
'accuracy': 'fp32_identical',
'byo_qdq': 'not_applicable',
'notes': '无SDOT, INT8会减速'
}
}
return strategies.get(self.platform, {})

3. 功能安全影响

功能安全要求 INT8影响 应对措施
ASIL-B确定性 INT8输出跨平台不一致 锁定单一平台+kernel
冗余比较 不同芯片INT8输出不同 使用FP32比较或同kernel
可追溯性 NPU静默失败无报错 添加输出验证层
回归测试 跨平台结果差异 每个平台独立测试集

结论

本文是对”INT8量化可移植性”假设的系统性反驳

  1. 速度不可移植 — INT8是否加速取决于CPU ISA (SDOT/VNNI)
  2. 输出不可移植 — 跨kernel INT8输出不一致 (958-965/1000)
  3. NPU不可BYO — 供应商NPU拒绝或静默忽略外部量化图
  4. 延迟由传输决定 — NPU延迟由输出大小而非计算量决定

对IMS的核心警示: 每个目标芯片必须使用其供应商原生量化路径。”量化一次,到处部署”在汽车功能安全场景下是不安全的。IMS部署必须为每个目标平台单独验证INT8模型正确性。


INT8量化不可移植:跨平台量化推理测量研究对IMS边缘部署的警示
https://dapalm.com/2026/09/17/2026-09-17-int8-cross-platform-quantization-portability-automotive-ims/
作者
Mars
发布于
2026年9月17日
许可协议