文档章节

急速搭建 Serverless AI 应用:为你写诗

阿里巴巴云原生
 阿里巴巴云原生
发布于 01/02 14:01
字数 1518
阅读 175
收藏 0

前言

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档参考

备注: 本文介绍的技巧需要 Fun 版本大于等于 3.2.0。

依赖工具

本项目是在 MacOS 下开发的,涉及到的工具是平台无关的,对于 Linux 和 Windows 桌面系统应该也同样适用。在开始本例之前请确保如下工具已经正确的安装,更新到最新版本,并进行正确的配置。

Fun 和 Fcli 工具依赖于 docker 来模拟本地环境。 对于 MacOS 用户可以使用 homebrew 进行安装:

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

Windows 和 Linux 用户安装请参考:

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

安装好后,记得先执行 fun config 初始化一下配置。

注意, 如果你已经安装过了 fun,确保 fun 的版本在 3.2.0 以上。

$ fun --version
3.2.2

背景

AI model serving 是函数计算一个比较典型的应用场景。数据科学家训练好模型以后往往需要找软件工程师把模型变成系统或者服务,通常把这个过程称之为 model serving。函数计算无需运维和弹性伸缩的特性,正好符合数据科学家对高可用分布式系统的诉求。本文将介绍把一个 TensorFlow CharRNN 训练的自动写五言绝句古诗的模型部署到函数计算的例子。

基本上所有的 FaaS 平台为了减少平台的冷启动,都会设置代码包限制,函数计算也不例外。由于 python TensorFlow 依赖库和训练的模型的文件有数百兆,即使压缩也远超了函数计算 50M 代码包大小的限制。对于这类超大体积的文件,函数计算命令行 Fun 工具原生支持了这种大依赖部署(3.2.0 版本以上),按照向导的提示操作即可。

快速开始

1. 克隆 poetry 项目

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

2. 安装依赖

由于训练模型的脚本比较费时,所以训练好的模型已经提前存放在 model 目录中。如果您想重新训练模型,执行 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. 本地运行函数

执行 fun local invoke 可以在本地运行函数,正确的返回内容如下:

$ 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
.......(省略了部分日志)
犬差花上水风,一月秋中时。
江水无人去,山山有不知。
江山一中路,不与一时还。
山水不知处,江阳无所逢。
山风吹水色,秋水入云中。
水月多相见,山城入水中。
江云无处处,春水不相归。
野寺春江远,秋风落月深。

RequestId: 938334c4-5407-4a72-93e1-6d59e52774d8          Billed Duration: 14074 ms       Memory Size: 1998 MB    Max Memory Used: 226 MB

4. 部署函数

通过 fun deploy 部署函数并上传函数依赖到 nas。

fun deploy

fun 会自动完成依赖部署,当 fun deploy 检测到打包的依赖超过了平台限制(50M),会进入到配置向导,帮助用户自动化的配置。

image.png

选择 "Y" 之后就不需要做其他事情,等到部署完成即可。

5. 运行远端函数

通过 fun invoke 调用远端函数(也可以通过函数计算控制台调用):

$ 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:
役不知此月,不是无年年。
何事无时去,谁堪得故年。
不知无限处,相思在山山。
何必不知客,何当不有时。
相知无所见,不得是人心。
不得无年日,何时在故乡。
不知山上路,不是故人人。

至此,已经将古诗创作程序成功部署到函数计算了。

更多参考

  1. 21 个项目玩转深度学习——基于 TensorFlow 的实践详解
  2. 开发函数计算的正确姿势 —— Fun 自动化 NAS 配置
  3. 开发函数计算的正确姿势 —— 使用 Fun NAS 管理 NAS 资源

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

© 著作权归作者所有

阿里巴巴云原生

阿里巴巴云原生

粉丝 63
博文 266
码字总数 863307
作品 0
杭州
私信 提问
加载中

评论(0)

“天猫精灵”如何为你写诗?人机共创的秘密在这儿

云妹导读:在AlphaGo人机大战之后,AI在模仿学习人的能力上得到了关注。同时,一种焦虑也在人们心中蔓延,我们的工作何时会被AI替代? 阿里巴巴人工智能实验室用好玩的“天猫精灵写诗”告诉我...

阿里云科技快讯
2018/08/29
0
0
阿里云招募11大技术领域开发者,独家技术资料包群内领取!!!

开发者越来越多,大家从事的领域各不相同,每个领域的技术又在不停的发生变化,作为一个开发者,我好像看到头上的“乌纱”逐渐离我远去~ 不要担心,组织已经安排上了~ 阿里云垂直技术领域开发...

章佳倩
2019/06/25
0
0
ACM Multimedia | NLP与CV联姻,触景生情的浪漫派AI诞生了

     编者按:在即将召开的ACM Multimedia 2018上,微软亚洲研究院与京都大学合作的“Beyond Narrative Description: Generating Poetry from Images by Multi-Adversarial Training”获...

微软亚洲研究院
2018/10/19
0
0
科学家训练AI写诗 或能跟莎士比亚较量

据外媒报道,来自澳大利亚的研究人员和多伦多大学合作开发了一套能够写诗的算法。这套AI会的不仅仅只是一般的押韵,它还在遵循诗歌规则的同时将格律考虑在内。可以这么说,人们甚至很难分辨出...

稿源:
2018/08/09
0
0
重磅来袭!腾讯云大学《腾讯云AIoT解决方案》开课!

腾讯云大学直播课程《腾讯云AIoT解决方案》快速搭建边缘AI场景应用,了解最新AI风口! 讲师:腾讯云IoT高级产品经理 童航君 讲师简介:有多年linux kernel,虚拟化,容器和k8s的开发经验。对...

腾讯云大学
2019/07/23
33
0

没有更多内容

加载失败,请刷新页面

加载更多

升级webpack4错误处理

1.升级到4.0之后未能正常使用 处理:npm i webpack webpack-cli webpack-dev-server webpack-merge -D 2. Error: Plugin could not be registered at 'html-webpack-plugin-before-html-proc......

李超明
26分钟前
79
0
几行Python代码,解决下载的视频教程中成百上千的文件夹/文件名称带广告词的困扰

直接上干货了。 原效果图: 我需要的效果, 你别跟我说:手工重命名,要是成百上千个文件你手工试试哦 执行情况: # -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary scr...

郑加威
27分钟前
70
0
今天搞了下量子计算编程

operation QTest() : (Result, Result) { body { // 用于保存量子位状态的可变局部变量 mutable s1 = Zero; mutable s2 = Zero; // 分配两个量子位 using (qubits = Qubit[2]) { // 将第一个......

深圳市唤梦科技
32分钟前
50
0
如何在Postgres中查找所有表的行数

我正在寻找一种方法来查找Postgres中所有表的行数。 我知道我可以一次在一张桌子上做以下事情: SELECT count(*) FROM table_name; 但我想查看所有表的行数,然后按顺序进行排序,以了解我所...

技术盛宴
46分钟前
53
0
Mybatis自定义SQL更新JSON字段抛错

### Cause: java.lang.IllegalStateException: Type handler was null on parameter mapping for property 'carouselPic'. It was either not specified and/or could not be found for the ......

huangkejie
47分钟前
58
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部