• 文档 >
  • Torchserve 使用案例
快捷方式

Torchserve 使用案例

Torchserve 可用于不同的使用案例。为了方便用户使用,其中一些案例已在此处记录。这些使用案例假设您已预训练模型和 torchservetorch-model-archiver 已安装在您的目标系统上。这将帮助您将开发环境模型迁移到生产/服务环境。

注意

  • 如果您尚未安装最新的 torchserve 和 torch-model-archiver,请按照安装说明完成安装

  • 如果计划使用 docker,请确保以下先决条件已到位 -

    • 确保您的目标节点上安装了最新的 docker 引擎。如果尚未安装,请使用链接进行安装。

    • 按照说明使用 docker 安装来共享 model-store 目录并启动 torchserve

  • 以下使用案例步骤使用 curl 来执行 torchserve REST api 调用。但是,您也可以为此使用 chrome 插件 postman

  • 请参考默认处理器以了解默认处理器。

  • 请参考自定义处理器以了解自定义处理器。

使用案例

提供 PyTorch 渴望模式模型服务

提供 PyTorch 脚本模式模型服务

在 Torchserve 模型库上提供现成的模型服务

安全模型服务

在 GPU 上提供模型服务

提供没有第三方依赖项的自定义模型服务

提供有第三方依赖项的自定义模型服务

提供用于 A/B 测试的模型服务

部署 PyTorch 渴望模式模型

部署模型的步骤

  • Torch 渴望模式模型创建 MAR 文件

    torch-model-archiver --model-name <your_model_name> --version 1.0 --model-file <your_model_file>.py --serialized-file <your_model_name>.pth --handler <default_handler> --extra-files ./index_to_name.json
    mkdir model_store
    mv <your_model_name>.mar model_store/
    
    • Docker - 可以直接在 docker 上构建 MAR 文件,有关详细信息,请参阅

  • 将 MAR 文件放在一个新目录中,将其命名为 model-store(可以是任何名称)

    • Docker - 确保在启动 torchserve docker 镜像时将 MAR 文件复制到共享的卷/目录中

  • 使用以下命令启动 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 这不适用。

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 检查模型是否已成功注册,如 curl http://localhost:8081/models/<your_model_name>

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl api 调用进行推理 - curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

预期结果

  • 能够部署任何脚本模型

  • 能够使用部署的模型进行推理

部署 PyTorch 脚本模式模型

先决条件

  • 假设您有一个 torchscripted 模型,如果没有,请按照此示例中的说明将您的渴望模式模型保存为脚本模型。

部署模型的步骤

  • Torch 脚本模型创建 MAR 文件

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <default_handler>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 docker 上构建 MAR 文件,有关详细信息,请参阅

  • 将 MAR 文件放在一个新目录中,将其命名为 model-store(可以是任何名称)

    • Docker - 确保在启动 torchserve docker 镜像时将 MAR 文件复制到共享的卷/目录中

  • 使用以下命令启动 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 这不适用。

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 检查模型是否已成功注册,如 curl http://localhost:8081/models/<your_model_name>

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl api 调用进行推理 - curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

预期结果

  • 能够部署任何脚本模型

  • 能够使用部署的模型进行推理

示例

  • ../examples/image_classifier

在 Torchserve 模型库上提供现成的模型服务

此使用案例演示了基于Torch Hubvision 模型(分类器、目标检测器、分割器)的部署,这些模型可在Torchserve 模型库上找到。使用这些步骤来部署**公开托管**的模型。

部署模型的步骤

  • 使用以下命令启动 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 这不适用。

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=https://<public_url>/<your model_name>.mar"

  • 检查模型是否已成功注册,如 curl http://localhost:8081/models/<your_model_name>

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl api 调用进行推理 - curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

预期结果

  • 能够部署模型库中提供的任何模型

  • 能够使用部署的模型进行推理

示例

安全模型服务

此使用案例演示了用于安全模型服务的 Torchserve 部署。此处采用的示例使用渴望模式模型,但您也可以部署脚本模型。

