Docker 当使用自定义容器进行预测时,如何在统一AI平台上访问模型端点的工件?
由于VPC的某些限制,我不得不使用自定义容器对Tensorflow上训练的模型进行预测。根据文档要求,我使用Tensorflow服务创建了一个HTTP服务器。用于生成映像的Dockerfile如下所示:Docker 当使用自定义容器进行预测时,如何在统一AI平台上访问模型端点的工件?,docker,tensorflow,google-cloud-platform,google-cloud-ml,Docker,Tensorflow,Google Cloud Platform,Google Cloud Ml,由于VPC的某些限制,我不得不使用自定义容器对Tensorflow上训练的模型进行预测。根据文档要求,我使用Tensorflow服务创建了一个HTTP服务器。用于生成映像的Dockerfile如下所示: FROM tensorflow/serving:2.3.0-gpu # Set where models should be stored in the container ENV MODEL_BASE_PATH=/models RUN mkdir -p ${MODEL_BASE_PATH}
FROM tensorflow/serving:2.3.0-gpu
# Set where models should be stored in the container
ENV MODEL_BASE_PATH=/models
RUN mkdir -p ${MODEL_BASE_PATH}
# copy the model file
ENV MODEL_NAME=my_model
COPY my_model /models/my_model
EXPOSE 5000
EXPOSE 8080
CMD ["tensorflow_model_server", "--rest_api_port=8080", "--port=5000", "--model_name=my_model", "--model_base_path=/models/my_model"]
其中my\u model
包含名为1/
的文件夹中的已保存的\u model
。然后我将容器图像推送到Google容器注册中心
现在我想将模型工件
传递给这个定制容器,这样我就不必每次训练新模型时都构建
和推送
一个新的docker映像。但是,在统一AI平台上创建模型时,我无法从我的Dockerfile
中找到如何访问这个新模型(保存在云存储桶中)
根据所述文件,方法如下:
FROM tensorflow/serving:2.3.0-gpu
# Set where models should be stored in the container
ENV MODEL_BASE_PATH=/models
RUN mkdir -p ${MODEL_BASE_PATH}
# copy the model file
ENV MODEL_NAME=my_model
COPY my_model /models/my_model
EXPOSE 5000
EXPOSE 8080
CMD ["tensorflow_model_server", "--rest_api_port=8080", "--port=5000", "--model_name=my_model", "--model_base_path=/models/my_model"]
但是,如果通过指定
artifactUri
字段,则容器必须在
它开始运行。当AI平台启动容器时,它会设置
AIP\u STORAGE\u URI
环境变量,用于
以gs://
开头。您可以下载容器的entrypoint命令
此URI为访问模型而指定的目录
人工制品
但是,如何将入口点
重写到Docker映像中,以便它读取AIP\u STORAGE\u URI
变量
指向基本映像的链接是tensorflow/serving:2.3.0-gpu
任何帮助都将不胜感激。在中,说明了Vertex AI创建并管理在创建模型时传递的模型工件的副本。Vertex AI管理的模型工件存储桶的URI存储在环境变量中。要从这个URI访问模型工件,可以按如下方式编写ENTRYPOINT
命令
ENTRYPOINT tensorflow_model_server --rest_api_port=8080 --port=5000 --model_name=$MODEL_NAME --model_base_path=$AIP_STORAGE_URI
此处使用ENTRYPOINT
命令的shell形式,因为需要访问AIP\u STORAGE\u URI
环境变量。可以找到有关该命令用法的更多信息