強強聯手!Google 和 Nvidia 帶來最優化版 TensorFlow 1.7

Google 目前已經發布了 TensorFlow 1.7,同時也將跟 NVIDIA 更緊密地合作。希望這個新的解決方案額能夠在提供最強性能的同時,保持TensorFlow 的易用性和靈活性!
評論
評論

本篇來自合作媒體 雷鋒網 ,INSIDE 經授權轉載。

日前,Google 和英偉達宣布將 NVIDIA TensorRT 集成到 TensorFlow 1.7 中。在 Google 開發者部落格中,他們介紹了此次合作的詳細資訊以及整合之後的性能,編譯整理如下:

TensorRT 是一個可以用於優化深度學習模型,以進行推理,並為生產環境中的 GPU 建立運行環境的庫。它能優化 TensorFlow 中的 FP16 浮點數和 INT8 整型數,並能自動選擇針對特定平台的內核,以最大化吞吐量,並最大限度的降低 GPU 推理期間的延遲。全新的集成工作流程簡化了在 TensorFlow 中使用 TensorRT 的步驟,同時使得 TensorFlow 達到了世界一流的性能水平。

經測試,在 NVIDIA Volta Tensor 核心上,集成了 TensorRT 的 TensorFlow 運行 ResNet-50 比沒有集成 TensorRT 的 TensorFlow 執行速度提高了 8 倍。

Google 和Nvidia 強強聯手,帶來優化版TensorFlow 1.7

優化 TensorFlow 中的子圖

在 TensorFlow 1.7 中,TensorRT 可以用於優化子圖,而 TensorFlow 執行其餘未優化的部分。這個方法使得開發者既能夠使用 TensorFlow 的眾多功能來快速構建模型,同時也可以在執行推理時使用 TensorRT 獲得強大的優化能力。如果你嘗試過在之前的 TensorFlow 模型中使用 TensorRT,你應該知道,要想使用某些不受支持的 TensorFlow 層,必須手動導入,這在某些情況下可能會耗費大量時間。

從工作流程的角度來看,開發者可以使用 TensorRT 來優化 TensorFlow 的每個子圖。

Google 和Nvidia 強強聯手,帶來優化版TensorFlow 1.7

在推斷過程中,TensorFlow 先將執行所有支持區域的圖,之後調用 TensorRT 去執行那些經過 TensorRT 優化過的節點。舉個例子,如果你的圖包含 A,B,C 三段,其中 B 段被 TensorRT 優化過,B 將被一個節點代替。那麼在推理過程中,TensorFlow 將先執行 A,之後調用 TensorRT 執行 B,最後 TensorFlow 執行 C。

這個用於優化 TensorRT 的新加入的 TensorFlow API,以凍結的 TensorFlow 圖為輸入,針對該子圖進行優化,最後將優化過的推理子圖發送回 TensorFlow 中。

下面為一段示例代碼:

# Reserve memory for TensorRT inference engine

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = number_between_0_and_1)

... 

trt_graph = trt.create_inference_graph(

                 input_graph_def = frozen_graph_def,

                 outputs = output_node_name,

                 max_batch_size=batch_size,

                 max_workspace_size_bytes=workspace_size,

                 precision_mode=precision) # Get optimized graph

per_process_gpu_memory_fraction 這個參數定義了 TensorFlow 允許使用的 GPU 顯存的比例,剩餘的顯存將分配給 TensorRT。這個參數應該在 TensorFlow-TensorRT 進程第一次啟動的時候設定好。比如,per_process_gpu_fraction=0.67,那麼 67% 的顯存會被分配給 TensorFlow,其餘的 33% 會被分配給 TensorRT 引擎。

Create_inference_graph 函數將凍結住的 TensorFlow 圖作為輸入,返回一個經過 TensorRT 節點優化過的圖。我們看看這個函數的參數:

Input_graph_def: 凍結住的 TensorFlow 圖

Outputs: 輸出節點名字的字符串列表,比如:[“resnet_v1_50/predictions/Resape_1”]

