TensorFlow Serving https://tensorflow.github.io/serving/ 。

生产环境灵活、高性能机器学习模型服务系统。适合基于实际数据大规模运行,产生多个模型训练过程。可用于开发环境、生产环境。

模型生命周期管理。模型先数据训练,逐步产生初步模型,优化模型。模型多重算法试验,生成模型管理。客户端(Client)向TensorFlow Severing请求模型,TensorFlow Severing返回适当模型给客户端。TensorFlow Serving、gRPC(谷歌公司开源高性能、跨语言RPC框架),提供跨语言RPC接口,不同编程语言都可以访问模型。

TensorFlow Serving代码 https://hithub.com/tensorflow/serving 。源代码Bazel编译安装 https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/setup.md ,Docker安装。https://www.tensorflow.org/serving/setup 。结合TensorFlow Serving,训练好模型,创建Docker镜像,推送到Google Container Registry https://cloud.google.com/container-registry/docs/ 。模型在谷歌云平台(Google Cloud Platform)运行。Kubernetes成功部署模型服务。Serving Inception Model with TensorFlow Serving and Kubernetes https://tensorflow.github.ic/serving/serving_inception 。Google ML Engine,全托管TensorFlow平台,训练模型一键转换预测服务。

TensorFlow Flod https://github.com/tensorflow/fold ,《Deep Learning with Dynamic Computation Graphs》https://openreview.net/pdf?id=ryrGawqex 。深度学习过程,模型训练数据预处理,不同结构数据剪裁成相同维度、尺寸,划分成批,进入训练流程。静态图模型,缺点,输入数据无法一般预处理,模型针对不同输入数据建立不同计算图(computation graph)分别训练,没有充分利用处理器、内存、高速缓存。
TensorFlow Fold(现在还出了Eager模式,可以对比学习),根据不同结构输入数据建立动态计算图(dynamic computation),根据每个不同输入数据建立不同计算图。动态批处理(dynamic batching)自动组合计算图,实现输入数据内部批处理,批处理单个输入图内不同节点,不同输入数据间批处理,批处理不同输入图间运算。可插入附加指令在不同批处理操作间移动数据。简化模型训练阶段输入数据预处理过程。CPU模型运行速度提高10倍以上,GPU提高100倍。

TensorFlow计算加速。GPU设备,XLA 框架融合OP,分布式计算、参数部分分布到不同机器,硬件计算,CPU更高级指令集SSE、AVX,FPGA编写支持TensorFlow计算单元。
CPU加速。pip命令安装,与更广泛机器兼容,TensorFlow默认仅在x86机器使用SSE4.1 SIMD指令。源代码安装可以获得最大性能,开启CPU高级指令集支持。bazel 构建只能在自己机器运行二进制文件。

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --copt=-cuda -k //tensorflow/tools/pip_package:build_pip_package
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

在/tmp/tensorflow_pkg产生whell文件,再用pip命令安装wheel文件。

TPU 加速、FPGA加速。
谷歌TensorFlow设计专用集成芯片-张量处理单元(Tensor Processing Unit,TPU)。CPU逻辑运算(if else)能力很强,计算能力比GPU差,深度学习需要海量计算。GPU有强大浮点计算单元,GPU着色器(shader)对一批数据以相同步调执行相同指令流水。GPU同一时钟周期执行指令数量千级,3000条。CPU同一时钟周期执行指令数据几十级。数据并行能力远超CPU。GPU逻辑运算能力差,流水线并行能力(同一时钟周期并发执行不同逻辑序列能力)差,需要批数据同步调执行相同逻辑。神经网络需要大规模数据并行能力,CNN卷积、矩阵运算操作,通过数据并行大幅提高性能。
GPU出厂后架构固定,硬件原生支持指令固定。如神经网络有GPU不支持指令,无法直接硬件实现,只能软件模拟。FPGA加速,开发者在FPGA里编程,改变FPGA硬件结构。FPGA体系结构不同,不是冯·诺伊曼结构,是代码描述逻辑电路。只要片上逻辑门、引脚够多,全部输入、运算、输出都在一个时钟周期内完成。FPGA一个时钟周期执行一次全部烧好电路,一个模块就一句超复杂“指令”,不同模块不同逻辑序列,序列里就一条指令。不同运算单元硬件直连,数据并行、流水线并行共存(GPU流水线并行能力约0),浮点运算能力不如GPU。适合低延迟预测推理,每批大小较小。
TPU,专用集成电路(application specific integrated circuit,ASIC),硬件逻辑一旦烧写不可再编程,专门为TensorFlow做深度学习开发。TPU目前版本不能完整运行TensorFlow功能,高效预测推理,不涉及训练。

