[ PROMPT_NODE_22798 ]
Optimization Awq 故障排查
[ SKILL_DOCUMENTATION ]
# AWQ 故障排除指南
## 安装问题
### CUDA 版本不匹配
**错误**:`RuntimeError: CUDA error: no kernel image is available for execution`
**修复**:安装匹配的 CUDA 版本:
bash
# 检查你的 CUDA 版本
nvcc --version
# 安装匹配的 autoawq
pip install autoawq --extra-index-url https://download.pytorch.org/whl/cu118 # 针对 CUDA 11.8
pip install autoawq --extra-index-url https://download.pytorch.org/whl/cu121 # 针对 CUDA 12.1
### 计算能力过低
**错误**:`AssertionError: Compute capability must be >= 7.5`
**修复**:AWQ 要求 NVIDIA GPU 计算能力在 7.5 以上(Turing 或更新架构):
- RTX 20xx 系列:7.5(支持)
- RTX 30xx 系列:8.6(支持)
- RTX 40xx 系列:8.9(支持)
- A100/H100:8.0/9.0(支持)
旧款 GPU(GTX 10xx, V100)不支持。
### Transformers 版本冲突
**错误**:`ImportError: cannot import name 'AwqConfig'`
**修复**:AutoAWQ 可能会降级 transformers。请重新安装正确版本:
bash
pip install autoawq
pip install transformers>=4.45.0 --upgrade
### 未找到 Triton (Linux)
**错误**:`ModuleNotFoundError: No module named 'triton'`
**修复**:
bash
pip install triton
# 或者安装带内核的版本
pip install autoawq[kernels]
## 量化问题
### 量化期间 CUDA 显存溢出
**错误**:`torch.cuda.OutOfMemoryError: CUDA out of memory`
**解决方案**:
1. **减少校准样本**:
python
model.quantize(
tokenizer,
quant_config=quant_config,
max_calib_samples=64 # 从 128 减少
)
2. **使用 CPU 卸载(offloading)**:
python
model = AutoAWQForCausalLM.from_pretrained(
model_path,
low_cpu_mem_usage=True
)
3. **多 GPU 量化**:
python
model = AutoAWQForCausalLM.from_pretrained(
model_path,
device_map="auto"
)
### 量化后权重出现 NaN
**错误**:`AssertionError: NaN detected in weights`
**原因**:校准数据问题或数值不稳定。
**修复**:
python
# 使用更多校准样本
model.quantize(
tokenizer,
quant_config=quant_config,
max_calib_samples=256,
max_calib_seq_len=1024
)
### 校准样本为空
**错误**:`ValueError: Calibration samples are empty`
**修复**:确保分词器产生有效输出:
python
# 检查分词器
test = tokenizer("test", return_tensors="pt")
print(f"Token count: {test.input_ids.shape[1]}")
# 使用显式校准数据
calib_data = ["Your sample text here..."] * 128
mo