【導讀】7 月 3-4 日,由 CSDN 主辦的第三屆 AI 開發者大會(AI ProCon 2020)在線上舉行。本次大會有超萬人報名參與,參與人群覆蓋 50+ 領域、4000 家企業。其中有來自行業內 70+ 頂尖企業、開源社區與科研高校的近 100 位行業領袖、技術大咖與研究學者。
他們用更新鮮、更有趣、更年輕的方式,聚焦智能時代 AI 技術的發展曲線以及 AI 與社會各行業結合的最新應用進展,深入解析熱門 AI 技術在行業中的實踐與落地經驗,揭示技術與行業發展面臨的機遇與挑戰。
在 7 月 3 日的主論壇上,TensorFlow中國研發團隊負責人李雙峰帶來了《TensorFlow的最新進展》的主題演講。
核心觀點:
TensorFlow 生態系統有著豐富的工具鏈,推動前沿研究,支撐大規模應用,可多平臺靈活部署。
TensorFlow 2 讓機器學習更簡單:使用 tf.keras 高階API,動態圖 Eager Execution 易調試和靜態圖高效結合,distribute strategy 可擴展性好,tf.data 加速數據處理,簡單、靈活和高性能。支持雲端、嵌入式和瀏覽器端多平臺部署。
TensorFlow Lite 讓機器學習無處不在:支持移動和嵌入式設備,跨平臺部署兼容性好,高性能,支持多種硬體加速,提供量化等模型壓縮工具。有豐富的SOTA模型和完整案例、Model Maker、代碼生成工具和Android Studio集成,方便初學者。
TensorFlow 提供了豐富的工具,幫助構建 Responsible AI。
以下內容為演講實錄,由 CSDN(ID:CSDNnews)整理:
李雙峰:大家好!我是來自 Google 的李雙峰,負責TensorFlow 中國研發團隊,今天我演講的題目是《TensorFlow的最新進展》。
TensorFlow 開源生態系統提供了豐富的工具鏈,滿足前沿研究—生產環境使用—全場景部署等多樣化等需求,幫助構建負責任的 AI 應用,同時受益於龐大社區的貢獻。目前,TensorFlow 下載量已經超過1億次,提交次數89,000+,代碼改動請求14,600+,貢獻者超過2600位。
TensorFlow推動了很多前沿研究,比如16-17年 Google 提出了 Transformer 模型,是最近幾年深度學習最有影響力的成果之一;2018年提出了 BERT 模型,帶來了 NLP 領域的突破,並很快在工業界得到廣泛使用,比如提升搜索質量。
TensorFlow 支撐了社區中很多應用,包括環境保護、農業檢測、文化藝術研究和醫療健康。在科學計算領域,Summit 是全球領先的超算系統,它利用 TensorFlow 來做極端天氣的預測。在工業界,網易嚴選用 TensorFlow 做銷售數據預測,騰訊醫療用 TensorFlow 做醫療影像處理,英語流利說用TensorFlow 幫助用戶學習英語。大家常見的推薦和搜索系統,背後很多都用到了 TensorFlow。
TensorFlow 2 讓機器學習更簡單
TensorFlow 2 側重於易用性,同時仍然保持靈活高效。
TensorFlow 2 的整體架構分為「訓練」和「部署」兩個部分,訓練部分包括了數據設計、模型設計、訓練及分析等功能:訓練時可以用 Keras 這樣的高階 API 來構建模型,也可以用 tf.data 來做高性能數據處理,在不同硬體做大規模訓練時需要用到Distribution Strategy。訓練之後產生的模型以SavedModel 格式存起來,它可以在不同平臺部署,也可以發布到 TensorFlow Hub 上,便於共享。部署部分,包括用於瀏覽器和 Node.js 上部署的 TensorFlow.js,在移動和嵌入式平臺部署的 TensorFlow Lite,和伺服器端部署的TensorFlow Serving。
1. 易用性:為了提升易用性,TensorFlow 2 採用了 tf.keras 高階 API,只需要數行代碼就可以構建一個複雜的網絡。默認是動態圖 Eager Execution,使用命令式的編程方式,能夠和周圍的 python 代碼融合的更好,便於調試。同時可以使用 tf.function 把動態圖轉換成靜態圖,還可以開啟XLA編譯優化,提升性能。API更加簡單,文檔更清晰,比如在1.0的時候,LSTM可能會有不同的寫法,2.0之後寫法將變得一致。
2. 靈活性:TensorFlow 2 滿足從簡單建模到複雜模型高度靈活的需求。新用戶和簡單案例,可用 Keras 內置模塊和 Keras Sequential API;進一步可以用 Keras Functional API,還可以定製 Keras 模塊;追求極大靈活度,可以使用Subclass 來完全定製自己的各種模塊和訓練循環。比如:
構造一個看圖回答問題的網絡,需要一個 CNN 網絡處理圖像輸入、Embedding + LSTM 處理問題文本輸入,再加上全聯接網絡進行分類,每個部分都只需要數行代碼就可以實現。
處理 NLP 問題,有 TF.dataset 提供數據集,有 Keras preprocessing、TF.text 和 TF.addons 等提供多種預處理工具,KerasTuner 來進行超參數調整,工業級應用時有 Keras 實現的 BERT 作為參考,以及 TF Hub 上有很多預先訓練好的模塊。
3. 可擴展性和高性能:使用distribute.Strategy,一行代碼就可以從單機多CPU(使用MirroredStrategy)擴展到多機多CPU(使用MultiWorkerMirroredStrategy)。比如最近TF 2.2,通過多種優化(NCCL優化,FP16梯度計算,梯度計算和反向傳播並行化),在進行BERT SQuAD訓練時,吞吐量相對於TF 2.0有2.5倍的提升。TF 2.2 中還在 TensorBoard 中提供了 TF Profiler 工具集,可以統計和追蹤性能的瓶頸。數據處理是深度學習訓練的瓶頸之一,tf.data 可以加速數據處理,在即將發布的 TF 2.3 中,增加了兩個功能:tf.data snapshot 可以復用已經計算過的數據,而 tf.data service 可以擴展多個 worker 加速數據預處理並容錯。
4. 豐富的多平臺部署能力。
支持靈活的多平臺部署,包括伺服器、移動和嵌入式設備,和瀏覽器端。
TensorFlow Extended (TFX),是一個端到端的機器學習平臺,它可以創建和管理大規模生產環境中的複雜機器學習工作流,在 Google 被大規模使用。TFX 提供了豐富的組件,比如對數據流做統計驗證並查看異常,數據清理和轉換,持續訓練模型,並將對模型進行評估和驗證,最後將合格的模型部署到生產環境中。
在伺服器端部署中,TensorFlow Serving 是一個高性能的TensorFlow 模型部署系統,允許多版本模型同時部署,實時上線,並支持 RPC 和 RESTful API。
Tensorflow.js 是為 Javascript 而定製的機器學習平臺,可以利用現有的 JS 模型包,對現有模型做遷移學習,或者用 JS從頭訓練模型。我們已經提供了多種多樣的模型,最近發布了手勢識別模型和基於 MobileBERT 的問題回答模型。它可以支持各種瀏覽器,也支持各種框架比如 React Native,還可以在伺服器端使用 Node.js。特別值得一提的是,TF.js 提供了微信小程序插件,可以直接在小程序裡運行TF.js程序,比 ModiFace 虛擬試妝小程序使用了 TF.js,總共大小是1.8M(980KB JS + 830KB model),速度達到25FPS。
TensorFlow Lite 可以部署在移動和嵌入式設備端,甚至MCU上。
TensorFlow Lite 讓機器學習無處不在
TensorFlow Lite(TFLite)是一個輕量、快速、跨平臺的專門針對移動和 IoT 應用場景而優化的框架,它支持安卓、iOS、嵌入式設備(如樹莓派)、硬體加速器(比如EdgeTPU)甚至非常小的MCU平臺等。人們用 TensorFlow Lite 做包括語音、視頻、圖像、自然語言處理等多種功能。全球有超過40億設備部署了TensorFlow Lite,比如Google的許多應用像Google Assistant,國外應用像Uber、Airbnb,國內應用像網易、愛奇藝、WPS、騰訊的全民K歌等。
性能是我們持續不斷提升的一個領域,TensorFlow Lite 性能強大,同時支持多種硬體加速器,比如 GPU、NNAPI、DSP和CoreML。以 MobileNetV1 為例子,Pixel4上單線程CPU上浮點模型只需要37ms,量化提升2.8倍達到13ms,在GPU上使用OpenCL則只要6ms。GPU上最近增加了對 OpenCL 的支持,在多個視覺模型上的測試表明,基於 OpenCL 的 GPU 性能提升為 CPU 上的 4-6 倍, 是OpenGL 的 2 倍。另一個即將到來的新突破,是全新的高度優化後的浮點卷積核庫 XNNPACK。在多個關鍵浮點卷積模型上的測試表明,在多種硬體平臺上,使用 XNNPACK 後,單線程 CPU 性能提升達20%~200% 。比如在 X86 Windows 平臺上,有兩倍的提升。
我們也提供 TensorFlow Lite for Micro 功能,支持在 MCU 上運行超級小的模型:語音識別的模型只要20KB,人物探測250KB,手機姿態檢測也只需要20KB,這樣的模型可以真正讓機器學習無處不在 。
TensorFlow模型優化工具,支持量化、剪枝等多種模型壓縮技巧,使用簡單,進一步壓縮了模型。
TensorFlow Lite 初學者,從哪開始?
1. 預訓練前沿模型和完整參考示例
Tensorflow Lite 官網提供了豐富等預訓練模型庫和完整應用代碼(包括模型前處理和後處理),包括多種案例,比如對象追蹤、風格遷移和問題回答,也包括不同平臺的例子(比如 Android、iOS、樹莓派及 MCU)。比如,在手機上實現問題問答是一個很有挑戰的問題,我們發布了基於 MobileBERT 的參考應用。另外,社區 github 項目 「Awesome TFLite」,也收集了很多有意思的示例。
我們推出了一些前沿的預訓練模型,比如:
EfficientNet-Lite 是新穎的圖像分類模型,可通過減少計算和參數的數量級來實現 SOTA 的準確性。它針對 TFLite 量化方式進行了優化,在損失較低精度 (幾乎可忽略) 的同時大大提升了推理速度,並可以運行在 CPU、GPU上,在相似的高精度下,EfficientNet-lite4比 Inception v4 有顯著的速度提升。
MobileBERT 和 ALBERT-Lite 是流行的 BERT 模型的優化版本,該模型在一系列 NLP 任務(包括問答、自然語言推斷等)上均達到了 SOTA 的準確度。其中,MobileBERT 的體積是 BERT 的1/4,速度是 BERT 的4倍,同時保持了相近的準確度。我們還開發了量化版本的 MobileBERT,它是 BERT 的1/16,速度是 BERT 的8倍,目前 MLPerf 社區正嘗試基於此進行移動硬體加速的 NLP 基準測試。
2. TFLite Model Maker
初學者如果希望定製自己模型,但是不懂機器學習、也不懂構建模型?沒關係,用 TFLite Model Maker,它提供了一個Python的庫,你不需懂ML,只需要4、5行Python代碼,就可以根據你的數據來定製一個模型。
3. TFLite 代碼生成和 Android Studio ML model Binding 工具
TFLite Model Maker 生成的模型會自動加上 TFLite Metadata,我們提供了一個代碼生成工具 TFLite codegen,把帶有TFLite Metadata 的模型直接轉換成安卓代碼,讓安卓的開發者不怎麼需要太懂這個模型,就能夠像用API一樣去寫代碼。 生成的代碼還可以做一些前處理和後處理工作。
更進一步,我們也將此功能集成到 Android Studio 的ML model binding工具中,只需要把模型導入到Android Studio中就可以生成代碼,目前已在Android Studio 4.1中提供試用版。
TensorFlow 提供了豐富的工具鏈
如果不希望從頭訓練這個模型,希望利用遷移學習,則可以使用 TensorFlow Hub,它是開箱即用的預訓練模型庫,提供了多種模型(比如圖像 、文本、視頻、音頻等),也支持多種部署的格式(如TF、TFLite、 TF.js)。其中有不少社區貢獻的模型,比如NVIDIA。
如果你只是關注前沿研究,不關注部署的問題,可以去嘗試一個非常新的高性能、輕量級框架JAX,它是為了研究者構建的。JAX 結合了自動微分和 XLA 的功能,使用純粹的 Python作為 API,非常易用而輕量級,同時可以利用 XLA 編譯到GPU 或者 TPU 上,從而保持高性能。
我們也開源了新的編譯器框架 MLIR 來加速機器學習。MLIR提供了最新的ML編譯器技術,支持多層次IR,模塊化,可定製。它由 LLVM 項目管理,立場中立,最大的一些硬體廠商都表示支持,一起推動 MLIR 的發展。MLIR 正在幫助構建更好的 TensorFlow,通過編譯加速,簡化硬體支持,也用在了TensorFlow 到 TFLite 的轉化。
TensorFlow 生態系統提供了非常豐富的擴展庫,這些庫針對當前機器學習領域的最前沿研究提供了很多工具,已經有超過80個不同的 Tensorflow 庫供研究人員使用。比如對貝葉斯模型感興趣,可以使用 TF probablility 庫;如果想要 NLP 模型處理,提供了 TF Text 庫;對於深度學習和 Graph 結合,可以研究 TF Neural Structured Learning;想探索強化學習,利用 TF Agents。最新發布的一個庫 TensorFlow Quantum,把 TensorFlow 和量子計算結合起來。
TensorFlow 推動負責任的AI (Responsible API)
TensorFlow 開源了很多工具來推動負責任的AI(ai.google/responsibilities/responsible-ai-practices),這些工具關注如下幾個方面:
提供最佳實踐:比如 People+AI Guidebook 是一個指南,幫助大家去構建以人為本的AI。
公正性:比如 TensorFlow Fairness Indicators 可用於模型公正性評估和可視化。
可解釋性:比如 TensorFlow Model Analysis 幫助分析模型。
模型隱私:比如 TF Privacy 幫助訓練更具隱私性的模型,而 TF Federated 利用聯邦學習來增強數據隱私。
關注模型安全:持續推進和支持社區進行相關基礎研究,開源工具。
TensorFlow的學習資源和社區
學習資源
官方網站 tensorflow.google.cn:有非常豐富的TensorFlow 2 教程和最佳實踐。
TensorFlow 微信公眾號:包含 TensorFlow 最新進展和技巧,大量社區和公司分享的工業界案例和經驗,還有很多前沿研究翻譯成中文,是非常好的學習資源。
TensorFlow 教程:Coursera 和 Udacity 上有多門很好的 TensorFlow 實戰的課程,很多都是免費的。Google也提供了《Machine Learning Crash Course》 TF 2.x版,便於沒有 ML 基礎的快速入門。
中文社區教程:比如 tf.wiki 上的《簡單粗暴 TensorFlow 2》,d2l.ai 上的《動手學深度學習》(TensorFlow 2版),黑胡桃實驗室的《TensorFlow Crash Course》 , 騰訊課堂上的《TensorFlow.js遇到小程序》等。
實戰
Kaggle競賽: Kaggle構建了好 TensorFlow 2 運行環境,參與者可以使
考證:TensorFlow Developer Certificate是全球統一認證的證書。
TensorFlow Model Garden:特別歡迎大家為TF Model Garden 貢獻 TensorFlow 2模型,有機會成為TensorFlow 官方推薦的代碼,也有可能獲得 Google Open Source Peer Bonus。可以在 github.com/tensorflow/models 找到相關任務。
社區
文檔翻譯、創建中文教程和視頻:目前 TensorFlow 官網中文文檔很大部分都是社區貢獻和維護的,只要有熱情,每個人都可以參與。
分享案例:歡迎給TensorFlow微信公眾號投稿,分享案例和經驗,也可以在 CSDN 等社區分享經驗。
參與社區 TFUG(TensorFlow User Group):可以參與 TFUG 活動,也可以申請成為所在城市的組織者,甚至申請新的 TFUG。目前大陸地區已有19個城市有 TFUG。
貢獻代碼和模型:TensorFlow 有多個 SIG 小組,也有不少中文社區的開發者領導這些SIG小組,比如SIG Networking, SIG IO,SIG AddOns,歡迎大家參與TF SIG 小組,貢獻代碼,也可以貢獻模型。
成為社區專家 GDE(Google Developer Expert):目前大陸地區已有不少 ML GDE。
最後,如果大家希望了解更多,可以在微信搜索關注」TensorFlow」 官方公眾號,和訪問官方網站:tensorFlow.google.cn。
謝謝大家!