用于向量索引的 GPU 加速 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

用于向量索引的 GPU 加速

GPU 加速可帮助您更快、更高效地构建大规模矢量数据库。您可以在新的或现有的 OpenSearch 域名以及 OpenSearch 无服务器集合上启用此功能。此功能使用 GPU 加速来缩短将数据索引到矢量索引所需的时间。

借助 GPU 加速,您可以以四分之一的索引成本将向量索引速度提高多达 10 倍。

先决条件

运行 OpenSearch 版本3.1或更高版本的 OpenSearch 域以及 OpenSearch 无服务器集合都支持 GPU 加速。有关更多信息,请参阅升级 Amazon OpenSearch Service 域UpdateDomainConfig、和UpdateCollection APIs。

工作原理

向量索引需要大量的计算资源来构建数据结构,例如分层可导航小世界 (HNSW) 图。当您在域名或集合上启用 GPU 加速时, OpenSearch 会自动检测加速索引构建的机会,并将索引构建卸载到 GPU 实例。 OpenSearch 服务代表您管理 GPU 实例,并在需要时将其分配给您的域或集合。这意味着您无需管理利用率或为闲置时间付费。

您只需为通过计算单元 (OCU)-矢量加速进行有用的处理付费。每个矢量加速 OCU 由大约 8 GiB 的 CPU 内存、2 CPUs v 和 6 GiB 的 GPU 内存组合而成。有关更多信息,请参阅 GPU 加速定价

要为您的域名或集合启用 GPU 加速,请参阅启用 GPU 加速

GPU 加速定价

Amazon当 OpenSearch 检测到加速域名或集合索引构建工作负载的机会时,会向您收费。每个矢量加速 OCU 由大约 8 GiB 的 CPU 内存、2 CPUs v 和 6 GiB 的 GPU 内存组合而成。

Amazon按二级粒度对 OCU 进行账单。在您的账户对账单中,您将看到一个以 OCU 小时为单位的计算条目。

例如,如果您使用 GPU 加速一小时创建索引,使用 2 个 vCPU 和 1 GiB 的 GPU 内存,则需要支付 1 个 OCU 的费用。如果您在使用 GPU 加速时使用 9 GiB 的 CPU 内存,则需要支付 2 OCU 的费用。

OpenSearch Serverless 根据支持您的馆藏所需的计算能力和存储空间以 1 OCU 为增量添加额外 OCUs 内容。您可以 OCUs 为账户配置最大数量以控制成本。

注意

随时 OCUs 配置的数量可能会有所不同,而且不准确。随着时间的推移, OpenSearch Serverless使用的 OpenSearch 算法将继续改进,以更好地最大限度地减少系统使用量。

有关全部定价详情,请参阅 Amazon OpenSearch 服务定价

GPU 加速和写入操作

当矢量摄取速率 (MB/秒) OpenSearch 在一定范围内时,GPU加速会被激活。在 OpenSearch 域中,您可以灵活地通过index.knn.remote_index_build.size.min配置此范围index.knn.remote_index_build.size.max。例如,使用较低范围的默认值为 50 MB,则默认情况下,在刷新间隔之间写入 768 个维度的 15,000 个全精度向量将触发 GPU 加速。

使用以下 API 操作写入数据:

通过自动和手动分段合并激活 GPU 加速。

支持的索引配置

Faiss 引擎支持 GPU 加速。

以下配置不支持 GPU 加速:

最佳实践

请遵循以下最佳实践,最大限度地发挥 GPU 加速对矢量搜索工作负载的优势:

  • 增加索引客户端-要充分利用索引构建 GPUs 期间的优势,请增加向其接收数据的索引客户端的数量。 OpenSearch这样可以更好地并行化和利用 GPU 资源。

  • 调整近似阈值-更改index.knn.advanced.approximate_threshold设置以确保不会生成较小的区段索引,从而提高整体摄取速度。值为 10,000 是一个不错的起点。对于集合,您必须为此设置明确指定一个值。

  • 优化分片大小-尝试创建至少包含 100 万个文档的分片。文档数量少于此数量的分片可能看不到 GPU 加速带来的总体好处。