方格精選

AWS SageMaker 開箱體驗

更新於 發佈於 閱讀時間約 11 分鐘

前幾個禮拜,AWS 舉行 Startup Day Taiwan,因為我們公司雲端技術用 AWS,也跑去湊湊熱鬧。想當然爾,最熱門的主題非生成式 AI (Generative AI) 莫屬,其實我們內部也有在討論 AI 應用,只是從後端觀點來看,如何讓 AI 變成一門「工程」,而不是單純的「技術」,中間還有些問題要克服。

出乎意料的是,AWS 這次真的是有備而來,講了很多跟 Machine Learning 相關的服務,有點刷新我的認知,話不多說,直接上圖

raw-image

這張圖簡明扼要,圍繞基礎模型(Foundation Model),包括 Labeling, Fine-tuning, VectorDB, Embedding 等常見的應用都有,看得出來是從 ML 生命週期的角度來設計產品線。這恰好就是我原本在思考的工程問題。技術跟工程有時關注的焦點不太相同,例如,OpenAI 雖然有開箱即用的 API,可是它沒辦法保證服務水平,而將服務水平不確定的 API 放到生產環境,勢必會影響產品穩定度;又或者,OpenAI 雖然有提供 Fine-tuning 讓使用者微調,但如何管理 Fine-tuning 的資料集?如何有效的打標?這都需要開發者另外花功夫處理。

既然 AWS 有現成的工具,身為一名工程師,自然看看無妨,這篇文章算是新手開箱文,會說明如何部署一套基礎模型,並使用 AWS SDK 與其互動。

SageMaker vs Colab

首先來問問,什麼是 SageMaker?它做了哪些事情?這同樣可以用一張圖說明

raw-image

在我的理解中,SageMaker 可以看成是 AWS 的一個產品,底下有 JumpStart, Notebook 等工具,能幫助你建構自己的 ML 模型。用 AWS 官方的話,是

建置、訓練和部署機器學習 (ML) 模型,用於具有全受管基礎設施、工具和工作流程的任何使用案例

這麼聽起來,跟 Google Colab 是不是有 87 分像?確實,兩者有部分功能類似。Colab 的特色是輕量,它以 Jupyter Notebook 為底,提供現成的開發環境,開發者不用任何設置,只需打開瀏覽器就能使用。Colab 替開發者解決「環境設置」與「運算資源」兩個問題,但如果你需要進一步的功能,像是模型部署、模型微調等管理,或者是需要進一步存取外部資源,事情就比較麻煩了。相對的,SageMaker 的設定較為複雜,可是它能讓不同團隊更容易協作,一起處理 ML 的產品化問題。

創建 SageMaker Domain

在使用 SageMaker 前,需要先創建一個 SageMaker Domain。Domain 是一個獨立的運行環境,其中包含了使用者、授權、VPC 等配置,相同 Domain 的使用者,可以共享同一份空間。要創建 SageMaker Domain,需要登錄 AWS 控制台,進到 SageMaker 後,點選左側面板的 Domains,接著選擇 Create Domain。

raw-image

AWS 有 Quick setup 跟 Standard setup 兩種設置方式,差別在需不需要一些進階配置,如果只是簡單部署一套模型,選擇 Quick setup 即可(是說後面還標示要花費的時間,也太卷了吧)。Domain Name 需要取個 AWS 全域的 Domain 名稱,通常會加入跟專案有關的前綴避免撞名。

raw-image

按下 Submit,等待創建完成。

創建完成後,點選剛剛建好的 Domain,在 User Profile 的分頁下,選擇 Add user。原則上只需要填入 User Profile Name,其他設定直接用預設,一路 Next 就好。

raw-image

部署 LLM 模型

接著來部署 LLM 模型。如果有把前面的設定都做完,AWS 應該會替你建好 ML 開發環境,這時從左側面板點選 Studio,再點選 Open Studio,就能打開 Jupyter Lab。

raw-image

我們想部署的 LLM 是 Falcon-7B-Instruct,這是阿聯酋技術創新研究所(TII)基於 Falcon-7B 建立的模型,有經過 chat/instruct 數據集微調,特別適用聊天問答的場景。值得一提的是,這也是一套開源模型,採用 Apache 2.0 授權,而且能力足以跟科技巨頭的閉源模型相媲美。

Hugging Face 上有 Falcon-7B-Instruct 的相關資料,但要使用 Hugging Face 的開源模型,最快的方法是直接利用 SageMaker JumpStart。這套工具能結合開源生態系,幫助我們更快建置 ML 模型。在 Jupyter Lab 左方面版找到 JumpStart,點選 Models, notebooks, solutions,然後在搜尋列輸入 Falcon,列出 JumpStart 支援的模型。

raw-image

選好你要的模型,點 Deploy 一鍵部署

raw-image

等待部署結束

raw-image

開始使用

基本上,我們已經完成所有部署模型需要的事了,接下來就是使用它,這裡同樣使用 Jupyter Notebook 來操作。你應該能夠在部署頁面看到 Use Endpoint from Studio,底下有個 Open Notebook,給它按下去,開啟 Jupyter Notebook。

raw-image

現成的範例都準備好了,只需要依照順序執行。先來看看 API Payload 長怎樣

import json
import boto3

payload = {
"inputs": "Who is the greatest basketball player of all time?\nAnswer:",
"parameters": {
"max_new_tokens": 50,
"return_full_text": False,
"do_sample": True,
"top_k":10
}
}

跟 OpenAI API Payload 很類似,Prompt 跟參數分開,Prompt 放在 inputs,其他參數則放在 parameters。丟個引戰問題讓模型回答:誰是有史以來最偉大的籃球員。

建立 Client,呼叫 LLM,印出答案

newline, bold, unbold = '\n', '\033[1m', '\033[0m'
endpoint_name = 'xxxxx-hf-llm-falcon-7b-instruct-bf16'

def query_endpoint(payload):
client = boto3.client('runtime.sagemaker')
response = client.invoke_endpoint(EndpointName=endpoint_name, ContentType='application/json', Body=json.dumps(payload).encode('utf-8'))
model_predictions = json.loads(response['Body'].read())
generated_text = model_predictions[0]['generated_text']
print (
f"Input Text: {payload['inputs']}{newline}"
f"Generated Text: {bold}{generated_text}{unbold}{newline}")

query_endpoint(payload)

得到

Input Text: Who is the greatest basketball player of all time?
Answer:
Generated Text: There are many great basketball players, so it's hard to pick just one. However, some of the most popular and successful ones include LeBron James, Michael Jordan, and Shaquille O'Neal.

效果還不錯,畢竟答案因人而異,Falcon 能給出 LeBron James / Jordan / O'Neal,算是符合多數人認知(雖然沒有 Kobe)。

再來問個時事題:你聽過「芭比海默」嗎?

Input Text: What is the Barbenheimer? Have you ever heard it?
Answer:
Generated Text: “Barbenheimer” was the name of a 19th century German family, which had a lot of money. They were not very well liked and the money went to the wrong hands.
The Barbenheimer family had a house in Berlin

果然出現幻覺了,現在的 LLM 應該都有這問題,真的要處理,還是得透過 Prompt Engineering。

Notebook 底下還有一些常見的應用,像是情緒分析(Sentiment Analysis)或文本總結(Summarization),有興趣的人可以自己玩玩。

小結

相對 Colab,SageMaker 是套較重的工具。我猜兩者當初的設計理念應該差很多,Colab 是由 Google Research 推出的服務,以免費與社群友善為號召,用起來也更傾向小規模驗證(當然,免費跟付費方案的穩定度差很大);而 SageMaker 是從商用場景出發,適合開發者在原有的雲端規模上放大。如果只是評估性質,也許用用 API 或免費資源就好了,但如果想要使用穩定可靠的系統,AWS 應該會更具優勢(吧)。

最後小小提醒,AWS SageMaker 需要付費,而且價格不便宜,要是還在評估階段,建議開完機器跟 Jupyter Notebook 後記得關掉,避免帳單超支。

延伸閱讀

留言
avatar-img
留言分享你的想法!
Kuan-avatar-img
2023/07/27
抓到了,這模型是詹迷!
Ken Chen-avatar-img
發文者
2023/07/27
Kuan LBJ 使出了天龍八步!
avatar-img
Ken Chen的沙龍
11會員
14內容數
關於電影的雜談。
Ken Chen的沙龍的其他內容
2023/09/07
楊德昌的電影,為苦悶的我展現一種述說的方式,不僅僅是電影中熟悉的台北街景,好幾次,我走到跟建中隔條南海路的植物園,心底都會想,這是小四在電影開頭看見滑頭與女友接吻的場景,木訥的他會想到,有一天他會需要以激烈的手段,拋開體制禁錮,回應破碎的經驗嗎?
Thumbnail
2023/09/07
楊德昌的電影,為苦悶的我展現一種述說的方式,不僅僅是電影中熟悉的台北街景,好幾次,我走到跟建中隔條南海路的植物園,心底都會想,這是小四在電影開頭看見滑頭與女友接吻的場景,木訥的他會想到,有一天他會需要以激烈的手段,拋開體制禁錮,回應破碎的經驗嗎?
Thumbnail
2023/06/07
這期收錄的兩篇文章剛好都在談生產力,我認同指標的重要性,但如何讓指標跟實際工作結合不是容易的事。曾經聽過一個故事:老闆認為只要客服處理的效率增加,客戶滿意度就能提高,因此壓了一個服務件數的 KPI,結果他的客服人員無論有沒有解決客戶問題,都會在 2 分鐘內掛掉電話,跑去服務新的客戶。
2023/06/07
這期收錄的兩篇文章剛好都在談生產力,我認同指標的重要性,但如何讓指標跟實際工作結合不是容易的事。曾經聽過一個故事:老闆認為只要客服處理的效率增加,客戶滿意度就能提高,因此壓了一個服務件數的 KPI,結果他的客服人員無論有沒有解決客戶問題,都會在 2 分鐘內掛掉電話,跑去服務新的客戶。
2023/05/21
聽到陳皓過世的消息,覺得非常可惜。軟體開發之所以能蓬勃發展,就是因為有一群像他一樣的開發者不吝於分享自己的經驗。有時會覺得時間流逝得很快,以前自己是個接收者,受到來自各方的幫助,才能成長到現在,也希望哪天自己能找到回饋的方式,將資源交給需要的人。
2023/05/21
聽到陳皓過世的消息,覺得非常可惜。軟體開發之所以能蓬勃發展,就是因為有一群像他一樣的開發者不吝於分享自己的經驗。有時會覺得時間流逝得很快,以前自己是個接收者,受到來自各方的幫助,才能成長到現在,也希望哪天自己能找到回饋的方式,將資源交給需要的人。
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
  這回來介紹 AWS 在目前生成式 AI 各種群魔亂舞下推出的 Bedrock 服務,其官網說明可以快速且傻瓜式的部屬生成式 AI 到你的應用上,看看是不是如其所述的功能強大。
