【華爲雲技術分享】我眼中的華爲公有云AI平臺--ModelArts

【摘要】 時常有人問我,“爲什麼會有ModelArts存在”,這是一個很有價值的問題,結合國外專家對AWS Sagemaker的評價,我決定寫一篇文章,講講我對華爲雲ModelArts全流程AI平臺的理解。

前言

AWS Sagemaker has been a great deal for most data scientists who would want to accomplish a truly end-to-end ML solution.

                                                         by John Moolayil

這是數據科學在線網站“towards data science”一篇文章中的一段話。時常有人問我,“爲什麼會有ModelArts存在”,這是一個很有價值的問題,結合國外專家對AWS Sagemaker的評價,我決定寫一篇文章,講講我對華爲雲ModelArts全流程AI平臺的理解。

ModelArts平臺的初心

爲什麼不能僅僅使用開源軟件構建AI訓練和推理過程?答案是,可以的,但是不能用於大規模生產環境下,至於爲什麼我這麼說,讓我們先談談人工智能產品。我認爲,如果要將人工智能技術集成到各個行業,需要有一套完整的軟硬件平臺支撐。

人工智能平臺大致的分層架構如下圖所示:

完整的人工智能平臺,水平方向上支持端、邊、雲三種場景,每個場景均涵蓋了從底層硬件至上層應用。

最底層是芯片層(例如華爲的昇騰芯片、Google的TPU芯片、NVIDIA的GPU卡),再往上是適用於端邊雲的硬件系統(包括服務器和終端設備等)及其基礎軟件環境(如雲服務、操作系統)。

位於這三層之上的是AI計算引擎層,AI計算引擎可以藉助計算資源,完成AI模型的訓練和推理。當模型訓練後之後,需要部署進行推理,推理模塊由於計算資源消耗較少,更容易覆蓋端、邊、雲三個場景。

在AI計算引擎之上,人工智能平臺提供了常用的AI框架、算法、模型及其其他工具方便用戶進行AI業務的開展。常用的AI工具包括但不限於:數據的格式轉換、預處理、模型保存、模型評估、模型壓縮等等。AI框架、算法、模型和工具是解決常用AI問題時必備的組件。這些可以大大降低AI應用開發的門檻,簡化開發AI應用所需的代碼量。在此之上,AI應用平臺服務提供AI應用的開發和部署服務,支持一次開發、任意部署(含雲、邊、端)。

再往上是AI應用平臺服務,它提供端到端的AI應用開發和部署服務。

最頂層是基於AI應用平臺服務開發出的AI解決方案和AI應用,可用於解決業務問題。

自下向上的每一層,我們可以看出,AI平臺需要提供從硬件到軟件、算法工具再到雲服務的全棧優化,才能夠真正提升AI應用開發的效率,進而使能行業AI。

ModelArts平臺的初心,除了降低以上所說的各層的複雜性之外,更是爲了便於用戶創造AI應用。爲什麼AI應用有別於傳統軟件應用?因爲目前常用的人工智能算法,大多基於概率統計,所以具有一定的不確定性和概率性。例如在圖像分類場景下,任何AI模型都不可能實現100%的分類準確率。當AI模型預測一張圖像類別時必須伴隨着一定的概率值,這個概率值不可能達到100%,只能無限接近。而傳統AI軟件基本都在執行確定性的操作,不會出現概率性。這就是AI應用和傳統軟件應用最大的區別。

如下表所示,從產品設計、方案設計、開發、測試、上線再到運維的全生命週期的每個階段中,傳統軟件應用開發和AI應用開發都有很大的區別。

初識ModelArts

這是ModelArts的首頁,有人會說爲什麼這麼雜亂,很多功能都被平鋪在了首頁上?如果你換位思考,ModelArts是面向2C用戶的AI平臺,從完全不懂編程的小白,到精通AI開發全流程的工程師,我們要讓更多人享受到AI帶來的紅利,我們自然需要覆蓋更廣的用戶技能範圍,所以,你看到了自動學習、AI全流程開發,這兩個不同方向並排在了首頁。普惠,瞭然於心。

進一步剖析ModelArts

瞭解一下AI全流程開發,如下圖所示:

l  對於數據管理的理解

AI應用開發的全流程是對數據源不斷地進行處理,並得到最終期望結果的過程。這個過程的每個步驟,都會基於一定的處理邏輯對輸入數據進行處理,並得到輸出數據,同時也可能會產生一個或多個模型,以及一些可能的元信息文件(如配置項文件等)。

