关于使用ModelScope离线启动已下载过的模型时遇到的问题

在使用ModelScope在联网状态下下载好Qwen1.5_72B_chat模型后,运行启动模型正常。之后尝试断网启动该模型,遇到报错,大体意思是需要联网核对模型的MD5值,即验证模型完整性,因无法联网验证,导致模型启动失败。
Xnip2024-04-23_21-46-05.jpg检查cache文件

Xnip2024-04-23_21-46-25.jpg提示报错信息-无法联网

Xnip2024-04-23_21-48-03.jpg
此时cache文件存在,且已下载完完整Qwen1.5-72B-chat模型。

请问这种情况想离线启动模型该如何操作?

展开
收起
游客zkqhpoonhjngk 2024-04-23 21:57:34 270 分享 版权
阿里云 AI 助理回答

在离线环境中启动已下载的Qwen1.5-72B-chat模型时,遇到需要联网验证模型完整性(如MD5值核对)的问题,可以通过以下步骤解决。这些步骤基于知识库中的相关资料,并结合ModelScope的使用逻辑进行整理。


1. 确认本地缓存文件完整性

在离线环境下,首先需要确保本地缓存的模型文件是完整的,并且与ModelScope上的原始文件一致。以下是具体操作步骤:

1.1 检查缓存路径

ModelScope默认会将下载的模型存储在本地缓存目录中,通常路径为:

~/.cache/modelscope

进入该目录,确认是否存在Qwen1.5-72B-chat模型的相关文件。

1.2 验证文件完整性

如果缓存文件完整,理论上无需再次联网验证。但为了确保文件未损坏,可以手动检查文件的MD5值是否与ModelScope上提供的MD5值一致。具体方法如下: 1. 在联网状态下,从ModelScope官网获取Qwen1.5-72B-chat模型的MD5值。 2. 使用以下命令计算本地文件的MD5值:

md5sum <文件路径>
  1. 对比两者的MD5值,确保一致。

2. 修改ModelScope配置以跳过联网验证

ModelScope默认会在启动模型时尝试联网验证模型完整性。如果确认本地缓存文件完整,可以通过修改配置或代码逻辑跳过这一验证步骤。

2.1 设置环境变量

ModelScope支持通过环境变量控制是否跳过联网验证。设置以下环境变量以禁用联网验证:

export MODELSCOPE_CACHE=~/.cache/modelscope
export MODELSCOPE_SKIP_MD5_CHECK=True

上述命令的作用是: - MODELSCOPE_CACHE:指定本地缓存路径。 - MODELSCOPE_SKIP_MD5_CHECK:跳过MD5值的联网验证。

2.2 修改代码逻辑

如果直接运行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}")

3. 手动加载本地模型

如果上述方法仍无法解决问题,可以直接通过本地路径加载模型,避免触发ModelScope的联网验证逻辑。

3.1 确认模型路径

假设模型已下载到~/.cache/modelscope/qwen/Qwen1.5-72B-chat目录下,可以直接使用该路径加载模型。

3.2 修改加载代码

在代码中指定本地路径加载模型,示例如下:

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]))

4. 注意事项

  • 缓存文件一致性:确保本地缓存文件与ModelScope上的原始文件完全一致。如果文件不完整或损坏,可能导致模型加载失败。
  • 环境变量优先级:设置环境变量后,建议重启终端或服务以确保生效。
  • 代码兼容性:如果使用自定义代码加载模型,请确保代码版本与模型版本兼容。

通过以上步骤,您可以在离线环境中成功启动Qwen1.5-72B-chat模型,避免因联网验证导致的启动失败问题。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

包含命名实体识别、文本分类、分词、关系抽取、问答、推理、文本摘要、情感分析、机器翻译等多个领域

热门讨论

热门文章

还有其他疑问?
咨询AI助理