PAI-EAS Spot最佳实践

PAI-EAS Spot是基于竞价实例的一种经济高效的在线推理服务部署方案,特别适合对成本敏感但能容忍一定程度响应延迟的应用场景。本文为开发者提供使用PAI-EAS Spot时的最佳实践指南,帮助您更有效地利用资源降低成本,同时保持服务的稳定性。

适用场景

  • 非关键业务:即使偶尔遇到服务中断也不会造成重大影响的应用。

  • 可容错处理:能够通过重试机制或其他容错手段来应对短暂的服务不可用情况。

  • 成本优化需求高:希望通过采用更加灵活且便宜的计算资源来降低运营成本的企业和个人项目。

Spot服务配置方法

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击部署服务,在自定义模型部署区域,单击自定义部署

  3. 在资源部署模块中,资源类型选择公共资源,选择资源规格(推荐使用LH机型),单击打开竞价模式,填写出价。您可以单击历史价格曲线,追溯并查看该机型过去48小时内的市场价记录作为出价参考。

    Spot_部署

    重要
    • 出价不等于成交价,市场价才是成交价!出价反映的是客户愿意支付的最高价格。只要市场价格低于客户的出价,资源就会被保留而不会被释放。在资源持有期间,客户的实际支付价格将遵循市场价格,而非出价。

    • 非常建议客户将出价设定为目录价格的20%。例如,对于8核单卡L20的按量付费目录价为14.4元/小时,目前市场上的Spot价格不会超过目录价的20%,即2.88元/小时。这样的策略可以确保客户在享受价格优惠的同时,稳定使用所需资源。详情请参见竞价实例选择

    • 建议您同时配置常规型实例,避免竞价实例抢占失败导致服务部署失败。

  4. 在服务部署成功后,在EAS服务详情页面中可便捷地查阅该机型过去48小时内的价格波动情况,从而对成本变化有更清晰的了解和掌握。Spot价格曲线

Spot回收和容错机制

EAS平台侧回收机制

Spot实例即将被回收时,EAS预计会在大约5分钟前收到预警通知。接到通知后,EAS实例将开始进行优雅退出,确保从即将回收的实例上平稳移出流量,避免服务请求中断。同时,EAS会自动启动新的实例,新实例根据用户资源配置中指定的机型顺序依次尝试部署。这一流程旨在最小化因实例回收带来的影响,保障客户业务的顺畅运行。

重要

用户需要配置后付费实例常规型资源以防止所有Spot实例被占用情况出现,确保服务的连续性和稳定性。

触发回收机制后切换回Spot实例

Spot实例被回收并触发上述机制将服务实例替换为常规型资源后,如果希望在竞价实例库存恢复后再将服务实例切换为竞价实例,请通过“实例重建”功能将该实例切换为竞价实例。

通过“实例重建”功能释放实例资源并重新创建相同配置实例:

Spot_实例重建

用户配置策略建议

Spot实例即将被回收时,EAS会自动启动新的实例并开始进行优雅退出,为了提升服务的稳定性和可靠性,提升新实例拉起的效率,建议客户使用以下配置策略。

配置多规格实例

为了确保服务的稳定性和可靠性,我们建议客户在配置机型时采取多元化策略,选择多种不同规格的资源。尤为重要的是,建议客户在配置列表中包含至少一种常规型资源(即关闭竞价开关)作为保底选项。这样,EAS服务将根据客户指定的机型顺序依次尝试部署,从而最大限度地确保服务能够稳定启动和运行。多实例选择功能多规格实例选择

spot_多规格

配置本地目录内存缓存

为了提升Spot实例被回收时,新实例启动时拉取模型文件的效率,可以通过配置本地目录内存缓存,利用空闲内存将本地目录中的模型文件缓存到节点内存中,新实例启动时将不需要再从挂载的数据集中读取模型文件,从而可以缩短新实例扩容时读取模型文件的时间,防止Spot回收导致服务实例不可用的时间变长。

