【还有多少坑要踩】快速部署一个AI目标检测项目

本文涉及的产品
函数计算FC,每月15万CU 3个月
文件存储 NAS,50GB 3个月
简介: 还有什么话要说,还有多少泪要流:Serverless Devs的函数计算踩坑日记。

还有什么话要说,还有多少泪要流,还有多少坑要踩:Serverless Devs的函数计算踩坑日记,我是如何把一个非常非常非常大的人工智能的模型部署到线上的。

成果预览

image

主要就是这样的一个案例,用户只需要上传图片,就可以告诉用户图片的内容大概有啥,虽然说又是一个“调包侠”的操作,但是,在Serverless架构上,这是一个“高级的调包侠”操作,因为这里面会涉及到很多的坑。

踩坑记录

依赖安装

当我们把项目下载下来之后,我们可以看到里面有一个requirements.txt

tensorflow==1.13.1
numpy==1.19.4
scipy==1.5.4
opencv-python==4.4.0.46
pillow==8.0.1
matplotlib==3.3.3
h5py==3.1.0
keras==2.4.3
imageai==2.1.5
bottle==0.12.19

敲黑板,划重点:在Serverless架构上,虽然不需要我们关心环境的安装、配置等,但是却需要我们关心我们的所依赖的一些内容与环境适配。例如有一些不能跨平台使用的依赖,可能就需要在和线上环境一样的环境下进行依赖安装构建。

那么我们完全可以用阿里云函数计算团队提供的fc组件中的build指令,并且制定在docker镜像下安装依赖:

$ s build --use-docker


[2021-08-13T15:26:38.907] [INFO ] [S-CLI] - Start ...
✔ core-0.0.144.tgz file decompression completed
[2021-08-13T15:26:44.798] [INFO ] [FC-BUILD] - Build artifact start...
[2021-08-13T15:26:44.801] [INFO ] [FC-BUILD] - Use docker for building.
[2021-08-13T15:26:48.384] [INFO ] [FC-BUILD] - Build function using image: registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.6:build-1.9.19
[2021-08-13T15:26:48.449] [INFO ] [FC-BUILD] - skip pulling image registry.cn-beijing.aliyuncs.com/aliyunfc/runtime-python3.6:build-1.9.19...
[2021-08-13T15:30:28.826] [INFO ] [FC-BUILD] - Build artifact successfully.

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

此时安装好的依赖,就是和线上环境是适配的。

是的,只需要build就可以。

代码包过大

我们安装依赖之后要做啥?代码部署!但是在Serverless架构下进行代码部署并不是一个容易的事情,因为各个云厂商都对代码包大小有所限制,例如阿里云限制的是100M,所以超过100M的,系统就会报错,

image

此时,我们需要一个叫做.fcignore的文件来进行部分内容的处理:

./src/.s
./src/model

就是说,安装的依赖,以及模型,我都不放在代码中,我之后会把它上传到NAS等服务中,通过函数使用。

此时在进行Deploy即可:

image

代码上传到NAS

代码上传到NAS是一个技术活,我们可以通过阿里云提供的nas组件进行使用:

例如把当前的目录下的./src/model上传到nas:

s nas upload -r -n ./src/model  /mnt/auto/model

左侧是本地目录./src/model,右侧是nas的目录/mnt/auto/model

同样的道理将依赖上传到nas:

s nas upload -r -n ./.s/build/artifacts/ai-cv-image-prediction/server/.s/python /mnt/auto/.s/python

这里面,有趣的事情来了:

  1. ./.s/build/artifacts/ai-cv-image-prediction/server/.s/python是在哪里?这个是build操作之后,生成的.s目录,然后依赖会默认存到这个目录下;
  2. 直接上传会报错,找不到文件夹?部署之前还需要执行一个s nas command mkdir /mnt/auto/.s

上传完成之后:

image

测试

此时,我们打开刚刚项目部署完成的url,即可:

image

上传图片,感受一下Serverless * AI带来的力量吧

image

萌翻了,有没有....

尝试部署

虽然说,这个流程非常复杂,但是实际上也是非常简单的。我将这个东西,封装成了一个案例,你只需要这样几个过程:

  1. 初始化项目:s init image-prediction-app
  2. 进入项目:cd image-prediction-app
  3. 项目部署:s deploy

emmm,你很好奇build操作,上传依赖、模型到nas的操作,创建nas目录的操作在哪里是吧?

image

统统在s.yaml中:

actions: # 自定义执行逻辑
      pre-deploy: # 在deploy之前运行
        - run: s build --use-docker  # 要运行的命令行
          path: ./ # 命令行运行的路径
      post-deploy: # 在deploy之后运行
        - run: s nas upload -r -n ./.s/build/artifacts/ai-cv-image-prediction/server/.s/python /mnt/auto/.s/python   # 要运行的命令行
          path: ./ # 命令行运行的路径
        - run: s nas upload -r -n ./src/model  /mnt/auto/model   # 要运行的命令行
          path: ./ # 命令行运行的路径

