背景
在魔塔社区"七天入门大模型"课程实践中,使用 Qwen-1.8B-Chat 模型进行推理时遇到版本兼容问题。本文记录问题排查过程和解决方案。
问题复现
初始代码
from modelscope import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
"Qwen/Qwen-1_8B-Chat",
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen-1_8B-Chat",
device_map="auto",
trust_remote_code=True
).eval()
错误信息
ImportError: cannot import name 'is_torch_tpu_available' from 'transformers.utils'
问题分析
依赖链路
Qwen-1.8B-Chat
└── transformers_stream_generator
└── transformers.utils.is_torch_tpu_available (已移除)
根本原因
transformers >= 4.38.0 移除了 is_torch_tpu_available 函数,但 transformers_stream_generator 仍在尝试导入它。
解决方案
版本锁定
| 包 | 版本 |
|---|---|
| transformers | 4.32.0 |
| transformers_stream_generator | 0.0.4 |
| accelerate | 最新 |
| tiktoken | 最新 |
| einops | 最新 |
| modelscope | 最新 |
安装命令
pip uninstall -y transformers transformers_stream_generator
pip install transformers==4.32.0
pip install transformers_stream_generator==0.0.4
pip install accelerate tiktoken einops modelscope
# 重启 Kernel
完整测试代码
from modelscope import AutoModelForCausalLM, AutoTokenizer
# 加载模型
tokenizer = AutoTokenizer.from_pretrained(
"Qwen/Qwen-1_8B-Chat",
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen-1_8B-Chat",
device_map="auto",
trust_remote_code=True
).eval()
# 多轮对话测试
response, history = model.chat(tokenizer, "你好", history=None)
print(f"助手:{response}")
response, history = model.chat(
tokenizer,
"给我讲一个创业故事",
history=history
)
print(f"助手:{response}")
运行结果
模型成功加载并完成多轮对话测试!
总结
| 问题 | 解决方案 |
|---|---|
| transformers 版本过高 | 降级到 4.32.0 |
| 缺少 stream_generator | 安装 0.0.4 版本 |
| 安装后仍报错 | 重启 Jupyter Kernel |
关键点:开源大模型的依赖版本有严格要求,遇到 ImportError 优先检查版本兼容性。
参考
📌 本文首发于掘金,作者:AI探索者 🔗 转载请注明出处
💡 如果觉得有帮助,欢迎点赞、收藏、关注!