成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

基于函數(shù)計(jì)算+TensorFlow的ServerlessAI推理

前言概述

本文介紹了使用函數(shù)計(jì)算部署深度學(xué)習(xí) AI 推理的最佳實(shí)踐, 其中包括使用 FUN 工具一鍵部署安裝第三方依賴、一鍵部署、本地調(diào)試以及壓測(cè)評(píng)估, 全方位展現(xiàn)函數(shù)計(jì)算的開(kāi)發(fā)敏捷特性、自動(dòng)彈性伸縮能力、免運(yùn)維和完善的監(jiān)控設(shè)施。

1.1 DEMO 概述



通過(guò)上傳一個(gè)貓或者狗的照片, 識(shí)別出這個(gè)照片里面的動(dòng)物是貓還是狗
  • DEMO 示例效果入口: http://sz.mofangdegisn.cn
  • DEMO 示例工程地址: https://github.com/awesome-fc/cat-dog-classify
開(kāi)通服務(wù)
免費(fèi)開(kāi)通函數(shù)計(jì)算, 按量付費(fèi),函數(shù)計(jì)算有很大的免費(fèi)額度。
免費(fèi)開(kāi)通文件存儲(chǔ)服務(wù)NAS, 按量付費(fèi)

1.2 解決方案



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

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

1.3.1 卓越的工程效率

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

1.3.2 彈性伸縮免運(yùn)維

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

1.3.3 更低的成本

  • 函數(shù)計(jì)算 (FC) 固有自動(dòng)伸縮和負(fù)載均衡功能,用戶不需要購(gòu)買(mǎi)負(fù)載均衡 (SLB) 和彈性伸縮。
  • 具有明顯波峰波谷的用戶訪問(wèn)場(chǎng)景(比如只有部分時(shí)間段有請(qǐng)求,其他時(shí)間甚至沒(méi)有請(qǐng)求),選擇按需付費(fèi),只需為實(shí)際使用的計(jì)算資源付費(fèi)。
對(duì)于明顯波峰波谷或者稀疏調(diào)用具有低成本優(yōu)勢(shì), 同時(shí)還保持了彈性能力,以后業(yè)務(wù)規(guī)模做大以后并沒(méi)有技術(shù)切換成本,同時(shí)財(cái)務(wù)成本增長(zhǎng)配合預(yù)付費(fèi)也能保持平滑。
  • 部分請(qǐng)求持續(xù)平穩(wěn)的場(chǎng)景下,可以配合預(yù)付費(fèi)解決按需付費(fèi)較高單價(jià)問(wèn)題。 函數(shù)計(jì)算成本優(yōu)化最佳實(shí)踐文檔。
假設(shè)有一個(gè)在線計(jì)算服務(wù),由于是CPU 密集型計(jì)算, 因此在這里我們將平均 CPU 利用率作為核心參考指標(biāo)對(duì)成本,以一個(gè)月為周期,10臺(tái) C5 ECS 的總計(jì)算力為例,總的計(jì)算量約為 30% 場(chǎng)景下, 各解決方案 CPU 資源利用率使用情況示意圖大致如下:


由上圖預(yù)估出如下計(jì)費(fèi)模型:
  • 函數(shù)計(jì)算預(yù)付費(fèi) 3CU 一個(gè)月: 246.27 元, 計(jì)算能力等價(jià)于 ECS 計(jì)算型 C5
  • ECS 計(jì)算型 C5 (2vCPU,4GB)+云盤(pán): 包月219 元,按量: 446.4 元
  • 包月10 Mbps 的 SLB: 526.52 元(這里做了一定的流量假設(shè)), 彈性伸縮免費(fèi)
  • 飽和使用下,函數(shù)計(jì)算按量付費(fèi)的一臺(tái)機(jī)器成本約為按量付費(fèi) C5 ECS 的2 倍
