阿里云函数计算(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 - 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/*
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "main.py"]
|