建议在EAS服务创建过程中开启内存缓存加速来提升实例扩容效率,详情请参见内存缓存本地目录

Spot_内存缓存加速

开启内存缓存加速(cachefs)后的加速效果可参考下表。以Stable Diffusion模型切换场景为例,对比直接从OSS挂载目录中读取模型文件,当开启内存缓存加速后服务扩容时,新实例初始化时模型可直接从服务内其他实例内存读取(cachefs远端命中),降低模型加载耗时。

模型

模型大小

模型加载耗时(s)

OSS挂载

cachefs远端命中

anything-v4.5.safetensors

7.2G

89.88

15.18

Anything-v5.0-PRT-RE.safetensors

2.0G

16.73

5.46

cetusMix_Coda2.safetensors

3.6G

24.76

7.13

chilloutmix_NiPrunedFp32Fix.safetensors

4.0G

48.79

8.47

CounterfeitV30_v30.safetensors

4.0G

64.99

7.94

deliberate_v2.safetensors

2.0G

16.33

5.55

DreamShaper_6_NoVae.safetensors

5.6G

71.78

10.17

pastelmix-fp32.ckpt

4.0G

43.88

9.23

revAnimated_v122.safetensors

4.0G

69.38

3.20

使用企业版ACR

为了提升Spot实例被回收时,新实例启动时拉取镜像的效率,建议使用企业版ACR并开启镜像加速的功能,使用加速镜像部署EAS服务,加速镜像地址的格式是在普通镜像URL地址后添加_accelerated后缀,同时在部署EAS服务时请选择您企业版ACR实例中使用的VPC网络。

使用企业版ACR,并选择标准版实例规格,创建镜像仓库时开启镜像加速,从而提升新实例扩容效率,详情请参见镜像加速

EAS自定义部署时的镜像配置如图:EAS_加速镜像

购买ACR标准版的实例规格:

ACR_购买

创建镜像仓库时打开镜像加速:

ACR_创建仓库

搭配弹性扩缩容

在业务负载出现显著的波峰波谷时,建议开启水平自动扩缩容功能,可以采用专属资源组保底+spot资源弹性+常规资源兜底的方式实现业务平稳拉起并提升性价比。具体配置策略如下:

  1. 购买一部分的EAS预付费/后付费专属资源组来保证服务的承载流量下限,在控制台配置专属资源组配置GPU、CPU和内存需求保障服务可拉起。

  2. 开启EAS弹性资源池配置多种资源规格,按照资源排序优先选择竞价资源,最后为保底资源,这样可以实现业务波峰时优先弹到库存充足的spot资源,在spot资源不足时弹到常规资源,保障业务在波峰时既可优先使用性价比资源又可实现业务平稳扩容。

    eas弹性资源池

  3. 部署好服务后在服务详情页中,根据业务指标开启水平自动弹性扩缩容,可通过QPSCPU利用率GPU利用率队列长度等指标进行自动扩缩容,也可自定义指标来进行自动扩缩容。

    image.png

    同时也可根据业务流量跟随时间变化的波动来开启定时扩缩容功能。

    image.png

创建实例时,会优先使用专属资源组资源,其次按照弹性资源池的排序依次轮巡可用资源。

  • 例如,当专属资源组资源已用满,需要弹到公共资源池创建多个实例时,系统会判断当前ecs.gn8v-8x.48xlarge库存足够创建几个实例,如果资源不够则判断ecs.gn8is-8x.32large可创建几个实例,如果都不够则采用ml.gu7i.c8m30.1-gu30来创建剩余实例。

  • 例如,如果需要在专属资源组的基础上弹出来8个实例,此时可能出现的情况是,专属资源组有2个实例,ecs.gn8v-8x.48xlarge3个实例,ecs.gn8is-8x.32large2个实例,ml.gu7i.c8m30.1-gu303个实例。

EAS弹性配置具体方法可参考如下文档: