目录

Torchserve 使用案例

Torchserve 可用于不同的使用案例。为了方便用户,这里记录了其中一些。 这些使用案例假定您有预先训练的模型,并且 安装在目标系统上。 这应该有助于您将开发环境模型移动到生产/服务环境。torchservetorch-model-archiver

笔记

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

  • 如果计划使用 docker,请确保满足以下先决条件 -

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

    • 按照说明使用 docker 进行安装以共享目录并启动 torchservemodel-store

  • 以下用例步骤用于执行 torchserve REST API 调用。但是,您也可以为此使用 chrome 插件。curlpostman

  • 请参阅 default_handler 以了解默认处理程序。

  • 请参阅 自定义处理程序 以了解自定义处理程序。

使用案例

Serve pytorch Eager 模式模型

提供 pytorch 脚本模式模型

在 torchserve Model Zoo 上提供现成的模型

安全的模型服务

在 GPU 上提供模型

提供自定义模型,无需第三方依赖

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

为 A/B 测试提供模型

部署 pytorch Eager 模式模型

部署模型的步骤

  • torch eager 模型创建 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”

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

预期成果

  • 能够部署任何脚本化模型

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

部署 pytorch 脚本模式模型

先决条件

  • 假设你有一个 torchscripted 模型,如果没有,那么按照此示例中的说明将你的 eager 模式模型保存为 scripted 模型。

部署模型的步骤

  • 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”

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

预期成果

  • 能够部署任何脚本化模型

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

例子

  • ../examples/image_classifier

在 torchserve Model Zoo 上提供现成的模型

此用例演示了 torchserve Model Zoo 上可用的基于 torch hub 的模型(分类器、对象检测器、分割器)的部署。 也可以使用这些步骤来部署公有托管的模型。vision

部署模型的步骤

  • 使用以下命令启动 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”

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

预期成果

  • 能够部署 Model Zoo 中可用的任何模型

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

例子

安全的模型服务

此用例演示了用于安全模型服务的 torchserve 部署。 此处的示例使用 Eager 模式模型,但您也可以部署脚本化模型。

部署模型的步骤

  • torch eager 模型创建 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 文件复制到共享的卷/目录中

  • 使用启用 SSL 中给定的参数选项 1 或 2 创建文件config.properties

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

    • 码头工人-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”

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

    请注意在 curl 命令中使用 https 和 -k 选项。如果你有需要的 key,你可以使用其他选项来代替 -k,比如 -key 等。

预期成果

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

示例/参考

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

在 GPU 上提供模型

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

先决条件

  • 假设你有一个 torchscripted 模型,如果没有,那么按照此示例中的说明将你的 eager 模式模型保存为 scripted 模型。

部署模型的步骤

  • 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 start 命令将自动检测 GPU 并用于加载/提供模型。如果要限制 GPU 的使用,请使用 来确定 GPU 的数量和相应的 ID。获得 gpu 详细信息后,您可以在 config.proerties 中添加 param 并按照给定的下一个指令使用第二个命令。 例如 number_of_gpu=2nvidia-sminumber_of_gpu

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

    • Docker - 适用于所有 GPU 对于 GPU 1 和 2docker run --rm -it --gpus all -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 torchserve:gpu-latestdocker 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"

  • 检查模型是否已成功注册为 响应包括标志,指示模型已加载到 GPU 上。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”

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

预期成果

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

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

提供自定义模型,无需第三方依赖

此用例演示了自定义模型的 torchserve 部署,除了 pytorch 和相关库之外,没有 python 依赖项。 此处的示例使用脚本模式模型,但您也可以部署 Eager 模型。

先决条件

  • 假设你有一个 torchscripted 模型,如果没有,那么按照此示例中的说明将你的 eager 模式模型保存为 scripted 模型。

部署模型的步骤

  • 创建 <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”

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

预期成果

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

例子

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

此用例演示了除 pytorch 和相关库之外,还对具有 python 依赖项的自定义模型的 torchserve 部署。 此处的示例使用脚本模式模型,但您也可以部署 Eager 模型。

先决条件

  • 假设你有一个 torchscripted 模型,如果没有,那么按照此示例中的说明将你的 eager 模式模型保存为 scripted 模型。

部署模型的步骤

  • 创建使用第三方 python 包(如 fairseq)进行预训练 NMT 模型的 <your_custom_handler_py_file>

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

  • 使用 requirements.txt 为 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**> --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 文件 - 。有关详细信息,请参阅 允许特定于模型的自定义 python 包install_py_dep_per_model=true

  • 使用以下命令和 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”

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

预期成果

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

示例和参考

为 AB 测试提供模型

此用例演示了如何使用版本 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

  • 将这两个模型注册到初始 worker。如果需要,您可以使用 update api 增加 worker。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 "data=@kitten.jpg"

    • 型号版本 2.0 或curl http://localhost:8081/models/<your-model-name-X>/2.0curl http://localhost:8080/predictions/<your-model-name-X>/2.0 -F "data=@kitten.jpg"

预期成果

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

示例和参考

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源