用過 AWS EC2 實例的用戶可能都知道,EC2 有一種 Spot 實例,能夠將 AWS 中暫未使用的 EC2 容量提供給用戶,相比按需實例,最多可享受90%的價格折扣。html
那麼當你使用 Amazon SageMaker 訓練本身的 ML 模型時,面對長時間運行訓練任務致使的高額帳單,是否考慮過,能不能經過 EC2 Spot 實例的方式來節約成本?python
好消息來了!git
Amazon SageMaker 的託管 Spot 訓練功能已經正式發佈!這是一個基於Amazon EC2 Spot 實例的新功能,與在 Amazon SageMaker 中使用按需實例相比,最高可節約90%的 ML 訓練成本。Spot 實例並非新事物,從推出至今的近10年時間裏,Spot 實例已經成爲在 AWS 上構建可擴展和經濟實惠 IT 平臺的基石之一。從今天開始,用戶不只能在徹底託管的基礎設施上運行 Amazon SageMaker 訓練做業,同時也將受益於徹底託管的成本優化優點,以一樣預算取得更大成果。github
全部訓練配置中均可以使用託管 Spot 訓練功能:算法
就是這麼簡單:而且能夠最高節省90%的成本!很棒吧。框架
使用託管Spot訓練功能時須要注意一個重要差別:按需訓練實例在訓練做業完成前都會保持可用,而託管Spot訓練實例可能在咱們須要更多容量時隨時被收回。
使用 Amazon Elastic Compute Cloud (EC2) Spot 實例時,咱們將提早2分鐘收到終止通知,而且必須自行採起恰當行動。不過也無需擔憂,由於 Amazon SageMaker 是一種徹底託管的服務,它會自動處理此工做,中斷訓練做業,再次取得足夠的 Spot 容量後重啓或恢復訓練做業。若是在做業開始時間和持續時間上比較靈活,託管 Spot 訓練功能將尤爲有意義。此外,咱們還可使用 MaxWaitTimeInSeconds 參數來控制訓練做業的總持續時間(實際訓練時間加等候時間)。分佈式
爲避免在訓練做業中斷時從頭重啓訓練做業,強烈建議設置檢查點,藉此便可按必定間隔保存訓練中的模型。這樣咱們就能夠從定義明確的時間點恢復訓練做業,從最近的部分訓練模型繼續做業。ide
接下來一塊兒看看實際操做演示吧。工具
參考此示例筆記本,咱們一塊兒經過 AWS 控制檯使用託管 Spot 訓練實例來訓練一樣的做業,而不使用按需訓練實例。上文曾經提到,此時只需關注兩件事情:開發工具
首先爲訓練做業命名,確保它擁有恰當的 AWS Identity and Access Management (IAM)權限(和之前的作法同樣)。
而後選擇內置的對象檢測算法:
接下來爲訓練做業選擇實例數量和實例類型,確保擁有足夠的存儲以知足檢查點之需:
隨後設置超參數,此處將使用與筆記本中相同的參數。而後定義訓練數據集的位置和屬性:
對驗證數據集執行一樣的操做:
再定義模型檢查點的保存位置。這是 Amazon SageMaker 將在發生中斷時提取檢查點以恢復訓練做業的位置。
這是最終模型構件的保存位置:
接下來只須要耐心等待。假設啓用了託管 Spot 訓練功能,並配置了一個十分寬鬆的48小時最大等待時間:
一切搞定,讓咱們來訓練此模型。訓練完成後,成本節省狀況在控制檯中一目瞭然。
從上圖能夠看到,訓練做業運行了2423秒,但得益於託管 Spot 訓練功能,實際上只支付了837秒的費用,節省達65%!說到費用,下文將介紹該方式的訂價機制。
託管 Spot 訓練做業按照完成或終止前運行的持續時間收費。
若是不使用檢查點功能的內置算法和 AWS Marketplace 算法,會強制執行60分鐘最大訓練時間(MaxWaitTimeInSeconds 參數)。
最後一樣重要的是:不管訓練做業重啓或恢復了多少次,用戶僅需爲數據下載時間付費一次。
該功能已在提供 Amazon SageMaker 服務的全部區域推出,當即試試吧。