平均CPU利用率計(jì)算費(fèi)用SLB總計(jì)函數(shù)計(jì)算組合付費(fèi)>=80%738+X(246.27*3+X)無(wú)<= 738+X按峰值預(yù)留ECS<=30%2190(10*219)526.52>=2716.52彈性伸縮延遲敏感<=50%1314(10 2193/5)526.52>= 1840.52彈性伸縮成本敏感<=70%938.57 (10 2193/7)526.52>= 1465.09
注:
  1. 這里假設(shè)函數(shù)邏輯沒(méi)有公網(wǎng)公網(wǎng)下行流量費(fèi)用, 即使有也是一致的, 這里成本比較暫不參與
  2. 延時(shí)敏感,當(dāng) CPU 利用率大于等于 50% 就需要開(kāi)始進(jìn)行擴(kuò)容,不然更來(lái)不及應(yīng)對(duì)峰值
  3. 成本敏感,當(dāng) CPU 利用率大約 80% 即開(kāi)始進(jìn)行擴(kuò)容, 能容受一定幾率的超時(shí)或者5XX

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

1.3.4. 小結(jié)

基于函數(shù)計(jì)算進(jìn)行 AI 推理等 CPU 密集型的主要優(yōu)勢(shì):
  1. 上手簡(jiǎn)單, 只專(zhuān)注業(yè)務(wù)邏輯開(kāi)發(fā), 極大提高工程開(kāi)發(fā)效率。
  • 自建方案有太多學(xué)習(xí)和配置成本,如針對(duì)不同場(chǎng)景,ESS 需要做各種不同的參數(shù)配置
  • 系統(tǒng)環(huán)境的維護(hù)升級(jí)等

  1. 免運(yùn)維,函數(shù)執(zhí)行級(jí)別粒度的監(jiān)控和告警。
  2. 毫秒級(jí)彈性擴(kuò)容,保證彈性高可用,同時(shí)能覆蓋延遲敏感和成本敏感類(lèi)型。
  3. 在 CPU 密集型的計(jì)算場(chǎng)景下, 通過(guò)設(shè)置合理的組合計(jì)費(fèi)模式, 在如下場(chǎng)景中具有成本優(yōu)勢(shì):
  • 請(qǐng)求訪問(wèn)具有明顯波峰波谷, 其他時(shí)間甚至沒(méi)有請(qǐng)求
  • 有一定穩(wěn)定的負(fù)載請(qǐng)求, 但是有部分時(shí)間段請(qǐng)求量突變劇烈

打包代碼ZIP包和部署函數(shù)

FUN 操作簡(jiǎn)明視頻教程

開(kāi)通服務(wù)

免費(fèi)開(kāi)通函數(shù)計(jì)算, 按量付費(fèi),函數(shù)計(jì)算有很大的免費(fèi)額度。
免費(fèi)開(kāi)通文件存儲(chǔ)服務(wù)NAS, 按量付費(fèi)

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

2.1.1 安裝最新的Fun

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

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

  • git clone https://github.com/awesome-fc/cat-dog-classify.git
  • 復(fù)制 .env_example 文件為 .env, 并且修改 .env 中的信息為自己的信息
  • 執(zhí)行 fun install -v, fun 會(huì)根據(jù) Funfile 中定義的邏輯安裝相關(guān)的依賴包
root@66fb3ad27a4c: ls .fun/nas/auto-default/classify model  python root@66fb3ad27a4c: du -sm .fun 697     .fun
根據(jù) Funfile 的定義:
  • 將第三方庫(kù)下載到 .fun/nas/auto-default/classify/python 目錄下
  • 本地 model 目錄移到 .fun/nas/auto-default/model 目錄下
