本地加载千问(Qwen)或智谱(GLM)的模型进行训练和精调
https://github.com/huggingface/
https://www.modelscope.cn/organization/MTEB?tab=model
想用你熟悉的代码风格加载千问(Qwen)或智谱(GLM)的模型,关键就是把"gpt2"这个占位符,换成对应模型在 Hugging Face 或 ModelScope 上的仓库ID。
🔧 核心代码修改
只需要改动from_pretrained里的模型名称,结构是完全一样的。
1. 加载通义千问 (Qwen) 模型
- Hugging Face: 模型ID通常是
"Qwen/Qwen-7B-Chat"或"Qwen/Qwen-14B-Chat"等 。 - ModelScope: 模型ID类似
"qwen/Qwen-7B-Chat-Int4",这是量化版本,对显存更友好 。 - 代码示例 (以 Hugging Face 为例):
注意:千问模型通常需要加上from transformers import AutoModelForCausalLM, AutoTokenizer # 指定千问的模型名称 model_name = "Qwen/Qwen-7B-Chat" tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", trust_remote_code=True)trust_remote_code=True参数 。
2. 加载智谱 (GLM) 模型
- Hugging Face: 智谱AI官方模型ID类似
"THUDM/glm-4-9b-chat-1m-hf"(支持超长上下文)或"ZhipuAI/Open-AutoGLM"。 - 代码示例 (以智谱GLM-4为例):
同样建议加上from transformers import AutoModelForCausalLM, AutoTokenizer # 指定智谱的模型名称 model_name = "THUDM/glm-4-9b-chat-1m-hf" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")device_map="auto"让程序自动分配设备 。
💡 补充一点
如果加载时遇到网络问题,可以考虑从国内的ModelScope(魔搭)社区下载模型。只需要修改from_pretrained的路径,并确保安装了modelscope库即可 。
这个报错是典型的网络连接问题,意味着你的电脑无法直接访问 Hugging Face 的服务器。这通常是由于网络限制或防火墙引起的,而不是代码本身的问题。
🛠️ 解决方案(由易到难)
你可以按顺序尝试以下方法,通常第一种就能解决问题。
1. 使用国内镜像源(最推荐,最有效)
将模型下载源切换到国内的ModelScope(魔搭)社区,只需修改两行代码,不需要其他复杂配置:
# 1. 先安装 modelscope 库 (在终端执行)
# pip install modelscope
from modelscope import AutoModelForCausalLM, AutoTokenizer
# 使用魔搭的模型ID
model_name = "qwen/Qwen-7B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", trust_remote_code=True)
2. 配置 Hugging Face 国内镜像加速
如果仍想从 Hugging Face 下载,可以设置环境变量,使用国内的镜像站(如 hf-mirror.com)来加速。在你的代码最前面加入:
import os
# 设置镜像站
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
3. 手动下载模型并本地加载
如果自动下载始终失败,可以手动下载模型文件到本地文件夹,然后从本地路径加载。
- 在浏览器中访问魔搭社区 (
www.modelscope.cn) 或 Hugging Face 镜像站,搜索并下载Qwen-7B-Chat的模型文件(通常包含.bin或.safetensors权重文件和config.json等)。 - 将所有文件放在一个本地文件夹,例如
D:/models/Qwen-7B-Chat。 - 修改加载代码:
from transformers import AutoModelForCausalLM, AutoTokenizer
# 使用本地文件夹路径
model_path = "D:/models/Qwen-7B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True)
💡 补充提示
- 注意显存:
Qwen-7B-Chat是7B参数的模型,完整精度需要约14GB显存。如果你的显卡显存不足,可以考虑加载量化版本,模型ID为qwen/Qwen-7B-Chat-Int4(需约6GB显存)。 - 信任远程代码:加载千问和智谱模型时,参数
trust_remote_code=True是必须的,因为它们的模型结构需要执行自定义的Python代码。
建议你先尝试方法1(使用ModelScope),这是目前最稳定、最快捷的方式。如果遇到其他问题,可以随时告诉我你的网络环境和显卡配置,我再帮你调整。
这个报错非常明确:你的代码仍在尝试从 Hugging Face 官网下载模型,而不是从你指定的本地路径或 ModelScope 加载。
根据你之前的问题,我判断你目前是混合使用了不同来源的代码,导致程序没有正确指向本地模型。
🎯 问题根源与解决方案
根本原因:你的 AutoTokenizer.from_pretrained(model_path, ...) 中的 model_path 没有被正确识别为本地路径,程序转而尝试从 Hugging Face 官网下载。
请立即按以下步骤检查和修改,问题即可解决:
-
检查
model_path的值
请确认你代码中的model_path变量是否以"/"或"D:"等盘符开头,且不包含"Qwen/Qwen-7B-Chat"这样的ID格式。- 错误示例:
model_path = "Qwen/Qwen-7B-Chat"(会被识别为网络ID) - 正确示例:
model_path = "D:/models/Qwen-7B-Chat"(本地路径)
- 错误示例:
-
确保本地文件夹完整
如果你使用的是本地路径,请再次确认D:/models/Qwen-7B-Chat文件夹下确实有config.json文件。如果文件缺失或不完整,程序仍会回退到网络下载。
💡 最稳妥的解决方案:彻底切换到 ModelScope
鉴于你反复遇到网络问题,我强烈建议放弃本地文件管理,统一使用 ModelScope 社区的 API。这能同时解决网络连接和文件完整性问题。
请直接使用以下完整代码(复制粘贴即可运行):
# 1. 先确保安装了必要的库(在终端执行)
# pip install modelscope sentencepiece
# 2. 完整的加载代码
from modelscope import AutoTokenizer, AutoModelForCausalLM
# 使用 ModelScope 的模型 ID,而不是本地路径
model_id = "qwen/Qwen-7B-Chat" # 如果显存不足,可改为 "qwen/Qwen-7B-Chat-Int4"
print("正在从 ModelScope 加载模型,首次会下载,请耐心等待...")
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", trust_remote_code=True)
print("模型加载成功!")
# 可选的测试代码
inputs = tokenizer("你好,", return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=50)
print(tokenizer.decode(outputs[0]))
⚠️ 重要检查清单
如果上述方案仍不行,请按顺序检查:
- 网络环境:确保你的网络能正常访问
www.modelscope.cn(通常可以)。 - 库版本:在终端运行
pip install --upgrade modelscope transformers更新到最新版。 - Python 环境:确认你安装库和运行代码使用的是同一个 Python 环境(比如都是
venv)。
通过一下命令进行魔达社区下载模型
modelscope download --model Qwen/Qwen-7B-Chat
更多推荐
所有评论(0)