AHPA可以根據從Prometheus Adapter擷取到的GPU利用率資料,結合歷史負載趨勢和預測演算法,提前預估未來的GPU資源需求,並自動調整Pod副本數量或者GPU資源分派,確保在GPU資源緊張前完成擴容操作,而在資源閑置時及時縮容,從而達到節省成本和提高叢集效率的目標。
前提條件
已建立託管GPU叢集。具體操作,請參見建立GPU叢集。
已安裝AHPA組件,並配置相關指標源。具體操作,請參見AHPA概述。
已開啟Prometheus監控,且Prometheus監控中至少已收集7天應用歷史資料(GPU)。具體操作,請參見阿里雲Prometheus監控。
原理介紹
在高效能運算領域,尤其是深度學習模型訓練、推理等對GPU資源高度依賴的情境中,通過精細化管理和動態調整GPU資源能夠有效提升資源使用率並降低成本。Container Service for Kubernetes支援基於GPU指標進行Auto Scaling。您可以利用Prometheus採集GPU的即時利用率和顯存使用方式等關鍵計量。然後通過Prometheus Adapter將這些指標轉換為Kubernetes可識別的metrics格式,並與AHPA整合。AHPA可以根據從Prometheus Adapter擷取到的GPU利用率資料,結合歷史負載趨勢和預測演算法,提前預估未來的GPU資源需求,並自動調整Pod副本數量或者GPU資源分派,確保在GPU資源緊張前完成擴容操作,而在資源閑置時及時縮容,從而達到節省成本和提高叢集效率的目標。
步驟一:部署Metrics Adapter
擷取HTTP API的內網地址。
登入ARMS控制台。
在左側導覽列選擇 ,進入可觀測監控 Prometheus 版的執行個體列表頁面。
在執行個體列表頁面頂部,選擇Container ServiceK8s叢集所在的地區。
單擊目標Prometheus執行個體名稱,然後在左側導覽列單擊設定,擷取HTTP API地址下的內網地址。
部署ack-alibaba-cloud-metrics-adapter。
登入Container Service管理主控台,在左側導覽列選擇 。
在應用市場頁面單擊應用目錄頁簽,搜尋並單擊ack-alibaba-cloud-metrics-adapter。
在ack-alibaba-cloud-metrics-adapter頁面,單擊右上方的一鍵部署。
在基本資料設定精靈中,選擇叢集和命名空間,然後單擊下一步。
在參數配置設定精靈中,選擇Chart版本,在參數地區將步驟1擷取的HTTP API內網地址配置為
prometheus.url
的值,然後單擊確定。
步驟二:基於GPU指標實現AHPA彈性預測
本文通過在GPU上部署一個模型推理服務,然後對其進行持續請求訪問,根據GPU利用率進行AHPA彈性預測。
部署推理服務。
執行以下命令,部署推理服務。
執行以下命令,查看Pod狀態。
kubectl get pods -o wide
預期輸出:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES bert-intent-detection-7b486f6bf-f**** 1/1 Running 0 3m24s 10.15.1.17 cn-beijing.192.168.94.107 <none> <none>
執行以下命令,調用推理服務,驗證部署是否成功。
您可以通過
kubectl get svc bert-intent-detection-svc
命令擷取GPU節點的IP地址,替換如下命令中的47.95.XX.XX
。curl -v "http://47.95.XX.XX/predict?query=Music"
預期輸出:
* Trying 47.95.XX.XX... * TCP_NODELAY set * Connected to 47.95.XX.XX (47.95.XX.XX) port 80 (#0) > GET /predict?query=Music HTTP/1.1 > Host: 47.95.XX.XX > User-Agent: curl/7.64.1 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Content-Type: text/html; charset=utf-8 < Content-Length: 9 < Server: Werkzeug/1.0.1 Python/3.6.9 < Date: Wed, 16 Feb 2022 03:52:11 GMT < * Closing connection 0 PlayMusic #意圖識別結果。
當HTTP請求返回狀態代碼
200
和意圖識別結果,說明推理服務部署成功。
配置AHPA。
本文以GPU利用率為例,當Pod的GPU利用率大於20%時,觸發擴容。
配置AHPA指標源。
使用以下內容,建立application-intelligence.yaml檔案。
prometheusUrl
用於設定阿里雲Prometheus的訪問地址,值為步驟1擷取的內網地址。apiVersion: v1 kind: ConfigMap metadata: name: application-intelligence namespace: kube-system data: prometheusUrl: "http://cn-shanghai-intranet.arms.aliyuncs.com:9090/api/v1/prometheus/da9d7dece901db4c9fc7f5b*******/1581204543170*****/c54417d182c6d430fb062ec364e****/cn-shanghai"
執行以下命令,部署application-intelligence。
kubectl apply -f application-intelligence.yaml
部署AHPA。
使用以下內容,建立fib-gpu.yaml檔案。
此處設定為
observer
觀察模式,關於參數的更多資訊,請參見參數說明。執行以下命令,部署AHPA。
kubectl apply -f fib-gpu.yaml
執行以下命令,查看AHPA狀態。
kubectl get ahpa
預期輸出:
NAME STRATEGY REFERENCE METRIC TARGET(%) CURRENT(%) DESIREDPODS REPLICAS MINPODS MAXPODS AGE fib-gpu observer bert-intent-detection gpu 20 0 0 1 10 50 6d19h
由預期輸出得到,
CURRENT(%)
為0
,TARGET(%)
為20
。說明當前GPU利用率是0%,當GPU利用率超過20%時觸發彈性擴容。
測試推理服務Auto Scaling。
執行以下命令,對推理服務進行訪問。
訪問過程中,執行以下命令,查看AHPA的狀態。
kubectl get ahpa
預期輸出:
NAME STRATEGY REFERENCE METRIC TARGET(%) CURRENT(%) DESIREDPODS REPLICAS MINPODS MAXPODS AGE fib-gpu observer bert-intent-detection gpu 20 189 10 4 10 50 6d19h
由預期輸出得到,當前GPU利用率
CURRENT(%)
已超過TARGET(%)
的值,觸發Auto Scaling,期望的Pod數DESIREDPODS
為10
。執行以下命令,查看預測效果趨勢。
kubectl get --raw '/apis/metrics.alibabacloud.com/v1beta1/namespaces/default/predictionsobserver/fib-gpu'|jq -r '.content' |base64 -d > observer.html
基於歷史7天的GPU指標資料預測的GPU趨勢樣本結果如下:
Predict GPU Resource Observer:藍色表示實際的GPU使用量,綠色表示AHPA預測出來的GPU使用量。綠色曲線大部分均大於藍色,表明預測的GPU容量相對充足。
Predict POD Oberserver:藍色表示使用實際的擴縮容Pod數,綠色表示AHPA預測出來的擴縮容Pod數,綠色曲線大部分均小於藍色,表明預測的Pod數量更少。您可以將Auto Scaling模式設定為
auto
,以預測的Pod數進行設定,為您節省更多的Pod資源,避免資源的浪費。
通過預測結果表明,彈性預測趨勢符合預期。若經過觀察後,符合預期,您可以將Auto Scaling模式設定為
auto
,由AHPA負責擴縮容。
相關文檔
Knative Serverless支援AHPA(Advanced Horizontal Pod Autoscaler)的彈效能力,當應用所需資源具備周期性時,可通過彈性預測,預熱資源,解決您在使用Knative中遇到的冷啟動問題。詳細資料,請參見在Knative中使用AHPA彈性預測。
很多情境中需要根據自訂指標(例如HTTP請求的QPS、訊息佇列的長度等)對應用進行擴縮容。AHPA(Autoscaling Horizontal Pod Autoscaler)提供了External Metrics機制,結合alibaba-cloud-metrics-adapter組件,可以為應用提供更加豐富的擴縮機制。詳細資料,請參見通過AHPA配置自訂指標以實現應用擴縮。