如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

教你如何在AWS Bedrock上部署DeepSeek R1

DeepSeek目前已經震驚全世界,熱度不亞於當年橫空出世的chatgpt,亞馬遜雲在第一時間支援DeepSeek部署,以下教大家如何部署DeepSeek。

目前已支援功能,但截至2025 年1 月,該功能僅相容 Llama 架構暫不支援Qwen 架構。因此,在導入 這組蒸餾模型時,無法選擇基於Qwen 架構的32B 版本,可用的僅有 8B 和70B 參數的Llama 版本。本次部署將選擇 70B 版本,並利用 Custom Model Import 功能,在Bedrock 上完成模型導入和部署。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

如果你還沒有亞馬遜雲端的帳戶,先申請一個亞馬遜雲端帳戶。

註冊亞馬遜雲端非常簡單,先透過下面官網入口進入亞馬遜官方網站。

詳細的註冊教學:2025年免費申請AWS EC2免費雲端伺服器,保母級教學!

注意:以下教學部署DeepSeek,需要向亞馬遜雲端付費,並不是免費部署教學課程,不適合小白用戶,請注意!

將DeepSeek R1模型檔案下載到S3儲存桶

在下載DeepSeek R1 模型時,需要確保其架構符合要求。截至2025 年1 月,AWS Bedrock 僅支援Llama 等架構的模型導入,暫不支援Qwen 架構。如果下載的是DeepSeek R1 的Qwen-7B 版本,在啟動匯入任務時,將會遇到以下錯誤提示:

"Amazon Bedrock does not support the architecture (qwen2) of the model that you are importing. Try again with one of the following supported architectures: [llama, mistral, t5, mixtral, gpt_bigsidecode, mllama, bigpoolside

因此,在導入前務必確認模型架構,避免因架構不相容而導致任務失敗。

建立一台雲端伺服器EC2 實例

以us-west-2(俄勒岡) 區域為例,先建立一台EC2 實例,選擇t3.medium 機型(2 vCPU / 4GB 記憶體),並安裝最新版本的Amazon Linux 2023 作為作業系統。

在儲存配置方面,選擇200GB 的gp3 磁碟,並將EBS 磁碟吞吐量從預設的125MB/s 提升至1000MB/s,以加快上傳和下載速度。此外,確保此實例具備外網存取權限,方便後續下載所需文件和軟體。

實例建立完成後,在EC2 上安裝必要的軟體包,以便後續配置和使用。

yum install python3-pip -y pip install huggingface_hub boto3

寫一個download.py文件,內容如下:

from huggingface_hub import snapshot_download model_id = "deepseek-ai/DeepSeek-R1-Distill-Llama-70B" local_dir = snapshot_download(repo_id=model_id, local_dir = snapshot_download(repo_id=model_id, local_dir ="D-L-Llama-Falk-Rlama-Llamk-Llama-Rlama-Llama-Rlama-Llama-Llama-Rlama-Llama-Llama-Rlama-Llama-Llama-Rlama-Llamk-Llama-Llama-Llama-Rlama-Llamk-Llamk

然後執行python3 download.py 即可下載模型。下載進行中。

下載完畢後,EC2雲端伺服器上將獲得一系列deepseek文件,基於Llama的70b參數的模型,文件體積約132GB。

在AWS上建立S3儲存桶並上傳

建立S3儲存桶,在建立時候儲存桶類型選擇General purpose通用型即可,區域一定要與EC2區域對應,例如都在us-west-2俄勒岡區域。其他選項都保持預設值,本儲存桶不需要對外公開存取。

在AWS的控制台S3選單中,點選建立儲存桶,

免費使用Amazon S3 備份WordPress 網站資料和AWS註冊教學課程

創建存儲桶的過程,如果不需要公開訪問的話,填好存儲桶名稱後,其它選項默認,點擊創建即可。

點選右上角帳號選單中的安全憑證,在存取金鑰選項中,建立一個存取金鑰。

免費使用Amazon S3 備份WordPress 網站資料和AWS註冊教學課程

免費使用Amazon S3 備份WordPress 網站資料和AWS註冊教學課程

點擊建立存取金鑰之後,建立一個根用戶的存取金鑰。勾選是否建立存取金鑰

免費使用Amazon S3 備份WordPress 網站資料和AWS註冊教學課程

點擊建立存取金鑰之後,根訪問金鑰就創建成功了。

免費使用Amazon S3 備份WordPress 網站資料和AWS註冊教學課程

這個金鑰是整個AWS的存取金鑰,出於安全考慮,不要對外公開。

建立儲存桶完畢後,需要上傳以下一組檔案:

  • 模型設定檔:config.json
  • Tokenizer檔案:總共有三個:tokenizer.json、tokenizer_config.json和tokenizer.mode
  • 模型權重檔案:Model weights files in 上一步下載的體積巨大的、擴展名是.safetensors的一系列文件

這些文件都在上一個步驟下載的目錄中,不需要在額外補充了。

接下來來準備一個上傳檔案名稱為upload.py,內容如下:

import boto3 import os s3_client = boto3.client('s3', region_name='us-west-2') bucket_name = 'bedrock-custom-model-import-123456789012' local_directory = 'Deepy-mrectory = 'Dill-alk-rectorys diet-Fina , 1,00,00,005-Ft, 10,000 月, 1,FFt , 1,FFt, 121750 月, 1370 月 - 是203-Ft, 10Ft-Fet, 10,000 月, 130 月, 10Ft. os.walk(local_directory): for file in files: local_path = os.path.join(root, file) s3_key = os.path.relpath(local_path, local_directory) s3_client.upload_file(local_path, bucket_name, rectory) s3_client.upload_file(local_path, bucket_name, s3_keys)

將以上檔案的儲存桶名稱替換為實際的桶的名字,Region替換為實際的Region,並確保上一個步驟下載的目錄正確。接下來還要確認本EC2有上傳文件到S3的權限。可以採用的方式是1)在本機設定AWSCLI的金鑰,2)在本機不設定金鑰但是為EC2設定IAM Role,在IAM Role中附加允許寫入S3的權限。

