用Amazon SageMaker訓練和部署機器學習模型
譯文【51CTO.com快譯】Amazon SageMaker在re:Invent 2017大會上宣布,這是AWS的一種托管機器學習服務(wù)。它在云端支持訓練和托管機器學習模型??蛻艨梢栽谟ミ_Tesla K80和P100 GPU支持的集群上運行訓練作業(yè)。訓練作業(yè)的結(jié)果(準備用于推理的模型)可作為實現(xiàn)可擴展預(yù)測的REST API來呈現(xiàn)。
該服務(wù)還支持超參數(shù)調(diào)優(yōu),數(shù)據(jù)科學家和開發(fā)人員可以借助該服務(wù),找到最適合某一個算法和業(yè)務(wù)問題的***參數(shù)。比如說,為了解決典型的回歸問題,超參數(shù)調(diào)優(yōu)猜測哪些超參數(shù)組合可能獲得***結(jié)果,并運行訓練作業(yè)來測試這些猜測。測試完***組超參數(shù)值之后,超參數(shù)調(diào)優(yōu)使用回歸來選擇要測試的下一組超參數(shù)值。
Amazon SageMaker的***設(shè)計決策之一是,使用Jupyter Notebooks作為開發(fā)工具。鑒于Notebooks在數(shù)據(jù)科學家當中的熟悉和普及程度,準入門檻很低。AWS開發(fā)了一個原生Python SDK,可以與NumPy、Pandas和Matplotlib等標準模塊混合搭配。
Amazon SageMaker與相關(guān)的AWS服務(wù)緊密集成,因而輕松處理模型的生命周期。借助面向AWS的Python SDK:Boto3,用戶可以存儲數(shù)據(jù)集,并從Amazon S3存儲桶中檢索數(shù)據(jù)集。還可以從云端數(shù)據(jù)倉庫Amazon Redshift導入數(shù)據(jù)。該服務(wù)與IAM集成以進行身份驗證和授權(quán)。使用Amazon EMR運行的Spark集群可與SageMaker集成起來。AWS Glue是用于數(shù)據(jù)轉(zhuǎn)換和準備的***服務(wù)。
Docker容器在SageMaker的架構(gòu)中發(fā)揮著關(guān)鍵作用。AWS為常見算法提供了容器鏡像,比如線性回歸、邏輯回歸、主成分分析、文本分類和對象檢測。在開始訓練作業(yè)之前,開發(fā)人員應(yīng)將數(shù)據(jù)集的位置和一組參數(shù)傳遞給容器。然而,高級Python API對處理容器所涉及的步驟作了抽象處理。***,經(jīng)過訓練的模型也被打包成用于呈現(xiàn)預(yù)測API的容器鏡像。SageMaker依賴用于存儲鏡像的Amazon EC2 Container Registry和托管模型的Amazon EC2。
Amazon SageMaker有三個基本組件:托管的Jupyter Notebooks、分布式訓練作業(yè)以及呈現(xiàn)預(yù)測端點的模型部署。
不妨仔細看一下針對部署在Amazon SageMaker中的機器學習模型來訓練和預(yù)測所涉及的步驟。
數(shù)據(jù)準備和探索
Amazon SageMaker要求數(shù)據(jù)集在S3 Bucket中可用。上傳數(shù)據(jù)之前,客戶可以選擇在外部服務(wù)中執(zhí)行ETL操作,比如AWS Glue、AWS Data Pipeline或Amazon Redshift等服務(wù)。
數(shù)據(jù)科學家可以使用包括Pandas和Matplotlib在內(nèi)的熟悉工具來探索和可視化數(shù)據(jù)。
在準備和探索數(shù)據(jù)之后,數(shù)據(jù)集將轉(zhuǎn)換成SageMaker模型要求的一種格式。由于該平臺根源于Apache MXNet,它使用框架中定義的Tensor數(shù)據(jù)類型。數(shù)據(jù)集上傳到S3存儲桶之前,需要將NumPy數(shù)組和Pandas數(shù)據(jù)框序列化成MXNet Tensors。
模型選擇和訓練
Amazon SageMaker有內(nèi)置算法可以對訓練模型的低級細節(jié)進行抽象處理。每種算法都可作為將數(shù)據(jù)集和指標作為參數(shù)的API來使用。這消除了選擇適合訓練的那種框架帶來的麻煩。一旦開發(fā)人員決定了使用什么算法,剩下來的就是調(diào)用映射到該特定算法的API。
在幕后,SageMaker使用Apache MXNet和Gluon框架,將API轉(zhuǎn)換成創(chuàng)建作業(yè)所需的多個步驟。這些算法打包成存儲在Amazon ECR中的容器鏡像。
除了Apache MXNet外,SageMaker還將TensorFlow呈現(xiàn)為原生框架。開發(fā)人員可以編寫用于創(chuàng)建自定義TensorFlow模型的代碼。
還可以使用自定義框架,比如PyTorch和Scikit-learn。SageMaker要求這些框架封裝在容器鏡像中。Amazon發(fā)布的說明性指南包含Dockerfile和用于創(chuàng)建自定義鏡像的幫助腳本。就在開始訓練作業(yè)之前,使用低級Python API,就可以將Amazon SageMaker指向自定義鏡像,而不是內(nèi)置鏡像。
模型訓練
Amazon SageMaker的訓練作業(yè)在基于Amazon EC2實例的分布式環(huán)境中運行。API需要實例數(shù)量與實例類型一起,才能運行訓練作業(yè)。如果訓練復雜的人工神經(jīng)網(wǎng)絡(luò),SageMaker要求基于K80或P100 GPU的ml.p3.2xlarge或更好類型的實例。
從Jupyter Notebook開始時,訓練作業(yè)同步運行,顯示基本的進度日志,一直等到訓練完成再返回。
模型部署
在Amazon SageMaker中部署模型是分兩步走的過程。***步是創(chuàng)建端點配置,該配置指定了用于部署模型的機器學習計算實例。第二步是啟動機器學習計算實例,部署模型,并呈現(xiàn)URI進行預(yù)測。
端點配置API接受機器學習實例類型和實例的初始計數(shù)。如果是推理神經(jīng)網(wǎng)絡(luò),配置可能包括GPU支持的實例類型。端點API按照上一步定義的內(nèi)容來配置基礎(chǔ)設(shè)施。
Amazon SageMaker支持在線預(yù)測和批量預(yù)測。批量預(yù)測使用經(jīng)過訓練的模型來推斷存儲在Amazon S3中的數(shù)據(jù)集,并將推斷結(jié)果保存在創(chuàng)建批量轉(zhuǎn)換作業(yè)的過程中所指定的S3存儲桶中。
與谷歌云機器學習引擎和Azure機器學習服務(wù)相比,Amazon SageMaker缺少使用本地計算資源來訓練和測試模型的功能。即使是簡單的機器學習項目,也需要開發(fā)人員創(chuàng)建托管的Notebooks以及用于訓練和預(yù)測的實例,因而這項服務(wù)成本高昂。
預(yù)計Amazon會在今年的re:Invent大會上宣布SageMaker的多處改進。
原文標題:Train, Deploy Machine Learning Models with Amazon SageMaker,作者:Janakiram MSV
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】