actions是Serverless devs的规范之一,可以在这里面进行部署前后的一些特殊操作,例如上面的描述为:

  • 在部署之前

    • 在目录./下执行s build --use-docker
  • 在部署之后

    • 在目录./下执行s nas upload -r -n ./.s/build/artifacts/ai-cv-image-prediction/server/.s/python /mnt/auto/.s/python
    • 在目录./下执行s nas upload -r -n ./src/model /mnt/auto/model

这样的好处是,更简单,轻松的进行项目体验,以及和更多的CI/CD平台/工具进行结合。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
25天前
|
人工智能 Java Serverless
阿里云函数计算助力AI大模型快速部署
随着人工智能技术的快速发展,AI大模型已经成为企业数字化转型的重要工具。然而,对于许多业务人员、开发者以及企业来说,探索和利用AI大模型仍然面临诸多挑战。业务人员可能缺乏编程技能,难以快速上手AI模型;开发者可能受限于GPU资源,无法高效构建和部署AI应用;企业则希望简化技术门槛,以更低的成本和更高的效率利用AI大模型。
108 12
|
2天前
|
人工智能 移动开发 JavaScript
如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
如何用uniapp打包桌面客户端exe包,vue或者uni项目如何打包桌面客户端之electron开发-优雅草央千澈以开源蜻蜓AI工具为例子演示完整教程-开源代码附上
|
15天前
|
机器学习/深度学习 人工智能 算法
X-AnyLabeling:开源的 AI 图像标注工具,支持多种标注样式,适于目标检测、图像分割等不同场景
X-AnyLabeling是一款集成了多种深度学习算法的图像标注工具,支持图像和视频的多样化标注样式,适用于多种AI训练场景。本文将详细介绍X-AnyLabeling的功能、技术原理以及如何运行该工具。
80 2
X-AnyLabeling:开源的 AI 图像标注工具,支持多种标注样式,适于目标检测、图像分割等不同场景
|
11天前
|
人工智能 数据库连接 API
在部署《主动式智能导购 AI 助手构建》解决方案的过程中,整体体验还是相对顺畅的,但确实遇到了一些问题,文档提供的引导也有所不足,以下是详细的体验评估
在部署《主动式智能导购 AI 助手构建》解决方案的过程中,整体体验还是相对顺畅的,但确实遇到了一些问题,文档提供的引导也有所不足,以下是详细的体验评估
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
MMAudio:开源 AI 音频合成项目,根据视频或文本生成同步的音频
MMAudio 是一个基于多模态联合训练的高质量 AI 音频合成项目,能够根据视频内容或文本描述生成同步的音频。该项目适用于影视制作、游戏开发、虚拟现实等多种场景,提升用户体验。
79 7
MMAudio:开源 AI 音频合成项目,根据视频或文本生成同步的音频
|
23天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
30天前
|
存储 人工智能 数据库
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
Codel是一款全自主AI代理工具,支持在终端、浏览器和编辑器中执行复杂任务和项目。它运行在沙盒化的Docker环境中,具备自主操作能力,内置浏览器和文本编辑器,所有操作记录存储于PostgreSQL数据库。Codel能够自动完成复杂任务,如创建项目结构、进行网络搜索等,适用于自动化编程、研究与开发、教育与培训以及数据科学与分析等多个领域。
70 11
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
|
26天前
|
机器学习/深度学习 存储 人工智能
【AI系统】训练后量化与部署
本文详细介绍了训练后量化技术,涵盖动态和静态量化方法,旨在将模型权重和激活从浮点数转换为整数,以优化模型大小和推理速度。通过KL散度等校准方法和量化粒度控制,文章探讨了如何平衡模型精度与性能,同时提供了端侧量化推理部署的具体实现步骤和技术技巧。
44 1
【AI系统】训练后量化与部署
|
2月前
|
人工智能 物联网 Shell
今日 AI 开源|共 12 项|开源的DIY健康追踪项目,基于低成本的智能戒指构建私人的健康监测应用
本文介绍了多个开源项目,涵盖了从量子计算错误纠正到视频生成和编辑的广泛应用领域。这些项目展示了AI技术在不同领域的创新和应用潜力。
190 10
今日 AI 开源|共 12 项|开源的DIY健康追踪项目,基于低成本的智能戒指构建私人的健康监测应用
|
1月前
|
人工智能 监控 Serverless
《主动式智能导购AI助手构建》解决方案部署测评
在数字化时代,智能导购AI助手已成为提升客户体验和销售效率的重要工具。本文将基于个人体验,对《主动式智能导购AI助手构建》解决方案的部署过程进行详细评测。
40 3