溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何急速搭建Serverless AI 應(yīng)用進(jìn)行寫(xiě)詩(shī)

發(fā)布時(shí)間:2021-11-22 16:37:14 來(lái)源:億速云 閱讀:124 作者:柒染 欄目:云計(jì)算

今天就跟大家聊聊有關(guān)如何急速搭建Serverless AI 應(yīng)用進(jìn)行寫(xiě)詩(shī),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

前言

首先介紹下出現(xiàn)的幾個(gè)比較重要的概念:

函數(shù)計(jì)算(Function Compute): 函數(shù)計(jì)算是一個(gè)事件驅(qū)動(dòng)的服務(wù),通過(guò)函數(shù)計(jì)算,用戶(hù)無(wú)需管理服務(wù)器等運(yùn)行情況,只需編寫(xiě)代碼并上傳。函數(shù)計(jì)算準(zhǔn)備計(jì)算資源,并以彈性伸縮的方式運(yùn)行用戶(hù)代碼,而用戶(hù)只需根據(jù)實(shí)際代碼運(yùn)行所消耗的資源進(jìn)行付費(fèi)。函數(shù)計(jì)算更多信息 參考。
Fun: Fun 是一個(gè)用于支持 Serverless 應(yīng)用部署的工具,能幫助您便捷地管理函數(shù)計(jì)算、API 網(wǎng)關(guān)、日志服務(wù)等資源。它通過(guò)一個(gè)資源配置文件(template.yml),協(xié)助您進(jìn)行開(kāi)發(fā)、構(gòu)建、部署操作。Fun 的更多文檔 參考。

備注: 介紹的技巧需要 Fun 版本大于等于 3.2.0。

如何急速搭建Serverless AI 應(yīng)用進(jìn)行寫(xiě)詩(shī)

依賴(lài)工具

本項(xiàng)目是在 MacOS 下開(kāi)發(fā)的,涉及到的工具是平臺(tái)無(wú)關(guān)的,對(duì)于 Linux 和 Windows 桌面系統(tǒng)應(yīng)該也同樣適用。在開(kāi)始本例之前請(qǐng)確保如下工具已經(jīng)正確的安裝,更新到最新版本,并進(jìn)行正確的配置。

  • Docker

  • Fun

  • Fcli

Fun 和 Fcli 工具依賴(lài)于 docker 來(lái)模擬本地環(huán)境。
對(duì)于 MacOS 用戶(hù)可以使用 homebrew 進(jìn)行安裝:

brew cask install docker
brew tap vangie/formula
brew install fun
brew install fcli

Windows 和 Linux 用戶(hù)安裝請(qǐng)參考:

  1. https://github.com/aliyun/fun/blob/master/docs/usage/installation.md

  2. https://github.com/aliyun/fcli/releases

安裝好后,記得先執(zhí)行 fun config 初始化一下配置。

注意, 如果你已經(jīng)安裝過(guò)了 fun,確保 fun 的版本在 3.2.0 以上。

$ fun --version
3.2.2

背景

AI model serving 是函數(shù)計(jì)算一個(gè)比較典型的應(yīng)用場(chǎng)景。數(shù)據(jù)科學(xué)家訓(xùn)練好模型以后往往需要找軟件工程師把模型變成系統(tǒng)或者服務(wù),通常把這個(gè)過(guò)程稱(chēng)之為 model serving。函數(shù)計(jì)算無(wú)需運(yùn)維和彈性伸縮的特性,正好符合數(shù)據(jù)科學(xué)家對(duì)高可用分布式系統(tǒng)的訴求。本文將介紹把一個(gè) TensorFlow CharRNN 訓(xùn)練的自動(dòng)寫(xiě)五言絕句古詩(shī)的模型部署到函數(shù)計(jì)算的例子。

基本上所有的 FaaS 平臺(tái)為了減少平臺(tái)的冷啟動(dòng),都會(huì)設(shè)置代碼包限制,函數(shù)計(jì)算也不例外。由于 python TensorFlow 依賴(lài)庫(kù)和訓(xùn)練的模型的文件有數(shù)百兆,即使壓縮也遠(yuǎn)超了函數(shù)計(jì)算 50M 代碼包大小的限制。對(duì)于這類(lèi)超大體積的文件,函數(shù)計(jì)算命令行 Fun 工具原生支持了這種大依賴(lài)部署(3.2.0 版本以上),按照向?qū)У奶崾静僮骷纯伞?/p>

快速開(kāi)始

1. 克隆 poetry 項(xiàng)目