部署模型的步骤

  • Torch 渴望模式模型创建 MAR 文件

    torch-model-archiver --model-name <your_model_name> --version 1.0 --model-file <your_model_file>.py --serialized-file <your_model_name>.pth --handler <default_handler> --extra-files ./index_to_name.json
    mkdir model_store
    mv <your_model_name>.mar model_store/
    
    • Docker - 可以直接在 docker 上构建 MAR 文件,有关详细信息,请参阅

  • 将 MAR 文件放在一个新目录中,将其命名为 model-store(可以是任何名称)

    • Docker - 确保在启动 torchserve docker 镜像时将 MAR 文件复制到共享的卷/目录中

  • 创建 config.properties 文件,其中包含启用 SSL中给出的选项 1 或 2 的参数

  • 使用上面创建的属性文件启动 torchserve,如 - torchserve --start --ncs --model-store <model_store or your_model_store_dir> --ts-config <your_path>/config.properties

    • Docker - docker run --rm -p 127.0.0.1:8443:8433 -p 127.0.0.1:8444:8444 -p 127.0.0.1:8445:8445 -v <local_dir>/model-store:/home/model-server/model-store <your_docker_image> torchserve --model-store=/tmp/models --ts-config <your_path>/config.properties

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -k -v -X POST "https://localhost:8081/models?initial_workers=1&synchronous=true&url=https://<s3_path>/<your model_name>.mar"

  • 检查模型是否已成功注册,使用以下命令:curl -k https://localhost:8081/models/<your_model_name>

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl API 调用进行推理:curl -k https://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

    注意 curl 命令中使用了 https 和 -k 选项。如果您有必要的密钥,可以使用其他选项,例如 -key 等,来代替 -k。

预期结果

  • 能够部署 torchserve 并通过 HTTPS 访问 API

示例/参考

  • https://github.com/pytorch/serve/blob/master/docs/configuration.md#enable-ssl

在 GPU 上服务模型

此用例演示了在 GPU 上部署 torchserve。这里使用的示例使用脚本模式模型,但您也可以部署 Eager 模型。

先决条件

  • 假设您有一个 torch 脚本模型,如果没有,请按照此处的说明 示例 将您的 Eager 模式模型保存为脚本模型。

部署模型的步骤

  • Torch 脚本模型创建 MAR 文件

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <default_handler>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 docker 上构建 MAR 文件,有关详细信息,请参阅

  • 将 MAR 文件移动到一个新目录中,并将其命名为 model-store

    • Docker - 确保在启动 torchserve docker 镜像时将 MAR 文件复制到共享的卷/目录中

  • 以下说明中的 torchserve 启动命令将自动检测 GPU 并用于加载/服务模型。如果您想 限制 GPU 使用率,则可以使用 nvidia-smi 确定 GPU 的数量和相应的 ID。获得 GPU 详细信息后,可以在 config.proerties 中添加 number_of_gpu 参数,并使用下一条指令中给出的第二个命令。例如:number_of_gpu=2

  • 使用所有 GPU 启动 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>。使用受限的 GPU - torchserve --start --ncs --model-store <model_store or your_model_store_dir> --ts-config <your_path>/config.properties

    • Docker - 对于所有 GPU docker run --rm -it --gpus all -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 torchserve:gpu-latest 对于 GPU 1 和 2 docker run --rm -it --gpus '"device=1,2"' -p 8080:8080 -p 8081:8081 pytorch/torchserve:latest-gpu

    • Docker - 有关详细信息,请参阅 启动 GPU 容器

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 检查模型是否已成功注册,使用以下命令:curl http://localhost:8081/models/<your_model_name> 响应包含指示模型已加载到 GPU 上的标志。

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl api 调用进行推理 - curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

预期结果

  • 能够将任何模型部署到 GPU

  • 能够使用部署的模型进行推理

服务没有第三方依赖项的自定义模型

此用例演示了对没有 Python 依赖项(除了 PyTorch 和相关库)的自定义模型进行 torchserve 部署。这里使用的示例使用脚本模式模型,但您也可以部署 Eager 模型。

先决条件

  • 假设您有一个 torch 脚本模型,如果没有,请按照此处的说明 示例 将您的 Eager 模式模型保存为脚本模型。

部署模型的步骤

  • 创建 <your_custom_handler_py_file>

  • Torch 脚本模型创建 MAR 文件

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <**path/to/your_custom_handler_py_file**>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 docker 上构建 MAR 文件,有关详细信息,请参阅

  • 将 MAR 文件放在一个新目录中,将其命名为 model-store(可以是任何名称)

    • Docker - 确保在启动 torchserve docker 镜像时将 MAR 文件复制到共享的卷/目录中

  • 使用以下命令启动 torchserve - torchserve --start --ncs --model-store <model_store or your_model_store_dir>

    • Docker - 这不适用。

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 检查模型是否已成功注册,如 curl http://localhost:8081/models/<your_model_name>

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl api 调用进行推理 - curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