設定完畢後,執行python3 upload.py即可上傳。 70B車型總計約132GB,上傳到S3需要5-10分鐘。

將DeepSeek R1 模型匯入到Bedrock

第一步:模型導入

進入對應區域的Bedrock服務,確認區域正確,點選左側選單的Imported models按鈕。然後點擊右側的Import model導入按鈕。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

在匯入精靈的第一步,輸入導入模型的名稱,這裡使用deepseek-r1-distilled-70b也就是它的版本號作為名稱。接下來本頁面的選項無需改動,繼續向下捲動螢幕。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

在模型匯入設定位置,輸入上一步驟模型上傳的儲存桶的名稱。上一步的Python腳本會將模型檔案上傳到儲存桶的根目錄,因此這裡直接填寫儲存桶名稱即可。在下方,導入模型使用的服務角色位置,選擇Create and use a new service role。這裡不需要事先手工建立IAM Role了,匯入模型精靈會自動建立。接下來將頁面捲動到最下方,點選匯入模型按鈕。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

提交後精靈自動會建立導入模型說需要的IAM Role,此時瀏覽器不能離開頁面,等IAM Role創建完畢後,會自動提交模型導入任務,屆時就轉入後台,瀏覽器可離開當前頁面。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

等待約1分鐘,IAM Role建立完成,網頁會自動跳到模型匯入任務進行中的介面,此時瀏覽器可以離開目前頁面。整個模型導入過程,根據導入模型的大小,可能需要15~30分鐘時,甚至更長。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

等待一段時間後,導入成功。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

接下來發起測試。

第二步:從Bedrock控制台發起測試

進入Bedrock服務,點選左側Playgrounds選單,從右側的模式下拉方塊中,選擇Single prompt。注意導入自訂模型後,在Bedrock控制台上,僅能在Single Prompt中看到自訂的模型。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

接下來在模型提供者清單中,可以看到Custom & Managed endpoints下邊就是自己導入的模型。點擊Apply即可開始使用。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

要注意的是,將自訂模型匯入Bedrock後,模型實質上並未啟動,因此第一次呼叫模型時候,模型會被載入到GPU資源池中,這個過程存在一個數十秒的冷啟動。當模型啟動完畢後,後續呼叫即可無延遲直接輸出。如果在一個5分鐘視窗沒有調用,模型佔用的GPU資源將會被釋放,再次調用模型時候還會遇到冷啟動問題。

在控制台的Playgrounds上呼叫匯入的自訂模型,提示字有特定寫法,需要依照以下格式輸入。

<|begin▁of▁sentence|><|User|> 你是什麼模型|Assistant|>

 

輸入後會看到頁面上方紅色提示框顯示模型推理尚未就緒Model is not ready for inference。此時需要等待幾十秒,再次提交即可看到模型運作正常。如下截圖。

現在換一個比較複雜的需要思考(Thinking)的例子,輸入如下一段Prompt,然後提交。如下截圖。

<|begin▁of▁sentence|><|User|>Given the following financial data: - Company A's revenue grew from $10M to $15M in 2023 - Operating costs increased by 20% - Initial operating costs were $7Mculate for perion step, and put your final answer within \\boxed{}<|Assistant|>

 

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

可以看到模型很好的完成了推理。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

下邊進行API呼叫。

第三步:從Bedrock API啟動測試

透過Bedrock API呼叫之前,需要取得模型ID。模型ID也就是ARN字串可以透過以下位置取得。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

接下來準備如下一段Python程式碼:

import boto3 import json client = boto3.client('bedrock-runtime', region_name='us-west-2') model_id = 'arn:aws:bedrock:us-west-2:133129065110:imported-model/kotse nq. client.invoke_model( modelId=model_id, body=json.dumps({'prompt': prompt}), accept='application/json', contentType='application/json' ) result = json.loads(response['body's).

如果剛才Bedrock控制台上發起呼叫啟動了模型,那麼執行這段Python程式將沒有冷啟動時間,模型立刻即可呼叫。運行後回傳結果如下:

{'generation': '? \n\n\n\n\n\n您好!我是由中國的深度求索(DeepSeek)公司開發的智慧助理DeepSeek-R1。如您有任何問題,我會盡我所能為您提供協助。 ', 'generation_token_count': 52, 'stop_reason': 'stop', 'prompt_token_count': 4}

由此自訂模型運作正常。

如果要讓程式碼適應自訂模型的冷啟動,可以加入異常處理。增加重試次數、異常處理後的程式碼如下:

import boto3 import json from botocore.config import Config config = Config( retries={ 'total_max_attempts': 10, 'mode': 'standard' } ) client = boto3.client('bedrock-runtime', region_name='usdo-片. 'arn:aws:bedrock:us-west-2:133129065110:imported-model/otk6ql88yk9i' prompt = "你是什麼模型" try: response = client.invoke_model( modelId=model_id, body=modeln. accept='application/json', contentType='application/json' ) result = json.loads(response['body'].read().decode('utf-8')) print(result) except Exception as e: print(e) print(e.__repr__()

Bedrock匯入自訂模型使用場景的費用說明

Bedrock匯入自訂模型的收費方式是依照匯入模型後執行副本所佔用的運算資源來計費,而不是依照輸入、輸出的Token。在AWS官網上可看到以下的價格清單。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

模型儲存費

官方介紹導入8b模型的時候會佔用2個Custom Model Unit,如果導入了70b參數的模型會佔用8個Custom Model Unit。所以以導入了deepseek-r1-distilled-70b模型為例,佔用8個Custom Model Unit,因此其儲存費用是$1.95 * 8 = $15.6一個月。

單一副本的計算資源費

導入自訂模型的計算時間依5分鐘為單位,5分鐘後沒有模型呼叫則自動釋放運算資源,下次再呼叫模型時存在一次冷啟動載入時間。例如本文範例當模型導入完畢時候,導入過程不收費,模型未被調用,本月將收取存儲費,但是計算時長不收費。導入模型後的第二天早上10:00對模型發起了首次調用,此時從10:00~10:05這個五分鐘窗口,將按照佔用8個Custom Model Unit收費,按照以上截圖可看出,費用是$0.0785每分鐘每模組* 8個模組* 5分鐘= $3.14。這就是運行本模型一個五分鐘視窗的費用。

第一個五分鐘視窗在10:05結束,模型會繼續運作五分鐘。在第二個五分鐘視窗內如果沒有模型調用,那麼10:10模型就會釋放資源,總計產生了2個5分鐘視窗的費用。如果第二個五分鐘視窗內又產生了模型調用,例如10:07分模型被調用那麼第二個五分鐘計費視窗被記錄,接下來從10:10開始三個計費五分鐘。假設從10:10~10:15這第三個五分鐘沒有用戶訪問了,那麼以上總共運行了3個五分鐘窗口,總計收費$3.14 * 3 = $9.42。按此邏輯,如果繼續用調用,繼續按5分鐘視窗計費。

運行一段時間後,可以看到70b模型消耗8個計算單元,共4個5分鐘的周期,總計20分鐘。這項開支在大約24小時後可以從本AWS帳號的帳單中看到。如下截圖。

如何在AWS Bedrock 上部署DeepSeek R1 的Llama 70B 自訂模型,零基礎指南!

 

由此可以看到,如果導入deepseek-r1-distilled-70b模型後,假如7×24小時運作一整個月,總費用將是$0.0785每模組每分鐘* 8模組* 60分鐘* 24小時* 30天= $27129.6(一個月費用)。

這是由於70B參數的模型消耗數百GB顯存需要運行在8個GPU卡的硬體上,因此如果全天運行一直有API呼叫那麼費用將相對很高。

Bedrock彈性縮放和多副本

以上是模型導入後運行一個副本的情況。啟動一個副本佔用8個Custom Model Unit,此時8個Custom Model Unit的Token輸入/輸出不再額外計費。但是,啟動一個副本也不是具有無限吞吐的,模型每個副本的最大吞吐量和並發限制取決於模型本身,這在特定參數大小的模型導入時候就被自動確定了。 Bedrock預設是啟動一個副本,針對大流量調用,Bedrock提供了自動縮放能力,如果吞吐量打滿了一個副本所載的硬體資源,會自動擴展到第二個副本、第三個副本。當然,啟動新的副本,又要多佔用8個Custom Model Unit,並按分鐘計費。目前,一個AWS帳號的預設Quota值是3,也就是自訂模型後加並發,最多只能擴展到三個副本。需要更多的話請開support case申請提升limit。

關於費用和模型參數大小選擇

由於DeepSeek模型具有思考能力,在許多場景下8B模型的版本就體現了良好的能力,因此本文部署70B參數的版本主要是展示Bedrock操作的全過程,實際業務使用中可嘗試8B參數模型,以獲得最佳成本和效果的平衡。

AWS中國官網:https://www.amazonaws.cn/

5/5 - (1 vote)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *