本文介绍如何将由TensorFlow CharRNN完成训练的模型(可以自动写出五言绝句古诗)部署到函数计算。

前提条件

安装并配置Funcraft。更多信息,请参见功能概览

背景信息

AI model serving是函数计算中一个典型的应用场景。数据科学家在完成模型训练以后,由软件工程师根据模型搭建系统或者服务,我们通常把这一过程叫作model serving。函数计算无需运维和弹性伸缩的特性要求,正好满足数据科学家对高可用分布式系统的诉求。

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

快速开始

  1. 执行以下命令克隆项目。
    git clone https://github.com/vangie/poetry.git          
  2. 执行以下命令安装依赖包。
    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
                            
    说明 由于训练模型的脚本耗时较长,所以函数计算已将训练好的模型提前存放在model目录中。如果您想重新训练模型,请执行make train命令。
  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. 部署函数。
    1. 执行fun deploy
    2. 进入配置导航,输入Y
      当Funcraft工具检测到打包的依赖超过了平台限制(50M),会进入到该配置向导,由NAS帮助您自动化完成配置。configuration
  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:
    役不知此月,不是无年年。
    何事无时去,谁堪得故年。
    不知无限处,相思在山山。
    何必不知客,何当不有时。
    相知无所见,不得是人心。
    不得无年日,何时在故乡。
    不知山上路,不是故人人。
                            

更多信息