學習筆記TF067:TensorFlow Serving、Flod、計算加速,機器學習評測體系,公開資料集

利炳根發表於2017-11-14

TensorFlow Serving https://tensorflow.github.io/…

生產環境靈活、高效能機器學習模型服務系統。適合基於實際資料大規模執行,產生多個模型訓練過程。可用於開發環境、生產環境。

模型生命週期管理。模型先資料訓練,逐步產生初步模型,優化模型。模型多重演算法試驗,生成模型管理。客戶端(Client)向TensorFlow Severing請求模型,TensorFlow Severing返回適當模型給客戶端。TensorFlow Serving、gRPC(谷歌公司開源高效能、跨語言RPC框架),提供跨語言RPC介面,不同程式語言都可以訪問模型。

TensorFlow Serving程式碼 https://hithub.com/tensorflow… 。原始碼Bazel編譯安裝 https://github.com/tensorflow… ,Docker安裝。https://www.tensorflow.org/se… 。結合TensorFlow Serving,訓練好模型,建立Docker映象,推送到Google Container Registry https://cloud.google.com/cont… 。模型在谷歌雲平臺(Google Cloud Platform)執行。Kubernetes成功部署模型服務。Serving Inception Model with TensorFlow Serving and Kubernetes https://tensorflow.github.ic/… 。Google ML Engine,全託管TensorFlow平臺,訓練模型一鍵轉換預測服務。

TensorFlow Flod https://github.com/tensorflow… ,《Deep Learning with Dynamic Computation Graphs》https://openreview.net/pdf?id… 。深度學習過程,模型訓練資料預處理,不同結構資料剪裁成相同維度、尺寸,劃分成批,進入訓練流程。靜態圖模型,缺點,輸入資料無法一般預處理,模型針對不同輸入資料建立不同計算圖(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… 。在待評價字串與參考文符串間建立平面圖。待評價翻譯每個一元組必須對映到參考翻譯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/prog…
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張32×32 RGB彩色圖片,共10個類別,50000張訓練,10000張測試(交叉驗證)。CIFAR-100,60000張影像,100個類別,每個類別600張影像,500張訓練,100張測試。20個大類,每個影像包含小類別、大類別兩個標記。

人臉資料集。
AFLW(Annotated Facial Landmarks in the Wild) http://lrs.icg.tugraz.at/rese… ,從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/~v… 。2622個不同人,每個人1000張圖片,訓練人臉識別大資料集。
CelebA(Large-scale CelebFaces Atributes,大規模名人人臉標註資料集) http://mmlab.ie.cuhk.edu.hk/p… 。10177個名人,202599張名人影像,每張影像40個屬性標註。

視訊資料集。
YouTube-8M https://research.google.com/y… 。800萬個YouTube視訊URL,50萬小時長度視訊,帶有視訊標註。

問答資料集。
MS MARCO(Microsoft Machine Reading Comprehension) http://www.msmarco.org 。微軟釋出,10萬個問題和答案資料集。建立像人類一樣閱讀、回答問題系統。基於匿名真實資料構建。
康奈爾大學電影對白資料集 https://www.cs.cornell.edu/~c… 。600部好萊塢電影對白。

自動駕駛資料集。
法國國家資訊與自動化研究所行人資料集(INRIA Person Dataset) http://pascal.inrialpes.fr/da… 。作為影像和視訊中直立人檢測研究工作一部分收集。圖片兩種格式,一具有對應註釋檔案原始影像,二具有原始影像經過正規化處理64×128畫素正像。圖片分只有車、只有人、有車有人、無車無人4個類別。
KITTI(Karlsruhe Institute of Technology and Toyota Technological Institute) http://www.cvlibs.net/dataset… 。車輛資料集,7481個訓練圖片、7518個測試圖片。標註車輛型別、是否截斷、遮擋情況、角度值、二維和三維框、位置、旋轉角度。

年齡、性別資料集。
Adience 資料集 http://www.openu.ac.il/home/h… 。來源Flickr相簿。使用者用智慧手機裝置拍攝,2284類別,26580張圖片。保留光照、姿勢、噪聲影響。性別、年齡估計、人臉檢測。

參考資料:
《TensorFlow技術解析與實戰》

歡迎推薦上海機器學習工作機會,我的微信:qingxingfengzi

相關文章