先前在中國的工作環境相對封閉,並沒有使用雲端產品進行AI訓練及部屬,只有在本機端進行建置調試,但如今回到台灣了,該是時候接觸一下這些雲端的 AI 服務,而在 AWS 中,深度學習相關的服務鈴瑯滿目,但聽到有人提到 SageMaker ,這次就來看看它是個什麼樣的服務吧。
Amazon SageMaker 是 AWS 上的機器學習服務,旨在簡化機器學習開發和部署的過程。這項服務通常被認為是易於使用且功能強大,特別適合於多種應用場景:
雖然 SageMaker 有很多優點,但可能需要考慮成本問題,以及它的學習曲線。如果你已經熟悉 AWS 生態系統,並且在尋找可以高度自定義的工具,那麼它是很值得考慮的選擇。
詳細的介紹 AWS 上可說是相當完整,我就不再冗言,本篇文章以這篇示例進行實驗,這邊就以我的角度來說說, SageMaker 為我帶來甚麼樣的體驗。
如同上個段落中說明的,"雖然 SageMaker 有很多優點,但可能需要考慮成本問題,以及需要一定程度上的熟悉 AWS 生態系統",這句話可以說是我這次的體驗總結,為什麼呢?讓我娓娓道來。
首先環境配置部分,對於環境初始的配置有自動配置的引導,所以沒有遇到問題,不過若是多人共同使用,就要針對每個使用者新建可對應的腳色並分配權限等等,就會相對複雜,再來新建 Notebook 空間及 Jupyter 空間,到這一步就會出現一個問題,在新建 Notebook 實例時便會詢問要新建怎樣的實例,這邊預設為 ml.t3.medium ,但這個實例類型該如何選擇就得根據你的應用去調整,以本次的案例來說,是使用 sagemaker.pytorch 將訓練任務交給指定的 Docker 映像,所以這個 Notebook 實例不用使用等級太高的實例(各種定價可見相關頁面)。
這裡給一個簡單判斷,一個 ml.t3.medium 提供 2 個虛擬 CPU 和 4 GB 的記憶體,大概可以處理數據集大小在幾百 MB 至數 GB 範圍內的 logistic regression 或小型神經網絡的訓練通常可以在合理時間內完成。
再來是訓練流程的部分,程式碼大致上與不使用 SageMaker 類似,主要差別就是從本機端硬碟存取換成了從 S3 內存取, 以及訓練時改成以 sagemaker.pytorch 將編寫好的 Train.py 交給指定的映像去訓練,由此可知,若是要將本在本機的程式嗎移植到雲上,銜接上只需要小改即可。
所以實際體驗下來,SageMaker好用嗎?我想若是你有很多服務都在上面,你需要你的模型與其他 AWS 服務互動,SageMaker確實提供了一個便捷的解決方案,會讓人頭疼的反而是這些 AWS 生態系統中定義的這些名詞及行為,官網中很多名詞隨意拋出,常常搞不太清楚到底要幹嘛,但這就是我尚未熟悉AWS 生態系統的表現,期待再幾篇文章後,我能好好搞清這些東西,再與各位分享分享。
estimator = PyTorch(
entry_point="mnist.py",
role=role,
py_version="py38",
framework_version="1.11.0",
instance_count=2,
instance_type="ml.c5.2xlarge",
hyperparameters={"epochs": 1, "backend": "gloo"},
)
estimator.fit({"training": inputs})
本次照著示例體驗了MNIST手寫辨識的案例,但其示例在很多部分都進行了簡化,所以體驗是順暢的,但很多實際會遇到的問題卻體驗不到,所以下篇打算實際移植先前實作的風格轉換上去呈現更符合實際應用的體驗成果。