Rasa 3 Python中NLU模型加载耗时久,如何优化?
Rasa模型加载缓慢的解决方案
1. 修正代码中的拼写错误
你训练代码里的配置文件名写错了:config = 'confing.yml' 应为 config = 'config.yml'。虽然可能只是笔误,但如果实际运行时使用了错误的文件名,可能会触发默认的重量级配置,间接导致加载变慢。
2. 仅加载NLU模型(而非完整Agent)
当前你用Agent.load()会加载整个对话系统(包含Core对话管理和NLU自然语言理解模块),但如果你的需求仅为意图识别和实体提取,直接加载NLU模型能大幅提升速度:
from rasa.nlu.model import Interpreter # 加载NLU模型 interpreter = Interpreter.load("path/to/your/nlu/model") # 测试使用 parse_result = interpreter.parse("你需要识别的文本")
3. 替换为轻量级NLU组件
默认的config.yml通常使用DIETClassifier搭配Transformer预训练模型(如BERT),这类模型体积大、加载耗时。针对你的小数据集(3个意图各3个示例、2个实体),完全可以用轻量的传统机器学习组件替代:
修改config.yml的NLU pipeline部分:
language: zh pipeline: - name: WhitespaceTokenizer - name: LexicalSyntacticFeaturizer - name: CountVectorsFeaturizer - name: CountVectorsFeaturizer analyzer: "char_wb" min_ngram: 1 max_ngram: 4 - name: SklearnIntentClassifier - name: CRFEntityExtractor
这套配置基于 sklearn 和 CRF,训练和加载速度都远快于Transformer模型,对于小数据集的识别效果也能满足需求。
4. 其他优化技巧
- 升级到最新版Rasa:新版本通常包含性能优化,执行
pip install --upgrade rasa更新。 - 本地缓存预训练模型:如果必须使用Transformer模型,设置
HF_HOME环境变量指定本地缓存目录,避免每次加载时重复下载预训练权重。
内容的提问来源于stack exchange,提问作者Sagar jagani
相关产品推荐
相关产品推荐

