为了满足用户在AI应用场景的镜像使用习惯,模型服务提供基于自定义镜像的模型部署方式。AI与大数据领域的镜像尺寸常见于GB级别,模型服务支持大尺寸镜像,并提供了镜像加速。本文介绍镜像大小限制以及官方基础镜像的说明和使用方式。
在模型服务中使用自定义容器镜像
如果您希望在模型服务中使用自定义容器镜像,需要先将镜像上传至ACR服务。更多信息,请参见什么是容器镜像服务ACR。
关于如何创建模型服务,并指定ACR中的自定义镜像,请参见模型服务。
未解压镜像大小限制
针对未解压镜像,镜像大小限制与您使用的容器镜像服务的实例类型和版本有关,具体如下。关于各ACR版本的计费情况,请参见计费说明。
ACR版本 | 镜像大小限制(GB) | 是否付费 |
ACR企业版-标准版 | 15 | 是 |
ACR企业版-高级版 | 15 | 是 |
ACR企业版-基础版 | 15 | 是 |
ACR个人版 | 15 | 免费 |
注意事项
当您在创建面向Serverless GPU的容器镜像时,请注意以下事项。
请避免应用对特定的GPU驱动版本产生依赖:推荐您使用与GPU驱动无关的容器镜像。
请勿在镜像中添加驱动相关的组件:例如,请勿将提供CUDA Driver API的
libcuda.so
放入镜像中,此动态库与设备内核驱动版本密切相关。镜像中的此类动态库不匹配可能导致应用因兼容性问题出现异常行为。请避免使用docker commit创建镜像:若您已经在使用NVIDIA Container Runtime等GPU容器虚拟化技术,推荐使用
docker build
命令创建镜像。请您避免使用docker commit
命令创建镜像,因为这种镜像中会包含已注入的驱动相关组件。当您在模型服务使用此类镜像时,可能因组件版本与平台不匹配而产生未定义行为,如应用异常等。
模型服务基于函数计算封装模型体验,提供Serverless GPU运行时服务。
创建GPU实例时,模型服务会预先将驱动相关的用户态组件注入到容器中,这些组件与平台提供的驱动版本相匹配。这也是NVIDIA Container Runtime等GPU容器虚拟化技术的行为,将驱动特定的任务交予平台资源提供方,从而最大化GPU容器镜像的环境适应能力。
GPU实例所使用的驱动由NVIDIA提供。随着功能迭代、新卡型推出、BUG修复、驱动生命周期到期等原因,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
官方基础镜像列表
模型服务支持多个官方基础镜像,这些镜像包括了当前主流的机器学习框架以及热门的模型平台镜像,例如PyTorch、TensorFlow、PaddlePaddle和ModelScope。您可以快速开始使用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企业版用户提高性能表现。
使用官方基础镜像的优势
在模型服务的自定义镜像中使用官方基础镜像,可以获得以下优势。
更高的兼容性:官方基础镜像已经针对模型服务进行了优化和测试,确保在模型服务上运行的应用程序具有更高的兼容性和稳定性。
更优的性能:模型服务对基础镜像的框架和数据读取进行了优化,可以提供更好的端到端性能和体验。另外,镜像中还包含了一些常用的计算库,如NumPy和TensorFlow等,可以帮助您更轻松地编写高性能的代码。
更简化的构建过程:您可以直接使用官方基础镜像来构建自己的业务逻辑,无需手动配置NumPy、SciPy等相关环境。
使用官方基础镜像可以帮助您更好地构建业务逻辑,获得更好的性能和兼容性。模型服务建议您在构建自己的业务逻辑时使用官方基础镜像。
常见问题
模型服务提供的基础镜像与Nvidia官方提供的镜像是否有区别?
无区别。您无需担心兼容性问题。
我需要的推理计算框架版本较高,但模型服务未提供,我是否可以享受到更好的性能?
可以。由于容器镜像是分层的,所以相同计算框架高低版本之间会有部分相同的数据,您仍然有机会享受到更好的性能。
没有找到需要的基础镜像怎么办?
模型服务的基础镜像是持续更新的,您也可以通过加入官方钉群提出需求(钉钉群号:64970014484)。由于模型服务依赖函数计算GPU,官方钉群与函数计算共用。
基础镜像是否兼容不同的GPU卡型?
是的。基础镜像适用于模型服务GPU实例的所有卡型,同时按量模式和预留模式也均可使用。