Torchserve 使用案例¶
Torchserve 可用于不同的使用案例。为了方便用户,这里记录了其中一些。
这些使用案例假定您有预先训练的模型,并且 安装在目标系统上。
这应该有助于您将开发环境模型移动到生产/服务环境。torchserve
torch-model-archiver
笔记
如果您尚未安装最新的 torchserve 和 torch-model-archiver,请按照安装说明完成安装
如果计划使用 docker,请确保满足以下先决条件 -
确保您在目标节点上安装了最新的 docker 引擎。如果没有,请使用此链接进行安装。
按照说明使用 docker 进行安装以共享目录并启动 torchserve
model-store
以下用例步骤用于执行 torchserve REST API 调用。但是,您也可以为此使用 chrome 插件。
curl
postman
请参阅 default_handler 以了解默认处理程序。
请参阅 自定义处理程序 以了解自定义处理程序。
使用案例¶
在 torchserve Model Zoo 上提供现成的模型
部署 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 请求和响应。
curl
curl 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 请求和响应。
curl
curl 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 请求和响应。
curl
curl 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 请求和响应。
curl
curl -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=2
nvidia-smi
number_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 和 2
docker run --rm -it --gpus all -p 127.0.0.1:8080:8080 -p 127.0.0.1:8081:8081 torchserve:gpu-latest
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"
检查模型是否已成功注册为 响应包括标志,指示模型已加载到 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 请求和响应。
curl
curl http://localhost:8080/predictions/<your_model_name> -T <your_input_file>
Postman
预期成果
能够将任何模型部署到 GPU
能够使用部署的模型进行推理
提供自定义模型,无需第三方依赖¶
此用例演示了自定义模型的 torchserve 部署,除了 pytorch 和相关库之外,没有 python 依赖项。 此处的示例使用脚本模式模型,但您也可以部署 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 <**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 请求和响应。
curl
curl 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 请求和响应。
curl
curl 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.0
curl 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.0
curl http://localhost:8080/predictions/<your-model-name-X>/2.0 -F "data=@kitten.jpg"
预期成果
能够部署同一模型的多个版本
示例和参考