Max_batch_size: 整數,輸入的 batch size,比如,16

Max_workspace_size_bytes: 整數,能分配給 TensorRT 的最大 GPU 顯存大小

Precision_mode: 字符串,可選的值為「FP32」,「FP16」,「INT8」

舉個例子,如果 GPU 有 12GB 顯存,想要給 TensorRT 引擎分配 4GB 顯存,那麼應該設置 per_process_gpu_memory_fraction 為(12-4)/12=0.67,max_workspace_size_bytes=4,000,000,000.

我們來試著將這個新的 API 應用在 ResNet-50 上,看看經過優化後的模型在 TensorBoard 中看起來是什麼樣的。左側的圖像是沒有經過 TensorRT 優化的 ResNet-50,右側是經過優化的。在這個設定下,大部分圖被 TensorRT 優化,並用一個單一節點代替了(圖中高亮部分)。

Google 和Nvidia 強強聯手,帶來優化版TensorFlow 1.7

經過優化的 INT8 推理性能

TensorRT 兼容單精度(FP32)和半精度(FP16)訓練的模型(也可以將它們量化為 INT8),同時能盡可能減少由精度降低而導致的準確率降低。INT8 模型能夠更快的計算,同時對帶寬的需求也會降低,但是因為可用的動態範圍降低了,這也對神經網絡的權重和啟動表示提出了很大的挑戰。

Google 和Nvidia 強強聯手,帶來優化版TensorFlow 1.7

為了解決這個問題,TensorRT 使用了一個校正過程,以盡可能減小將 FP32 網絡近似成 8-bit 整型表示時的資料損失。在使用 TensorRT 優化 TensorFlow 圖之後,可以使用下面的命令將圖傳遞給 TensorRT 進行校準,如下:

trt_graph=trt.calib_graph_to_infer_graph(calibGraph)

除此之外的網路推理流程都沒有變化。這一步的輸出為一個可以被 TensorFlow 執行的凍結圖。

在 NVIDIA Volta GPU 上自動使用 Tensor 核心

在 NVIDIA Volta GPU 的 Tensor 核心上透過 TensorRT 進行半精度 TensorFlow 模型推理,能夠提供相較於單精度模型八倍的吞吐量。相較於更高精度的 FP32 或者 FP64,半精度數據(FP16)能夠減少神經網路的顯存使用量,這使得開發者能夠訓練和部署更大規模的神經網路,同時 FP16 相比 FP32 和 FP64 有更少的傳輸時間。

如果每個 Tensor 核心執行的是 D=A*B+C,其中 A 和 B 為半精度 4*4 矩陣,D 和 C 是單精度或者半精度 4*4 矩陣,那麼 V100 上此時 Tensor 核心的峰值性能是雙精度(FP64)性能的 10 倍,是單精度(FP32)性能的 4 倍。

Google 目前已經發布了 TensorFlow 1.7,同時也將跟 NVIDIA 更緊密地合作。希望這個新的解決方案額能夠在提供最強性能的同時,保持 TensorFlow 的易用性和靈活性。隨著 TensorRT 支持越來越多的網路結構,大家只要更新就可以享受到這些好處,而無須改寫代碼。

使用標準 pip install 即可更新到 TensorFlow 1.7:

pip install tensorflow-gpu r1.7

詳細的安裝說明可在下面找到:

https://github.com/tensorflow/tensorflow/tree/r1.7/tensorflow/contrib/tensorrt


【社會數位轉型】連假出門不塞車、推動漁港再生,經濟部打造永續交通生態圈

智慧運輸時代來臨,全球競相投入無人載具與數位交通研發,希望在未來行動力的佈局搶得先機。從陸地、海洋到空中,無人機以整合 AI、5G 技術為核心,應用場域超乎想像,不僅能帶動產業升級與經濟成長,在解決社會問題上也有許多可能性。
評論
Photo Credit:Pexels
評論

