docker笔记
docker设置:
在执行 TensorFlow Serving 容器的命令之前,你需要完成以下 Docker 相关的设置和操作:
-
安装 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。
-
-
配置 Docker 用户权限:默认情况下,Docker 命令需要使用 root 权限才能运行。为了以普通用户身份执行 Docker 命令,你可以将当前用户添加到
docker用户组中:shell复制代码sudo usermod -aG docker $USER之后,注销并重新登录,以便更新用户组信息。
-
启动 Docker 服务:启动 Docker 服务是确保容器正常运行的重要步骤。对于大多数系统,你可以使用以下命令启动 Docker 服务:
shell复制代码sudo systemctl start docker -
拉取 TensorFlow Serving 镜像:通过以下命令拉取 TensorFlow Serving 的镜像:
shell复制代码docker pull tensorflow/serving:2.11.0-gpu -
准备模型数据和配置文件:确保你已经准备好了包含模型数据和模型配置文件的目录。根据你的命令示例,模型数据应该位于
/data/rensheng目录下,而模型配置文件应该位于/data/rensheng/config目录下。请确保这些目录存在,并且拥有相应的权限。 -
运行 TensorFlow Serving 容器:在完成上述步骤后,你可以使用之前提供的 Docker 命令来启动 TensorFlow Serving 容器。在终端中执行该命令,并确保路径、模型名称等参数与实际情况相符。
-
验证模型服务:一旦容器成功启动,你可以验证模型服务是否正常工作。你可以使用 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 实例,将模型配置文件和模型数据挂载到容器中,并通过端口映射使其可以从主机访问。
具体来说,该命令做了以下操作:
- 使用
docker run命令启动一个容器。 -t参数用于分配一个伪终端(pseudo-TTY)。--rm参数表示容器停止后自动删除。-p 8500:8500和-p 8501:8501参数将容器内的 8500 和 8501 端口映射到主机上的相应端口,以便可以通过这些端口访问 TensorFlow Serving。-v "/data/rensheng:/models"将/data/rensheng目录中的模型数据挂载到容器的/models目录下。-v "/data/rensheng/config:/config"将/data/rensheng/config目录中的模型配置文件挂载到容器的/config目录下。-e MODEL_NAME=search设置环境变量MODEL_NAME的值为search,这将告诉 TensorFlow Serving 加载名为search的模型。-e TF_CPP_MIN_VLOG_LEVEL=4设置 Tensorflow 的日志级别为 4,以便记录更多详细信息。tensorflow/serving:2.11.0-gpu是使用的 TensorFlow Serving 镜像的名称和版本。--per_process_gpu_memory_fraction=0.8设置每个 GPU 进程可使用的显存比例为 80%。--enable_batching=true启用批处理功能,允许同时处理多个请求。--model_config_file_poll_wait_seconds=60设置模型配置文件的轮询等待时间为 60 秒。--model_config_file=/config/model.config指定模型配置文件的路径为/config/model.config。> /data/rensheng/logs/log20230414.log将标准输出重定向到/data/rensheng/logs/log20230414.log文件中。这样可以将容器的日志保存到指定位置。&将容器的执行放在后台运行。
配置文件:
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

浙公网安备 33010602011771号