Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Scalability

可扩展性是指系统通过增加资源来处理更多数据、用户或计算量的能力。涵盖纵向扩展与横向扩展、阿姆达尔定律和多 GPU AI。

可扩展性是指系统通过增加资源来处理不断增长的工作量的能力,例如更多数据、更多用户、更多请求或更大的模型,同时保持可接受的性能和单位工作成本。如果系统的硬件翻倍后几乎能完成两倍的工作,就说明它扩展得很好;如果新增的机器大部分时间都在互相等待,则说明扩展效果很差。在人工智能中,可扩展性涉及三个方面:必须摄取大数据并对其进行预处理的数据流水线、需要分布到多台加速器上的训练任务,以及必须在不增加推理延迟的情况下处理更多请求的推理服务。

纵向扩展与横向扩展#

纵向扩展,也称向上扩展,是将工作负载迁移到更强大的机器上:增加 CPU 核心、RAM,或使用内存更大的 GPU。这种方式不需要修改代码,但受限于最大可用机器,并会留下单点故障。横向扩展,也称向外扩展,是增加机器并在机器间分配工作;这种方式没有固定上限,但要求软件能够划分工作、平衡负载并协调结果。如果 Web 服务和推理服务是无状态的,就能轻松横向扩展:会话和数据存放在共享存储中,因此任何副本都能响应任何请求;数据库则通过分片横向扩展,按键将数据拆分到多台机器上。

云平台会自动执行横向扩展。在 Kubernetes 中,Horizontal Pod Autoscaler 会将当前副本数乘以观测指标与目标值的比率,再向上取整,以此计算副本数:如果 4 个副本的 CPU 平均使用率为 90%,目标值为 60%,副本数就会变为 6。这种自动化就是云计算中的弹性;无服务器计算则进一步扩展这一能力,在流量停止时将副本数降至零。

扩展的限制#

每个并行任务都包含一些无法拆分的工作,例如读取下一个批次、同步结果或写入检查点。Gene Amdahl 于 1967 年指出,无论增加多少处理器,这部分串行工作都会限制加速比,这一结论如今称为 Amdahl 定律:

# Amdahl's law: speedup on n workers when a fraction p of the work runs in parallel
p = 0.95  # parallel fraction; the other 5% runs on one worker

for n in (1, 8, 64, 512):
    speedup = 1 / ((1 - p) + p / n)
    efficiency = speedup / n  # share of the added hardware doing useful work
    print(f"{n:>4} workers: {speedup:5.1f}x speedup, {efficiency:4.0%} efficiency")

print(f"Limit with unlimited workers: {1 / (1 - p):.0f}x")

如果 95% 的工作可以并行,那么 8 个工作进程可带来 5.9 倍加速比,效率为 74%;64 个进程带来 15.4 倍加速比,效率为 24%;512 个进程带来 19.3 倍加速比,效率为 4%;无论有多少进程,加速比都无法超过 20 倍。John Gustafson 于 1988 年指出,现实用户会随着机器性能提升而扩大问题规模,因此并行部分会增加,串行部分所占比例会缩小。在固定问题上测量加速比称为强扩展;随着硬件增长而扩大问题规模称为弱扩展,大规模训练通常采用这种模式。通信也会进一步限制扩展能力:在数据并行训练中,每增加一块 GPU,每个步骤都必须与其他 GPU 交换梯度,因此网络带宽往往决定任务可以扩展到多大规模。

扩展训练与推理#

分布式训练会根据模型能否装入单个设备来选择并行策略。在数据并行中,每块 GPU 都保存一份完整模型副本,处理每个批次中分配给自己的数据切片,并通过 all-reduce 与其他 GPU 平均梯度,例如 PyTorch 的 DistributedDataParallel。对于无法装入单块 GPU 的模型,可以采用完全分片数据并行、张量并行或流水线并行进行拆分;梯度累积则可以让较少的设备达到较大的有效批次大小。

Ultralytics YOLO 使用多 GPU 训练进行数据并行:传入 device=[0, 1] 会通过 torch.distributed.run 启动 DistributedDataParallel 工作进程,并平均分配批次,因此在两张 GPU 上运行 batch=64 时,每张 GPU 每步会处理 32 张图像。

推理的扩展方式不同,因为每个请求都很小且相互独立。将请求组合成批次可以提高 GPU 利用率和吞吐量,同时只略微增加延迟;连续批处理则将同样的方法用于逐 token 生成 LLM;随着流量增长,模型服务系统会在负载均衡器后增加副本。模型量化和剪枝可以降低每个副本的成本,让相同硬件处理更多请求;边缘 AI则通过将推理分散到数千台设备上,而非集中在一个数据中心来扩展。

  • 性能: 系统在给定负载下的速度或准确度,通常用延迟、吞吐量或准确度衡量。可扩展性描述随着负载和资源增加,这些指标能否保持稳定。
  • 弹性: 随着一天中的需求变化自动增加和移除资源,最常见的做法是为横向扩展的服务增减副本。
  • Scaling laws: 模型损失与模型参数、训练数据和计算量之间的经验关系。它们可以预测模型质量,而系统的可扩展性决定了这些定律所要求的计算资源能否得到高效利用。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来