聯合國預估,2030 年全球將出現 43 個人口超過千萬的巨型城市,而 2050 年將有 7 成人口居住於都市。城市人口密度持續增加,為交通帶來更大考驗,需要用更有效率的方式來管理。而在臺灣常見因車流量過大造成塞車、事故頻傳,以及偏鄉交通不便、公共運輸使用吸引不足、燃油車輛帶來環境污染等問題,也可望透過發展智慧交通迎刃而解。雖然短時間內還無法真正落地、普及,但種種想像已顯現出智慧運輸系統(Intelligent Transport System,ITS)的重要性。

智慧運輸科技是一門跨領域的技術,包括 7 大關鍵新興科技 iABCDEF 中的i(IoT,物聯網)、A(AI,人工智慧)、D(數據科技,DataTech)、E(邊緣運算,Edge Computing),並涵蓋資通訊、能源與電子等產業。面對接踵而來的挑戰,經濟部技術處與工業局合作,配合交通部、科技部、工研院、資策會等跨部會單位,關注企業與民眾的需求缺口,擴大各項交通科技創新服務的實驗場域。希望加速資通訊及智慧交通應用落地,推動產業轉型與數位經濟發展,更處理公共議題,建立更好的居住環境。

交通車載設備一站式整合 為國內實現物物相聯

未來在 5G 環境下,物聯網能讓各種設備、軟體、網路服務等更快速的相互連結,透過虛實整合應用與民眾進行深度互動,達成高速運算、低延遲通訊、萬物聯網的目標,這也是目前持續發展如智慧交通、自駕車所必備的條件。

當交通與運輸更加智慧化,將為國內業者帶來新商機,相關產業鏈例如雲端軟體服務、影像辨識與人工智慧分析、路側設備業、道路安全警示以及周邊的系統整合、工程顧問、二輪車安全聯網等,都是發展智慧交通智慧系統重要的環節,而智慧交通控制服務也是相當重要的一環,當交通號誌的紅綠燈控制做最有效的安排時,將可使路網中的車流運行更加順暢,也能減少更多的廢氣與碳排放的產生。

資策會智慧系統研究所(系統所)組長黃暉慈指出,發展一站式整合的關鍵之一在於道路上的路側設備(Roadside Unit,RSU)與安裝在車內的車載裝置(On Board Unit,OBU)兩者間的跨設備溝通,過去常因各家技術及介面規格不一、各類型設備分屬不同廠商維護、跨部門協調等原因難以整合,若要產生對民眾更具價值的應用相對是一大難題。

以建立永續智慧交通環境為目標,經濟部技術處匯集各法人能量,致力於運輸資源、資訊的整合共享,提升協作效能。

「比方說像各縣市智慧公車站牌就都長得不一樣,以及路側設備分屬不同部門管理:如交通局的號誌、工務局路燈管理處的路燈、警察局的 CCTV 等等,設備跟服務多為各單位獨立運作,資源無法進行有效的整合」黃暉慈表示。因此,為提升協作效率最佳化,經濟部技術處與資策會系統所合作,發展多元資訊的智慧交通作業系統,以建立共通平台之概念,打破廠商之間的資訊串接藩籬並能協同合作,減少資料使用者、管理者必須面對不同格式資料的困擾,以達成資訊交流的通透性與共享目的。

黃暉慈說明,智慧交通作業系統(Transport OS,TOS)是一套能整合各項遠端設備的管理平台,透過 TOS 函式庫讓程式介接、遠端佈署與應用開發都變得更簡單。「我們希望藉由一套共通的標準格式進行資料的收集,協助業者在設備管理、資料管理、資料分析上都能更加簡易有效率。」經由系統的整合,能自動化遠端監控路側設備的運行狀態,偵測錯誤並通知管理者,並以AI感測蒐集車輛、事故等應用數據。「省下開發系統和串接的功夫,業者能專注在設備功能的強化。」經濟部計畫透過整合性資訊服務,改善當今運輸走廊壅塞問題,未來國內車廠在技術發展上也能突破國外母廠的限制,打造出門無縫、用路安全、交通順暢的智慧運輸系統。

