體驗簡介
本場景将介紹使用函數計算産品 Function Compute 部署深度學習 AI 推理平台的最佳實踐,基于函數計算 Function Compute 建立一個TensorFlow Serverless AI 推理平台。
讓人工智能領域開發者可以更專注于算法模型的訓練與業務邏輯的開發,将計算叢集的運維交予函數計算處理,提高工作效率。
最終效果:通過上傳一個貓或狗的照片, 識别出這個照片裡面的動物是貓還是狗。
背景知識
函數計算 Function Compute 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理伺服器等基礎設施,隻需編寫并上傳代碼。函數計算為您準備好計算資源,彈性地可靠地運作任務,并提供日志查詢、性能監控和報警等功能。函數計算幫助您無需管理伺服器(Serverless),僅專注于函數代碼就能快速搭建應用。函數計算能夠彈性地伸縮,您隻需要按使用量付費。
優勢總結:基于函數計算進行 AI 推理等 CPU 密集型的主要優勢
1.上手簡單, 隻專注業務邏輯開發, 極大提高工程開發效率。
自建方案有太多學習和配置成本,如針對不同場景,ESS 需要做各種不同的參數配置
系統環境的維護更新等。
- 免運維,函數執行級别粒度的監控和告警。
3.毫秒級彈性擴容,保證彈性高可用,同時能覆寫延遲敏感和成本敏感類型。
4.在 CPU 密集型的計算場景下, 通過設定合理的組合計費模式, 在如下場景中具有成本優勢:
請求通路具有明顯波峰波谷, 其他時間甚至沒有請求
有一定穩定的負載請求, 但是有部分時間段請求量突變劇烈
場景體驗
場景将介紹使用函數計算産品部署深度學習 AI 推理平台的最佳實踐,基于函數計算 Function Compute。
讓人工智能領域開發者可以更專注于算法模型的訓練與業務邏輯的開發,将計算叢集的運維工作交給函數計算,提高工作效率。
最終效果:
通過上傳一個貓或狗的照片, 識别出這個照片裡面的動物是貓還是狗。DEMO 示例效果入口:
http://sz.mofangdegisn.cn。
步驟一:連接配接ECS伺服器
ECS資源位址參考文章步驟連結ECS
步驟二:開通函數計算服務
在使用函數計算前,您需要在阿裡雲
産品詳情頁開通服務。
步驟三:安裝Fun工具
Fun 是一個用于支援Serverless應用部署的工具,能幫助您便捷地管理函數計算、API 網關和日志服務等資源。它通過一個資源配置檔案(template.yml),協助您進行開發、建構和部署操作。
1.将Fun的安裝包下載下傳到本地。請将下面的FUN_VERSION變量的值設定為最新版本号,最新版本号請參見Releases。以下操作将在ECS伺服器上安裝和配置Fun。
FUN_VERSION="v3.6.1"
curl -o fun-linux.zip https://gosspublic.alicdn.com/fun/fun-$FUN_VERSION-linux.zip
2.安裝解壓工具unzip,并使用unzip将下載下傳的Fun安裝包解壓到目前目錄。
yum -y install unzip
unzip fun-linux.zip
3.将解壓出來的可執行檔案移動到系統路徑。
mv fun-*-linux /usr/local/bin/fun
4.配置Fun關聯的阿裡雲賬号和調用SDK的逾時時間等資訊。
fun config
請參考以下資訊輸入您的阿裡雲賬号ID、AccessKeyID和AccessKey密鑰等資訊。
-
Aliyun Account
ID:子使用者名稱中@符号後面部分就是給您配置設定的主賬号ID,例如u-zftb79nc@105997185439中包含的賬号ID為105997185439。
-
Aliyun Access Key ID和Aliyun Access Key Secret:請使用平台提供給您的子賬号AK ID和AK
Secret。
-
The timeout in seconds for each SDK client
invoking:建議将逾時時間設定長一點(例如10000),防止在上傳部署包時發生逾時中斷。
正确設定如下所示:
步驟四:安裝Docker
1.安裝Docker的依賴庫。
yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加docker-ce的軟體源資訊。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安裝docker-ce。
yum makecache fast
yum -y install docker-ce
4.啟動Docker服務。
systemctl start docker
步驟五:建立NAS檔案系統挂載點
1.登入
NAS控制台2.選擇檔案系統 > 檔案系統清單。
3.在左上角選擇雲資源所在地域。
4.找到體驗頁面左側資源資訊欄中的NAS檔案系統ID對應的檔案系統,單擊更多 > 添加挂載點。
5.在添加挂載點頁面,配置如下參數。
6.檢視挂載點位址,如下圖。
步驟六:下載下傳項目代碼
1.安裝Git工具并使用Git克隆項目代碼到本地。
yum -y install git
git clone https://github.com/awesome-fc/cat-dog-classify.git
2.編輯項目中FUN的部署模闆檔案template.yml,修改日志服務項目名稱和NAS存儲挂載配置。
a.使用vim打開模闆檔案。
cd cat-dog-classify
vim template.yml
b.輸入以下指令全局替換日志服務項目名稱。
:%s/log-ai-pro/log-ai-test/g
指令中log-ai-test為修改後的項目名稱,您可以替換為您的自定義項目名稱。
c.修改NAS挂載配置。預設auto方式将會自動建立NAS檔案系統,這裡我們修改填寫為平台預建立好的NAS檔案系統的資訊。
VpcConfig:
VpcId: 'vpc-uf6u8*****zf1r4'
VSwitchIds: [ 'vsw-uf6******038fy' ]
SecurityGroupId: 'sg-uf6e******w6qz'
NasConfig:
UserId: 10003
GroupId: 10003
MountPoints:
- ServerAddr: '33****u83.cn-shanghai.nas.aliyuncs.com:/'
MountDir: '/mnt/auto'
修改的參數說明如下:
- VpcConfig中的VpcId、VSwitchId和SecurityGroupId資訊請到ECS控制台的執行個體詳情頁檢視。
- ServerAddr的值修改為步驟三中的挂載點位址。
修改後如下圖所示:
步驟七:将依賴檔案上傳到NAS
1.執行以下指令初始化NAS。
fun nas init
2.檢視本地NAS的目錄位置。
fun nas info
指令輸出如下所示:
3.執行以下指令安裝相關依賴。
fun install -v
指令執行成功結果如下所示。
該指令将根據Funfile檔案中的定義:
- 将依賴下載下傳到.fun/nas/auto-default/classify/python目錄中。
- 将model中的模型檔案拷貝到.fun/nas/auto-default/classify/model/目錄中。
4.将本地NAS目錄同步到阿裡雲NAS存儲中。
fun nas sync
指令執行結果如下所示。
說明 同步的檔案有700M左右,内容較多,同步時間約40分鐘左右,請耐心等待。
5.檢視檔案是否上傳到遠端NAS目錄。
fun nas ls nas://classify:/mnt/auto/
步驟九:部署到函數計算平台
執行以下操作将函數部署到函數計算平台:
fun deploy -y
執行結果如下圖所示,圖中19176540-18576685985*.test.functioncompute.com為函數計算平台配置設定的臨時域名,有效期10天,每天有1000次的調用限制。
如果部署時出現如下錯誤資訊。
問題原因:模闆配置檔案中定義的日志項目名稱已存在。
解決方法:請修改template.yml檔案中日志項目名稱。
步驟九:測試預測服務
1.部署完成後,等待30秒鐘左右,在浏覽器打開臨時域名,如下圖所示。
如果通路頁面時出現類似下面引入子產品錯誤。
問題原因:由于網絡問題,NAS同步内容不完整。
解決方法:請重新執行指令fun nas sync。
2.上傳一張貓或狗的圖檔。
3.單擊Predict按鈕,檢視預測識别結果。
函數計算具有動态伸縮的特性, 根據并發請求量,自動彈性擴容出執行環境來執行環境。當預留的執行個體不能滿足調用函數的請求時, 函數計算就自動進行按需擴容執行個體供函數執行,此時的調用就有冷啟動的過程。使用預留模式可以消除冷啟動毛刺問題,詳情請參見預留執行個體。