在處理的過程中,可能會接受外部輸入(例如用戶的輸入、配置、其他外部環境的輸入等)。每個處理步驟的處理邏輯可以是平臺內置的處理邏輯,也可以是開發者自定義的處理邏輯(例如開發者利用平臺的開發調試環境開發的一套代碼)。當數據源經過一系列處理之後,我們會得到最終的結果數據(例如圖像識別精度等報表數據)。在這一系列的處理步驟中,可能會出現反覆,例如當我們對某個處理步驟輸出的數據不滿意時,可以重新修正輸入數據或者處理邏輯,重新進行處理,也可以跳到其他處理步驟進行進一步處理。

當前,大部分人工智能是圍繞數據爲中心進行開發,其中涉及到的算法往往以概率統計爲基礎,這些算法往往對其輸入數據有非常強的先驗假設(例如獨立同分布等),我們需要將原始數據轉換爲滿足這些假設的數據才能用來訓練模型。

學術界對於一些常見的我們通常專注於算法的創新設計和開發,而較少地去做數據的採集、清洗、處理等工作。工業界情況恰好相反,我們需要在數據方面做非常多的工作,例如當我們需要採用機器學習分類算法解決一個具體業務問題時,數據來源可能是多方面的,可能是在本地存儲的某些文件,也可能是業務系統的數據庫,也可能是一些紙質文檔。

因此,我們需要統一的數據源接入層完成數據採集。在這些數據採集過程中,可能還會涉及到模型的訓練和推理。例如,可以調用一個現有的OCR模型用來識別紙質文檔上的關鍵數據,用於電子化歸檔並做進一步處理。除了數據採集之外,我們還需要進行一系列的數據預處理(例如脫敏、去燥、校驗、條件篩選等等)。由於目前人工智能算法大部分都是基於監督學習的方法,所以數據標註十分必要。另外,實際的數據經常會面臨很多問題,比如數據質量較差、數據冗餘性較多、數據規律發現難等。因此數據需要額外的調優工作。數據經過一系列採集、處理、標註、調優之後還需要進行半自動、自動化審覈驗證。例如在經過標註之後,我們需要能夠及時評估標註質量。最後,爲了方便管理數據,我們需要數據管理來實現數據的存儲對接、數據權限控制、數據版本控制、數據元信息管理、數據集切分等。

數據獲取:數據源接入模塊能夠保證ModelArts方便地讀取各類數據,例如存儲在數據庫、本地文件系統、對象存儲系統等上的離線數據,也可以是來自於實時流系統的數據流、消息等。另外,爲了應對數據獲取難的問題,ModelArts服務提供了數據檢索和數據擴增的能力。

數據預處理:提供一系列的預處理算法和工具包,例如針對於非結構化數據的格式合法性校驗、數據脫敏,以及針對於結構化(表格類)數據的特徵清洗(異常樣本去除、採樣等,還有一些針對單個特徵的缺失值補充、歸一化、統計變換、離散化等)。

數據標註:針對於非結構化數據(例如圖像、視頻、文本、音頻等)通常,提供一系列的智能化標註能力和團隊標註能力。

數據調優:提供數據生成、數據遷移、數據選擇、特徵選擇的能力,以及數據特徵分析、標籤分析、數據可視化的能力。

數據驗證和平臺:提供數據審覈、標註審覈的能力,使處理後的數據滿足可信要求。

數據集管理:提供數據集存儲管理(對接多類存儲系統,如對象存儲系統、本地文件系統等)、數據集版本管理、數據元信息管理、數據集切分和生成。

l  對於開發環境的理解

在AI研究探索場景中,Jupyter 作爲一個特殊的存在迅速成長爲AI探索類場景開發的首選,能夠在其各個階段滿足開發者訴求並覆蓋這些關鍵點,以及支持在瀏覽器中使用的特點。

Jupyter 起始於 IPython 項目,IPython 最初是專注於 Python 的項目,但隨着項目發展壯大,已經不僅僅侷限於 Python 這一種編程語言了。按照Jupyter創始人的想法,最初的目標是做一個能直接支持Julia(Ju),Python(Py)以及R三種科學運算語言的交互式計算工具平臺,所以將他命名爲Ju-Py-te-R,發展到現在Jupyter已經成爲一個幾乎支持所有語言,能夠把代碼、計算輸出、解釋文檔,多媒體資源整合在一起的多功能科學運算平臺。

