M1芯片Mac使用llama_index的适配问题及索引跨端复用咨询
问题解答
问题1:M1芯片Mac与llama_index兼容性及CUDA错误解决
M1芯片Mac完全可以和llama_index配合使用,你遇到的AssertionError: Torch not compiled with CUDA enabled错误,本质是代码中强制依赖了CUDA后端,但M1使用的是Apple Metal(MPS)后端而非CUDA。解决步骤如下:
- 确保安装适配M1的PyTorch版本,执行命令:
不要安装CUDA专属的PyTorch包。pip3 install torch torchvision torchaudio - 修改代码,让PyTorch自动检测并使用MPS后端:
将自定义LLM模型及相关张量转移到该设备:import torch # 优先使用MPS, fallback到CPU device = torch.device("mps" if torch.backends.mps.is_available() else "cpu")model = model.to(device) - 检查llama_index的LLM初始化配置,确保没有强制指定
cuda设备,例如在初始化自定义LLM时,显式设置device=device参数。
问题2:Colab生成索引后本地加载方案
完全可以在Google Colab的GPU环境生成索引,下载到本地M1 Mac后通过load_from_file加载使用,具体操作如下:
Colab端保存索引代码示例
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader # 加载数据集并生成索引 documents = SimpleDirectoryReader("data").load_data() index = GPTVectorStoreIndex.from_documents(documents) # 将索引保存为本地文件 index.save_to_disk("index.json")
执行后,在Colab的文件管理器中找到index.json,下载到本地Mac。
本地M1 Mac加载索引代码
from llama_index import GPTVectorStoreIndex # 从本地文件加载索引 index = GPTVectorStoreIndex.load_from_file("index.json") # 创建查询引擎并使用 query_engine = index.as_query_engine() response = query_engine.query("输入你的查询问题") print(response)
注意事项
- 确保本地与Colab的llama_index、PyTorch等依赖版本尽量一致,避免序列化/反序列化时出现版本兼容问题。
- 如果自定义LLM依赖本地模型文件,需将Colab中使用的模型文件同步到本地Mac的对应路径。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

