Docker用model.config部署及更新多个模型

步骤:

1、本地打包模型

2、编写model.config文件

3、使用 Docker 启动一个 TensorFlow Serving 容器

4、本地打包后的模型修改后,修改本地model.config,再同步更新容器的model.config

1、本地打包模型(本地路径)

2、编写model.config文件

powershell 复制代码
model_config_list:{
    config:{
        name: "model_1",
        base_path: "/models/model_1",
        model_platform: "tensorflow"
    },
    config:{
        name: "model_2",
        base_path: "/models/model_2",
        model_platform: "tensorflow"
    }
}

3、使用 Docker 启动一个 TensorFlow Serving 容器

bash 复制代码
docker run 
-p 8500:8500 
-p 8501:8501 
--mount type=bind,source=/save_data/tfs_model/,target=/models/ 
-t tensorflow-serving:2.6.0 
--model_config_file=/models/models.config 
-v /save_data/tfs_model/models.config:/models/models.config 
--allow_version_labels_for_unavailable_models &

注意!注意!注意!
target后面的/models/是固定写法,不能修改。
就是将本地的source路径与容器的target路径,进行映射,本地source下的文件夹与容器target文件夹进行内容共享。model.config中的base_path写路径映射后模型在容器中的路径。

命令解析:

  1. docker run
    这是 Docker 的核心命令,用于创建并启动一个新的容器。
  2. -p 8500:8500 -p 8501:8501
    这部分指定了端口映射:
    8500:8500 表示将宿主机的 8500 端口映射到容器的 8500 端口。
    8501:8501 表示将宿主机的 8501 端口映射到容器的 8501 端口。
    TensorFlow Serving 默认使用 8500 端口进行 gRPC 通信,8501 端口用于 HTTP/REST API 通信,通过这种方式,宿主机可以访问容器内的 TensorFlow Serving 服务。
  3. --mount type=bind,source=/save_data/tfs_model/,target=/models/
    这部分指定了挂载卷:
    --mount 是 Docker 的挂载选项,用于将宿主机的目录或文件挂载到容器内部。
    type=bind 表示使用绑定挂载的方式,将宿主机的文件系统直接映射到容器中。
    source=/save_data/tfs_model/ 指定宿主机上的目录路径,这里是 /save_data/tfs_model/。
    target=/models/ 指定容器内的目标路径,这里是 /models/。
    这样,宿主机的 /save_data/tfs_model/ 目录中的内容会被直接映射到容器的 /models/ 目录中,方便模型文件的共享和访问。
  4. -t tensorflow-serving:2.6.0
    -t 是 Docker 的选项,用于指定容器的名称或标签。
    tensorflow-serving:2.6.0 是 TensorFlow Serving 的 Docker 镜像名称和版本号,表示使用 TensorFlow Serving 2.6.0 版本的镜像来启动容器。
  5. --model_config_file=/models/models.config
    这是 TensorFlow Serving 的一个参数,用于指定模型配置文件的路径:
    --model_config_file 是 TensorFlow Serving 的命令行参数,用于指定模型配置文件的路径。
    /models/models.config 是容器内的路径,指向模型配置文件。这个文件定义了模型的加载和配置信息,例如模型的名称、存储路径等。
  6. -v /save_data/tfs_model/models.config:/models/models.config
    这部分也是挂载卷的操作:
    -v 是 Docker 的挂载选项,与 --mount 类似,用于将宿主机的文件或目录挂载到容器中。
    /save_data/tfs_model/models.config:/models/models.config 表示将宿主机的 /save_data/tfs_model/models.config 文件挂载到容器的 /models/models.config 路径。
    这样,容器可以访问宿主机上的 models.config 文件,确保模型配置的一致性。
  7. --allow_version_labels_for_unavailable_models
    这是 TensorFlow Serving 的另一个参数:
    --allow_version_labels_for_unavailable_models 是 TensorFlow Serving 的一个配置选项,允许为尚未加载的模型版本设置标签。
    这在模型管理中很有用,例如在模型更新或回滚时,可以通过标签快速定位模型版本。
  8. &
    & 是一个 Shell 符号,表示将命令放在后台运行。
    这意味着 Docker 容器将在后台启动,不会阻塞当前终端。

4、同步更新容器的model.config(需修改本地IP)

python 复制代码
config_file = "/save_data/tfs_model/models.config"
channel = grpc.insecure_channel("本地ip:8500")
stub = model_service_pb2_grpc.ModelServiceStub(channel)
request = model_management_pb2.ReloadConfigRequest()

# 读取配置文件内容
config_content = open(config_file, "r").read()
model_server_config = model_server_config_pb2.ModelServerConfig()
model_server_config = text_format.Parse(text=config_content, message=model_server_config)

# 设置请求内容
request.config.CopyFrom(model_server_config)

# 发送请求
request_response = stub.HandleReloadConfigRequest(request, 10)
if request_response.status.error_code == 0:
    print("TF_Serving配置文件已更新.")
else:
    print("TF_Serving配置文件更新失败.")
    print(str(request_response.status.error_code))
    print(str(request_response.status.error_message))
相关推荐
ybb7046301 小时前
linux第二次作业
linux·运维·服务器
大白同学4212 小时前
【Linux】进程间通信
linux·运维·服务器
..Move...3 小时前
Docker镜像制作
运维·docker·容器
码龄3年 审核中9 小时前
说说SSH的端口转发
大数据·运维·ssh
盛世隐者9 小时前
【Linux】定制Linux系统
linux·运维·服务器
行思理9 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器
..Move...10 小时前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
Lxt.星翊11 小时前
MySQL(安装和卸载、数据库存储原理图)
linux·运维·windows
苹果醋311 小时前
JAVA面试汇总(二)多线程(五)
运维·vue.js·spring boot·nginx·课程设计
JustNow_Man12 小时前
Cline中模型识别任务与clinerules相关性的实现逻辑
linux·运维·ubuntu