运行基于LlamaIndex与量化Llama3-8B-Instruct的RAG管道时遭遇ModuleNotFoundError的解决求助
问题描述
我最近在搭建基于LlamaIndex和量化版Llama3-8B-Instruct的RAG管道,先安装了这些依赖库:
!pip install --upgrade huggingface_hub !pip install --upgrade peft !pip install llama-index bitsandbytes accelerate llama-index-llms-huggingface llama-index-embeddings-huggingface !pip install --upgrade transformers !pip install --upgrade sentence-transformers
之后尝试运行量化配置代码:
import torch from llama_index.llms.huggingface import HuggingFaceLLM from transformers import BitsAndBytesConfig quantization_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, )
结果遇到了这个错误:
ModuleNotFoundError: No module named 'huggingface_hub.inference._types'
两个月前我用同样的代码还能正常运行,推测是LlamaIndex的版本更新导致了兼容性问题——错误溯源到一行代码from huggingface_hub.inference._types import ConversationalOutput,但我查HuggingFace文档根本找不到ConversationalOutput这个模块。
想请教大家该怎么修复这个错误,顺利跑通RAG管道?
解决方案建议
根据你遇到的问题,大概率是LlamaIndex与huggingface_hub版本不兼容导致的,下面给几个可行的解决方向:
1. 锁定huggingface_hub的兼容版本
LlamaIndex的新版可能依赖了huggingface_hub某个尚未稳定的内部模块,你可以回退到一个经过验证的兼容版本,比如:
pip install huggingface_hub==0.23.4
这个版本是很多用户反馈和LlamaIndex当前稳定版适配的,你可以先试试这个版本,之后再重新运行你的量化代码。
2. 降级LlamaIndex到之前可用的版本
既然两个月前你的代码能正常运行,那可以直接把LlamaIndex及相关组件降级到当时的版本,比如:
pip install llama-index==0.10.35 llama-index-llms-huggingface==0.1.19
具体版本号你可以根据自己之前的环境记录调整,或者先尝试这个常用的稳定组合。
3. 检查并更新所有依赖的兼容性
有时候单独升级或降级某个包会引发连锁问题,建议用pip check命令检查所有依赖的冲突情况:
pip check
如果发现其他包的版本冲突,按照提示逐一调整版本,确保整个依赖链是兼容的。
4. 创建隔离的虚拟环境
如果上面的方法都不行,最稳妥的方式是创建一个全新的虚拟环境,然后安装经过验证的依赖版本组合:
# 创建虚拟环境(以conda为例,也可以用venv) conda create -n rag_env python=3.10 conda activate rag_env # 安装指定版本的依赖 pip install huggingface_hub==0.23.4 pip install peft==0.10.0 pip install llama-index==0.10.35 bitsandbytes==0.43.1 accelerate==0.27.2 pip install llama-index-llms-huggingface==0.1.19 llama-index-embeddings-huggingface==0.2.4 pip install transformers==4.39.3 sentence-transformers==2.7.0
这个组合是近期很多RAG项目验证过的稳定版本,应该能解决你的模块找不到问题。
验证步骤
调整完依赖版本后,先重启你的Python环境,然后重新运行量化配置代码,如果没有报错,再继续推进RAG管道的后续步骤。如果还是有问题,可以尝试清除pip缓存后重新安装:
pip cache purge
备注:内容来源于stack exchange,提问作者Hoang Cuong Nguyen

