Win11 + docker + tensorflow serving 完成模型部署_did you forget to name your leaf directory as a nu-程序员宅基地

技术标签: tensorflow  MLOps  docker  

花了半天的时间调通了在Win11 系统下,如何利用docker + tensorflow serving 实现模型部署。记录一下。 

1. 安装docker 

桌面版网址:Docker Desktop - Docker 

安装过程中可能会出现一些问题,我这里参考了 Docker 简介和安装 - Docker 快速入门

2. 利用Docker 安装 tensorflow serving 

docker pull tensorflow/serving

3. 这里是准备模型有两种方法 

先说第一种方法 

(1)直接官网拉取 tensorflow serving 给的例子 ,代码如下 

mkdir -p \tmp\tfserving
cd /tmp/tfserving
git clone https://github.com/tensorflow/serving

第一行  这里建立一个 tem的文件 下面的子文件夹是 tfserving , 注意这里我用的windows 系统 ,所以是斜杠 \ 。

第二行 找到建立的文件路径 

第三行 下载官方的 tensorflow/serving 注意这里面如果没有 git 工具 可以自己下载一个 并且设置好环境变量 网上资料很多 我这里就不写了 

(2) 

docker run -p 8501:8501 --mount type=bind,source=C:/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,target=/models/half_plus_two -e MODEL_NAME=half_plus_two -t tensorflow/serving '&'

这步输入后得到了 

这时候再打开一个cmd 命令窗口,输入 下面的代码  

(3)

curl -XPOST http://localhost:8501/v1/models/half_plus_two:predict -d "{\"instances\":[1.0, 2.0, 5.0]}"

结果为 : 

 

这是官方的方法。

第二种 自己建立了一个模型 。

(1)自己训练一个简单的模型 

import pathlib

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

xn = np.array([-1, 0, 1, 2, 3, 4, 5, 6])
yn = np.array([-3, -1, 1, 3, 5, 7, 9, 11])

# single neuron
models = tf.keras.models.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
models.compile(optimizer='sgd', loss='mean_squared_error')
models.fit(xn, yn, epochs=500)
export_dir = 'DL_Model_Save'
tf.saved_model.save(models, export_dir)      # 存放了一个原始训练的 DL 模型

 这时候DL_Model_Save 文件下面是这样的 

但是这里面没有版本信息, 所以需要改一下 在  DL_Model_Save 文件下面 建立一个文件下 叫做 

我 assets variables saved_model.pb 放到0001文件夹下面 

这里面之所以这样做是因为一定要一个类似版本信息,否则会报错 :

Did you forget to name your leaf directory as a number (eg. '/1/')?

 (2) 剩下的基本和方法1 一样但是需要改一些路径 

docker run -p 8501:8501 --mount type=bind,source=C:/tmp/tfserving/serving/tensorflow_serving/servables/tensorflow/testdata/DL_Model_Save,target=/models/DL_Model_Save -e MODEL_NAME=DL_Model_Save -t tensorflow/serving '&'

红色地方是与上面第一种方法不同的地方,可以看到就是改了一些路径。 

(3)再打开一个cmd 文件 输入 

curl -XPOST http://localhost:8501/v1/models/DL_Model_Save:predict -d "{\"instances\":[[1],[2]]}"

注意这里面json 数据的格式稍微有点不同 因为是训练模型时候不太一样。 

最终得到结果 : 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chwei20002005/article/details/126750835

智能推荐

JVM的StackMapTable的前世今生-程序员宅基地

文章浏览阅读2.3k次。在Java 6版本之后JVM在class文件中引入了栈图(StackMapTable)。作用为了提高JVM在类型检查的验证过程的效率栈图结构位于Code属性(指Classfile的Code属性)的属性表( attributes table)结构中。在字节码的Code属性中最多包含一个StackMapTable属性。在Java 7版本之后把栈图作为字节码文件中的强制部分。 本来程序员是不..._stackmaptable

c语言实训 选择结构程序设计,实验3 程序流程设计——选择结构程序设计.doc-程序员宅基地

文章浏览阅读280次。实验3 程序流程设计——选择结构程序设计淮海工学院计算机科学系实验报告书课程名:《 C语言程序设计A 》题 目: 实验2 程序流程设计—— 选择结构程序设计班 级: 软嵌151学 号: 2015123349姓 名: 陈正宁实验内容或题目编写一个程序,输入一个字母,若为大写字母,将其转换为小写字母后输出,否则原样输出..._c语言选择结构的应用实训目地

中断异常的分析思路_sensor采集中断-程序员宅基地

