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
