這裏需要提到的另外一個概念就是“文學編程”,文學編程是一種由Donald Knuth提出的編程範式。這種範式提供了用自然語言來解釋程序邏輯的機會。簡單來說,文學編程的讀者不是機器,而是人。 從寫出讓機器讀懂的代碼,過渡到向人們解說如何讓機器實現我們的想法,其中除了代碼,更多的是敘述性的文字、圖表等內容。 文學編程中間穿插着宏片段和傳統的源代碼,從中可以生成可編譯的源代碼。

作爲第一個貫穿整個科學計算研究的生命週期工具平臺,可以將可以分解爲,如果我們將科學計算研究全生命週期分解爲,個人探索,協作與分享,生產化運行環境,發表與教學,Notebook都可以在這些階段中滿足科研工作的需求。

Jupyter有沒有缺點?有的。如果你追求的是產品化代碼開發,例如代碼格式、依賴管理、產品打包、單元測試等等功能在IDE中是沒有很好的支持,當前有一些插件可以做,但是相比重型IDE,功能還是比較弱。此外,Jupyter定義爲研究類調試環境,一方面對於分佈式的任務當前推薦都是通過單機多進程的方式進行模擬,真實到有多節點拓撲信息的部分在Jupyter中不容易實現,另外一方面,Jupyter的架構並不適合跑非常重量級的作業。對於真實軟件產品開發的訴求,還是需要在IDE中進行工程化代碼開發,並配搭測試邏輯,將任務部署在集羣中進行運行。

所以,我們還是需要繼續使用pyCharm開發程序,但是如何讓本地的pyCharm與ModelArts結合在一起呢?放心,我們有pyCharm的ModelArts插件。

我們實際上使用一個PyCharm ToolKit工具來幫助建立從本地pyCharm IDE到ModelArts的連接通道,本案例我使用MXNet實現手寫數字圖像識別應用的示例,在本地快速完成代碼編寫,發佈到ModelArts公有云完成模型的訓練和模型生成。

安裝toolkit前需要先安裝2019.2版本(目前toolkit僅適配該版本)的pycharm,下載地址是:https://developer.huaweicloud.com/tools。

需要注意,如果已經安裝了高版本的pyCharm,需要首先卸載(自動)已安裝的pyCharm:

 

下載一個工具Pycharm-ToolKit-PC-2019.2-HEC-1.3.0.zip,連接本地IDE與雲之間的鏈路:

https://www.jetbrains.com/pycharm/download/other.html

解壓後看到一堆jar文件,

接着回到pyCharm IDE,打開Settings:

找到Plugins,選擇一個插件:

點擊RestartIDE:

重啓後看到如下界面:

然後我們需要去ModelArts網站申明祕鑰:

申請祕鑰:

短信驗證碼註冊成功後,請務必把csv文件保存到本機。

回到pyCharm IDE:

注意,如果填寫祕鑰鍵值對成功後,Edit Credential應該是要打鉤的,如果沒有,請查看網絡連接是否存在問題,例如不允許連接外網,或是對訪問外網有限制。

注意,需要你重新點擊edit credential按鈕,退出後就能看到打鉤了。

這樣我們就完成了pyCharm IDE與ModelArts的對接工作,進入下一步,實際訓練一個模型。

首先,下載手寫字的數據集:https://modelarts-cnnorth1-market-dataset.obs.cn-north-1.myhuaweicloud.com/dataset-market/Mnist-Data-Set/archiver/Mnist-Data-Set.zip

登錄華爲雲上傳OBS:

創建兩個文件夾,一個用於存放數據集,一個用於存放訓練生成的日誌(需要傳回到pyCharm IDE並顯示):

接着在pyCharm打開工程,點擊“Run Training Job”:

填寫參數,可以參考ModelArts訓練模型時填寫的參數:

訓練完成後,訓練模型保存在OBS中 /工程名/output/V0006/。

l  自動學習

在典型的機器學習應用場景中,開發者還必須選擇合適的數據預處理工具,特徵提取和特徵選擇方法,從而使原始數據適合機器學習的輸入。 在經過這些預處理步驟之後,開發者通常需要根據經驗選擇恰當的模型算法,以滿足當前的場景需求。同時在做模型訓練的時候,通常需要做大量的超參數優化,以獲得比較優異的的機器學習模型的預測性能。

