搭建RAG易错点
错误信息Assertion 'input[0] != 0' failed + torch.multinomial
是概率分布出现全零行(numerical underflow)导致的
一、dtype=torch.float16
float16 最小正数约 5.96×10⁻⁸,temperature 缩放后 softmax 尾部概率超出此范围,被舍入为 0;bfloat16 下限约 1.17×10⁻³⁸,不会发生截断。
修改前dtype=torch.float16
修改后torch_dtype=torch.bfloat16 # 数值范围更大,softmax 不易下溢
二、缺少 top_p
没有对概率分布做截断,低概率区域全部参与采样,放大了数值不稳定的风险
classChatRequest(BaseModel):top_p:float=0.9# 新增,截断低概率 token三、generate() 加入 top_p 和 eos_token_id
outputs=model.generate(...top_p=request.top_p,eos_token_id=tokenizer.eos_token_id,# 新增)四、pad_token_id 可能为 None
Qwen tokenizer 某些版本 pad_token_id=None,传入 generate 会静默出错
pad_token_id=tokenizer.pad_token_idiftokenizer.pad_token_idisnotNoneelsetokenizer.eos_token_id五、temperature 安全处理
do_sample=request.temperature>0gen_temperature=max(request.temperature,1e-6)