git clone https://github.com/vangie/poetry.git

2. 安裝依賴(lài)

由于訓(xùn)練模型的腳本比較費(fèi)時(shí),所以訓(xùn)練好的模型已經(jīng)提前存放在 model 目錄中。如果您想重新訓(xùn)練模型,執(zhí)行 make train 即可。

$ fun install
using template: template.yml
start installing function dependencies without docker
building poetry/poetry
Funfile exist, Fun will use container to build forcely
Step 1/3 : FROM registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.6:build-1.7.7
 ---> 373f5819463b
Step 2/3 : WORKDIR /code
 ---> Using cache
 ---> f9f03330ddde
Step 3/3 : RUN fun-install pip install tensorflow
 ---> Using cache
 ---> af9e756d07c7
sha256:af9e756d07c77ac25548fa173997065c9ea8d92e98c760b1b12bab1f3f63b112
Successfully built af9e756d07c7
Successfully tagged fun-cache-1b39d414-0348-4823-b1ec-afb05e471666:latest
copying function artifact to /Users/ellison/poetry
copy from container /mnt/auto/. to localNasDir
Install Success
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

3. 本地運(yùn)行函數(shù)

執(zhí)行 fun local invoke 可以在本地運(yùn)行函數(shù),正確的返回內(nèi)容如下:

$ fun local invoke poetry
Missing invokeName argument, Fun will use the first function poetry/poetry as invokeName
skip pulling image aliyunfc/runtime-python3.6:1.7.7...
FunctionCompute python3 runtime inited.
FC Invoke Start RequestId: b125bd4b-0d23-447b-8d8c-df36808a458b
.......(省略了部分日志)
犬差花上水風(fēng),一月秋中時(shí)。
江水無(wú)人去,山山有不知。
江山一中路,不與一時(shí)還。
山水不知處,江陽(yáng)無(wú)所逢。
山風(fēng)吹水色,秋水入云中。
水月多相見(jiàn),山城入水中。
江云無(wú)處處,春水不相歸。
野寺春江遠(yuǎn),秋風(fēng)落月深。
RequestId: 938334c4-5407-4a72-93e1-6d59e52774d8          Billed Duration: 14074 ms       Memory Size: 1998 MB    Max Memory Used: 226 MB

4. 部署函數(shù)

通過(guò) fun deploy 部署函數(shù)并上傳函數(shù)依賴(lài)到 nas。

fun deploy

fun 會(huì)自動(dòng)完成依賴(lài)部署,當(dāng) fun deploy 檢測(cè)到打包的依賴(lài)超過(guò)了平臺(tái)限制(50M),會(huì)進(jìn)入到配置向?qū)?,幫助用?hù)自動(dòng)化的配置。

如何急速搭建Serverless AI 應(yīng)用進(jìn)行寫(xiě)詩(shī)cdn.nlark.com/yuque/0/2019/png/502931/1577342619409-f43d3642-5526-458c-8519-96e4d61fbb4a.png">

選擇 “Y” 之后就不需要做其他事情,等到部署完成即可。

5. 運(yùn)行遠(yuǎn)端函數(shù)

通過(guò) fun invoke 調(diào)用遠(yuǎn)端函數(shù)(也可以通過(guò) 函數(shù)計(jì)算控制臺(tái)調(diào)用):

$ fun invoke
using template: template.yml
Missing invokeName argument, Fun will use the first function poetry/poetry as invokeName
========= FC invoke Logs begin =========
省略部分日志...
Restored from: /mnt/auto/model/poetry/model-10000
FC Invoke End RequestId: c0d7947d-7c44-428e-a5a0-30e6da6d1d0f
Duration: 18637.47 ms, Billed Duration: 18700 ms, Memory Size: 2048 MB, Max Memory Used: 201.10 MB
========= FC invoke Logs end =========
FC Invoke Result:
役不知此月,不是無(wú)年年。
何事無(wú)時(shí)去,誰(shuí)堪得故年。
不知無(wú)限處,相思在山山。
何必不知客,何當(dāng)不有時(shí)。
相知無(wú)所見(jiàn),不得是人心。
不得無(wú)年日,何時(shí)在故鄉(xiāng)。
不知山上路,不是故人人。

至此,已經(jīng)將古詩(shī)創(chuàng)作程序成功部署到函數(shù)計(jì)算了。

看完上述內(nèi)容,你們對(duì)如何急速搭建Serverless AI 應(yīng)用進(jìn)行寫(xiě)詩(shī)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI