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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程