You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ChatGLM-6B运行api.py报AttributeError:ChatGLMTokenizer无sp_tokenizer属性求助

AttributeError: 'ChatGLMTokenizer' object has no attribute 'sp_tokenizer' when running ChatGLM-6B api.py

问题描述

之前从ChatGLM-6B仓库获取的默认api.py运行正常,近期再次启动时突然抛出错误:

AttributeError: 'ChatGLMTokenizer' object has no attribute 'sp_tokenizer'

已尝试以下操作但未解决问题:

  • 重新安装指定版本的transformers:pip install transformers==4.27.1
  • 更新tokenization_chatglm.py至最新版本

由于对tokenization_chatglm.py和api.py的内部逻辑不熟悉,希望找到遗漏的解决步骤或其他可行修复方案,目标是让api.py正常运行以实现ChatGLM的本地离线使用。

可能的修复步骤

1. 验证tokenizer文件完整性与加载路径

  • 确认本地tokenization_chatglm.py文件完整,包含sp_tokenizer的初始化代码(比如在__init__方法中是否有self.sp_tokenizer = spm.SentencePieceProcessor()相关逻辑)
  • 确保api.py优先加载本地的tokenization_chatglm.py,而非transformers库中的旧版本文件:
    在api.py开头添加代码强制指定路径:
    import sys
    sys.path.insert(0, './')  # 假设tokenizer文件在当前工作目录
    

2. 清理transformers缓存并本地加载模型

  • 删除~/.cache/huggingface/transformers目录下所有与ChatGLM相关的缓存文件
  • 修改api.py中加载tokenizer的代码,明确指定本地模型路径,避免拉取远程旧版本:
    tokenizer = AutoTokenizer.from_pretrained("./chatglm-6b-local-path", trust_remote_code=True)
    

3. 检查并更新相关依赖库

  • 除transformers外,确保以下依赖版本兼容:
    pip install --upgrade torch protobuf sentencepiece
    
    这些库是ChatGLM tokenizer正常初始化的必要依赖,版本过旧可能导致初始化失败

4. 手动初始化tokenizer排查问题

  • 尝试直接在测试脚本中手动初始化tokenizer,确认是否是加载逻辑问题:
    from tokenization_chatglm import ChatGLMTokenizer
    tokenizer = ChatGLMTokenizer(vocab_file="./chatglm-6b-local-path/vocab.txt")
    print(hasattr(tokenizer, 'sp_tokenizer'))  # 输出True则说明初始化正常
    
    如果此测试正常,再检查api.py中是否有覆盖tokenizer实例的错误逻辑

内容的提问来源于stack exchange,提问作者Tianrun Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:12:35