ACK託管叢集Pro版提供了測試環境和生產環境部署方案,在無需管理底層硬體與依賴的前提下,快速驗證大模型的推理能力。解決開發人員在本地驗證大語言模型時面臨的GPU資源不足和環境配置複雜等問題。
適用範圍
-
叢集版本為1.22及以上,GPU節點顯存需為16GB及以上的ACK託管叢集Pro版。
-
設定NVIDIA驅動為535及以上版本,本樣本為GPU節點池添加標籤
ack.aliyun.com/nvidia-driver-version,驅動版本為550.144.03。
測試環境部署
使用Arena快速部署qwen/Qwen1.5-4B-Chat,適用於測試情境,耗時約需15分鐘。
-
安裝Arena用戶端。
-
通過Arena部署一個自訂類型的服務,並通過
--image參數指定用於部署服務的容器鏡像。更多參數說明,請參見部署命令參數說明。由於ModelScope模型檔案將下載至容器內,請確保GPU節點具備至少30GB的可用磁碟空間。
arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=qwen/Qwen1.5-4B-Chat python3 server.py"如需從Hugging Face倉庫拉模數型檔案,請參見Hugging Face拉模數型檔案。
以下輸出表明與推理服務
modelscope-v1相關的Kubernetes資源已成功建立:service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0002] The Job modelscope has been submitted successfully INFO[0002] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status -
查看推理服務的詳細資料。
模型下載需要約10分鐘,期間Pod狀態顯示為ContainerCreating。
arena serve get modelscope輸出Pod為Running狀態,表明
modelscope推理服務已就緒並正常運行。
生產環境部署
對於生產級部署情境,推薦採用OSS靜態儲存卷預先載入模型的方式,避免每次Pod啟動時重複下載大模型檔案(超過10GB),從而顯著縮短冷啟動時間、降低外網頻寬消耗,並提升服務穩定性。
步驟一:下載模型檔案
-
下載模型檔案到本地。
-
安裝Git、Git LFS(Large File Support)外掛程式。
macOS
-
安裝Git。
官方維護的 macOS Git 安裝程式可以在 Git 官方網站下載。
brew install git -
安裝Git LFS(Large File Support)外掛程式拉取大檔案內容。
brew install git-lfs
Windows
-
安裝Git。
可在Git 官方網站下載合適版本並安裝。
-
安裝Git LFS(Large File Support)外掛程式拉取大檔案內容。目前lfs已經整合在了Git for Windows 中,直接下載和使用最新版本的Windows Git即可。
Linux
-
安裝Git。
以RedHat系列的Linux系統為例,其餘系統安裝,請參見Git 官方網站。
yum install git -
安裝Git LFS(Large File Support)外掛程式拉取大檔案內容。
yum install git-lfs
-
-
下載Qwen1.5-4B-Chat模型。
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git cd Qwen1.5-4B-Chat git lfs pull
-
-
將Qwen1.5-4B-Chat模型檔案上傳至OSS。
-
安裝並配置ossutil,用於管理OSS資源。
-
建立Bucket儲存空間。
為加快模型拉取速度,建議將Bucket和叢集地區保持一致。
ossutil mb oss://<Your-Bucket-Name> -
在OSS建立名為Qwen1.5-4B-Chat的目錄。
ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat -
上傳模型檔案至OSS。
ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
-
-
配置儲存卷PV。
-
登入Container Service管理主控台,單擊目的地組群名稱,選擇。
-
在儲存卷頁面,單擊建立。在建立儲存卷對話方塊中配置參數。參數配置完成後,單擊建立
-
儲存卷類型為
OSS;名稱為llm-model;總量為20Gi;訪問模式為ReadOnlyMany;訪問認證為選擇建立保密字典。 -
可選參數:為
-o umask=022 -o max_stat_cache_size=0 -o allow_other;Bucket ID為選擇Bucket;OSS Path為/Qwen1.5-4B-Chat;訪問網域名稱為公網網域名稱。
-
-
-
配置儲存聲明PVC。
-
在叢集詳情頁,選擇。
-
在建立儲存聲明頁面中,填寫介面參數。
儲存宣告類型為
OSS;名稱為llm-model;分配模式為已有儲存卷;已有儲存卷為上一步建立的儲存卷llm-model;總量為20Gi。
-
步驟二:部署推理服務
-
安裝Arena用戶端。
-
通過Arena部署一個自訂類型的服務,並通過
--data參數掛載包含模型檔案的PVC。更多參數說明,請參見部署命令參數說明。arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --data=llm-model:/Qwen1.5-4B-Chat \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"以下輸出表明推理服務已成功提交:
service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0001] The Job modelscope has been submitted successfully INFO[0001] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status -
查看推理服務詳細資料。
arena serve get modelscope輸出Pod為Running狀態,表明推理服務已就緒並正常運行。
驗證推理服務
-
為推理服務建立連接埠轉寄。
重要請注意kubectl port-forward建立的連接埠轉寄不具備生產層級的可靠性、安全性和擴充性,因此僅適用於開發和調試目的,不適合在生產環境使用。更多關於Kubernetes叢集內生產可用的網路方案的資訊,請參見Ingress管理。
kubectl port-forward svc/modelscope-v1 8000:8000預期輸出:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000 -
建立一個終端視窗,向推理服務發送模型推理請求。
curl -X POST http://localhost:8000/generate \ -H "Content-Type: application/json" \ -d '{ "text_input": "什麼是人工智慧?人工智慧是", "parameters": { "stream": false, "temperature": 0.9, "seed": 10 } }'成功調用後,將返回包含模型推理結果的輸出:
{"model_name":"/Qwen1.5-4B-Chat","text_output":"什麼是人工智慧?人工智慧是電腦科學的一個分支,它研究如何使電腦具有智能行為。"}
(可選)清理環境
測試完成後,可刪除已部署的推理服務以釋放資源。
-
清理已部署的推理服務。
arena serve del modelscope -
清理已建立的PV和PVC。
kubectl delete pvc llm-model kubectl delete pv llm-model
部署命令參數說明
|
參數 |
說明 |
樣本值 |
|
|
Arena子命令。表示建立一個自訂的模型服務,而不是使用預設的類型(如 |
(無) |
|
|
服務名稱。為要部署的服務指定一個唯一的名稱。名稱將用於後續的管理操作,如查看日誌、刪除服務等。 |
|
|
|
服務版本。為服務指定一個版本號碼,方便進行版本管理和灰階發布等操作。 |
|
|
|
GPU資源。為每個服務執行個體(Pod)分配的GPU卡數量。如果模型需要GPU進行推理,則必須指定此參數。 |
|
|
|
副本數量。指定服務的執行個體(Pod)數量。增加副本數可以提高服務的並發處理能力和可用性。 |
|
|
|
RESTful連接埠。指定服務對外暴露的RESTful API連接埠號碼,用於接收推理請求。 |
|
|
|
就緒探針類型。設定Kubernetes的就緒探針(Readiness Probe)的檢查方式,用於判斷容器是否準備好接收流量。 |
|
|
|
探針類型選項。為上述探針類型提供具體參數。對於 |
|
|
|
探針其他選項。設定就緒探針的更多行為參數,可以多次使用。樣本設定了初始延遲和檢查周期。 |
|
|
|
資料卷掛載。將一個持久化資料卷(PVC)掛載到容器的指定路徑。格式為 |
|
|
|
容器鏡像。指定用於部署服務的容器鏡像的完整地址,是服務運行環境的核心。 |
|
|
|
啟動命令。指定容器啟動後要執行的命令。設定環境變數 |
|
常見問題
如何從Hugging Face倉庫拉模數型檔案?
-
容器運行環境可訪問Hugging Face倉庫。
-
通過Arena部署一個自訂類型的服務,並通過
--image參數指定用於部署服務的容器鏡像。更多參數說明,請參見部署命令參數說明。由於HuggingFace模型檔案將下載至容器內,請確保GPU節點具備至少30GB的可用磁碟空間。
arena serve custom \ --name=huggingface \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"以下輸出表明與推理服務
huggingface-v1相關的Kubernetes資源已成功建立:service/huggingface-v1 created deployment.apps/huggingface-v1-custom-serving created INFO[0003] The Job huggingface has been submitted successfully INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status
相關文檔
-
如需指定驅動版本,具體操作,請參見通過指定版本號碼自訂節點GPU驅動版本。
-
如需在生產環境使用vLLM、Triton等成熟的推理服務架構。詳細資料,請參見使用vLLM部署Qwen模型推理服務、使用Triton部署Qwen模型推理服務。