安装项目requirements.txt后出现torch.device与int比较的TypeError求助
解决TypeError: '<' not supported between instances of 'torch.device' and 'int'
这个错误属于Haystack与Hugging Face Transformers的版本兼容问题,核心原因是旧版Transformers的Pipeline初始化逻辑中,错误地将torch.device对象与整数做比较,而Haystack的TransformersReader在指定use_gpu=False时传递了torch.device类型的设备参数。
以下是可行的修复方案:
方案1:锁定兼容的Transformers版本
旧版Transformers(低于4.26.x)存在设备参数处理的bug,建议安装与你的Haystack版本匹配的稳定版Transformers:
pip install transformers==4.26.1
这个版本修复了Pipeline中设备参数的类型判断逻辑,能正确处理torch.device对象。
方案2:临时修改Haystack代码(快速 workaround)
如果不想调整版本,可以临时修改虚拟环境中Haystack的TransformersReader初始化代码:
找到路径/home/xyzUser/project/.env/lib/python3.8/site-packages/haystack/nodes/reader/transformers.py,定位到初始化pipeline的代码段(约第93行),明确指定device为整数类型:
self.model = pipeline( task="question-answering", model=self.model_name_or_path, tokenizer=self.tokenizer, model_kwargs=self.model_kwargs, device=-1 # 强制指定为-1(代表CPU),替换原有的device参数 )
注意:此修改仅临时生效,虚拟环境重装后会丢失。
方案3:升级Haystack到兼容版本
较新的Haystack版本已修复与Transformers的设备参数传递问题,执行升级命令:
pip install --upgrade farm-haystack
升级后Transformers会自动适配到兼容版本,无需额外手动指定。
内容的提问来源于stack exchange,提问作者ReaL_HyDRA
相关产品推荐
相关产品推荐