预期结果

  • 能够使用自定义处理程序部署任何模型

示例

服务具有第三方依赖项的自定义模型

此用例演示了对具有 Python 依赖项(除了 PyTorch 和相关库)的自定义模型进行 torchserve 部署。这里使用的示例使用脚本模式模型,但您也可以部署 Eager 模型。

先决条件

  • 假设您有一个 torchscripted 模型,如果没有,请按照此示例中的说明将您的渴望模式模型保存为脚本模型。

部署模型的步骤

  • 创建 <your_custom_handler_py_file>,它使用第三方 Python 包(例如 fairseq)用于预训练的 NMT 模型

  • 创建一个 requirements.txt 文件,其中包含 fairseq Python 包名称的条目

  • torch 脚本模型 创建一个包含 requirements.txt 的 MAR 文件

    torch-model-archiver --model-name <your_model_name> --version 1.0  --serialized-file <your_model_name>.pt --extra-files ./index_to_name.json --handler <**path/to/your_custom_handler_py_file**> --requirements-file <your_requirements_txt>
    mkdir model-store
    mv <your_model_name>.mar model-store/
    
    • Docker - 可以直接在 docker 上构建 MAR 文件,有关详细信息,请参阅

  • 将 MAR 文件放在一个新目录中,将其命名为 model-store(可以是任何名称)

    • Docker - 确保在启动 torchserve docker 镜像时将 MAR 文件复制到共享的卷/目录中

  • 在 config.properties 文件中添加以下参数:install_py_dep_per_model=true。有关详细信息,请参阅 允许模型特定的自定义 Python 包

  • 使用以下命令和 config.properties 文件启动 torchserve:torchserve --start --ncs --model-store <model_store or your_model_store_dir> --ts-config <your_path>/config.properties

    • Docker - `docker run –rm -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 -v <local_dir>/model-store:/home/model-server/model-store <your_docker_image> torchserve –model-store=/tmp/models –ts-config <your_path>/config.properties

  • 注册模型,即步骤 1 中创建的 MAR 文件,如 curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=<your model_name>.mar"

  • 检查模型是否已成功注册,如 curl http://localhost:8081/models/<your_model_name>

  • 根据您预期的负载类型扩展工作程序。我们在上面的注册请求中将 min-worker 设置为 1。 curl -v -X PUT "http://localhost:8081/models/<your model_name>?min_worker=1&synchronous=true”

  • 使用以下 curl api 调用进行推理 - curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>。您也可以使用 Postman GUI 工具进行 HTTP 请求和响应。

预期结果

  • 能够部署具有第三方 Python 依赖项的自定义处理程序的任何模型

示例和参考

为 A/B 测试服务模型

此用例演示了使用版本 API 服务同一模型的两个或多个版本。它是上述任何用例的扩展。

先决条件

  • 您已遵循上述任何步骤,并且拥有一个正在运行的 torchserve 设置以及已安装的 torch-model-archiver。

部署模型的步骤

  • 创建一个具有 1.0 版或根据需求创建的模型(即 mar 文件)。按照上面给出的步骤创建模型文件,例如 torch-model-archiver –model-name –version 1.0 –model-file model.py –serialized-file.pth –extra-files index_to_name.json –handler.py

  • 创建另一个具有 2.0 版或根据需求创建的模型(即 mar 文件),例如 torch-model-archiver –model-name –version 2.0 –model-file model.py –serialized-file.pth –extra-files index_to_name.json –handler.py

  • 使用初始工作程序注册这两个模型。如果需要,可以使用更新 API 增加工作程序数量。curl -v -X POST "http://localhost:8081/models?initial_workers=1&synchronous=true&url=<your-model-name-X>.mar"

  • 现在,您可以像以下这样调用这些模型:

    • 模型版本 1.0 curl http://localhost:8081/models/<your-model-name-X>/1.0curl http://localhost:8080/predictions/<your-model-name-X>/1.0 -F "[email protected]"

    • 模型版本 2.0 curl http://localhost:8081/models/<your-model-name-X>/2.0curl http://localhost:8080/predictions/<your-model-name-X>/2.0 -F "[email protected]"

预期结果

  • 能够部署同一模型的多个版本

示例和参考

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源