编程笔记

lifelong learning & practice makes perfect

AI|使用阿里云函数计算部署yolo模型

阿里云函数计算(FC)提供了CPU和GPU 2种运行环境,支持配置CPU核数,磁盘容量,内存大小,以及函数执行超时时间等参数,仅在使用时付费。

CPU 环境

可以直接通过代码部署,将代码放到云效,编写配置来部署。可使用’层’管理依赖,将除代码以外的依赖放到层中,在部署时选择层即可。

创建函数配置如下:

创建函数

配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
edition: 1.0.0
name: my-framework-app
access: default
services:
framework:
component: fc
props:
region: cn-shenzhen
service:
name: yolo
function:
name: yolo-cpu
description: Initialize
runtime: custom.debian10
environmentVariables:
PATH: >-
/var/fc/lang/python3.10/bin:/usr/local/bin/apache-maven/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ruby/bin:/opt/bin:/code:/code/bin
PYTHONPATH: /opt/python:/code
LD_LIBRARY_PATH: >-
/code:/code/lib:/usr/local/lib:/opt/lib:/opt/php8.1/lib:/opt/php8.0/lib:/opt/php7.2/lib
layers:
- acs:fc:cn-shenzhen:xxx我的账号idxxx:layers/fastapi/versions/1
- acs:fc:cn-shenzhen:xxx我的账号idxxx:layers/yolo/versions/1
# 依赖库,官方opencv层 libGL.so
- acs:fc:cn-shenzhen:official:layers/Python310-Opencv4x/versions/2
memorySize: 1024
cpu: 1
timeout: 60
codeUri: ./
diskSize: 10240
caPort: 8000
customRuntimeConfig:
command:
- python3
args:
- main.py
triggers:
- name: httpTrigger
type: http
config:
authType: anonymous
methods:
- GET
- POST
- PUT
- DELETE
- HEAD
- PATCH

这里使用3个层,一个包含yolo的依赖,一个包含opencv的依赖(官方有提供),一个包含fastapi等构建api需要的依赖。
这里分层的原因是阿里云的层最多支持500MB,太大的依赖必须分割.

层

创建层

python的依赖可以使用requirements.txt来构建

层]

创建yolo层时一致报错空间不足

这是由于yolo包ultralytics安装时默认会按照GPU版本的依赖包括cuda,torch等,而这些依赖太大导致层的空间不足.

从github yolo官方仓库找到一个Issue,里面有如何安装cpu版本的解决方法,参见:CPU-only version of ultralytics

具体来说就是使用pip安装时,添加一行配置

1
2
--extra-index-url https://download.pytorch.org/whl/cpu
ultralytics

GPU 环境

当前必须使用Docker容器镜像部署,需要执行构建镜像推送到阿里云容器镜像服务,然后在FC中选择镜像来创建函数,将所有依赖都放在镜像中.

使用Dockerfile构建,在阿里云上由于Dockerhub访问不了,国内一些镜像源访问不了,可以在外边构建好镜像在上传到阿里云的容器镜像服务中.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 网络正常情况下可以构建成功,国内需要设置代理之类的才行
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制项目文件
COPY . .

# 安装系统依赖
RUN apt-get update && apt-get install -y \
libgl1-mesa-glx \
libglib2.0-0 \
git \
&& rm -rf /var/lib/apt/lists/*

# 安装Python依赖 使用镜像
RUN pip install --no-cache-dir -r requirements.txt

# 设置启动命令
CMD ["python", "main.py"]

欢迎关注我的其它发布渠道