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

Serverless Computing

无服务器计算按需运行代码,由服务商管理并扩缩服务器,甚至可缩减至零,并按请求计费。内容涵盖冷启动和 AI 应用。

无服务器计算是一种云执行模型:只有事件触发时,云服务提供商才运行代码;底层服务器会自动启动和扩缩,流量停止后则缩减至零;计费依据是请求次数和执行时间,而非预留的机器。服务器依然存在,但开发者无需配置、修补或调整服务器规格。AWS Lambda 于 2014 年 11 月发布后,这种模式开始普及,如今涵盖 Lambda、Azure Functions 和 Cloud Run functions 等函数平台,以及 Google Cloud Run 和 Azure Container Apps 等无服务器容器。加州大学伯克利分校的研究人员在 2019 年的论文《简化云编程:伯克利视角下的无服务器计算》中阐述了它的优势与局限。对于机器学习,无服务器模式适合流量突发或难以预测的模型服务场景;如果在流量突发之间让闲置的 GPU 服务器持续运行,成本可能会超过实际计算工作的成本。

无服务器执行的工作原理#

代码打包为函数或容器镜像,并绑定到触发器:HTTP 请求、写入对象存储的文件、队列中的消息或定时任务。事件到达时,如果有空闲的热实例,平台会立即在该实例上运行处理程序。否则就会执行冷启动:平台创建隔离的沙箱,例如 AWS 为 Lambda 构建的 Firecracker 微型虚拟机之一,加载代码、启动语言运行时,并在处理事件前运行处理程序外的初始化代码。实例无状态且可随时销毁,因此任何需要在请求结束后保留的数据都必须写入外部存储或数据库。

冷启动与机器学习模型#

机器学习会让冷启动变得昂贵,因为初始化时需要导入 PyTorch 等框架,并加载可能达到数百 MB 的模型权重。常见做法是在每个实例上只加载一次模型,在处理程序外部或首次使用时加载,从而让每次热调用都能复用模型。下面的处理程序使用 torchvision 中的 ResNet-50 分类器,遵循了这种模式:

import time

import torch
import torchvision

model = None  # module state survives between invocations while the instance stays warm


def handler(event, context):
    """Classify one image tensor, building the model only on a cold start."""
    global model
    cold_start = model is None
    if cold_start:
        model = torchvision.models.resnet50().eval()  # built once per instance
    with torch.inference_mode():
        logits = model(event["image"])
    return {"cold_start": cold_start, "class_id": int(logits.argmax())}


for _ in range(3):
    start = time.perf_counter()
    response = handler({"image": torch.rand(1, 3, 224, 224)}, context=None)
    print(response["cold_start"], f"{(time.perf_counter() - start) * 1000:.0f} ms")

在 Apple M5 Pro CPU 上,首次调用会构建网络,耗时约 0.2 秒;随后两次复用模型的热调用各耗时约 15 毫秒。团队可以使用更小的容器镜像、更紧凑或经过量化的模型,以及更轻量的运行时(如 ONNX Runtime),来缩短剩余的冷启动时间;也可以通过保持一定数量的热实例来消除冷启动,例如使用 Lambda 预置并发或 Cloud Run 最小实例,但这样又会产生闲置时间的费用。

面向 AI 工作负载的无服务器计算#

无服务器架构适用于事件驱动的计算机视觉流水线。图像上传到对象存储后,可以触发一个函数,在图像加入训练数据集之前对其进行验证和调整尺寸,作为数据预处理的一部分;在安防报警系统中,运动传感器可以向目标检测函数发送单帧图像,并且只有在检测到人员时才发出警报。其余限制取决于平台:AWS Lambda每次调用最长运行 15 分钟,最多可使用 10,240 MB 内存且不提供 GPU,适合使用紧凑模型进行 CPU 推理,却不适合长时间训练,更无法进行跨多 GPU 的分布式训练。GPU 无服务器服务填补了这一空缺:Cloud Run可为容器连接 NVIDIA L4 GPU,同时支持缩容至零;Modal等平台则按秒计费 GPU 使用时间。

Ultralytics Platform 为 YOLO 部署提供了相同的权衡:默认规格为 1 vCPU 和 2 GiB 的端点免费,闲置时会缩减至零;从闲置状态启动可能需要约一分钟,而自定义规格会保持一个实例处于热状态,并按运行时间计费。

  • 基础设施即服务:虚拟机全天候运行并持续计费,无论是否收到请求;客户负责管理操作系统和扩缩。长时间训练任务通常在这种环境中运行。
  • Kubernetes:在团队自行运维的集群上编排容器。Knative 在 Kubernetes 之上添加了基于请求的缩放至零功能,KServe 则利用这项功能提供模型服务。
  • 边缘计算:在生成数据的设备上或其附近运行代码。无服务器计算则在云区域运行代码;部分边缘平台会结合两者,在用户附近的许多小型位置运行函数。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 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 的未来!

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