View a markdown version of this page

GPU-acceleration 用于向量索引 - 亚马逊 OpenSearch 服务

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

GPU-acceleration 用于向量索引

GPU-acceleration 帮助您更快、更高效地构建大规模矢量数据库。您可以在新的或现有的 OpenSearch 域和 OpenSearch 无服务器集合上启用此功能。此功能用于减少 GPU-acceleration 将数据索引到矢量索引所需的时间。

使用 GPU-acceleration,您可以将矢量索引速度提高多达 10 倍,而索引成本仅为索引成本的四分之一。

先决条件

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

工作原理

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

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

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

GPU 加速定价

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

AWS 按二级粒度对 OCU 开具账单。在您的账户对账单中,您将看到一个用于计算的条目 OCU-hours。

例如,当你使用 GPU-acceleration 一小时创建索引时,使用 2 个 vCPU 和 1 GiB 的 GPU 内存,将按照 1 个 OCU 计费。如果您在使用时使用 9 GiB 的 CPU 内存 GPU-acceleration,则需要支付 2 个 OCU 的费用。

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

注意

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

有关完整定价详情,请参阅亚马逊 OpenSearch 服务定价

GPU-acceleration 和写入操作

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

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

GPU-acceleration 可通过自动和手动分段合并来激活。

支持的索引配置

Faiss 引擎支持 GPU-acceleration。

不支持以下配置 GPU-acceleration:

支持 AWS 区域

GPU-acceleration 可在以下版本中找到 AWS 区域:

  • 美国东部(弗吉尼亚州北部)

  • 美国东部(俄亥俄州)

  • 美国西部(俄勒冈州)

  • 亚太地区(悉尼)

  • 亚太地区(东京)

  • 亚太地区(孟买)

  • 欧洲地区(爱尔兰)

  • 欧洲地区(法兰克福)

  • 欧洲地区(斯德哥尔摩)

  • 欧洲(西班牙)

最佳实践

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

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

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

  • 优化分片大小 -尝试创建至少有 100 万个文档的分区。文档数量少于此数量的分片可能无法从中 GPU-acceleration获得总体好处。