您可以通過Function Compute控制台、SDK或Serverless Devs來體驗GPU執行個體的最佳實務。本文以Python語言為例,說明如何通過控制台,將原始映像經過函數代碼處理,實現邊緣檢測。
應用情境與優勢
在不同的應用情境下,Function Compute提供的GPU執行個體與CPU相比所具備的優勢如下。
即時、准即時的應用情境
提供數倍於CPU的圖形影像處理效率,從而快速將生產內容推向終端使用者。
成本優先的影像處理情境
提供彈性預留模式,從而按需為客戶保留GPU工作執行個體,對比自建GPU叢集擁有較大成本優勢。
提供GPU共用虛擬化,支援以1/2、獨佔方式使用GPU,允許業務以更精細化的方式配置GPU執行個體。
效率優先的影像處理情境
屏蔽營運GPU叢集的繁重負擔(驅動/CUDA版本管理、機器運行管理、GPU壞卡管理),使得開發人員專註於代碼開發、聚焦營運目標的達成。
GPU執行個體的更多資訊,請參見執行個體類型及使用模式。
教程樣本說明
如下表所示,左列為原圖,右列是經過部署在Function Compute的邊緣檢測函數代碼處理後,所產生的圖片。
原始映像 | 邊緣檢測結果 |
準備工作
OpenCV需要自行編譯以使用GPU加速,編譯方式如下:
(推薦)通過Docker使用已編譯好的OpenCV。下載地址:opencv-cuda-docker或cuda-opencv
自行編譯。具體步驟,請參見官網編譯手冊。
將需處理的音視頻資源上傳至在GPU執行個體所在地區的OSS Bucket中,且您對該Bucket中的檔案有讀寫權限。具體步驟,請參見控制台上傳檔案。許可權相關說明,請參見修改儲存空間讀寫權限。
通過Function Compute控制台部署GPU應用
部署鏡像。
建Container Registry的企業版執行個體或個人版執行個體。
推薦您建立企業版執行個體。具體操作步驟,請參見建立企業版執行個體。
建立命名空間和鏡像倉庫。
具體操作步驟,請參見步驟二:建立命名空間和步驟三:建立鏡像倉庫。
在Container Registry控制台,根據介面提示完成Docker相關操作步驟。然後將上述樣本app.py和Dockerfile推送至執行個體鏡像倉庫,檔案資訊,請參見通過ServerlessDevs部署GPU應用時/code目錄中的app.py和Dockerfile。
建立GPU函數。具體操作步驟,請參見建立Custom Container函數。
修改函數的執行逾時時間。
在目標函數的配置頁簽,在左側導覽列,選擇運行時,然後單擊運行時右側的編輯。
在運行時面板,修改執行逾時時間,然後單擊確定。
說明CPU轉碼耗時會超過預設的60s,因此建議您修改執行逾時時間為較大的值。
配置GPU預留執行個體。關於配置預留執行個體的具體操作,請參見配置預留執行個體。
配置完成後,您可以在規則列表查看預留的GPU執行個體是否就緒。即當前預留執行個體數是否為設定的預留執行個體數。
使用cURL測試函數。
在函數詳情頁面,單擊觸發器管理頁簽,查看觸發器的配置資訊,擷取觸發器的訪問地址。
在命令列執行如下命令,調用GPU函數。
查看線上函數版本
curl "https://tgpu-op-console-tgpu-op-console-ajezokddpx.cn-shenzhen.fcapp.run" {"function": "opencv_edge_canny"}
執行圖片邊緣檢測
curl "https://tgpu-op-console-tgpu-op-console-ajezokddpx.cn-shenzhen.fcapp.run" -H "RUN-MODE: normal" {"result": "CUDA-capable device supported | process image ok!"}
執行結果
您可通過在瀏覽器中訪問以下網域名稱,查看經過邊緣檢測處理後的圖片:
https://cri-zfen7xhpsx******-registry.oss-cn-shenzhen.aliyuncs.com/cats2.png
本網域名稱僅為樣本,需以實際情況為準。