ModelScope中,我在使用cv_mobilenet_face-2d-keypoints_alignment这个模型的时候, 我已经将文件git到本地了, 构建管道时 用model指定了路径,为什么还是自动从网络上下载了另一个模型?
ModelScope会默认从云端下载模型,即使您在model.yaml文件中指定了本地模型路径。为了解决这个问题,您可以使用本地预训练模型运行pipeline,而不是通过ModelScope服务运行。
具体步骤如下:
修改 pipeline.yaml 文件中的 model 参数,使其指向本地模型的路径:
model:
type: local
path: /path/to/mobilenet_face-2d-keypoints_alignment.pth
在本地环境运行pipeline,而不使用ModelScope服务。请参阅ModelScope的官方文档以了解如何在本地运行pipeline。
问题一:ModelScope在构建管道时,如果指定了模型路径,它应该优先使用本地的模型文件。但是,如果在构建过程中发现本地模型文件不存在或者版本不匹配,它可能会自动从网络上下载一个合适的模型。这可能是因为你指定的本地模型文件不存在,或者版本与你需要的不匹配。
问题二:如果你想在构建管道时指定两个模型,你可以在Pipeline
函数中传入一个包含多个模型的列表。例如:
from mindspore.pipeline import Pipeline
from mindspore.dataset import MoleculeDataset
from mindspore.train.callback import ModelCheckpoint, CheckpointConfig
from mindspore.nn.cell import Cell
from mindspore import context, Model
from mindspore.common.initializer import TruncatedNormal
import os
# 创建两个模型
model1 = Cell(...)
model2 = Cell(...)
# 将两个模型放入一个列表中
models = [model1, model2]
# 创建数据集和训练回调
dataset = MoleculeDataset(...)
checkpoint_config = CheckpointConfig(save_checkpoint_steps=1875, keep_checkpoint_max=10)
ckpoint_cb = ModelCheckpoint(prefix="checkpoint_modelscope", config=checkpoint_config)
# 创建管道
pipeline = Pipeline(...)
在这个例子中,pipeline
将会在训练过程中依次使用model1
和model2
。
应该是pipeline中用到了另一个模型。环境中找到文件(参考最上面那行),把这个地方改一下
———此回答整理自钉群:魔搭ModelScope开发者联盟群 ①