人工智慧研究頂尖深度學習框架入門指南。
把深度學習框架當成食品雜貨店。
大多數人都不想辛苦地在自家後院的空地裡種點東西,只想在要匆忙煮些東西果腹時,再去市場買菜。
就像是人們不會在想吃沙拉時才去摘採萵苣和胡蘿蔔一樣,開發人員也不想每次要建立深度學習神經網路時都得從頭開始。
深度學習模型龐大又複雜,程式員不會從頭開始編寫每個函數,而是靠著框架和軟體庫,以有效率的方式建立神經網路。頂尖深度學習框架提供高度優化、有著 GPU 當靠山的程式碼,專門用於深度神經網路運算作業。
深度學習框架間的差異
每間食品雜貨店賣的東西也不一樣,你可以在本地超市找到基本食材,或許你更愛逛有賣進口沙拉生菜的高檔超市,還有去農夫市集採買在欉紅的有機水果,不然就是要煮大鍋菜時會去大賣場購物。
同樣地,開發人員可以使用任何一種深度學習框架來建立大多數類型的網路(例如 CNNs 或 RNNs),各框架提供的範例數量及更新範例的頻率卻不一致。主動加入新功能的貢獻者數量,還有框架通過其 API 放出功能的方式也存在著差異。
這些多數從 2014 年便已開放大眾使用,且積極開發中的頂尖框架皆為開放源碼型態。
如何選擇深度學習框架
開發人員可以按照框架前端介面,以及其與自身技能的相近程度、社群支援程度,或是在特別感興趣之領域裡開發新功能的速度等條件來選擇深度學習框架。
開發人員可以透過指令行、Python 或 C/C ++ 等程式語言裡的腳本介面,還有 NVIDIA DIGITS 等圖形介面進入框架,而開發人員可以使用 NVIDIA DIGITS 這般易用的網路應用程式來建立深度神經網路。
如果你是將深度學習應用程式與 NVIDIA GPU 進行整合的開發人員,請見 NVIDIA 開發者計畫以取得更多資訊。
如何在深度學習框架間移動模型
開發人員根據手邊有的應用程式,或許想先用一個框架來建立和訓練深度學習模型,再用另一個框架重新訓練或部署以進行推論作業。
Open Neural Network Exchange(開放神經網路交換,簡稱為 ONNX)是深度學習模型的一種格式,讓開發人員能在框架間移動模型。ONNX 支援多數主要框架間的轉換。
訓練好一項深度學習應用程式且準備好進行部署時,我們的 TensorRT 軟體會優化這些模型,以便在 NVIDIA GPU 上進行高效能推論作業。TensorRT 與
TensorFlow 及 MATLAB 緊密進行整合,還支援從 ONNX 格式匯入。
以下介紹部分用於深度學習的熱門框架,以及企業與研究人員如何針對醫療保健、災難預測和細胞生物學等領域,建立 GPU 加速應用程式的例子。
Apache MXNet
Apache Software Foundation 在 2015 年開發出 Apache MXNet 這套深度學習框架。位於西雅圖的新創公司 Magic AI 使用 MXNet 開發出一套在 NVIDIA GPU 上運行,用來監控馬匹健康狀況的深度學習模型。神經網路使用裝在馬廄裡之攝影機所輸入的影片,分析每一幀的畫面,要是有動物即將分娩、馬匹出現絞痛症狀,或是陌生人進入馬厩,便會提醒馬場主人。
開發人員可以匯出到 ONNX,再使用 NVIDIA TensorRT 進行優化和部署,以便進行推論作業。
Caffe
加州大學柏克萊分校在2014年開發出 Caffe 深度學習框架,有著 NVCaffe 這般的分支及 Facebook 的 Caffe2(現與 PyTorch 合併)這樣的新框架。肺癌這個全球最常見的癌症,確診患者裡有半數在一年內死亡。位於聖路易斯的新創公司 Innovation DX 使用深度學習和 NVIDIA GPU,更快在胸部 X 光片裡發現肺癌。有著神經網路和 Caffe 框架助力的這類早期檢測工具,可以將患者存活率提高三倍。
開發人員可以利用 NVIDIA TensorRT 內建的 Caffe 模型匯入程式,以優化和部署模型進行推論作業。
Chainer
日本創投公司 Preferred Networks 在2015年開發出 Chainer。該公司使用這種以 Python 語言為基礎的框架,跟工業自動化巨頭發那科株式會社(FANUC)攜手參加2016年的亞馬遜倉庫揀貨大賽(Amazon Picking Challenge)。該活動要求自動機器人找出如何挑揀和堆放物品的方法。Preferred Networks 與 FANUC 使用卷積神經網路和 NVIDIA GeForce GTX 870M 筆記型電腦 GPU 進行參賽,最終獲得亞軍名次。
開發人員可以匯出到 ONNX,再使用 NVIDIA TensorRT 進行優化和部署,以進行推論作業。
Keras
Keras 是一個可以使用高階 Python API,在 MXNet、TensorFlow、Theano 和 Microsoft Cognitive Toolkit 等多個框架上運行的介面。由研究員 François Chollet 於2014年開發出的 Keras,藉由統一且經常抽象的 API 強調其易用性。一組韓國研究人員使用 Keras 來提高預測颶風的速度和準確性 。他們在 TensorFlow 上使用 Keras 建立,並且在 NVIDIA GPU 上運行的深度學習模型,可以提前數小時預測風暴路徑和降水量。這些神經網路能提前預測風暴,可以在颶風來襲前先發出警報以爭取更多的疏散時間。
MATLAB
熟悉 MATLAB 軟體的工程師可以使用 MATLAB 程式碼來開發深度學習工具。加拿大阿爾伯塔大學的研究人員利用 MATLAB 和 NVIDIA GPU,以 避免進行不必要的攝護腺癌活體組織切片檢查 。該團隊的深度學習模型分析了細胞外囊泡的生物標記資料,預測是否出現癌細胞。
開發人員可以通過 MATLAB GPU Coder,使用 TensorRT 自動產生出優化後的推論引擎,以進行推論作業。
Microsoft Cognitive Toolkit
微軟在2014年為支援 Cortana 等自家人工智慧模型而開發出的這款深度學習框架,最早名為 CNTK。健康科技公司 IRIS 使用 NVIDIA Tesla GPU 和 Microsoft Cognitive Toolkit 來 協助預防 糖尿病視網膜病變或糖尿病引起的失明情況。除非是在一般的眼科檢查活動中發現,不然患者對於罹病一事也不自知。IRIS 的神經網路分析視網膜影像,建議是否該將患者轉診給醫生。
開發人員可以匯出到 ONNX,再使用 NVIDIA TensorRT 進行優化和部署,以進行推論作業。
PyTorch
最早是在 2011 年發布、使用程式語言 Lua 開發出的熱門深度學習框架 Torch,Facebook 在2017年推出採用 Torch 功能且在 Python 中執行的 PyTorch。在 NVIDIA DGX Station 和 TITAN Xp GPU 的助力下, 首個人類活體細胞預測 3D 模型 採用 PyTorch。艾倫細胞科學研究所(Allen Institute of Cell Science)的研究人員開發出這個模型,讓科學家能在虛擬環境裡,以數位化的方式觀看和操縱細胞行為。這個使用卷積神經網路(CNNs)建立起的細胞模型,可用以替代昂貴的螢光顯微鏡,使得科學家能藉由過去認為不可能的方式,理解和預測細胞動力學的發展潛力。
開發人員可以匯出到 ONNX,再使用 NVIDIA TensorRT 進行優化和部署,以進行推論作業。
TensorFlow
德州大學安德森癌症中心的研究人員使用 TensorFlow 來判斷高精度放射治療方式 。放射科醫師通常會檢視癌症患者的醫療掃描影像,以判斷在不損害正常組織的情況下該使用的輻射量來鎖定腫瘤。研究人員使用 NVIDIA Tesla GPU 開發出一種深度學習模型,此模型學習辨識和重新建立醫生設計的模式,以找出放療標靶區域。
開發人員可以整合 TensorFlow-TensorRT,在 TensorFlow 內優化模型;,或是匯出 TensorFlow 模型,再使用 NVIDIA TensorRT 內建的 TensorFlow 模型匯入程式,在 TensorRT 中進行優化,以進行推論作業。
框架廣大的商業生態體系
NVIDIA 與上述多個框架攜手合作,還有其它像百度的 PaddlePaddle,以開發出深度學習應用程式。
新的深度學習框架不斷出現,反映出開發人員廣泛採用神經網路一事, Theano 和 Torch 這些很早便問世的深度學習框架,創造出不少深度學習應用程式,只是開發者在2017年便宣布停止開發。
NVIDIA 的深度學習框架團隊直接 參與 其中多項開放源碼工作, 去年便貢獻出八百多項 ,以提高框架的易用性和效能。
開發人員可透過 NGC 容器註冊服務 立即使用上述多項框架,按照需求提供最佳的 GPU 加速效能。
請至 NVIDIA 開發者網站 ,以取得更多關於深度學習框架的資源和安裝資訊。在這個網站裡還對部分最常用的深度學習框架和應用程式,提供了 神經網路訓練腳本範例 ,像是電腦視覺、翻譯和物體偵測。在 NVIDIA GPU Cloud 目錄 裡則是提供了套裝深度學習容器。