美國時間12月8日,在亞馬遜 re:Invent 2020 上,AWS 人工智慧副總裁 Swami Sivasubramanian 宣布了雲上機器學習服務——Amazon SageMaker的諸多更新,從這次更新中,看到了雲上機器學習方案的優越性。
在全球發布後的第一時間,AWS大中華區雲服務產品管理總經理顧凡和AWS大中華區機器學習產品總監代聞及時向中國媒體分享並解讀了這次連珠炮一樣的發布。
從顧凡的介紹中了解到,2016年,AWS開始在雲上提供機器學習服務,2017年開始加速,最近三年,每年新增的服務和功能超過200個,全球有超過十萬家企業用戶在使用AWS雲上的機器學習服務,這些用戶遍布多個行業,可謂遍地開花。從AWS的全球化視野來看,中國區用戶是在機器學習應用方面走的比較領先的。
在談到AWS構建雲上機器學習服務的側重點時,顧凡提到了三點,一個是在服務的寬度和深度上發力,一個是考慮與用戶應用環境的集成,最後一個是幫助用戶構建機器學習的能力,要授人以漁。
上圖提到的是AWS的雲上機器學習服務的三個維度:多元的基礎架構,包括各種AI開發框架、各種算力架構類型以及各種機器學習實例主機;高級的API服務,各種訓練好的模型,只需調用API即可使用;另外一層是機器學習煉丹爐一樣的服務——Amazon SageMaker,是AWS最具特色的雲上機器學習服務,是目前已知同類產品中功能最強大的一個。
隨著數據越來越多的出現在雲上,隨著雲上機器學習功能的完善,體驗的一步步優化,雲上機器學習優勢將更明顯,此次新發布中,分布式的機器學習方案就非常體現雲的優越性,同時也能明顯感覺到,企業對機器學習的接受度在快速提高,應用更加普遍了,機器學習不再是紙上談兵,一個行之有效的服務可以幫助企業快速落地機器學習的能力。
在詳細介紹此次發布的內容前,先簡單介紹下我個人對新功能的看法:
其中有幾個功能是預料之中的,比如Amazon SageMaker Data Wrangler是做數據準備工作的,這是繼續Ground Truth之後,在數據準備方面的又一個大動作,它通過預配置的一些操作來幫助用戶進行數據準備,能節省很大一部分數據準備的工作時間。此前一直覺得AWS在這部分做的不多,這下做了很好的補充。
機器學習的工作流(Pipeline)工具Amazon SageMaker Pipelines也是預料之中的發布,能幫助用戶分享和復現機器學習的訓練過程,便於組織內協作,還配合訓練迭代記錄工具來優化模型。當機器學習應用於生產環境中,成了一種家常便飯一樣的操作,工作流就非常有必要。
最能體現雲上機器學習優越性的發布Distributed Training on Amazon SageMaker。以分布式來進行機器學習訓練是很多人翹首以盼的高級特性,機器學習大都局限在單臺設備上,為此,很多人不得不選一臺配置儘可能高的機器,但訓練速度仍舊局限在單臺設備的算力。Distributed Training on Amazon SageMaker把訓練負載分配到多臺設備上,讓訓練時間變的可控,模型訓練和迭代會更及時。我最大的感受是,這種分布式的方案最能體現雲上機器學習的優越性。
有幾個功能期待值不是特別高,但做出來仍非常有價值,比如Amazon SageMaker Feature Store,是管理特徵數據的,便於分享和復用特徵數據;Deep Profiling for Amazon SageMaker Debugger 是查看訓練過程資源利用情況的工具,能優化成本;Amazon SageMaker Edge Manager是幫助把模型運行在邊緣端的工具;
最讓我驚訝的是Amazon SageMaker Clarify還能進行偏差檢測和模型解釋。在訓練前,能結合Amazon SageMaker Data Wrangler來分析檢測數據是否有傾向性,是否公正,能檢測數據分布的情況並給出提示。在模型訓練完成,在推理階段,還能幫用戶看出來哪些特徵對模型的影響比較大。有類似能力的方案似乎並不多,能讓開發者對於模型本身有更深的認識,為模型優化找方向。
以下內容是更為具體的介紹:
Amazon SageMaker Data Wrangler ——數據清洗、特徵提取神器
機器學習的訓練需要數據,但是有很多數據不能直接拿來做訓練,需要做處理,比如,處理數據格式不一樣的情況,要處理數據缺失的情況,處理數據明顯出錯的情況等等,這種把數據規範化的過程就屬於數據準備過程,然後,還需要將數據轉化為特徵,這部分工作稱為特徵工程。
在機器學習工作中,這些工作要消耗開發人員大量的時間。Amazon SageMaker Data Wrangler就是為了簡化這一過程。
Amazon SageMaker Data Wrangler首先可以從多種數據源接收數據,然後,用內置的300多個數據轉換器,對特徵進行規範化、轉換和組合,將原始數據進行處理後得到可用於訓練的數據,整個構成不需要用戶寫一行代碼。
轉換過程能在Amazon SageMaker Studio裡查看,看這些轉換是否符合預期。這些提取出來的特徵數據會保存在 Amazon SageMaker Feature Store 中,以供重複使用。
Amazon SageMaker Feature Store——特徵存儲和管理神器
Amazon SageMaker Feature Store 提供了一個新的存儲庫,可以存儲、更新、檢索和共享用於訓練和推理的特徵數據,如果沒有這一服務,用戶只能把特徵數據存在S3上。
真的需要這種服務嗎?其實,AWS是考慮到很多特徵(Feature)需要復用的情況,包括同一個人訓練不同模型,同一家公司不同部門都可能會復用特徵,作為機器學習專家的AWS發現了復用特徵時會的管理負擔,於是就推出了Amazon SageMaker Feature Store。
在訓練過程中,需要大批量訪問特徵數據,推理過程中,模型需要實時訪問部分特徵數據。兩個過程需要使用一樣的特徵數據,但有不同的訪問模式,開發者自己來做這件事其實並不容易。
Amazon SageMaker Feature Store就是為了解決這一問題,它提供了一個可供開發人員訪問和共享特徵的服務。
訓練階段它能方便地組織和更新大批量特徵數據,推理階段它能提供單毫秒級的低延遲訪問,來訪問少量特徵數據,既降低了生成模型的難度,又提供高了預測的精度和預測的性能。
Amazon SageMaker Feature Store 集成在 Amazon SageMaker Studio 中,
Amazon SageMaker Pipelines 實現工作流管理和自動化
開發過程中的CI/CD可以加速軟體開發和部署的效率,為了加速機器學習的工作效率,Amazon SageMaker Pipelines出現了,這是第一個專為機器學習構建的CI/CD(持續集成和持續交付)服務,目前此類服務很少,而且,使用起來比較麻煩。
Amazon SageMaker Pipelines可以設置機器學習的工作流,包括數據加載步驟、數據轉換過程(用Amazon SageMaker Data Wrangler)、保存特徵(用Amazon SageMaker Feature Store)、訓練配置及算法設置、調試步驟,以及優化步驟,設置機器學習的全流程。
Amazon SageMaker Pipelines可以使用相同的設置來重複進行端到端的工作流,也可以定期使用新數據重新運行工作流,來更新模型,更新模型的過程可以用Amazon SageMaker Experiments來記錄,幫助開發者調參和迭代模型。
創建的Amazon SageMaker Pipelines可以在團隊之間共享和重複使用,可以用一個工作流重新創建一個模型,也可以在基礎上修改,創建一個新的模型。
用戶可以通過Amazon SageMaker Studio來使用Amazon SageMaker Pipelines。
使用 Amazon SageMaker Clarify進行偏差檢測和模型解釋
開發人員有時會嘗試使用開源工具檢測訓練數據中的統計偏差,這需要大量的編程工作。而Amazon SageMaker Clarify能幫助用戶檢測整個機器學習工作流中的統計偏差,並能為模型所做的預測提供解釋。
Amazon SageMaker Clarify已集成到Amazon SageMaker Data Wrangler,它運行了一系列基於特徵數據的算法,用以識別數據準備過程中的偏差,並且清晰描述可能的偏差來源及其偏差程度。這樣,開發人員就可以採取措施來減小偏差。
Amazon SageMaker Clarify還與Amazon SageMaker Experiments集成使用,它還能詳細說明輸入到模型中的每個特徵是如何影響預測的。最後,Amazon SageMaker Clarify與 Amazon SageMaker Model Monitor集成,一旦模型特徵的重要性發生偏移,導致模型預測質量發生改變,它就會提醒開發人員。
用 Deep Profiling for Amazon SageMaker Debugger 做模型訓練剖析
Deep Profiling for Amazon SageMaker Debugger 能夠自動監控系統資源利用率,為訓練瓶頸提供告警。開發人員沒有一個標準的監控系統利用率的方法(例如 GPU、CPU、網絡吞吐量和內存 I/O)以識別和排除訓練作業中的瓶頸。因此,開發人員無法以最快的速度、最高的成本效益來訓練模型。
Amazon SageMaker Debugger通過最新的 Deep Profiling 功能擴大了監控系統資源利用率的範圍,在 Amazon SageMaker Studio 中或通過 AWS CloudWatch 發送訓練期間的問題告警,將使用情況關聯到訓練作業中的不同階段,或者訓練期間的特定時間點。
Amazon SageMaker Debugger 還可以根據告警觸發別的操作,比如,當檢測到 GPU 使用情況不正常時,即停止訓練作業。Amazon SageMaker Debugger Deep Profiling 目前支持 PyTorch、Apache MXNet 和 TensorFlow 等框架,無需在訓練腳本中更改任何代碼即可使用。
用 Distributed Training on Amazon SageMaker 縮短訓練時間
Distributed Training on Amazon SageMaker 使得訓練大型複雜深度學習模型的速度比當前的快上兩倍。當一些模型太大,無法容納在單個 GPU 提供的內存中時,用戶會嘗試在多個 GPU 間拆分模型,但拆分模型的方式和調整訓練代碼的過程非常複雜。業內也有一些別的實現方案,是許多人都致力於實現的一個功能。
為了克服這些挑戰,AWS拿出了自己的解決方案,用Distributed Training on Amazon SageMaker 提供兩種分布式訓練功能,一種是拆分數據,一種是拆分訓練好的模型。
第一種,Distributed Training 與 Amazon SageMaker 模型並行引擎一起,通過在多個 GPU 間自動分割數據,將訓練作業從一個 GPU 擴展到數百個或數千個 GPU,將訓練時間縮短多達 40%。
第二種,Distributed Training 與 Amazon SageMaker 模型並行引擎一起,自動剖析和識別分割模型的最佳方式,在多個 GPU 上高效分割具有數十億參數的大型複雜模型。
使開發人員能夠在不增加成本的情況下,提高大型模型的訓練速度,這一功能充分體現了雲上分布式架構的優勢。
使用 Amazon SageMaker Edge Manager管理邊緣設備模型
Amazon SageMaker Edge Manager 可以幫助開發人員優化、保護、監控和維護部署在邊緣設備集群上的機器學習模型。
能在降低內存佔用率的同時,提升運行速度,而且,準確性也沒有損失,當發現模型出現問題,可以重新訓練模型以便開發人員不斷提高模型的質量。
通過Amazon SageMaker JumpStart開啟機器學習之旅
Amazon SageMaker JumpStart 為開發人員提供了一個易於使用、可搜索的界面,用於查找同類最佳解決方案、算法和 notebook 示例。
當前,缺乏機器學習經驗的客戶很難開始機器學習部署,而高級的開發人員發現很難將機器學習應用到所有應用場景。
通過 Amazon SageMaker JumpStart,客戶現在可以快速找到針對其機器學習場景的相關信息。新接觸機器學習的開發人員可以從多個完整的端到端機器學習解決方案中進行選擇(例如欺詐檢測、客戶流失預測或時序預測),並且可以直接部署到 Amazon SageMaker Studio 環境中。有經驗的用戶則可以從一百多個機器學習模型中選擇,快速開始模型構建和訓練。