文章浏览阅读517次。工作学习中经常遇到中断相关的issue,我一般会从 中断源 (ic)-- 驱动层 -- SDK 逐层分析。往往解决的比较快。举一个例子,下面给出分析过程。问题描述: 开机过程中指纹driver有大量异常中断触发log 问题分析: 首先,我们要确定的是,这些异常中断是怎么来的。有以下三种case。 1.软件误报2.cpu主动发出的信号3.指纹sensor发出的信号 针对软件误报,只需要 cat ..._sensor采集中断

斧子的HTML5输出是什么,CF斧有什么使用技巧 斧子使用经验分享【详解】-程序员宅基地

文章浏览阅读82次。很多人知道斧子很牛,但就是用不好,所以好多人练了一段时间就放弃了,其实斧子练习有一些问题是需要注意的,下面就结合一下我个人练习斧子的经验,和大家分享一下,希望能对大家的练习提供一些帮助。1.拿起斧子要有信心和决心因为斧子有无视头盔的特点,所以面对其他武器,不应该有任何畏惧的心理(当然不能傻傻的向前冲然后白白送死),就像阿卡选手一样,要有一击毙命的信心和决心,因为在刀战战场上,心态很重要。有一个好的...

nginx配合fastdfs使用-----python上传测试_fastdfs python 上传-程序员宅基地

文章浏览阅读176次。开始前需要先准备好fdfs的环境https://blog.csdn.net/weixin_44834666/article/details/105686059一、安装py3Fdfs包pip install py3Fdfs二、编辑py文件from fdfs_client.client import Fdfs_client, get_tracker_conf# 创建客户端 client...._fastdfs python 上传

plsql创建用户,创建表空间以及删除用户,删除表空间_plsql删除创建的用户-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏5次。1.创建表空间create tablespace [表空间名:例如{newszgcp}]datafile [表空间所在地址:例如{'D:/StudySoft/OrServer/admin/orcl/newszgcp'}]size [表空间大小:100M ]autoextend on next [扩展:50M ] maxsize unlimited; 2.创建用户create..._plsql删除创建的用户

随便推点

28款GitHub最流行的开源机器学习项目_github 学习开源项目分类集合-程序员宅基地

文章浏览阅读1.8w次,点赞4次,收藏37次。28款GitHub最流行的开源机器学习项目(一):TensorFlow排榜首 readygo 浏览 673 2016-04-18 20:31:12机器学习开源githubTensorFlow摘要现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习得到了十分广泛的应用,如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、DNA序列测_github 学习开源项目分类集合

javamail发送邮件的简单实例-程序员宅基地

文章浏览阅读65次。今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用。呵呵以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。第一个类:MailSenderInfo.javapackage com.util.mail;/** * 发送邮件需要使用的基本信息 *auth...

Rails 5 Test Prescriptions 第14章 Testing Exteranl Services(中断。)-程序员宅基地

文章浏览阅读68次。external testing strategy the service integration testintroduce VCRClient Unit Tests Why an Adapter?Testing for Error CasesSmoke Tests and VCR Options 冒烟测试!

MATLAB-MONTA离散元建模程序_matlab处理离散元问题-程序员宅基地

文章浏览阅读3.5k次。下载 >  信息化 >  其它 > 基于蒙特卡罗法的二维随机裂隙模拟Matlab程序 ..._matlab处理离散元问题

如何高效的向新手程序员们介绍编程语言?_怎么宣传编程语言-程序员宅基地

文章浏览阅读463次。学习Java,他们都说很easy。作为一名刚从斯康星大学麦迪逊分校计算机科学系毕业的大学生,我通过一些编程课程认识了很多使用Java的朋友。现在很多学校都在从别的编程语言(大多是C ++)转教Java,一项于2014年7月所做的研究表面截至调查时间为止,39个顶级美国CS项目已经有22个使用Java作为入门课程。那么,到底是什么使得Java能从众多的教学语言中脱颖而出?纵观各个方面,我们发_怎么宣传编程语言

构造方法对象的创建步骤static关键字_1)在student类中创建多个重载的构造方法,包括无参的构造方法、一个参数的构造方法-程序员宅基地

文章浏览阅读543次。构造方法/对象的创建步骤/static关键字/继承方inal法的重写/Final构造方法概述和格式A:构造方法的概述和格式​ 创建对象,给对象中的成员进行初始化B:构造方法格式特点​ a:方法名与类名一样​ b:没有返回值类型,连void都没有​ c:没有具体的返回值构造方法的重载及注意事项A:案例​ 构造方法的重载B:构造方法注意事项​ a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。​ b:如果我们给出了有参数的构造方法,系统将不再提供默认的无参构造方法。​_1)在student类中创建多个重载的构造方法,包括无参的构造方法、一个参数的构造方法