为了满足用户在AI应用场景的镜像使用习惯,函数计算推荐使用镜像交付。AI与大数据领域的镜像尺寸常见于GB级别,函数计算一方面提高了镜像大小的限制,另一方面提供了镜像加速。本文介绍镜像大小限制、通用镜像加速方式以及官方基础镜像的说明和使用方式。
未解压镜像大小限制
针对未解压镜像,镜像大小限制与您使用的容器镜像服务的实例类型和版本有关,具体如下。关于各ACR版本的计费情况,请参见计费说明。
ACR版本 | 镜像大小限制(GB) | 是否付费 |
ACR企业版-标准版 | 10 | 是 |
ACR企业版-高级版 | 10 | 是 |
ACR企业版-基础版 | 10 | 是 |
ACR个人版 | 10 | 免费 |
通用镜像加速
无论您使用的是ACR个人版,还是ACR企业版,函数计算均为您默认开启了镜像加速功能,将分钟级的镜像拉取缩短至秒级,较大程度减少大镜像冷启动耗时。具体信息,请参见以下文档。
使用与驱动无关的容器镜像
请勿在镜像中添加驱动相关的组件,同时请您避免应用对特定的驱动版本产生依赖。例如,不要将提供CUDA Driver API的libcuda.so
放入镜像中,此动态库与设备内核驱动版本强相关。镜像中的此类动态库不匹配可能导致应用因兼容性问题出现行为异常。
创建函数实例时,函数计算平台会预先将驱动相关的用户态组件注入到容器中,这些组件与平台提供的驱动版本相匹配。这也是NVIDIA Container Runtime等GPU容器虚拟化技术的行为,将驱动特定的任务交予平台资源提供方,从而最大化GPU容器镜像的环境适应能力。函数计算GPU实例所使用的驱动由NVIDIA提供。随着功能迭代、新卡型推出、BUG修复、驱动生命周期到期等原因,GPU实例所使用的驱动版本未来可能变化。
若您已经在使用NVIDIA Container Runtime等GPU容器虚拟化技术,请您避免使用docker commit
命令创建镜像,此类镜像中会包含已注入的驱动相关组件。当您在函数计算平台使用此类镜像时,可能因组件版本与平台不匹配而产生未定义行为,如应用异常等。
使用官方基础镜像
为了更好地提高兼容性和性能,函数计算的GPU提供并推荐优先使用官方基础镜像进行业务逻辑的镜像构建,使您能够更轻松地构建自己的业务逻辑。
函数计算Serverless GPU提供了多个官方基础镜像,这些官方基础镜像包括了当前主流的机器学习框架以及热门的模型平台镜像,例如PyTorch、TensorFlow、PaddlePaddle。您可以快速开始使用GPU进行高性能计算。这些官方基础镜像已经预先配置好了相应的环境和依赖,可以直接使用,省去繁琐的安装和配置过程。您可以在构建业务逻辑时使用这些镜像,以此提高应用的性能和可靠性。以下是函数计算GPU提供的基础镜像。
镜像族 | 基础镜像地址(内网拉取可使用registry-vpc前缀) | 镜像tag | 计算框架版本 | Python版本 | CUDA版本 | Ubuntu版本 |
modelscope | registry.{cn-hangzhou|us-east-1|ap-northeast-1}.aliyuncs.com/serverless_devs/modelscope | N/A | 3.7 | 11.3.0 | 20.04 | |
PyTorch | registry.{cn-hangzhou|us-east-1|ap-northeast-1}.aliyuncs.com/serverless_devs/pytorch | 1.14.0 | 3.8 | 11.8.0 | ||
TensorFlow | registry.{cn-hangzhou|us-east-1|ap-northeast-1}.aliyuncs.com/serverless_devs/tensorflow | |||||
PaddlePaddle | registry.{cn-hangzhou|us-east-1|ap-northeast-1}.aliyuncs.com/serverless_devs/paddlepaddle | 22.04 | ||||
CUDA | registry.{cn-hangzhou|us-east-1|ap-northeast-1}.aliyuncs.com/serverless_devs/cuda | 11.8.0-devel-ubuntu22.04 | N/A | N/A |
官方基础镜像仅对GPU所在地域华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、日本(东京)和美国(弗吉尼亚)开放。关于各地域对应的容器镜像地域ID,请参见地域。
官方基础镜像功能暂时只对ACR个人版用户生效,由于数据隔离问题,该功能无法对ACR企业版用户提高性能表现。
使用基础镜像的优势
使用函数计算Serverless GPU的基础镜像,可以获得以下优势。
更高的兼容性
函数计算Serverless GPU的基础镜像已经针对GPU实例进行了优化和测试,确保在GPU实例上运行的应用程序具有更高的兼容性和稳定性。
更优的性能
函数计算GPU实例对基础镜像的框架和数据读取进行了优化,可以提供更好的端到端性能和体验。另外,镜像中还包含了一些常用的计算库,如Numpy和TensorFlow等,可以帮助您更轻松地编写高性能的代码。
更简化的构建过程
您可以直接使用函数计算Serverless GPU基础镜像来构建自己的业务逻辑,无需手动配置NumPy、SciPy等相关环境。
使用基础镜像可以帮助您更好地构建业务逻辑,获得更好的性能和兼容性。函数计算建议您在构建自己的业务逻辑时使用函数计算GPU提供的基础镜像。
如何使用基础镜像
使用基础镜像非常简单。在构建自己的业务逻辑时,您只需要在Dockerfile中使用对应的基础镜像即可。例如,在华东2(上海)地域进行GPU函数的开发,并且使用PyTorch基础镜像,可以在Dockerfile中添加以下内容。
FROM registry.cn-shanghai.aliyuncs.com/serverless_devs/pytorch:22.12-py3
ADD . .
EXPOSE 9000
为了方便您使用基础镜像,函数计算提供了镜像拉取地址,可以直接拉取。例如,在使用PyTorch的基础镜像时,可以使用以下命令进行拉取。
docker pull registry.cn-shanghai.aliyuncs.com/serverless_devs/pytorch:22.12-py3
常见问题
函数计算提供的基础镜像与Nvidia官方提供的镜像是否有区别?
无区别。您无需担心兼容性问题。
我需要的推理计算框架版本较高,但函数计算未提供,我是否可以享受到更好的性能?
可以。由于容器镜像是分层的,所以相同计算框架高低版本之间会有部分相同的数据,您仍然有机会享受到更好的性能。
没有找到需要的基础镜像怎么办?
建议您加入函数计算官方用户群(钉钉群号:11721331)获取技术支持。
基础镜像是否兼容不同的GPU卡型?
是的。基础镜像适用于函数计算GPU实例的所有卡型,同时按量模式和预留模式也均可使用。