比如說深度學習在語音識別,圖像識別等領域已經取得了令人矚目的成就。AlexNet在2012年在ImageNet挑戰中打敗了所有其他傳統模型之後,越來越多更加複雜的網絡結構被提出來了,網絡的層數越來越深,目前的網絡已經從最初AlexNet的5個卷積層,增長到目前的上百層,其中涉及到的參數也超過了1億個。而這些參數都是基於研究人員不斷的試錯以及調參經驗所確定的。而這些通過人工調參得到的模型通常只能針對某一類問題(比如說圖像分類)有突出的性能,在遇到新的需要AI建模的問題的時候,通常需要重新構建AI模型,所以在構建AI模型的時候,研究人員需要花費大量的時間和計算資源。

爲了降低模型構建的成本,提升AI建模的效率,研究人員提出了自動機器學習(AutoML)的概念,針對特定的機器學習任務,AutoML能夠端到端的完成數據處理,特徵提取,模型選擇以及模型評估。

談一個ModelArts的自動學習案例-心臟病預測。

我們已經瞭解了機器學習預測模型的實現原理,本文我們並不會自己動手從頭實現,因爲當前預測算法已經非常成熟,我們完全可以利用一些公有云大廠提供的自動學習技術,實現模型的快速訓練及預測。本案例我們採用的是華爲雲的公有云AI平臺ModelArts,數據來源Kaggle網站。

Kaggle是一家在線AI競賽網站,開源提供了針對各個行業的脫敏數據,用於支持學生訓練對應的AI模型。

首先需要下載開源數據集,原始數據(已開源的脫敏數據)下載地址如下:

https://www.kaggle.com/johnsmith88/heart-disease-dataset

打開csv文件,你可以看到如下圖所示:

上圖中的數據集截圖中包括了14個字段,對這14個字段的含義做逐一解釋:

1.         Age:年齡;

2.         Sex:性別;

3.         chest pain type (4 values):胸部疼痛類型;

4.         resting blood pressure:靜息血壓;

5.         serum cholestoral in mg/dl:血漿膽固醇水平;

6.         fasting blood sugar > 120 mg/dl:空腹血糖>120 mg/dl;

7.         resting electrocardiographic results (values 0,1,2):靜息心電圖結果;

8.         maximum heart rate achieved:最大心率;

9.         exercise induced angina:與運動相關的心絞痛;

10.     oldpeak = ST depression induced by exercise relative to rest:與靜息時比較,運動導致的ST段下移;

11.     the slope of the peak exercise ST segment:心電圖ST segment的傾斜度;

12.     number of major vessels (0-3) colored by flourosopy:透視檢查看到的血管數;

13.     thal: 1 = normal; 2 = fixed defect; 3 = reversable defect:檢測方式;

14.     target:0和1。

根據醫學雜誌上查到的信息,一般認爲,膽固醇介於200-300之間發病率高;心率異常易導致發病,最大心率在150到175間發病率高;最大心跳在150到175間發病率高;血壓在120到140時發病率高。

下載數據之後,我們接下來做的是上傳數據到華爲雲。華爲雲提供了OBS桶用於存放文件,本文所涉及的csv文件可以作爲對象上傳。上傳文件截圖如下圖所示:

注意,上傳文件前請刪除表頭字段名,否則訓練過程中會報錯。此外,數據集不用自己劃分爲訓練集和測試集,AI平臺會自動按照7:3的比例進行切分。數據預覽如下圖所示:

接下來就可以進行模型訓練了。首先登陸網站https://console.huaweicloud.com/modelarts/,首頁如下圖所示:

有沒有看到屏幕中間的“自動學習”按鈕?後續我會寫一篇文章系統性介紹什麼是自動學習,這裏先略過。我們本案例要做的是預測,也就是“預測分析”按鈕,點擊該按鈕。

點擊“創建項目”按鈕:

接着選定數據集後,你會看到如下圖所示的步驟,分爲數據標註、魔性訓練,以及部署上線。

點擊訓練按鈕,開始模型訓練,由於是機器學習算法,只需要採用CPU資源即可。

訓練任務完成後,你可以點擊進去查看模型的準確度預測(默認7:3比例已經預留了測試集,可以用來生成測試報告),如下圖所示:

l  AI市場

