日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

使用函数计算三步实现深度学习 AI 推理在线服务

發(fā)布時間:2025/3/20 85 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用函数计算三步实现深度学习 AI 推理在线服务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目前深度學習應(yīng)用廣發(fā), 其中 AI 推理的在線服務(wù)是其中一個重要的可落地的應(yīng)用場景。本文將為大家介紹使用函數(shù)計算部署深度學習 AI 推理的最佳實踐, ?其中包括使用 FUN 工具一鍵部署安裝第三方依賴、一鍵部署、本地調(diào)試以及壓測評估, 全方位展現(xiàn)函數(shù)計算的開發(fā)敏捷特性、自動彈性伸縮能力、免運維和完善的監(jiān)控設(shè)施。

1.1 DEMO 概述

通過上傳一個貓或者狗的照片, 識別出這個照片里面的動物是貓還是狗

  • DEMO 示例效果入口: http://sz.mofangdegisn.cn
  • DEMO 示例工程地址: https://github.com/awesome-fc/cat-dog-classify

開通服務(wù)

免費開通函數(shù)計算, 按量付費,函數(shù)計算有很大的免費額度。

免費開通文件存儲服務(wù)NAS, 按量付費

1.2 解決方案

如上圖所示, 當多個用戶通過對外提供的 url 訪問推理服務(wù)時候,每秒的請求幾百上千都沒有關(guān)系, 函數(shù)計算平臺會自動伸縮, 提供足夠的執(zhí)行實例來響應(yīng)用戶的請求, 同時函數(shù)計算提供了完善的監(jiān)控設(shè)施來監(jiān)控您的函數(shù)運行情況。

1.3. Serverless 方案與傳統(tǒng)自建服務(wù)方案對比

1.3.1 卓越的工程效率


自建服務(wù)函數(shù)計算 Serverless
基礎(chǔ)設(shè)施需要用戶采購和管理
開發(fā)效率除了必要的業(yè)務(wù)邏輯開發(fā),需要自己建立相同線上運行環(huán)境, 包括相關(guān)軟件的安裝、服務(wù)配置、安全更新等一系列問題只需要專注業(yè)務(wù)邏輯的開發(fā), 配合 FUN 工具一鍵資源編排和部署
學習上手成本可能使用 K8S 或彈性伸縮( ESS ),需要了解更多的產(chǎn)品、名詞和參數(shù)的意義會編寫對應(yīng)的語言的函數(shù)代碼即可

1.3.2 彈性伸縮免運維


自建服務(wù)函數(shù)計算 Serverless
彈性高可用需要自建負載均衡 (SLB),彈性伸縮,擴容縮容速度較 FC 慢FC系統(tǒng)固有毫秒級別彈性伸縮,快速實現(xiàn)底層擴容以應(yīng)對峰值壓力,免運維
監(jiān)控報警查詢ECS 級別的 metrics提供更細粒度的函數(shù)執(zhí)行情況,每次訪問函數(shù)執(zhí)行的 latency 和日志等, 更加完善的報警監(jiān)控機制

1.3.3 更低的成本

  • 函數(shù)計算 (FC) 固有自動伸縮和負載均衡功能,用戶不需要購買負載均衡 (SLB) 和彈性伸縮。
  • 具有明顯波峰波谷的用戶訪問場景(比如只有部分時間段有請求,其他時間甚至沒有請求),選擇按需付費,只需為實際使用的計算資源付費。

對于明顯波峰波谷或者稀疏調(diào)用具有低成本優(yōu)勢, 同時還保持了彈性能力,以后業(yè)務(wù)規(guī)模做大以后并沒有技術(shù)切換成本,同時財務(wù)成本增長配合預(yù)付費也能保持平滑。

  • 部分請求持續(xù)平穩(wěn)的場景下,可以配合預(yù)付費解決按需付費較高單價問題。函數(shù)計算成本優(yōu)化最佳實踐文檔。

假設(shè)有一個在線計算服務(wù),由于是CPU 密集型計算, 因此在這里我們將平均 CPU 利用率作為核心參考指標對成本,以一個月為周期,10臺 C5 ECS 的總計算力為例,總的計算量約為 30% 場景下, 各解決方案 CPU 資源利用率使用情況示意圖大致如下:

由上圖預(yù)估出如下計費模型:

  • 函數(shù)計算預(yù)付費 3CU 一個月: 246.27 元, 計算能力等價于 ECS 計算型 C5
  • ECS 計算型 C5 (2vCPU,4GB) 云盤: 包月219 元,按量: 446.4 元
  • 包月10 Mbps 的 SLB: 526.52 元(這里做了一定的流量假設(shè)), 彈性伸縮免費
  • 飽和使用下,函數(shù)計算按量付費的一臺機器成本約為按量付費 C5 ECS 的2 倍

平均CPU利用率計算費用SLB總計
函數(shù)計算組合付費>=80%738 X(246.27*3 X)<= 738 X
按峰值預(yù)留ECS<=30%2190(10*219)526.52>=2716.52
彈性伸縮延遲敏感<=50%1314(102193/5)526.52>= 1840.52
彈性伸縮成本敏感<=70%938.57 (102193/7)526.52>= 1465.09

注:

1. 這里假設(shè)函數(shù)邏輯沒有公網(wǎng)公網(wǎng)下行流量費用, 即使有也是一致的, 這里成本比較暫不參與

2. 延時敏感,當 CPU 利用率大于等于 50% 就需要開始進行擴容,不然更來不及應(yīng)對峰值

3. 成本敏感,當 CPU 利用率大約 80% 即開始進行擴容, 能容受一定幾率的超時或者5XX

上表中, 其中函數(shù)計算組合付費中的 X 為按需付費的成本價,假設(shè)按需付費的計算量占整個計算量的 10%,假設(shè) CPU 利用率為100%, ?對應(yīng)上表,那么需要 3 臺 ECS 的計算能力即可。因此 FC 按量付費的成本 X = 3 ?446.4 ? 10% ? 2 = ?267.84 ( FC 按量付費是按量 ECS 的2倍),這個時候函數(shù)計算組合付費總計 ?1005.8 元。 在這個模型預(yù)估里面, 只要 FC 按量付費占整個計算量小于 20%, 即使不考慮 SLB, 單純考慮計算成本, 都是有一定優(yōu)勢的。

1.3.4. 小結(jié)

基于函數(shù)計算進行 AI 推理等 CPU 密集型的主要優(yōu)勢:

  • 上手簡單, 只專注業(yè)務(wù)邏輯開發(fā), 極大提高工程開發(fā)效率。
    • 自建方案有太多學習和配置成本,如針對不同場景,ESS 需要做各種不同的參數(shù)配置
    • 系統(tǒng)環(huán)境的維護升級等
  • 免運維,函數(shù)執(zhí)行級別粒度的監(jiān)控和告警。
  • 毫秒級彈性擴容,保證彈性高可用,同時能覆蓋延遲敏感和成本敏感類型。
  • 在 CPU 密集型的計算場景下, 通過設(shè)置合理的組合計費模式, 在如下場景中具有成本優(yōu)勢:
    • 請求訪問具有明顯波峰波谷, 其他時間甚至沒有請求
    • 有一定穩(wěn)定的負載請求, 但是有部分時間段請求量突變劇烈
  • 打包代碼ZIP包和部署函數(shù)

    FUN 操作簡明視頻教程

    開通服務(wù)

    免費開通函數(shù)計算, 按量付費,函數(shù)計算有很大的免費額度。

    免費開通文件存儲服務(wù)NAS, 按量付費

    2.1 安裝第三方包到本地并上傳到NAS

    2.1.1 安裝最新的Fun

    • 安裝版本為8.x 最新版或者10.x 、12.x nodejs
    • 安裝 funcraf

    2.1.2 Clone 工程 & Fun 一鍵安裝第三方庫到本地

    • git clone https://github.com/awesome-fc/cat-dog-classify.git
    • 復(fù)制 .env_example 文件為 .env, 并且修改 .env 中的信息為自己的信息
    • 執(zhí)行 fun install -v, ?fun 會根據(jù) Funfile 中定義的邏輯安裝相關(guān)的依賴包

    root@66fb3ad27a4c: ls .fun/nas/auto-default/classify model python root@66fb3ad27a4c: du -sm .fun 697 .fun

    根據(jù) Funfile 的定義:

    • 將第三方庫下載到 .fun/nas/auto-default/classify/python 目錄下
    • 本地 model 目錄移到 .fun/nas/auto-default/model 目錄下

    安裝完成后,從這里我們看出, 函數(shù)計算引用的代碼包解壓之后已經(jīng)達到了 670 M, 遠超過 50M 代碼包限制, 解決方案是 NAS 詳情可以參考: ?掛載NAS訪問,幸運的是 FUN 工具一鍵解決了 nas 的配置和文件上傳問題。

    2.1.3. 將下載的依賴的第三方代碼包上傳到 NAS

    fun nas init fun nas info fun nas sync fun nas ls nas://classify:/mnt/auto/

    依次執(zhí)行這些命令,就將本地中的 .fun/nas/auto-default 中的第三方代碼包和模型文件傳到 NAS 中, 依次看下這幾個命令的做了什么事情:

    • fun nas init: 初始化 NAS, 基于您的 .env 中的信息獲取(已有滿足條件的nas)或創(chuàng)建一個同region可用的nas
    • fun nas info: 可以查看本地 NAS 的目錄位置, 對于此工程是 $(pwd)/.fun/nas/auto-default/classify
    • fun nas sync: 將本地 NAS 中的內(nèi)容(.fun/nas/auto-default/classify)上傳到 NAS 中的 classify 目錄
    • fun nas ls nas:///mnt/auto/: 查看我們是否已經(jīng)正確將文件上傳到了 NAS

    登錄 NAS 控制臺 https://nas.console.aliyun.com 和 VPC 控制臺 https://vpc.console.aliyun.com
    可以觀察到在指定的 region 上有 NAS 和 相應(yīng)的 vpc 創(chuàng)建成功

    2.2 本地調(diào)試函數(shù)

    在 template.yml 中, 指定了這個函數(shù)是 http 類型的函數(shù), 所以根據(jù) fun 的提示:

    Tips for next step ====================== * Invoke Event Function: fun local invoke * Invoke Http Function: fun local start * Build Http Function: fun build * Deploy Resources: fun deploy

    執(zhí)行 fun local start, ?本地就會啟動一個 http server 來模擬函數(shù)的執(zhí)行, 然后我們 client 端可以使用 postman, curl 或者瀏覽器, 比如對于本例:

    2.3 部署函數(shù)到FC平臺

    本地調(diào)試OK 后,我們接下來將函數(shù)部署到云平臺:

    修改 template.yml LogConfig 中的 Project, 任意取一個不會重復(fù)的名字即可,有兩處地方需要更改,然后執(zhí)行

    fun deploy

    注意: ?template.yml 注釋的部分為自定義域名的配置, 如果想在 fun deploy 中完成這個部署工作:

    • 先去域名解析, 比如在示例中, 將域名 sz.mofangdegisn.cn 解析到 123456.cn-hangzhou.fc.aliyuncs.com, 對應(yīng)的域名、accountId 和 region 修改成自己的
    • 去掉 template.yml 中的注釋, 修改成自己的域名
    • 執(zhí)行 fun deploy

    這個時候如果沒有自定義域名, 直接通過瀏覽器訪問訪問http trigger 的url, 比如 https://123456.cn-shenzhen.fc.aliyuncs.com/2016-08-15/proxy/classify/cat-dog/ 會被強制下載.

    原因:https://help.aliyun.com/knowledge_detail/56103.html#HTTP-Trigger-compulsory-header

    登錄控制臺https://fc.console.aliyun.com,可以看到service 和 函數(shù)已經(jīng)創(chuàng)建成功, 并且 service 也已經(jīng)正確配置。

    在這里,我們發(fā)現(xiàn)第一次打開頁面訪問函數(shù)的時候,執(zhí)行環(huán)境實例冷啟動時間非常長, 如果是一個在線AI推理服務(wù),對響應(yīng)時間非常敏感,冷啟動引起的毛刺對于這種類型的服務(wù)是不可接受的,接下來,本文講解如何利用函數(shù)計算的預(yù)留模式來消除冷啟動帶來的負面影響。

    使用預(yù)留模式消除冷啟動毛刺

    函數(shù)計算具有動態(tài)伸縮的特性, 根據(jù)并發(fā)請求量,自動彈性擴容出執(zhí)行環(huán)境來執(zhí)行環(huán)境,在這個典型的深度學習示例中,import keras 消耗的時間很長 , 在我們設(shè)置的 1 G 規(guī)格的函數(shù)中, 并發(fā)訪問的時候耗時10s左右, 有時甚至20s

    start = time.time() from keras.models import model_from_json print("import keras time = ", time.time()-start)

    3.1 函數(shù)計算設(shè)置預(yù)留

    預(yù)留操作簡明視頻教程

    • 在 FC 控制臺,發(fā)布版本,并且基于該版本創(chuàng)建別名 prod,并且基于別名 prod 設(shè)置預(yù)留, 操作過程請參考:https://help.aliyun.com/document_detail/138103.html
    • 將該函數(shù)的 http trigger 和 自定義域名的設(shè)置執(zhí)行 prod 版本

    一次壓測結(jié)果

    從上面圖中我們可以看出,當函數(shù)執(zhí)行的請求到來時,優(yōu)先被調(diào)度到預(yù)留的實例中被執(zhí)行, 這個時候是沒有冷啟動的,所以請求是沒有毛刺的, 后面隨著測試的壓力不斷增大(峰值TPS 達到 1184), 預(yù)留的實例不能滿足調(diào)用函數(shù)的請求, 這個時候函數(shù)計算就自動進行按需擴容實例供函數(shù)執(zhí)行,此時的調(diào)用就有冷啟動的過程, 從上面我們可以看出,函數(shù)的最大 latency 時間甚至達到了 32s,如果這個web AP是延時敏感的,這個 latency 是不可接受的。

    總結(jié)

    • 函數(shù)計算具有快速自動伸縮擴容能力
    • 預(yù)留模式很好地解決了冷啟動中的毛刺問題
    • 開發(fā)簡單易上手,只需要關(guān)注具體的代碼邏輯, Fun 工具助您一鍵式部署運用
    • 函數(shù)計算具有很好監(jiān)控設(shè)施, 您可以可視化觀察您函數(shù)運行情況, 執(zhí)行時間、內(nèi)存等信息

    有任何問題歡迎進掃碼進釘釘群溝通

    “阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術(shù)圈。”

    總結(jié)

    以上是生活随笔為你收集整理的使用函数计算三步实现深度学习 AI 推理在线服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。