iT邦幫忙

2021 iThome 鐵人賽

1
AI & Data

觀賞魚辨識的YOLO全餐系列 第 35

Day 35 - Amazon SageMaker 簡介

Day 35 - Amazon SageMaker 簡介

Day 34 - 實作 S3 驅動 Lambda 函數進行 Yolo 物件辨識中,我們使用 AWS Lambda 來進行物件辨識,結果辨識時間長達一分鐘左右,與 Day 16 - 進行影像辨識訓練 中使用 g4dn 類型的 EC2 來進行辨識,時間不到 0.1 秒比較,差距太大,且不適合作為線上辨識觀賞魚的應用,於是我們試著在 AWS 的服務中來找尋其他節省成本又可以達到要求的服務。

對於人工智慧 (AI) 在雲端的的使用,AWS 已經提供了很多這方面的服務,簡列如下表:

  • 電腦視覺 – Amazon Rekognition 為圖像和影片提供物體和臉部識別;Amazon Textract 可以從圖像中提取文字。
  • 語音 - Amazon Polly 可以將文字轉換成語音;Amazon Transcribe 則是可以將錄音檔轉換成文字。
  • 語言 - Amazon Comprehend 利用 NLP 技術找到文字中的意義以及相關性;Amazon Translate 則是可以翻譯多種不同語言。
  • 對話機器人 - Amazon Lex 是一項幫助構建使用語音或文字的交互式對話應用程序服務。
  • 預測 - Amazon Forecast 使用機器學習將時間序列數據與附加變量相結合來構建預測。
  • 推薦 - Amazon Personalize 是利用機器學習來幫助客戶創建個性化的推薦服務。

https://ithelp.ithome.com.tw/upload/images/20211108/2012951010mdDFiRHC.png
圖 1、AWS 所提供的人工智慧服務

而以上這些服務都是針對需求明確,沒有資料分析人員的使用者而言,如果使用者打算建立自己的機器學習模型,並將其部署在雲端的話,AWS 推出了 Amazon SageMaker 這項服務來滿足使用者的需求。根據 AWS 官方網站,對於 Amazon SageMaker 的服務是這樣定義的:Amazon SageMaker 透過整合專門為 ML 建置的一組廣泛的功能,協助資料科學家和開發人員快速準備、建置、培訓和部署高品質的機器學習 (ML) 模型。下圖是 Amazon SageMaker 的登錄畫面首頁,可以看出 Amazon SageMaker 的服務包含了資料準備、建置、訓練與調整以及最後的部署與管理

https://ithelp.ithome.com.tw/upload/images/20211108/20129510gvZ7dQLjJ0.png
圖 2、Amazon SageMaker 服務概覽

因為我們已經在訓練好的資料,所以現在需要的就只是進行佈署,而最好的入口就是透過 Amazon SageMaker Studio,這是 AWS 於 2020 年 re:invent 推出適用於機器學習的整合式開發環境(IDE),讓使用者可以輕鬆建立、訓練、偵錯、部署並監控機器學習模型 ,並專注於開發機器學習模型,而非環境的設置與開發工具的轉換。

包含了以下功能:

  • 在 Jupyter 筆記本中編寫和執行程式碼
  • 建立和訓練機器學習模型
  • 部署模型並監控模型預測的性能
  • 調校並改進機器學習模型成效

而 Amazon SageMaker Studio Notebooks 操作起來就是平時我們常用的 Jupyter Notebook 或是 Jupyter lab,但請注意的是它需要運行在一個實體之上,所以一但啟用 Amazon SageMaker Studio Notebooks 就要收費的,觀念就跟 EC2 是一樣的,開著不用還是要收錢的,下圖是我在 2021/10 所使用的 Amazon SageMaker Studio Notebooks 的收費情形。主機是位於新加坡地區 (ap-southeast-1),使用的機型是 ml.t2.medium,開了 138.77 小時,每小時收費 0.0584 美元,很多時候都是忘了關機,其實真正使用時間遠少於 138 個小時,不過從帳單來看,它應該是以分鐘來算的,所以才會有小數點;而因為把權重檔案也放在 Studio Notebooks 中,所以才會出現第一筆使用硬碟空間的錢,每個月 1G 的使用費是 0.168 美元。

