共計 3721 個字符,預計需要花費 10 分鐘才能閱讀完成。
基于函數計算如何實現建立一個 TensorFlow ServerlessAI 平臺,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
場景介紹
基于函數計算建立一個 TensorFlow Serverless AI 推理平臺。
背景知識
函數計算 Function Compute 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫并上傳代碼。函數計算為您準備好計算資源,彈性地可靠地運行任務,并提供日志查詢、性能監控和報警等功能。函數計算幫助您無需管理服務器(Serverless),僅專注于函數代碼就能快速搭建應用。函數計算能夠彈性地伸縮,您只需要按使用量付費。優勢總結:基于函數計算進行 AI 推理等 CPU 密集型的主要優勢 1. 上手簡單,只專注業務邏輯開發,極大提高工程開發效率。
自建方案有太多學習和配置成本,如針對不同場景,ESS 需要做各種不同的參數配置 系統環境的維護升級等。2. 免運維,函數執行級別粒度的監控和告警。
3. 毫秒級彈性擴容,保證彈性高可用,同時能覆蓋延遲敏感和成本敏感類型。
4. 在 CPU 密集型的計算場景下,通過設置合理的組合計費模式,在如下場景中具有成本優勢:
請求訪問具有明顯波峰波谷,其他時間甚至沒有請求 有一定穩定的負載請求,但是有部分時間段請求量突變劇烈
場景體驗
場景將介紹使用函數計算產品部署深度學習 AI 推理平臺的最佳實踐,基于函數計算 Function Compute。
讓人工智能領域開發者可以更專注于算法模型的訓練與業務邏輯的開發,將計算集群的運維工作交給函數計算,提高工作效率。
最終效果:通過上傳一個貓或狗的照片,識別出這個照片里面的動物是貓還是狗。DEMO 示例效果入口:http://sz.mofangdegisn.cn。
步驟一:連接 ECS 服務器
ECS 資源地址:https://developer.aliyun.com/adc/scenario/35a73acbb9cb477e8a4a5b22021f23a9 參考文章步驟鏈接 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 按鈕,查看預測識別結果。
函數計算具有動態伸縮的特性,根據并發請求量,自動彈性擴容出執行環境來執行環境。當預留的實例不能滿足調用函數的請求時,函數計算就自動進行按需擴容實例供函數執行,此時的調用就有冷啟動的過程。
看完上述內容,你們掌握基于函數計算如何實現建立一個 TensorFlow ServerlessAI 平臺的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!