机器学习评测体系。

人脸识别性能指标。
鉴别性能,是否鉴别准确。Top-K识别率,给出前K个结果包含正确结果概率。错误拒绝辨识率(FNIR),注册用户被系统错误辩识为其他注册用户比例。错误接受辩识率(FPIR),非注册用户被系统辨识为某个注册用户比例。
验证性能,验证人脸模型是否足够好。误识率(False Accept Rate,FAR),将其他人误作指定人员概率。拒识率(False Reject Rate,FRR),将指定人员误作其他人员概率。识别速度,识别一副人脸图像时间、识别一个人时间。注册速度,注册一个人时间。

聊天机器人性能指标。
回答正确率、任务完成率、对话回合数、对话时间、系统平均响应时间、错误信息率。评价基本单元,单轮对话。人机对话过程,连续过程。http://sanwen.net/a/hkhptbo.html 《中国人工智能学会通讯》2016年第6卷第1期。聊天机器人,机器人答句和用户问句应该语义一致,语法正确,逻辑正确。机器人答句应用有趣、多样,不是一直产生安全回答。机器人应该个性表达一致,年龄、身份、出生地基本背景信息、爱好、语言风险应该一致,能想象成一个典型人。

机器翻译评价方法。
BLEU(bilingual evaluation understudy)方法,2002年,IBM沃森研究中心提出。机器翻译语句与人类专业翻译语句越接近越好。下人工评价高度相关。正确句子作参考译文(reference)、正确句子(golden sentence),测试句子作候选译文(candidate)。适用测试语料具有多个参考译文。比较参考译文与候选译文相同片段数量,参考译文连续出现N元组(N个单词或字)与候选译文N元组比较,n单位片段(n-gram)比较。计算完全匹配N元组个数与参考译文N元组总个数比例。与位置无关。匹配片段数越多,候选译文质量越好。
METEOR,不仅要求候选译文在整个句子上,在句子分段级别上,都要与参考译文更接近。https://en.wikipedia.org/wiki/METEOR#Algorithm 。在待评价字符串与参考文符串间创建平面图。待评价翻译每个一元组必须映射到参考翻译1个或0个一元组。选择映射交叉数据较少的。

常用通用评价指标。
准确率、召回率、F值、ROC、AUC、AP、mAP。
ROC(Receiver Operating Characteristic,受试者工作特征曲线)、AUC(Area Under roc Curve,曲线下面积),评价分类器指标。ROC曲线横坐标FPR(False positive rate),纵坐标TPR(True positive rate)。ROC曲线越接近左上角,分类器性能越好。AUC,ROC曲线下方面积大小。ROC曲线处于y=x直线上方,AUC值介于0.5~1.0。AUC值越大表示性能越好。专门AUC计算工具 http://mark.goadrich.com/programs/AUC/ 。
AP(average precision,平均准确性)、mAP(mean average precision,平均准确性平均)。计算机视觉,分类问题,AP模型分类能力重要指标。只用P(precision rate, 准确率)和R(recall rate,召回率)评价,组成PR曲线趋势召回率越高准确率越低。AP曲线下面积,等于对召回率做积分。mAP对所有类别取平均,每个类作一次二分类任务。图像分类论文基本用mAP标准。

公开数据集。

