4. 集群配置与自动伸缩优化
在Databricks上跑AI负载,集群配置不是“选一台大机器”这么简单。训练任务和推理服务对资源的需求形态完全不同:训练往往需要多GPU长时间稳定运行,推理则更关注低延迟、弹性扩缩和单位请求成本。本节围绕节点类型、GPU型号、自动伸缩策略以及Spot与按需实例的混合方案,给出一套可落地的配置思路。
一、先分清训练与推理的资源画像
训练负载的特征是:单次运行时间长、GPU利用率高、对中断敏感、常需要多机多卡通信。推理负载的特征是:请求并发波动大、单次计算短、对冷启动和延迟敏感、可以容忍部分实例被回收。这两类负载决定了后续所有配置选择。
在Databricks中,集群由Driver和Worker组成。Driver负责调度与协调,Worker承载实际计算。对于AI场景,Driver通常不需要GPU,除非你在Driver上做模型聚合或小规模推理。Worker节点才是GPU资源的载体。
二、节点类型与GPU型号选择
Databricks支持多种云厂商的GPU实例族。以AWS为例,常见选择包括:
- g5系列:NVIDIA A10G,24GB显存,适合中等规模训练和推理,性价比高。
- p4d/p4de系列:NVIDIA A100,40GB或80GB显存,适合大模型训练和高吞吐推理。
- p5系列:NVIDIA H100,适合超大规模训练,成本最高。
- g4dn系列:NVIDIA T4,16GB显存,适合轻量推理和开发调试。
选择GPU型号时,先看显存需求。一个粗略的估算方法是:模型参数量 × 精度字节数 × 4(含梯度、优化器状态和激活值)。例如7B参数模型用FP16训练,仅权重就需要约14GB,加上优化器状态和激活,通常需要40GB以上显存,A100 40GB是起点。如果做LoRA微调,显存需求可降低到1/3左右,A10G 24GB也能胜任。
再看通信需求。多机训练时,节点间带宽决定扩展效率。p4d系列带400Gbps网络,适合多机AllReduce;g5系列网络带宽较低,更适合单机多卡或小规模分布式。
三、自动伸缩策略:训练与推理要分开设计
Databricks的自动伸缩基于集群负载和待处理任务数。但AI场景下,默认策略往往不够用,需要针对性调整。
对于训练集群,建议关闭自动伸缩或设置最小Worker数等于最大Worker数。原因是训练任务一旦启动,中途缩容会导致任务失败或重跑。如果必须弹性,可以设置较长的空闲超时(如60分钟),并确保最小Worker数满足单次训练的最低并行需求。
对于推理集群,自动伸缩是核心。关键参数包括:
- 最小Worker数:保证基线并发下的服务能力,避免冷启动。
- 最大Worker数:控制成本上限,防止突发流量导致无限扩容。
- 伸缩触发指标:Databricks默认基于待处理任务数,推理场景可结合队列深度和GPU利用率。
- 空闲超时:推理服务建议设置较短(如10分钟),快速释放闲置资源。
一个实用的推理伸缩配置示例:最小2个Worker,最大10个Worker,空闲超时10分钟。当请求队列持续超过阈值时扩容,队列清空后逐步缩容。
四、Spot与按需实例混合方案
Spot实例价格通常是按需实例的30%~70%,但可能被云厂商回收。混合方案的核心是:用按需实例保底,用Spot实例降本。
对于训练集群,如果任务支持Checkpoint,可以大量使用Spot。配置时设置Spot回退策略:当Spot不可用时自动切换到按需实例。Databricks支持在集群配置中指定Spot实例比例,例如80% Spot + 20% 按需。
对于推理集群,建议最小Worker数使用按需实例,保证服务不中断;超出最小数的部分使用Spot实例,承接弹性流量。这样即使Spot被回收,基线服务仍可用。
下面这张图展示了训练与推理两种场景下,节点类型、GPU型号、伸缩策略和实例组合的配置关系:
五、配置落地与验证
在Databricks中配置集群时,可以通过UI或JSON API完成。以下是一个推理集群的配置片段示例:
{
"cluster_name": "inference-gpu-cluster",
"spark_version": "14.3.x-gpu-ml-scala2.12",
"node_type_id": "g5.2xlarge",
"driver_node_type_id": "g5.2xlarge",
"num_workers": 2,
"autoscale": {
"min_workers": 2,
"max_workers": 10
},
"azure_attributes": {
"availability": "SPOT_WITH_FALLBACK_AZURE",
"spot_bid_max_price": -1
},
"custom_tags": {
"workload": "inference",
"cost_center": "ai-team"
}
}
配置完成后,需要观察几个关键指标来判断是否达到平衡:GPU利用率是否稳定在60%以上、请求P99延迟是否在SLA内、Spot实例回收是否导致服务抖动、单位请求成本是否下降。如果GPU利用率长期低于30%,说明Worker数偏多或GPU型号过大;如果P99延迟频繁超标,说明最小Worker数不足或伸缩触发太慢。
六、常见误区与排障方向
一个常见误区是训练集群也开启激进自动伸缩,导致任务中途Worker被回收,训练失败。另一个误区是推理集群全部使用Spot,结果Spot回收时服务不可用。排障时优先检查:集群事件日志中是否有Spot回收记录、自动伸缩是否频繁触发、GPU利用率是否与Worker数匹配。
如果发现推理延迟高但GPU利用率低,可能是CPU预处理或网络IO成为瓶颈,此时增加GPU Worker无效,应检查数据管道和批处理大小。如果训练扩展效率低,检查节点间网络带宽和AllReduce配置。
总结来说,AI集群配置的核心是按负载类型分开设计:训练求稳,推理求弹;GPU型号看显存和通信;伸缩策略训练偏固定、推理偏弹性;实例组合用按需保底、Spot降本。把这四件事对齐,才能在性能和成本之间找到可持续的平衡点。