NVIDIA GPU Cloud加速醫(yī)學影像機器學習模型開發(fā)及應(yīng)用部署

從頭搭建機器學習平臺--費時費力

醫(yī)學影像是深度學習等人工智能相關(guān)技術(shù)在醫(yī)療健康領(lǐng)域應(yīng)用最為迅猛的方向,作為深耕醫(yī)學影像領(lǐng)域多年,長期關(guān)注技術(shù)趨勢的企業(yè),翼展在2016年也開始進行醫(yī)學影像人工智能應(yīng)用的研發(fā)。當時公有云廠商能夠提供GPU實例的還非常少,并且性價比不太高,于是我們又走了一遍自己采購硬件搭建服務(wù)器的老路。先是配置了一臺雙Titan X卡的工作站小試牛刀,按照網(wǎng)上的教程一步步安裝ubuntu,NVIDIA顯卡驅(qū)動程序,CUDA,cuDNN,最后編譯Caffe的時候發(fā)現(xiàn)庫版本不對,又折騰了一圈重來。差不多搗鼓了一個禮拜才開始正式訓(xùn)練模型。后來上一個8卡的服務(wù)器,不敢再自己折騰了,操作系統(tǒng)和底層驅(qū)動都讓第三方廠商給配置好。然而隨著人員的增加,一方面機時分配不過來;另一方面機器學習框架的快速迭代,各種不同模型依賴的框架和庫版本都不太一樣,導(dǎo)致非常難于管理。尤其是2017年翼展開始布局醫(yī)學影像人工智能開放協(xié)作平臺后,我們需要部署的機器學習應(yīng)用越來越多,手工方式的落后管理必然要被工程化管理所取代。雖然這個時候工程團隊已經(jīng)擁抱DevOps,有了Docker的運維經(jīng)驗,不過管理GPU云上實例及各種機器學習框架不同版本仍然是一個噩夢----直到NGC(NVIDIA GPU Cloud)的出現(xiàn)。

為了更好地落地AI產(chǎn)品,貼近臨床,翼展醫(yī)療集團打造了人工智能開放協(xié)作平臺,為人工智能企業(yè)和創(chuàng)業(yè)團隊提供人工智能產(chǎn)品的發(fā)布和搭建平臺,在云診斷平臺集成各病種AI診斷工具,主要分為高端篩查及專項篩查兩個方向,目前平臺已上線十余種人工智能產(chǎn)品,包括用于血管壁分割及斑塊成分分析的磁共振斑塊成像解決方案、CT下肺結(jié)節(jié)篩查、DR胸肺常見疾病篩查、DR智能報告自動生成系統(tǒng)等,為合作醫(yī)院及各類醫(yī)療機構(gòu)提供了強大的支撐,降本增效,促進診斷能力極大提升。
同時,通過建立人工智能開放協(xié)作平臺、在線云診斷平臺、翼展醫(yī)學影像診斷中心、影像醫(yī)生集團、多病種早篩中心,打造了行業(yè)獨有的多維生態(tài)進化體系,為人工智能產(chǎn)品提供了充足的落地應(yīng)用場景,使其更加貼近臨床,更好地服務(wù)于醫(yī)生和患者,使得高精度遠程診療成為現(xiàn)實,逐步幫助醫(yī)療資源均衡化。

醫(yī)學影像人工智能開放協(xié)作平臺架構(gòu)

機器學習團隊面臨的挑戰(zhàn)

  1. 第一個挑戰(zhàn)來自于團隊內(nèi)部成員的以及項目的增加。開始時,只有一個專職的深度學習科學家,可以在雙卡工作站做小批量數(shù)據(jù)預(yù)訓(xùn)練,然后上服務(wù)器做大規(guī)模訓(xùn)練。本地和遠程的環(huán)境都設(shè)置成一樣就可以。后來隨著團隊成員的增加,既有Kaggle比賽冠軍老手,又有剛?cè)腴T才做過MNIST的實習生,就開始需要分配訓(xùn)練機時了。由于每個人的項目不一樣,使用的模型不同,底層依賴的深度學習框架及庫版本也不一致,一個統(tǒng)一的完全沒有隔離的環(huán)境越來越不能滿足日常訓(xùn)練的要求。曾經(jīng)出現(xiàn)過的事故是,有模型需要將Python版本升級,升級之后導(dǎo)致其他人的模型無法正常工作了。我們設(shè)定了嚴格的規(guī)章制度,劃分用戶空間,每個人需要的Python執(zhí)行環(huán)境、深度學習框架及第三方庫都自行安裝在自己的用戶空間。對于顯卡驅(qū)動程序及CUDA這樣的底層庫,則只能由管理員來進行安裝和升級。升級前還得做好兼容性測試,一旦不同用戶的模型有沖突則非常難解決。后來隨著開始租用公有云的GPU實例,情況得到了一定程度的好轉(zhuǎn),不過在公有云上安裝配置好環(huán)境依然費時費力。
  2. 2017年,翼展開始布局人工智能開放協(xié)作平臺,為人工智能企業(yè)和創(chuàng)業(yè)團隊提供醫(yī)學影像人工智能產(chǎn)品發(fā)布和運行平臺。這個平臺需要接入不同產(chǎn)商的產(chǎn)品,有的產(chǎn)品是通過API接入的,后臺深度學習模型的運行環(huán)境由產(chǎn)商自行維護,我們的工作還比較輕松;有的產(chǎn)商是直接將模型發(fā)布給我們,由翼展提供運行時環(huán)境,并且模型的迭代速度很快,新版本模型底層依賴版本也會相應(yīng)變化,每次升級的操作都不是簡單的部署一個新模型那么簡單,還需要同時將運行時環(huán)境一并升級。而且工程團隊通常至少需要同時維護一套測試環(huán)境和生產(chǎn)環(huán)境。由于在翼展云影遠程診斷系統(tǒng)部署上了Docker的經(jīng)驗,我們自然想到了應(yīng)用nvidia-docker來進行人工智能應(yīng)用的部署。


    醫(yī)學影像人工智能開放協(xié)作平臺應(yīng)用涉及疾病領(lǐng)域

NVIDIA GPU Cloud帶來簡單高效的解決方案

剛聽到NVIDIA GPU Cloud的時候可能會誤以為NVIDIA要賣公有云服務(wù)了。然而并不是:

NVIDIA GPU Cloud (NGC) 是針對深度學習和科學計算優(yōu)化的基于GPU加速的云平臺。在當前的發(fā)行版本中,NGC包含了NGC容器,NGC容器注冊,NGC網(wǎng)站,以及用以運行深度學習容器的平臺軟件。

NGC容器

NGC容器旨在提供一個軟件平臺,這個平臺基于最小的操作系統(tǒng)要求、安裝在服務(wù)器或工作站上Docker和驅(qū)動,通過NGC容器注冊里的NGC容器提供所有的應(yīng)用程序和SDK軟件。
NGC管理著一份目錄,包含了完全集成和優(yōu)化的深度學習框架容器,適用于單GPU以及多GPU配置環(huán)境。這些容器包括:CUDA 工具包,DIGITS工作流,以及以下深度學習框架:NVCaffe, Caffe2, Microsoft Cognitive Toolkit (CNTK), MXNet, PyTorch, TensorFlow, Theano 和 Torch。這些框架容器以開箱即可用的方式交付,包含了所有必須的依賴,比如CUDA運行時環(huán)境、NVIDIA庫和運行系統(tǒng)環(huán)境。
每個框架容器鏡像還包含了框架源代碼,以支持用戶自定義修改和增強功能,以及完整的軟件開發(fā)棧。
NVIDIA每月更新這些深度學習的容器,以確保提供最佳性能。
在深度學習框架容器的基礎(chǔ)上,NGC也提供了一系列高性能計算可視化應(yīng)用容器,采用支持業(yè)界領(lǐng)先的可視化工具,包括集成了NVIDIA Index 立體體渲染的ParaView, NVIDIA OptiX 光線追蹤庫和NVIDIA Holodeck,以實現(xiàn)高質(zhì)量可交互的實時視覺效果。這些容器目前處于公測階段。
NGC也提供流行常用的第三方兼容GPU、符合NGC標準和最佳實踐的高性能計算應(yīng)用容器,使用戶可以方便的在最短的時間內(nèi)啟動和運行起來。

NVIDIA GPU Cloud

這不正是我們一直在尋找的東西嗎?看到這個介紹的時候,我們第一時間在NGC網(wǎng)站進行了注冊,并且很快在自己的服務(wù)器上pull了一個NGC容器試用:

docker pull nvcr.io/nvidia/pytorch:18.04-py3
nvidia-docker run -it --rm -v local_dir:container_dir nvcr.io/nvidia/pytorch:18.04-py3

真的如NVIDIA GPU Cloud官方廣告所說,“幾分鐘內(nèi)即可開始創(chuàng)新,不需要數(shù)周時間”。當然首次下載鏡像還是需要消耗一點時間,不過接下來的事情就變得非常輕松了,復(fù)雜的軟件安裝和配置ngc容器都幫你搞定,可以迅速啟動你的訓(xùn)練任務(wù)。NVIDIA深度學習框架容器每月都會進行更新,想嘗鮮的話pull一個新版本的鏡像并且啟動容器即可,無需擔心安裝新版本的軟件會造成以前模型跑不起來的嚴重后果,更徹底擺脫了不同軟件底層依賴庫版本沖突(如果你擔任過系統(tǒng)管理員,你一定知道我在說什么)。最重要的是,NGC可以在自建服務(wù)器上使用,也可以在阿里云等公有云上使用。

現(xiàn)在,有新的小伙伴加入要申請機器學習訓(xùn)練環(huán)境,或者有新的項目要啟動,亦或有新的模型要部署,運維工程師只需要對方將深度學習框架的版本告知,然后在ngc網(wǎng)站找到對應(yīng)的鏡像,運行一個docker pull命令,然后就可以悠閑的去喝杯咖啡了。

將深度學習應(yīng)用打包成nvidia-docker鏡像

我們正在做的事情,是利用NGC的自定義容器功能,將自研的深度學習應(yīng)用發(fā)布為nvidia-docker鏡像,這樣可以進一步簡化應(yīng)用部署,同時可以與工程團隊其他項目共用一套持續(xù)集成及運維的流程。自己探路成功以后,亦會建議我們的合作伙伴將其應(yīng)用發(fā)布為NGC自定義容器鏡像,共同利用NGC這一平臺加速醫(yī)學影像人工智能應(yīng)用的開發(fā)及部署。

一點局限

可以說NGC將深度學習開發(fā)運行環(huán)境所需要的一切軟件依賴都通過一個nvidia-docker鏡像打包在一起了,除了----NVIDIA顯卡驅(qū)動。這是唯一還需要手動安裝在宿主機上的組件。我們在使用NGC的過程中曾經(jīng)遇到的一個問題是,某個鏡像是會依賴一個指定版本的NVIDIA驅(qū)動程序的。當我們試圖升級PyTorch鏡像到18.11以便體驗一下即將發(fā)布的PyTorch v1.0的新特性時,發(fā)現(xiàn)需要安裝410.xx版本的驅(qū)動程序,而這個版本的驅(qū)動程序還沒有針對Linux平臺的發(fā)布(2018年11月底,目前已經(jīng)提供了),這就尷尬??了。
另外由于眾所不知的原因,建議nvidia官網(wǎng)、nvidia開發(fā)者網(wǎng)站和ngc網(wǎng)站盡量不引入第三方網(wǎng)站的資源,或者做降級處理,不然會給國內(nèi)開發(fā)者帶來可訪問性方面的問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容