来源:llm/batch_inference

大规模AI批量推理:9倍更快的Embedding生成#

Large-Scale Embedding Generation with SkyPilot

文本大规模Embedding生成#

随着文本数据量的增长,对高效强大的Embedding生成方法的需求变得至关重要。Embedding生成是现代AI应用的核心,从推荐系统到检索增强生成(RAG)。

然而,在百万/万亿级数据集上运行Embedding生成的批量推理并非易事。即使花费数天时间开发出经过精心调优的批量推理脚本,获取数百块GPU并在这些GPU上并行运行作业仍然非常痛苦

具体来说

  • 可扩展性:现代应用可能处理数百万或数十亿文本记录,这使得传统方法缓慢或不切实际。

  • 可用性:单区域的GPU配额和可用性限制严重制约了处理能力。

  • 成本:用于大规模处理的按需GPU实例可能极其昂贵。

SkyPilot 简化了在云中运行此类大规模作业的过程。它抽象了大部分基础设施管理的复杂性,并帮助您通过跨多个区域的托管作业高效且经济地运行计算密集型任务。

性能亮点#

通过利用 SkyPilot 的多区域方法,我们实现了

  • 9倍更多资源:可访问12个区域的406块GPU(而单个区域仅有约47块)

  • 10倍更快处理速度:处理时间从20多小时缩短至仅2小时

  • 降低61%成本:通过使用 Spot 实例将成本从 $710 降至 $277.07

  • 增强可靠性:从 Spot 实例抢占中自动恢复

使用 LLM 模型从文本数据计算 Embedding#

您需要将文本转换为向量表示(Embedding),以便存储在向量数据库中。

我们使用 Amazon reviews 2023 的书籍分区,其中包含约3000万条图书评论,并使用最先进的专业 Embedding LLM Alibaba-NLP/gte-Qwen2-7B-instruct 为评论生成 Embedding,该模型是 MTEB 排行榜上的顶级 Embedding 模型之一。

使用以下命令启动一个作业,该作业将处理您的文本数据集并计算 Embedding

python3 batch_compute_vectors.py

这将自动查找跨多个区域的可用机器来计算向量。脚本使用步进(stride)方法平均分配工作负载,确保每个worker处理的数据集文档分布均匀。

监控进度#

您可以使用 sky jobs queuesky jobs dashboard 查看作业状态。或者,您可以通过以下方式监控进度:

sky launch -n monitor monitor_progress.yaml 

并通过以下方式获取 IP 地址:

export ENDPOINT=$(sky status --ip monitor)

并在浏览器中访问 http:$ENDPOINT:8000

Large-Scale Embedding Generation with SkyPilot

了解更多#

要全面了解本案例研究,包括详细的性能指标和实现见解,请阅读我们关于大规模 Embedding 生成的博客文章

包含的文件#