加载BERTopic模型时nopython模式流水线报错,求解决方案
解决BERTopic加载模型时的Numba相关错误
问题描述
运行以下代码加载BERTopic模型时,每次会触发不同的Numba编译类错误:
from bertopic import BERTopic bertopic_mod = BERTopic.load("bertopic_models/bertopic_complete")
出现的错误类型包括:
IndexError: Failed in nopython mode pipeline (step: analyzing bytecode) pop from empty listAssertionError: Failed in nopython mode pipeline (step: analyzing bytecode) key already in dictionary: 46KeyError: 'Failed in nopython mode pipeline (step: analyzing bytecode)\n158'
解决方案
这类错误根源是Numba的JIT编译缓存损坏或版本兼容性问题,可按以下步骤解决:
清除Numba编译缓存
Numba会缓存编译后的代码,缓存损坏会导致这类随机错误。执行命令清除缓存:numba -s也可以手动删除缓存目录:
- Linux/macOS:
~/.numba/ - Windows:
C:\Users\<你的用户名>\AppData\Local\numba\
- Linux/macOS:
调整Numba版本
BERTopic与Numba版本存在兼容性依赖,尝试切换到稳定适配版本,比如:pip install numba==0.56.4也可以查看BERTopic项目的
requirements.txt文件,确认官方指定的Numba版本后安装。临时禁用Numba JIT编译
若上述方法无效,可临时关闭Numba的JIT编译(会损失部分性能,但能绕过编译错误),在加载模型前添加如下代码:import os os.environ["NUMBA_DISABLE_JIT"] = "1" from bertopic import BERTopic bertopic_mod = BERTopic.load("bertopic_models/bertopic_complete")重新训练并保存模型
如果模型文件本身损坏,可重新训练模型后再保存加载:# 假设你有训练数据docs from bertopic import BERTopic model = BERTopic() topics, probs = model.fit_transform(docs) model.save("bertopic_models/bertopic_complete_new")之后加载新保存的模型文件即可。
内容的提问来源于stack exchange,提问作者Delaram R
相关产品推荐
相关产品推荐