图片数据集。
ImageNet http://www.image-net.org/ 。世界最大图像识别数据集,14197122张图像,斯坦福大学视觉实验室终身教授李飞飞创立。每年ImageNet大赛是国际计算机视觉顶级赛事。
COCO http://mscoco.org/ 。微软创立,分割、加字幕标注数据集。目标分割,通过上下文进行识别,每个图像包含多个目标对象,超过300000图像,超过2000000实例,80种对象,每个图像包含5个字幕,包含100000个人关键点。
CIFAR(Canada Institude For Advanced Research) https://www.cifar.ca/ 。加拿大先进技术研究院收集。8000万小图片数据集。包含CIFAR-10、CIFAR-100两个数据集。CIFAR-10,60000张32x32 RGB彩色图片,共10个类别,50000张训练,10000张测试(交叉验证)。CIFAR-100,60000张图像,100个类别,每个类别600张图像,500张训练,100张测试。20个大类,每个图像包含小类别、大类别两个标记。

人脸数据集。
AFLW(Annotated Facial Landmarks in the Wild) http://lrs.icg.tugraz.at/research/aflw/ ,从Flickr收集带标注面部图像大规模wyskwgk,各种姿态、表情、光照、种族、性别、年龄因素影响图片,25000万手工标注人脸图片,每个人脸标注21个特征点,大多数彩色,59%女性,41%男性。非常适合人脸识别、人脸检测、人脸对齐。
LFW(Labeled Faces in the Wild Home) http://vis-www.cs.umass.edu/lfw/ 。美国马萨诸塞大学阿姆斯特分校计算机视觉实验室整理。13233张图片,5749人,4096人只有一张图片,1680个多于一张。用于研究非受限情形人脸识别问题。人脸外形不稳定,面部表情、观察角度、光照条件、室内室外、遮盖物(口罩、眼镜、帽子)、年龄影响。为学术界评价识别性能标准(benchmark)。
GENKI http://mplab.ucsd.edu ,加利福尼亚大学收集。包含GENKI-R2009a、GENKI-4K、GENKI-SZSL。GENKI-R2009a,11159图片。GENKI-4K,4000图片,笑与不笑两类,每个图片人脸姿势、头转动标注角度,专用笑脸识别。GENKI-SZSL,3500图像,广泛背景、光照条件、地理位置、个人身份、种族。
VGG Face http://www.robots.ox.ac.uk/~vgg/data/vgg_face/ 。2622个不同人,每个人1000张图片,训练人脸识别大数据集。
CelebA(Large-scale CelebFaces Atributes,大规模名人人脸标注数据集) http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html 。10177个名人,202599张名人图像,每张图像40个属性标注。

视频数据集。
YouTube-8M https://research.google.com/youtube8m/ 。800万个YouTube视频URL,50万小时长度视频,带有视频标注。

问答数据集。
MS MARCO(Microsoft Machine Reading Comprehension) http://www.msmarco.org 。微软发布,10万个问题和答案数据集。创建像人类一样阅读、回答问题系统。基于匿名真实数据构建。
康奈尔大学电影对白数据集 https://www.cs.cornell.edu/~cristian/Cornell_Movie-Dialogs_Corpus.html 。600部好莱坞电影对白。

自动驾驶数据集。
法国国家信息与自动化研究所行人数据集(INRIA Person Dataset) http://pascal.inrialpes.fr/data/human/ 。作为图像和视频中直立人检测研究工作一部分收集。图片两种格式,一具有对应注释文件原始图像,二具有原始图像经过正规化处理64x128像素正像。图片分只有车、只有人、有车有人、无车无人4个类别。
KITTI(Karlsruhe Institute of Technology and Toyota Technological Institute) http://www.cvlibs.net/datasets/kitti/ 。车辆数据集,7481个训练图片、7518个测试图片。标注车辆类型、是否截断、遮挡情况、角度值、二维和三维框、位置、旋转角度。

年龄、性别数据集。
Adience 数据集 http://www.openu.ac.il/home/hassner/Adience/data.html 。来源Flickr相册。用户用智能手机设备拍摄,2284类别,26580张图片。保留光照、姿势、噪声影响。性别、年龄估计、人脸检测。

参考资料:
《TensorFlow技术解析与实战》

欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi

