TorchServe MAR 每个模型多个 Python 文件

Jai*_*ata 5 python pytorch

有没有办法在调用 MAR 之前将模型拆分为多个文件?

例如,如果我有文件base_model.py

import torch
from torch import nn


class BaseModel(nn.Module):
    ...
Run Code Online (Sandbox Code Playgroud)

以及继承自的模型BaseModel

from base_model import BaseModel


class FullModel(BaseModel):
    ...
Run Code Online (Sandbox Code Playgroud)

对于处理程序来说也是如此。我不知道如何在多个文件之间拆分代码。

ero*_*3pi 8

简短回答:是的

您可以将主模型文件和其余文件作为额外文件传递。例如:full_model.py 使用 --model-file ./xxx/aaa/full_model.py,所有其他文件使用--extra-files ./xxx/bbb/base_model_1.py,./xxx/ccc/base_model_2.py,./xxx/ddd/mini_handler.py,./xxx/eee/mini_handler_2.py. 在打包为 .mar 文件之前,所有文件都将位于一个文件夹中。考虑到这一点,您可能需要稍微更改 python 文件中的导入。总而言之,它应该类似于

torch-model-archiver \
    --model-name recommendation \
    --version 1.0 \
    --model-file src/model/full_model.py \
    --serialized-file model/model.pt \
    --handle model_handler.py \
    --extra-files \
"dd/utils/utils.py,\
ee/network_config.json,\
ff/utils/preprocess.py,\
gg/utils/data_loader.py\
Run Code Online (Sandbox Code Playgroud)

现在您可以通过正常导入在模型处理程序中使用预处理或数据加载器中的函数