Thumbnail
  這回來介紹 AWS 在目前生成式 AI 各種群魔亂舞下推出的 Bedrock 服務,其官網說明可以快速且傻瓜式的部屬生成式 AI 到你的應用上,看看是不是如其所述的功能強大。
Thumbnail
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
Thumbnail
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
Thumbnail
             Amazon Web Services(AWS)宣布致力於AI安全和研究的公司Anthropic的模型Claude 3系列將於Amazon Bedrock提供服務。Claude 3系列模型具備業界領先的準確性、效能、速度和成本優勢。這一進展將強化各種規模的企業
Thumbnail
             Amazon Web Services(AWS)宣布致力於AI安全和研究的公司Anthropic的模型Claude 3系列將於Amazon Bedrock提供服務。Claude 3系列模型具備業界領先的準確性、效能、速度和成本優勢。這一進展將強化各種規模的企業
Thumbnail
在數據科學和機器學習中,特徵工程是提高模型性能的關鍵步驟之一,通過創建新特徵或轉換現有特徵,我們可以更好地捕捉數據中的信息,提高模型的預測能力。然而,當處理大數據集時,特徵工程可能變得耗時,而且若是在研發階段,特徵其實是需要快速迭代去產生並且做後續的實驗,這也是近期遇到的問題,因此想在這篇文章實作多
Thumbnail
在數據科學和機器學習中,特徵工程是提高模型性能的關鍵步驟之一,通過創建新特徵或轉換現有特徵,我們可以更好地捕捉數據中的信息,提高模型的預測能力。然而,當處理大數據集時,特徵工程可能變得耗時,而且若是在研發階段,特徵其實是需要快速迭代去產生並且做後續的實驗,這也是近期遇到的問題,因此想在這篇文章實作多
Thumbnail
The flexible solution to develop and scale your own custom maps. Build machine learning models from zero to production in hours, without ML expertise
Thumbnail
The flexible solution to develop and scale your own custom maps. Build machine learning models from zero to production in hours, without ML expertise
Thumbnail
AWS Generative AI Service - Amazon Bedrock Launched April 2023 , 28 September 2023 Amazon Generative AI Service Amazon Bedrock is now officially relea
Thumbnail
AWS Generative AI Service - Amazon Bedrock Launched April 2023 , 28 September 2023 Amazon Generative AI Service Amazon Bedrock is now officially relea
Thumbnail
Our mission is to accelerate the development of AI applications 這系列文章是透過蒐集、分享我覺得有意思AI服務、相關文章、影片,期許自己能更了解這世界上正在發生什麼。
Thumbnail
Our mission is to accelerate the development of AI applications 這系列文章是透過蒐集、分享我覺得有意思AI服務、相關文章、影片,期許自己能更了解這世界上正在發生什麼。
Thumbnail
上一篇章我們有提到「【AI幫幫忙】機器如何識別我們的特徵?關鍵的Named Entity Recognition(NER)技術」, 而NER是NLP自然語言處理的一部分, 而這一個篇章我們會以實作的形式來介紹自然語言處理中非常好用的一套工具「spaCy」,spaCy被廣泛用於各種NLP任務,包括自然
Thumbnail
上一篇章我們有提到「【AI幫幫忙】機器如何識別我們的特徵?關鍵的Named Entity Recognition(NER)技術」, 而NER是NLP自然語言處理的一部分, 而這一個篇章我們會以實作的形式來介紹自然語言處理中非常好用的一套工具「spaCy」,spaCy被廣泛用於各種NLP任務,包括自然
Thumbnail
最近 AI 開發者間最熱門的話題,無非是 LangChain 這套開源開源框架簡化了開發流程。 Flowise,也是一款開源工具,結合了LangChain 的強大功能,推出了一種無需編碼的解決方案,透過簡單的拖拉功能建立流程,縮短開發時間。
Thumbnail
最近 AI 開發者間最熱門的話題,無非是 LangChain 這套開源開源框架簡化了開發流程。 Flowise,也是一款開源工具,結合了LangChain 的強大功能,推出了一種無需編碼的解決方案,透過簡單的拖拉功能建立流程,縮短開發時間。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News