使用Docker部署流程#
使用docker部署流程有两个步骤:
将流程构建为docker格式。
构建并运行docker镜像。
构建一个以docker格式的流程#
使用以下命令以docker格式构建流程:
pf flow build --source <path-to-your-flow-folder> --output <your-output-dir> --format docker
在可视化编辑器中,选择:
点击下面的按钮以构建一个docker格式的流程:
请注意,所有依赖的连接必须在导出为docker之前创建。
Docker 格式文件夹结构#
导出的 Dockerfile 及其依赖项位于同一文件夹中。结构如下:
flow: 该文件夹包含所有的流程文件
…
connections: 该文件夹包含用于创建所有相关连接的yaml文件
…
Dockerfile: 用于构建镜像的dockerfile
start.sh: 用于
Dockerfile
中CMD
的脚本,用于启动服务runit: 该文件夹包含所有的runit脚本
…
settings.json: 一个用于存储docker镜像设置的json文件
README.md: 文件的简单介绍
使用Docker部署#
我们将使用web-classification作为示例来展示如何使用docker进行部署。
请确保您已经创建了流程所需的连接,如果没有,您可以参考为网络分类设置连接。
构建一个流作为docker格式的应用程序#
使用以下命令将流程构建为docker格式的应用程序:
pf flow build --source ../../flows/standard/web-classification --output dist --format docker
请注意,所有依赖的连接必须在导出为docker之前创建。
构建Docker镜像#
与其他Dockerfile一样,您需要先构建镜像。您可以使用任何您想要的名称来标记镜像。在这个例子中,我们使用web-classification-serve
。
运行以下命令来构建镜像:
docker build dist -t web-classification-serve
运行Docker镜像#
运行docker镜像将启动一个服务来提供容器内的流程。
连接#
如果服务涉及连接,所有相关连接将作为yaml文件导出并在容器中重新创建。 连接中的秘密不会直接导出。相反,我们将它们导出为对环境变量的引用:
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/OpenAIConnection.schema.json
type: open_ai
name: open_ai_connection
module: promptflow.connections
api_key: ${env:OPEN_AI_CONNECTION_API_KEY} # env reference
您需要在容器中设置环境变量以使连接正常工作。
使用 docker run
# 运行
使用flask
服务引擎运行#
您可以直接通过以下命令运行docker镜像,这将默认使用flask
服务引擎:
# The started service will listen on port 8080.You can map the port to any port on the host machine as you want.
docker run -p 8080:8080 -e OPEN_AI_CONNECTION_API_KEY=<secret-value> -e PROMPTFLOW_WORKER_NUM=<expect-worker-num> -e PROMPTFLOW_WORKER_THREADS=<expect-thread-num-per-worker> web-classification-serve
请注意:
PROMPTFLOW_WORKER_NUM
: 可选设置,它控制容器中启动多少个工作线程,默认值为8。PROMPTFLOW_WORKER_THREADS
: 可选设置,它控制在一个工作线程中启动多少个线程,默认值为1。此设置仅适用于flask引擎
使用fastapi
服务引擎运行#
从 pf 1.10.0 开始,我们支持新的基于 fastapi
的服务引擎,您可以通过以下命令选择使用 fastapi
服务引擎:
# The started service will listen on port 8080.You can map the port to any port on the host machine as you want.
docker run -p 8080:8080 -e OPEN_AI_CONNECTION_API_KEY=<secret-value> -e PROMPTFLOW_SERVING_ENGINE=fastapi -e PROMPTFLOW_WORKER_NUM=<expect-worker-num> web-classification-serve
请注意:
PROMPTFLOW_WORKER_NUM
: 可选设置,它控制容器中启动多少个工作线程,默认值为8。PROMPTFLOW_SERVING_ENGINE
: 可选设置,它控制容器中使用哪种服务引擎,默认值为flask
,目前仅支持flask
和fastapi
。
测试端点#
启动服务后,您可以使用curl进行测试:
curl http://localhost:8080/score --data '{"url":"https://play.google.com/store/apps/details?id=com.twitter.android"}' -X POST -H "Content-Type: application/json"
下一步#
尝试示例 这里.
查看如何使用kubernetes部署流程。