https://ithelp.ithome.com.tw/upload/images/20211108/20129510apU5mbAgbY.png
圖 3、Amazon SageMaker Studio Notebooks 收費

接下來操作一次如何使用 Amazon SageMaker Studio Notebooks ,主要是參考 AWS 官方教學 建立、訓練和部署機器學習模型 - 使用 Amazon SageMaker,內容為:

  1. 建立筆記本執行個體
  2. 操作筆記本

接下來這句話很重要:在本教學建立和使用的資源符合 AWS 免費方案資格,請記得終止您的資源。不然 AWS 將向您帳戶收取費用

步驟 1.建立筆記本執行個體

進入 Amazon SageMaker 主控台,並在左邊功能列中點擊 筆記本->筆記本執行個體,右邊主畫面中點擊 建立筆記本執行個體,如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20211108/20129510cW5wrgY28u.png
圖 4、啟動 Amazon SageMaker 筆記本

在建立筆記本執行個體頁面上,在 筆記本執行個體名稱 欄位中輸入名稱。本教學使用 ithomeSM 做為執行個體名稱,不過如有需要,您可以選擇其他名稱。筆記本執行個體類型 保留 ml.t2.medium 的預設。

IAM 角色欄位中,選擇建立 新角色,在 建立 IAM 角色 視窗中,使用預設值,不需改變,直接點擊 建立角色 按鈕,讓 Amazon SageMaker 建立的角色具有必要的許可並將其分配給您的執行個體,或者,也可以為此在帳戶中選擇一個現有的 IAM 角色,最後點擊 建立筆記本執行個體 按鈕。如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20211108/20129510AaxF8Dwjtt.png
圖 5、建立筆記本執行個體

新建的筆記本執行個體需要等待數分鐘才會從待處理 (pending) 轉換到服務中 (InService) 狀態。當狀態變為服務中後,選取 ithomeSM 並使用 動作 下拉式功能表將其開啟,或選擇服務中狀態旁的 開啟 Jupyter。如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20211108/20129510bYlXpZV0lm.png
圖 6、透過 Jupyter 進入筆記本執行個體

開啟 Jupyter 後,在畫面右手邊單擊 New 按鈕,出現下拉選單,選擇 conda_python3。如下圖所示。

https://ithelp.ithome.com.tw/upload/images/20211108/20129510ktJc8T3Sk9.png
圖 7、透過 Jupyter 進入筆記本執行個體

步驟 2.操作筆記本

這裡使用簡單的一個 KNN 近臨的案例,只是要體驗一下 Amazon SageMaker 筆記本的操作,而相關於觀賞魚辨識模型的操作,將於下一篇文章中示範。

這是一個使用KNN算法實現對一組電影的分類,電影數據包含 10 條數據集的測試集和 2 條數據的訓練集,這批電影共有兩個畫面:動作鏡頭數和接吻鏡頭數,這兩個特徵,每部電影都對應一個分類標籤值,共有“動作”,“愛情”兩個類別。程式碼與運行結果如下。

# 引入函式庫
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

# 準備資料
X_train=np.array([[19,1],[2,18],[25,1],[24,3],[3,17],[5,10],[7,8],[5,4],[5,3]])
Y_train=np.array(['動作','愛情','動作','動作','愛情','愛情','愛情','動作','動作'])
X_test=np.array([[13,10],[5,10]])

# 進行模型訓練
knnclf=KNeighborsClassifier(n_neighbors=5)
knnclf.fit(X_train,Y_train)

# 測試、推估
knnclf.predict(X_test)

https://ithelp.ithome.com.tw/upload/images/20211108/20129510jyUCJAFU4d.png
圖 8、在筆記本執行個體中使用 Jupyter

AWS 提供很多 Amazon SageMaker 筆記本的範例,可以在頁簽中 Amazon SageMaker Examples 中找到,開發者其實可以試著找到相關案例來參考。

https://ithelp.ithome.com.tw/upload/images/20211108/20129510C7C1ZJ8EN5.png
圖 9、Amazon SageMaker 筆記本範例的集合

參考資料


上一篇
Day 34 - 實作 S3 驅動 Lambda 函數進行 YOLO 物件辨識
下一篇
Day 36 - 使用 Container 建立 Amazon SageMaker 端點
系列文
觀賞魚辨識的YOLO全餐38

尚未有邦友留言

立即登入留言