美文网首页人工智能Tensorflow深度学习
学习笔记TF067:TensorFlow Serving、Flo

学习笔记TF067:TensorFlow Serving、Flo

作者: 利炳根 | 来源:发表于2017-11-14 23:48 被阅读440次

    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、Flo

        本文链接:https://www.haomeiwen.com/subject/qimqvxtx.html