~ 賢者製造家 ~
今天的服務會產生一些費用,包含明天的 SageMaker 訓練與部署的使用大約 ~ 1 美元
Amazon SageMaker 介紹
Amazon SageMaker 是一個完全托管的機器學習服務。使用 SageMaker,數據科學家和開發人員可以快速輕鬆地構建和訓練機器學習模型,然後直接部署到一個適用於生產環境的托管環境中。它提供了一個集成的 Jupyter 筆記本實例,以便輕鬆訪問數據源進行探索和分析,因此您無需管理伺服器。它還提供了常見的機器學習算法,這些算法經過優化,可以在分佈式環境中高效運行,處理極大規模的數據。具有原生支持自定義算法和框架的功能,SageMaker提供了靈活的分布式訓練選項,可根據您的特定工作流程進行調整。通過從 SageMaker Studio 或 SageMaker 控制台中點擊幾下即可將模型部署到安全且可擴展的環境中。
~ by AWS ~
簡單的說,就是可以利用 AWS 資源執行的雲上版機器學習 IDE 整合環境,也包含了一些雲端服務的整合,我想 AWS 在考量使用情境的時候,可能是想創造一個對於資料科學家來說的單一雲端服務,所以在此服務內可以程式碼化存取 AWS 的其他相關服務,當然,也需要設定一定的權限
既然是 IDE 那就不多介紹啦,直接給他用下去:
先講一下 Jupyter Notebook 這東西:
Jupyter Notebook(前身是IPython Notebook)是一個基於Web的互動式計算環境,用於創建Jupyter Notebook檔案。Jupyter Notebook檔案是一個 JSON 檔案,包含一個有序的輸入/輸出單元格列表,這些單元格可以包含程式碼、文字(使用 Markdown 語言)、數學、圖表和富媒體 (Rich media),通常以「.ipynb」結尾附檔名。
因為是 IDE 直接使用不用指令啦
步驟一:建立 Amazon SageMaker Notebook Instance
AWS Web Console 進去 → Amazon SageMaker → 左側選單 Notebook →Notebook Instances
Create Instance
Amazon SageMaker 功能 | 前 2 個月的每月免費方案用量 |
---|---|
Studio 筆記本和筆記本執行個體 | Studio 筆記本中 250 小時的 ml.t3.medium 執行個體,或筆記本執行個體中 250 小時的 ml.t2 中型執行個體或 ml.t3.medium 執行個體 |
name 輸入 martahon-notebook
instance type 選擇 ml.t3.medium
下面 Permission & encryption 點選 IAM Role 下拉式選單選擇 Create New Role
選擇 Specific S3 Bucket 填入特定的 bucket ,這裡我是填 sagemaker-ap-northeast-1-<account_id>
接著 Create Notebook Instance,差不多要等 3 ~ 5 分鐘筆記本才會從 Pending 狀態改為 In Service 狀態
然後我們點選 Open JupyterLab,接下來應該就是機器學習的課程啦~
我們通過一個使用成人人口普查數據(Adult Census)的簡單例子來解說機器學習的開發流程:
Adult Census raw data link
先開啟一個筆記本,一定要使用 File → New → Notebook 來開啟新的 ipynb 檔案,kernel 選擇 conda_python3 並將檔案名稱改為 ml_tutorial.ipynb
首先我們透過 SHAP (SHapley Additive exPlanations Python Library)下載數據:
import shap
X, y = shap.datasets.adult()
X_display, y_display = shap.datasets.adult(display=True)
feature_names = list(X.columns)
feature_names
會顯示這組資料的特徵有哪些,接著我們來看一下資料有什麼
display(X.describe())
hist = X.hist(bins=30, sharey=True, figsize=(20, 10))
將資料分成訓練、驗證、測試資料集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
X_train_display = X_display.loc[X_train.index]
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=1)
X_train_display = X_display.loc[X_train.index]
X_val_display = X_display.loc[X_val.index]
import pandas as pd
train = pd.concat([pd.Series(y_train, index=X_train.index,
name='Income>50K', dtype=int), X_train], axis=1)
validation = pd.concat([pd.Series(y_val, index=X_val.index,
name='Income>50K', dtype=int), X_val], axis=1)
test = pd.concat([pd.Series(y_test, index=X_test.index,
name='Income>50K', dtype=int), X_test], axis=1)
可以輸入 train, validation, test 執行看看裡面的資料長相
筆者雖然並非資料科學家出身,藉由 AWS 的線上學習資源,一步一步踩進 AI 的領域,關於資料處理與數學模型的解說部分未能詳盡,目前只能就現成的線上資源為大家介紹雲端的機器學習環境建構與使用到部署,SageMaker 另外也提供了許許多多的模型以及範例公開給大家使用與參考,我覺得可以使用他們的範例先在本機端測試訓練,等真的自己的電腦跑不動或者是需要更多計算資源的時候放到 AWS 跑,或許是兼顧經濟 & 學習效率的做法
https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html
https://catalog.us-east-1.prod.workshops.aws/workshops/3b86fa89-da3a-4e5f-8e77-b45fb11adf4a/zh-CN
https://sagemaker-workshop.com/