学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集的更多相关文章

  1. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...

  2. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  3. ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画

    ArcGIS案例学习笔记4_2_城乡规划容积率计算和建筑景观三维动画 概述 计划时间:第4天下午 目的:城市规划容积率计算和建筑三维景观动画 教程: pdf page578 数据:实验数据\Chp13 ...

  4. 【学习笔记】tensorflow基础

    目录 认识Tensorflow Tensorflow特点 下载以及安装 Tensorflow初体验 Tensorflow进阶 图 op 会话 Feed操作 张量 变量 可视化学习Tensorboard ...

  5. Google TensorFlow 学习笔记一 —— TensorFlow简介

    "TensorFlow is an Open Source Software Library for Machine INtenlligence" 本笔记参考tensorflow. ...

  6. 【学习笔记】tensorflow队列和线程

    目录 Tensorflow队列 同步执行队列 队列管理器 异步执行队列 线程协调器 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先 ...

  7. 学习笔记TF057:TensorFlow MNIST,卷积神经网络、循环神经网络、无监督学习

    MNIST 卷积神经网络.https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py .Ten ...

  8. 学习笔记TF048:TensorFlow 系统架构、设计理念、编程模型、API、作用域、批标准化、神经元函数优化

    系统架构.自底向上,设备层.网络层.数据操作层.图计算层.API层.应用层.核心层,设备层.网络层.数据操作层.图计算层.最下层是网络通信层和设备管理层.网络通信层包括gRPC(google Remo ...

  9. 学习笔记TF062:TensorFlow线性代数编译框架XLA

    XLA(Accelerated Linear Algebra),线性代数领域专用编译器(demain-specific compiler),优化TensorFlow计算.即时(just-in-time ...

随机推荐

  1. xcode: 解决 __nw_connection_get_connected_socket_block_invoke 1 Connection has no connected handler

    Run -> Arguments -> Environment Variables -> Add -> Name: "OS_ACTIVITY_MODE", ...

  2. OO第一单元作业总结之初识面向对象

    第一个单元的三次作业均为求导,循序渐进的让我们掌握如何构造类和方法,让整个代码是面向对象的设计而不是面向过程的设计.如果第一次作业和第二次作业你只是简单的对过程着手架构类,到了第三次作业就会变得格外麻 ...

  3. mongo aggregate 删除重复数据

    $group 按照什么排序, 关照 _id 这个是排序的依据 $match 这个从排序的结果内抽取 count 大于一的 allDiskUse  如果内存配置比较小, 设置这个才能运行, 否则会崩. ...

  4. 二、redis持久化

    一.redis持久化 1 RDB持久化(定redis的数据定时dump到磁盘上的RDB持久化)RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据 ...

  5. java中的异常处理问题。

    异常处理--基本概念 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述. java中用2种方法处理异常: 1.在发生异常的地方直 ...

  6. 机器学习笔记(四)Logistic回归模型实现

     一.Logistic回归实现 (一)特征值较少的情况 1. 实验数据 吴恩达<机器学习>第二课时作业提供数据1.判断一个学生能否被一个大学录取,给出的数据集为学生两门课的成绩和是否被录取 ...

  7. 机器学习笔记(三)Logistic回归模型

    Logistic回归模型 1. 模型简介: 线性回归往往并不能很好地解决分类问题,所以我们引出Logistic回归算法,算法的输出值或者说预测值一直介于0和1,虽然算法的名字有“回归”二字,但实际上L ...

  8. 局域网主机A向主机B发送ip数据报的过程

    主机A首先查找其ARP高速缓存内的映射表中是否有主机B的IP地址,如果有,则查找出其对应的硬件地址,并将该硬件地址写入MAC帧,通过局域网将该MAC帧发送给主机B.如果ARP高速缓存内没有主机B的IP ...

  9. python day32--struct,文件上传下载

    一.struct模块 可以把要发送的数据长度转换成固定长度的字节 struct.pack('i',数据长度) struct.unpack('i',数据长度) 二.上传下载文件作业 server imp ...

  10. 网易2019校招内推编程题-俄罗斯方块-C++实现

    [编程题] 俄罗斯方块 时间限制:1秒 空间限制:262144K 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同.荧幕上一共有 n 列,每次都会有 ...