FARMReader超时问题排查:运行30+分钟卡顿后超时
FARMReader卡顿超时的可能原因
以下是导致该问题的几种常见情况:
- GPU未实际启用:代码中设置了
use_gpu=True,但如果本地PyCharm未正确配置CUDA环境(比如CUDA版本与PyTorch不匹配、显卡驱动未更新),模型实际会在CPU上运行,推理速度大幅下降。可以在代码中加入print(torch.cuda.is_available())验证GPU是否可用。 - 检索文档过长或数量过多:
top_k_retriever=10返回的10篇文档如果篇幅过长,Reader需要对每篇文档做分词、特征提取等操作,计算量会急剧增加。可以先单独调用retriever.retrieve(query=question, top_k=10)查看返回的文档长度,尝试缩小top_k_retriever值(比如改成3-5),或者提前对文档做分段处理。 - Elasticsearch检索延迟:看似是Reader卡顿,但如果Elasticsearch返回结果过慢,也会导致整个流水线卡住。单独测试检索环节的耗时,确认是否是Elasticsearch的问题。
- 资源不足:本地GPU显存或CPU内存不足时,模型推理会频繁进行内存交换,导致卡顿。打开任务管理器或
nvidia-smi查看资源占用情况,确认是否存在内存/显存耗尽的现象。 - 版本兼容性问题:farm-haystack 1.15.1与Elasticsearch 8.7.0可能存在兼容性冲突,底层交互逻辑异常导致Reader处理数据时阻塞。可以尝试将Elasticsearch版本降至8.5.x左右,或升级farm-haystack到更适配的版本。
- 文档格式异常:如果检索到的文档包含大量特殊字符、乱码或非结构化内容,Reader在预处理阶段可能出现异常耗时。先对文档做清洗,去除无关内容后再测试。
用户代码示例:
reader = FARMReader(model_name_or_path="deepset/roberta-base-squad2",use_gpu=True) retriever = ElasticsearchRetriever(document_store= document_store) pipe = ExtractiveQAPipeline(reader, retriever) # predict n answers prediction = pipe.run(query=question, top_k_retriever=10, top_k_reader=3)
内容的提问来源于stack exchange,提问作者Mohamed Ahmed
相关产品推荐
相关产品推荐

