【大模型】运行Qwen1.5大模型报错AttributeError: property ‘seen_tokens‘ of ‘DynamicCache‘ object has no setter

【大模型】运行Qwen1.5大模型报错AttributeError: property seen_tokens of DynamicCache object has no setter

环境

  • Ubuntu22.04
  • python3.11

运行模型

跑 Qwen1.5-7B-Chat-Int4 模型:

python Qwen1.5-generate.py --repo-id-or-model-path Qwen1.5-7B-Chat-Int4-ipex-llm --n-predict 128

错误信息

# python Qwen1.5-generate.py --repo-id-or-model-path Qwen1.5-7B-Chat-Int4-ipex-llm --n-predict 128
2024-04-29 12:52:41,815 - INFO - intel_extension_for_pytorch auto imported
2024-04-29 12:52:42,143 - INFO - Converting the current model to sym_int4 format......
Loading checkpoint shards:   0%|                                                                                                                              | 0/2 [00:00<?, ?it/s]/home/abc/miniconda3/envs/ipex-llm/lib/python3.11/site-packages/torch/_utils.py:831: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly.  To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
  return self.fget.__get__(instance, owner)()
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00,  8.98it/s]
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or 
<think>好的,用户遇到了在运行Python脚本convert_checkpoint.py时出现的AttributeError错误,具体是'Qwen2Config'对象没有'layer_norm_epsilon'属性。我需要先理解这个问题的可能原因,然后找出解决方案。 首先,这个错误表明在Qwen2Config类中,代码尝试访问一个名为layer_norm_epsilon的属性,但该属性不存在。可能的原因有几个: 1. **版本不兼容**:用户使用的模型库版本可能过旧或过新,导致配置类中没有包含这个属性。比如,可能在某个版本中,该属性被重命名或移除了。 2. **代码依赖问题**:用户可能在运行脚本时,依赖的库(如Hugging Face Transformers)没有正确安装,或者安装的版本与脚本所需的版本不一致。 3. **自定义配置问题**:如果用户使用的是自定义的模型配置,可能在配置类中遗漏了该属性的定义。 接下来,我需要考虑如何验证这些可能性。首先,检查Hugging Face Transformers库的版本。因为Qwen模型通常与Transformers库集成,如果用户安装的版本太旧,可能确实缺少某些属性。例如,layer_norm_epsilon在BERT等模型的配置中是常见的,但不同模型可能有不同的命名方式。 根据用户提供的引用[1],提到了安装faiss-gpu的问题,这可能意味着用户的环境存在版本兼容性问题。虽然引用[1]是关于faiss-gpu的,但可以推测用户可能在处理与机器学习相关的项目,可能涉及多个库的版本冲突。 可能的解决步骤: 1. **升级Transformers库**:建议用户更新到最新版本,以确保Qwen2Config包含所需的属性。可以使用pip或conda进行升级。 2. **检查模型源代码**:如果用户是从源代码安装的模型库,可能需要检查Qwen2Config类的定义,确认是否存在layer_norm_epsilon属性,或者是否有拼写错误。 3. **手动添加缺失属性**:如果发现库版本正确但问题依旧,可能需要临时在配置类中添加该属性,例如设置默认值,但这需要谨慎处理。 另外,用户提供的错误信息提示了具体的属性缺失,因此查阅相关模型的文档或GitHub仓库的issues可能会有帮助。例如,查看是否有其他用户遇到类似问题,是否有官方的修复或补丁。 还需要考虑用户的环境是否混用了不同版本的库,比如同时通过pip和conda安装了不同版本的Transformers,导致冲突。建议用户创建一个干净的环境,重新安装依赖,确保版本一致。 总结可能的解决方案步骤: - 更新Hugging Face Transformers到最新版。 - 检查Qwen模型的官方文档或仓库,确认配置要求。 - 检查代码中是否有拼写错误或版本不匹配。 - 创建虚拟环境,重新安装所有依赖。</think>根据错误信息`AttributeError: 'Qwen2Config' object has no attribute 'layer_norm_epsilon'`,该问题通常由**代码依赖版本不兼容**或**模型配置参数缺失**引起。以下是分步解决方案: --- ### 1. 检查并更新依赖库版本 此错误常见于模型配置文件(如`Qwen2Config`)未包含`layer_norm_epsilon`参数。首先确保以下库为最新版本: ```bash # 升级Hugging Face Transformers库 pip install transformers --upgrade # 或通过conda conda install -c huggingface transformers -y ``` --- ### 2. 验证模型配置源码 如果更新后问题仍存在,检查`Qwen2Config`类的定义: - 找到配置文件路径(通常为`site-packages/transformers/models/qwen2/configuration_qwen2.py`) - 确认其中是否包含`layer_norm_epsilon`的定义: ```python class Qwen2Config(PretrainedConfig): # ... layer_norm_epsilon = 1e-6 # 类似参数 ``` 若缺失,需手动添加该参数或参考官方文档更新配置[^1]。 --- ### 3. 临时解决方案(兼容性修复) 在代码中**手动补全缺失参数**: ```python from transformers import Qwen2Config # 在加载配置前添加参数 Qwen2Config.layer_norm_epsilon = 1e-6 # 或根据模型需求调整 # 再执行convert_checkpoint.py ``` --- ### 4. 创建干净虚拟环境 若存在多版本库冲突,建议新建环境: ```bash conda create -n qwen_env python=3.10 conda activate qwen_env pip install transformers torch # 安装指定版本库 ``` --- ### 可能原因总结 | 原因 | 解决方案 | |---------------------|--------------------------| | Transformers版本过旧 | 升级到最新版本 | | 模型配置参数缺失 | 手动添加参数或更新配置文件 | | 环境依赖冲突 | 新建虚拟环境 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szZack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值