docker笔记

发布时间 2023-12-27 14:55:23作者: 15375357604

docker设置:

在执行 TensorFlow Serving 容器的命令之前,你需要完成以下 Docker 相关的设置和操作:

  1. 安装 Docker:如果你的系统上尚未安装 Docker,请按照以下步骤进行安装:

    • 对于 Ubuntu 系统:

      shell复制代码
      sudo apt-get update
      sudo apt-get install docker.io
      
    • 对于 CentOS 系统:

      shell复制代码
      sudo yum install docker
      sudo systemctl start docker
      sudo systemctl enable docker
      
    • 对于 macOS 系统,请从 Docker 官网下载并安装 Docker Desktop。

  2. 配置 Docker 用户权限:默认情况下,Docker 命令需要使用 root 权限才能运行。为了以普通用户身份执行 Docker 命令,你可以将当前用户添加到 docker 用户组中:

    shell复制代码
    sudo usermod -aG docker $USER
    

    之后,注销并重新登录,以便更新用户组信息。

  3. 启动 Docker 服务:启动 Docker 服务是确保容器正常运行的重要步骤。对于大多数系统,你可以使用以下命令启动 Docker 服务:

    shell复制代码
    sudo systemctl start docker
    
  4. 拉取 TensorFlow Serving 镜像:通过以下命令拉取 TensorFlow Serving 的镜像:

    shell复制代码
    docker pull tensorflow/serving:2.11.0-gpu
    
  5. 准备模型数据和配置文件:确保你已经准备好了包含模型数据和模型配置文件的目录。根据你的命令示例,模型数据应该位于 /data/rensheng 目录下,而模型配置文件应该位于 /data/rensheng/config 目录下。请确保这些目录存在,并且拥有相应的权限。

  6. 运行 TensorFlow Serving 容器:在完成上述步骤后,你可以使用之前提供的 Docker 命令来启动 TensorFlow Serving 容器。在终端中执行该命令,并确保路径、模型名称等参数与实际情况相符。

  7. 验证模型服务:一旦容器成功启动,你可以验证模型服务是否正常工作。你可以使用 curl 命令发送请求并接收模型返回的结果,或者使用任何其他 HTTP 请求工具(如 Postman)。例如,可以发送以下命令验证是否可以获取模型的元数据:

    shell复制代码
    curl -v http://localhost:8501/v1/models/search

 

 

启动脚本:

docker run -t --rm -p 8500:8500 -p 8501:8501 -v "/data/aa:/models" -v "/data/aa/config:/config" -e MODEL_NAME=search -e TF_CPP_MIN_VLOG_LEVEL=4 tensorflow/serving:2.11.0-gpu --per_process_gpu_memory_fraction=0.8 --enable_batching=true --model_config_file_poll_wait_seconds=60 --model_config_file=/config/model.config > /data/aa/logs/log20230414.log & #sudo docker run -t --rm -p 8500:8500 -p 8501:8501 -v "/data/aa:/models" -v "/data/aa/config:/config" -e MODEL_NAME=search -e TF_CPP_MIN_VLOG_LEVEL=4 tensorflow/serving:latest-gpu --per_process_gpu_memory_fraction=0.8 --enable_batching=true --model_config_file=/config/model.config > /data/aa/logs/log20230228.log &

脚本注释:

这是一个运行 TensorFlow Serving 容器的 Docker 命令。它启动了一个 TensorFlow Serving 实例,将模型配置文件和模型数据挂载到容器中,并通过端口映射使其可以从主机访问。

具体来说,该命令做了以下操作:

  1. 使用 docker run 命令启动一个容器。
  2. -t 参数用于分配一个伪终端(pseudo-TTY)。
  3. --rm 参数表示容器停止后自动删除。
  4. -p 8500:8500 和 -p 8501:8501 参数将容器内的 8500 和 8501 端口映射到主机上的相应端口,以便可以通过这些端口访问 TensorFlow Serving。
  5. -v "/data/rensheng:/models" 将 /data/rensheng 目录中的模型数据挂载到容器的 /models 目录下。
  6. -v "/data/rensheng/config:/config" 将 /data/rensheng/config 目录中的模型配置文件挂载到容器的 /config 目录下。
  7. -e MODEL_NAME=search 设置环境变量 MODEL_NAME 的值为 search,这将告诉 TensorFlow Serving 加载名为 search 的模型。
  8. -e TF_CPP_MIN_VLOG_LEVEL=4 设置 Tensorflow 的日志级别为 4,以便记录更多详细信息。
  9. tensorflow/serving:2.11.0-gpu 是使用的 TensorFlow Serving 镜像的名称和版本。
  10. --per_process_gpu_memory_fraction=0.8 设置每个 GPU 进程可使用的显存比例为 80%。
  11. --enable_batching=true 启用批处理功能,允许同时处理多个请求。
  12. --model_config_file_poll_wait_seconds=60 设置模型配置文件的轮询等待时间为 60 秒。
  13. --model_config_file=/config/model.config 指定模型配置文件的路径为 /config/model.config
  14. > /data/rensheng/logs/log20230414.log 将标准输出重定向到 /data/rensheng/logs/log20230414.log 文件中。这样可以将容器的日志保存到指定位置。
  15. & 将容器的执行放在后台运行。

配置文件:

model_config_list:{

config:{

name:'esm33'

base_path:'/models/esm33'

model_platform:'tensorflow'

}

}

请求测试:

item_sample3 = {
"item_input": [42021, 5202, 5692, 5082, 85220]
}

item_instances = []
item_instances.append(item_sample1)
item_instances.append(item_sample2)
item_instances.append(item_sample3)

def query_tower_predict_example(instance: Vector):
data = json.dumps({"signature_name": "serving_default", "instances": [instance]})
headers = {"content-type": "application/json"}
json_response = requests.post('http://localhost:8501/v1/models/aa_model_name:predict',
data=data, headers=headers)
print("query embedding:")
predictions = json.loads(json_response.text)["predictions"]
return predictions