黃暉慈舉例,假如 CCTV 的監控影像出現雜訊、模糊、被遮蔽或鏡頭偏移,或工業電腦網路斷線等異常發生,系統都能即時發現問題,發出警示,「本系統具備彈性擴充功能,可協助業者介接提供更多加值應用,例如接入 RTSP 串流影像也能做到如智慧化判斷車輛是否違停的科技執法應用。」此外,TOS 的另一特色就是會將蒐集到的數據生成可視化圖表,有效地傳遞資訊,以利使用者能迅速評估狀況、做出因應。

Photo Credit:資策會

提升船舶監測效率 給予閒置港岸新生命

除了陸地的交通,海洋也是智慧運輸科技的發展重點。資策會系統所蔡政鴻組長分析,臺灣四面環海、海岸線長達 1,000 多公里,每年海洋經濟產值高達近 6 千億,「物流、漁業之外,還有觀光娛樂,光是用漁船載客出海磯釣每年就可賺超過百億,把安全性做好會很有市場。」

資策會系統所在經濟部技術處科技專案的支持下,採納百家以上產官學研機構與專家的建議,以海港數位轉型需求的高可靠邊霧協作物聯網技術為主,規劃「近岸船舶監測系統」,與相關業者、海巡隊合作,加強港岸船舶的管理效率。

蔡政鴻說,過去在智慧漁港常常做的是智慧照明,當然智慧照明在節能與管理上有很多好處,但除了漁港好像放在其他地方也很好,對於漁港的特色比較沒有凸顯出來。現在漁港面臨的問題是利用度不高,漁港資產閒置,最主要原因是來自過度捕撈,導致海裡無魚可抓,因此產生閒置問題,海洋資源的永續是主要的解決方法,除了生態保育,另一個是漁業漁港的轉型,從過去過度捕撈的抓來吃,轉型到生態體驗的旅遊價值,傳統漁業要轉型到娛樂漁業,發揮觀光旅遊的價值,從中帶來收入,魚就不用補那麼多,海洋資源才可永續。美國的漁業統計,休閒釣魚的經濟效益是商業捕魚的九倍,因此休閒釣魚的發展,其實是可以取代商業捕魚的部分經濟能量,進而減少捕撈。

以基隆市政府為例,2017 年便率先制定娛樂漁業島礁磯釣自治條例,管理認證核發與收費標準,並陸續導入科技管理工具,以船舶自動識別系統(Automatic Identification System,AIS)對磯釣船舶實施監測,採用邊霧運算技術,藉由與鄰近船舶、衛星等設備交換資料,當磯釣船訊號消失或離岸太遠,就會發出警示,建立數位治理機制,確保磯釣活動的安全戒護工作落實,保障業者與釣客的活動安全。另外磯釣證申辦,過去都要上班時間臨櫃申辦,造成不便。現在將磯釣證上網申辦,結合磯釣船出船單,送到漁港的海巡安檢流程,到磯釣船舶的海上航跡訊號勾稽,完成一套完整的服務鏈路,讓安全與方便形成基隆磯釣發展的重要後盾。使過去出海捕魚轉變成載客釣魚,減少捕撈,生態得以生息,漁民也有生計,還帶動釣具產業的發展。

其實智慧交通早已悄悄融入在日常生活,我們對數位票證的依賴度不斷增加,新零售時代的物流配送越來越快速。然而各種進步將可能衝擊原有的就業市場,該如何引導人才轉型也是重要的社會課題。

且讓我們試著想像,在交通的流動中,有出門運動、買菜的銀髮族,有通勤的白領上班族,有趕著上學的學生與接送孩子的父母,每個人的移動需求都能被滿足。經濟部技術處期望從技術專業角度,協助打造更人性化、友善的交通環境;同時,企業也能從競爭轉為合作,共同為產業創新轉型與減少污染的社會企業責任努力,創造更多就業機會;政府也能減少治理、管理的成本,持續優化交通運輸系統,形成社會美好的循環。