AI市場是一個面向一站式AI開發平臺,它提供AI數字資產(包括AI開發工作流和開箱即用的數據集、算法、模型等)的託管式存儲倉庫。AI市場提供細粒度權限控制的共享,使得個人或企業開發者,能夠以公開、私密的方式託管AI數字資產,從而促進開發人員、數據科學家和機器學習工程師使用相應數字資產進行協同工作。隨着AI市場測試版的不斷改進,後續將支持更多的用法和內容類型,從而進一步簡化 AI 的學習、實驗、開發和在生產環境中的部署與迭代。

AI市場售賣的由第三方發佈的人工智能領域相關AI數字資產本質上屬於軟件服務,可分爲算法類和模型類兩種形態。算法類軟件目前僅包含雲端算法(Cloud Algorithm)。模型類的軟件進一步根據不同的支持平臺,又細分爲雲端模型(Cloud Model)、慧眼技能(HiLens skill),以及HoloSens三種。

後記

ModelArts 是可以讓開發者上手更快、訓練更快、部署更快的全流程平臺。它可以爲企業帶來更多價值:

1、數據標準與準備效率百倍提升

在數據標註與準備階段,調查發現:數據標註與準備非常耗時費力,約佔整體開發時間50%,所以有大家常說的“沒有人工就沒有智能”。 ModelArts內置AI數據框架,以AI的機制來治理數據,用迭代訓練來解決標註的數據量問題。尤其適合數據量很大的場景,數據標註與準備效率百倍提升。

2、模型訓練耗時降一半

在模型訓練階段,針對模型訓練耗時長的挑戰,ModelArts通過各類優化技術,尤其,我們的級聯式混合並行技術,在同樣的模型、數據集和同等硬件資源情況下,模型訓練耗時降低一半。

3、模型一鍵部署到雲、邊、端

在模型部署階段,AI規模化落地,模型部署會非常複雜。例如智慧交通,就有一個常見場景:即更新後的模型,需要一次性同時部署到各種不同規格、不同廠商的攝像頭上,是一項非常耗時、費力的巨大工程。而ModelArts已實現一鍵推送模型到所有邊緣、端的設備上,雲上的部署還支持 在線和批量推理,滿足大併發和分佈式等多種場景需求。

4、用AI的機制加速AI開發過程,降低開發門檻

解決了標註、訓練、部署之後,ModelArts還能幫助開發者提升開發的效率。AI要規模化走進各行各業,必須要變成一種易掌握的基本技能。ModelArts的自動學習功能,包括模型的自動設計與自動調參等,目的是讓每個開發者,都可以快速上手。

ModelArts實現在AI開發全生命週期中,從原始數據、標註數據、訓練作業、算法、模型、推理服務等,提供全流程可視化管理。實現千萬級模型、數據集以及服務等對象的管理,無需人工干預,自動生成溯源圖,選擇任一模型,就可以找到對應的數據集、參數、模型部署在哪裏。尤其是訓練斷點接續和訓練結果比對,這些很實用的功能很受華爲內部開發者歡迎。

5、ModelArts幫助開發者構建自己的生態

ModelArts爲開發者提供了支持數據、模型和API的共享管理平臺。

對內,可以內部實現數據、模型的共享,幫助企業提升AI開發效率,構建企業自己的AI能力,同時全方位的保障企業AI信息資產的安全。

對外,通過模型倉庫,實現開放、健康的生態,幫助AI開發者實現知識到價值的變現,幫開發者構建自己的影響力和生態。

正如本文開篇的引用,Sagemaker是我們強有力的友商AWS的產品,做得很不錯,我們始終要滿懷着尊敬之心,從友商身上學習精髓,我們始終要以客戶爲中心,爲他們提供各種各樣的服務,讓中國的用戶可以享受安全、可信的公有云服務,可以基於公有云服務享受AI帶來的紅利。

 

本文作者:周明耀,九三學社社員,2004年畢業於浙江大學,工學碩士。現任華爲雲AI產品研發總監,著有《大話Java性能優化》、《深入理解JVM&G1 GC》、《技術領導力-如何帶領一支軟件研發團隊》、《程序員煉成記》等。職業生涯從軟件工程師起步,後轉爲分佈式技術工程師、大數據技術工程師,2016年開始接觸AI技術。微信號:michael_tec。

 

點擊這裏,瞭解更多精彩內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章