在使用ModelScope在联网状态下下载好Qwen1.5_72B_chat模型后,运行启动模型正常。之后尝试断网启动该模型,遇到报错,大体意思是需要联网核对模型的MD5值,即验证模型完整性,因无法联网验证,导致模型启动失败。检查cache文件
提示报错信息-无法联网
此时cache文件存在,且已下载完完整Qwen1.5-72B-chat模型。
请问这种情况想离线启动模型该如何操作?
在离线环境中启动已下载的Qwen1.5-72B-chat模型时,遇到需要联网验证模型完整性(如MD5值核对)的问题,可以通过以下步骤解决。这些步骤基于知识库中的相关资料,并结合ModelScope的使用逻辑进行整理。
在离线环境下,首先需要确保本地缓存的模型文件是完整的,并且与ModelScope上的原始文件一致。以下是具体操作步骤:
ModelScope默认会将下载的模型存储在本地缓存目录中,通常路径为:
~/.cache/modelscope
进入该目录,确认是否存在Qwen1.5-72B-chat
模型的相关文件。
如果缓存文件完整,理论上无需再次联网验证。但为了确保文件未损坏,可以手动检查文件的MD5值是否与ModelScope上提供的MD5值一致。具体方法如下: 1. 在联网状态下,从ModelScope官网获取Qwen1.5-72B-chat
模型的MD5值。 2. 使用以下命令计算本地文件的MD5值:
md5sum <文件路径>
ModelScope默认会在启动模型时尝试联网验证模型完整性。如果确认本地缓存文件完整,可以通过修改配置或代码逻辑跳过这一验证步骤。
ModelScope支持通过环境变量控制是否跳过联网验证。设置以下环境变量以禁用联网验证:
export MODELSCOPE_CACHE=~/.cache/modelscope
export MODELSCOPE_SKIP_MD5_CHECK=True
上述命令的作用是: - MODELSCOPE_CACHE
:指定本地缓存路径。 - MODELSCOPE_SKIP_MD5_CHECK
:跳过MD5值的联网验证。
如果直接运行Python脚本加载模型,可以在代码中显式指定跳过MD5验证。例如:
from modelscope.hub.snapshot_download import snapshot_download
# 跳过MD5验证
model_dir = snapshot_download('qwen/Qwen1.5-72B-chat', skip_md5_check=True)
print(f"模型加载路径: {model_dir}")
如果上述方法仍无法解决问题,可以直接通过本地路径加载模型,避免触发ModelScope的联网验证逻辑。
假设模型已下载到~/.cache/modelscope/qwen/Qwen1.5-72B-chat
目录下,可以直接使用该路径加载模型。
在代码中指定本地路径加载模型,示例如下:
from transformers import AutoModelForCausalLM, AutoTokenizer
# 指定本地模型路径
model_path = "~/.cache/modelscope/qwen/Qwen1.5-72B-chat"
# 加载模型和分词器
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
# 测试模型推理
input_text = "你好,通义千问!"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs)
print(tokenizer.decode(outputs[0]))
通过以上步骤,您可以在离线环境中成功启动Qwen1.5-72B-chat
模型,避免因联网验证导致的启动失败问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。