您可以通过函数计算控制台、SDK或Serverless Devs来体验GPU实例的最佳实践。本文以Python语言为例,说明如何通过控制台,将原始图像经过函数代码处理,实现边缘检测。
应用场景与优势
在不同的应用场景下,函数计算提供的GPU实例与CPU相比所具备的优势如下。
实时、准实时的应用场景
提供数倍于CPU的图形图像处理效率,从而快速将生产内容推向终端用户。
成本优先的图像处理场景
提供弹性预留模式,从而按需为客户保留GPU工作实例,对比自建GPU集群拥有较大成本优势。
提供GPU共享虚拟化,支持以1/2、独占方式使用GPU,允许业务以更精细化的方式配置GPU实例。
效率优先的图像处理场景
屏蔽运维GPU集群的繁重负担(驱动/CUDA版本管理、机器运行管理、GPU坏卡管理),使得开发者专注于代码开发、聚焦业务目标的达成。
GPU实例的更多信息,请参见实例类型及使用模式。
教程示例说明
如下表所示,左列为原图,右列是经过部署在函数计算的边缘检测函数代码处理后,所生成的图片。
原始图像 | 边缘检测结果 |
准备工作
OpenCV需要自行编译以使用GPU加速,编译方式如下:
(推荐)通过Docker使用已编译好的OpenCV。下载地址:opencv-cuda-docker或cuda-opencv
自行编译。具体步骤,请参见官网编译手册。
将需处理的音视频资源上传至在GPU实例所在地域的OSS Bucket中,且您对该Bucket中的文件有读写权限。具体步骤,请参见控制台上传文件。权限相关说明,请参见修改存储空间读写权限。
通过函数计算控制台部署GPU应用
- 部署镜像。
- 建容器镜像服务的企业版实例或个人版实例。推荐您创建企业版实例。具体操作步骤,请参见创建企业版实例。
- 创建命名空间和镜像仓库。具体操作步骤,请参见步骤二:创建命名空间和步骤三:创建镜像仓库。
- 在容器镜像服务控制台,根据界面提示完成Docker相关操作步骤。然后将上述示例app.py和Dockerfile推送至实例镜像仓库,文件信息,请参见通过ServerlessDevs部署GPU应用时/code目录中的app.py和Dockerfile。
- 建容器镜像服务的企业版实例或个人版实例。
创建GPU函数。具体操作步骤,请参见创建Custom Container函数。
修改函数的执行超时时间。
在目标函数的配置页签,在左侧导航栏,选择运行时,然后单击运行时右侧的编辑。
在运行时面板,修改执行超时时间,然后单击确定。
说明CPU转码耗时会超过默认的60s,因此建议您修改执行超时时间为较大的值。
配置GPU预留实例。关于配置预留实例的具体操作,请参见配置预留实例。
配置完成后,您可以在规则列表查看预留的GPU实例是否就绪。即当前预留实例数是否为设置的预留实例数。
使用cURL测试函数。
- 在函数详情页面,单击触发器管理页签,查看触发器的配置信息,获取触发器的访问地址。
在命令行执行如下命令,调用GPU函数。
查看线上函数版本
curl "https://tgpu-op-console-tgpu-op-console-ajezokddpx.cn-shenzhen.fcapp.run" {"function": "opencv_edge_canny"}
执行图片边缘检测
curl "https://tgpu-op-console-tgpu-op-console-ajezokddpx.cn-shenzhen.fcapp.run" -H "RUN-MODE: normal" {"result": "CUDA-capable device supported | process image ok!"}
执行结果
您可通过在浏览器中访问以下域名,查看经过边缘检测处理后的图片:
https://cri-zfen7xhpsx******-registry.oss-cn-shenzhen.aliyuncs.com/cats2.png
本域名仅为示例,需以实际情况为准。