葛華利 王甲衛 苑學賀
北京中電普華信息技術有限公司 北京 100192
人工智能技術作為近年來的發展最為迅速的一門技術,已經悄然地遍布到人們生活的方方面面,從智能語音輸入,OCR文字識別,到無人駕駛汽車,人工智能已經發展成為最為火熱的行業。
人工智能平臺作為企業發力人工智能業務有力的基礎架構抓手,能夠隨時隨地使用數據。實現豐富的數據源接入,包括關系型數據庫、文本文件、分布式數據引擎、MPP數據庫、流數據、API數據、圖片數據等,實現企業各類數據統一接入與管理。數據進入之后,可以作為樣本數據進入樣本庫。從樣本數據收集,分類,清洗,標注,管理的全生命周期流程,到模型框架的構建,模型結構的設計,再到模型的訓練,模型參數的調優,最后再到模型的部署發布,對外提供服務,能夠在統一的平臺上進行一站式操作,并且平臺具備完整的管理、監控。運維流程。
通常,從事人工智能模型的設計開發,需要大量的專業基礎知識,如果沒有一定的知識積累及經驗積累,很難迅速的開發出理想的模型。但通過預訓練的模型以及簡潔明了的人工智能平臺,即便從業時間很短,且經驗不豐富的人員也可以迅速的開發出適合自己需求的模型。經過預先訓練但可自定義的人工智能構建塊可以在不熟悉編程或數據科學的情況下使用。從本質上講,無須大量的模型培訓即可完成工作。
簡而言之,人工智能平臺,瞄準于為用戶提供全方位的樣本數據管理和模型訓練、推理服務能力,覆蓋樣本數據集管理、模型開發、模型訓練、模型庫管理和模型服務5大功能的AI全生命周期管理平臺,助力用戶快速高效地實現相關模型產品、業務升級,聚力AI未來。
Kubeflow是一個基于 Kubernetes 構建的可組合、可以移植、可擴展的機器學習平臺[1],可以很好支持在公有云或私有云上實現完整的Machine Learning工作流程。Kubeflow 作為一個基于云原生構建的機器學習任務工具大集合,Kubeflow把諸多對機器學習的支持,比如模型訓練,超參數訓練,模型部署等進行組合并以容器化的方式進行部署,并提供系統的高可用及擴展性,研究人員就可以利用Kubeflow進行不同的機器學習任務,或者是可以驗證某個模型的識別精度及能力,或者是快速落地基于特定模型的落地場景。為了讓機器學習模型正常工作,往往還需要將其整合至應用程序當中具體包括Web應用程序、移動應用程序。利用Kubeflow,研究人員無須學習最新概念與平臺知識、也不必處理入口與網絡證書等復雜因素,即可輕松將模型部署至應用程序之內。正是基于此,kubeflow所有的組件、模塊均基于Kubernetes部署發布。整體的架構圖如圖1所示[2]:

圖1 Kubeflow整體架構
Kubeflow的組件包括:Serving、Metadata、Tools、Jupyter Notebooks、Traing Operators、Workflow Building以及Pipelines。

圖2 Kubeflow組件
組件簡要說明如下:
服務化(Serving)
模型的在線部署,將模型轉化為服務,支持版本控制及無須停止線上服務、切換模型等。對外提供人工智能的能力。供外部系統調用或使用。
元數據(Metadata)
跟蹤和管理機器學習過程中的元數據。
工具(Tools)
控制面板及監控工具,圖形化操作,方便用戶使用。
編輯器(Jupyter Notebooks)
模型開發、訓練的使用的代碼編碼器。
訓練器(Training Operators)
集成多種算法框架,供開發者選擇使用。
工作流(Workflow Building)
工作流組件,用于定義復雜的ML工作流。
管道(Pipeliness)
用于執行定義好的工作流[3]。
人工智能構建模型,絕不僅僅是“建模”而已。在真實的生產應用環境中,整個機器學習的Pipeline,還包括了環境配置、數據管道搭建、數據整合、分析、視覺化,模型訓練,模型驗證發布,監控日志等多個環節,涉及不同的技術、服務和工具。
Kubeflow囊括了所有人工智能模型構建需要用到整體流程,從數據采集,驗證,到模型訓練和服務發布,幾乎所有的步驟Kubeflow都提供解決方案的組件,Kubeflow將人工智能構建模型的各個階段涉及的組件以微服務的方式進行組合,并最終以容器化的方式進行部署,提供整個流程各個系統的高可用及方便進行擴展。當然,如果具備私有云環境,完全可以構建自有的kubeflow平臺。也可以選擇使用谷歌云(GCP)、亞馬孫(AWS)、微軟(Azure)上提供的容器集群或本地已有的容器集群作為底層的kubernetes。目前kubeflow1.2已經在kubernetes1.16版本上通過兼容性測試[4]。
目前我們可以基于kubeflow來構建所需的人工智能平臺,充分利用本地的Kubernetes集群,同時,可以按需建設所需要的樣本庫、模型庫、算法庫、訓練管理能力、服務發布管理等能力等。樣本庫用來管理已有或將要產生的樣本數據,在經過樣本預處理、樣本脫敏以及樣本標注之后,可以作為模型訓練的訓練集、驗證集和測試集。如果進一步提升樣本庫的易用性,集成自動標注能力將更有利于樣本數據的處理。通過少量樣本預訓練模型后即可實現自動標注功能,極大地節省標注所耗費的人力和時間。模型庫用來管理已有的模型或即將訓練完成的模型。在模型數量、種類達到一定數量規模時,系統化、條理化的管理是非常有必要的。模型的框架、API接口、輸入參數、輸出參數、模型運行所需資源等信息,都可以通過模型庫進行管理,并做成不同維度的指標,方便使用。算法庫用來管理各種算法、算子,在團隊訓練時,各團隊業務方向不同,訓練推理所使用框架不同,算法中用到的算子也不盡相同,通過Kubeflow可以形成統一的管理機制和體系。訓練管理在多人多任務時顯得尤為重要,平臺的資源調度,訓練任務的優先級等,都需要統一調度安排。運行管理可以依據Kubeflow本身自有組件的功能,也可以進行二次開發,適配個性化需求。

圖3 基于Kubeflow的人工智能平臺
Kubeflow基于云基礎設施提供快速AI訓練、部署環境,支持規模化地構建和部署AI應用,可以加速實現AI技術從驗證、到實用再到技術落地的速度。消除這一環節中的應用環境障礙、組件選型適配障礙,減少配置復雜度,降低人為錯誤,獲得更好的開發使用體驗。重點是,無論有什么樣的場景需求,都可以定制化自己的AI工作流程,并且讓系統自動調度分配閑置的機器。所以Kubeflow非常適合構建人工智能平臺,通過Kubeflow的使用,將會極大的提高開發、應用生產力。