安裝完成后,從這里我們看出, 函數(shù)計(jì)算引用的代碼包解壓之后已經(jīng)達(dá)到了 670 M, 遠(yuǎn)超過(guò) 50M 代碼包限制, 解決方案是 NAS 詳情可以參考: 掛載NAS訪問(wèn),幸運(yùn)的是 FUN 工具一鍵解決了 nas 的配置和文件上傳問(wèn)題。

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 中, 依次看下這幾個(gè)命令的做了什么事情:
  • fun nas init: 初始化 NAS, 基于您的 .env 中的信息獲取(已有滿足條件的nas)或創(chuàng)建一個(gè)同region可用的nas
  • fun nas info: 可以查看本地 NAS 的目錄位置, 對(duì)于此工程是 $(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 控制臺(tái) https://nas.console.aliyun.com 和 VPC 控制臺(tái) https://vpc.console.aliyun.com可以觀察到在指定的 region 上有 NAS 和 相應(yīng)的 vpc 創(chuàng)建成功

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

在 template.yml 中, 指定了這個(gè)函數(shù)是 http 類(lèi)型的函數(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, 本地就會(huì)啟動(dòng)一個(gè) http server 來(lái)模擬函數(shù)的執(zhí)行, 然后我們 client 端可以使用 postman, curl 或者瀏覽器, 比如對(duì)于本例:




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

本地調(diào)試OK 后,我們接下來(lái)將函數(shù)部署到云平臺(tái):
修改 template.yml LogConfig 中的 Project, 任意取一個(gè)不會(huì)重復(fù)的名字即可,有兩處地方需要更改,然后執(zhí)行
fun deploy
注意: template.yml 注釋的部分為自定義域名的配置, 如果想在 fun deploy 中完成這個(gè)部署工作:
  • 先去域名解析, 比如在示例中, 將域名 sz.mofangdegisn.cn 解析到 123456.cn-hangzhou.fc.aliyuncs.com, 對(duì)應(yīng)的域名、accountId 和 region 修改成自己的
  • 去掉 template.yml 中的注釋, 修改成自己的域名
  • 執(zhí)行 fun deploy
這個(gè)時(shí)候如果沒(méi)有自定義域名, 直接通過(guò)瀏覽器訪問(wèn)訪問(wèn)http trigger 的url, 比如 https://123456.cn-shenzhen.fc.aliyuncs.com/2016-08-15/proxy/classify/cat-dog/ 會(huì)被強(qiáng)制下載.
原因: https://help.aliyun.com/knowledge_detail/56103.html#HTTP-Trigger-compulsory-header


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


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

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

函數(shù)計(jì)算具有動(dòng)態(tài)伸縮的特性, 根據(jù)并發(fā)請(qǐng)求量,自動(dòng)彈性擴(kuò)容出執(zhí)行環(huán)境來(lái)執(zhí)行環(huán)境,在這個(gè)典型的深度學(xué)習(xí)示例中,import keras 消耗的時(shí)間很長(zhǎng) , 在我們?cè)O(shè)置的 1 G 規(guī)格的函數(shù)中, 并發(fā)訪問(wèn)的時(shí)候耗時(shí)10s左右, 有時(shí)甚至20s+
start = time.time()
from keras.models import model_from_json
print("import keras time = ", time.time()-start)

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

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




一次壓測(cè)結(jié)果



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

總結(jié)

  • 函數(shù)計(jì)算具有快速自動(dòng)伸縮擴(kuò)容能力
  • 預(yù)留模式很好地解決了冷啟動(dòng)中的毛刺問(wèn)題
  • 開(kāi)發(fā)簡(jiǎn)單易上手,只需要關(guān)注具體的代碼邏輯, Fun 工具助您一鍵式部署運(yùn)用
  • 函數(shù)計(jì)算具有很好監(jiān)控設(shè)施, 您可以可視化觀察您函數(shù)運(yùn)行情況, 執(zhí)行時(shí)間、內(nèi)存等信息
原文鏈接
本文為阿里云內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

分享文章:基于函數(shù)計(jì)算+TensorFlow的ServerlessAI推理
標(biāo)題URL:http://jinyejixie.com/article18/gdjigp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、、軟件開(kāi)發(fā)、標(biāo)簽優(yōu)化、App開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
佛冈县| 闽清县| 伊宁市| 射洪县| 白朗县| 海晏县| 屯昌县| 渑池县| 廊坊市| 苏尼特左旗| 孟州市| 沿河| 韩城市| 无棣县| 于田县| 仙居县| 凯里市| 汽车| 南京市| 都江堰市| 左权县| 柳河县| 衡阳市| 陆河县| 谷城县| 泰安市| 西丰县| 彰武县| 安图县| 都安| 冕宁县| 江口县| 峡江县| 睢宁县| 府谷县| 拉萨市| 南平市| 冀州市| 长沙市| 石楼县| 桑植县|