

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

# 用于向量索引的 GPU 加速
<a name="gpu-acceleration-vector-index"></a>

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

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

## 先决条件
<a name="gpu-acceleration-prerequisites"></a>

运行 OpenSearch 版本`3.1`或更高版本的 OpenSearch 域以及 OpenSearch 无服务器集合都支持 GPU 加速。有关更多信息，请参阅[升级 Amazon OpenSearch Service 域](version-migration.md)[UpdateDomainConfig](https://docs.amazonaws.cn/opensearch-service/latest/APIReference/API_UpdateDomainConfig.html)、和[UpdateCollection](https://docs.amazonaws.cn/opensearch-service/latest/ServerlessAPIReference/API_UpdateCollection.html) APIs。

## 工作原理
<a name="gpu-acceleration-how-it-works"></a>

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

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

要为您的域名或集合启用 GPU 加速，请参阅[启用 GPU 加速](gpu-acceleration-enabling.md)。

## GPU 加速定价
<a name="gpu-acceleration-pricing"></a>

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 服务定价](https://www.amazonaws.cn/opensearch-service/pricing/)。

## GPU 加速和写入操作
<a name="gpu-acceleration-write-operations"></a>

当矢量摄取速率 (MB/秒) OpenSearch 在一定范围内时，GPU加速会被激活。在 OpenSearch 域中，您可以灵活地通过`index.knn.remote_index_build.size.min`和[配置此范围](https://docs.opensearch.org/3.2/vector-search/remote-index-build/#using-the-remote-index-build-service)`index.knn.remote_index_build.size.max`。例如，使用较低范围的默认值为 50 MB，则默认情况下，在[刷新间隔](https://docs.amazonaws.cn/opensearch-service/latest/developerguide/bp.html#bp-perf)之间写入 768 个维度的 15,000 个全精度向量将触发 GPU 加速。

使用以下 API 操作写入数据：
+ [同花顺](https://docs.opensearch.org/latest/api-reference/index-apis/flush/)
+ [批量](https://docs.opensearch.org/latest/api-reference/document-apis/bulk/)
+ [重新编制索引](https://docs.opensearch.org/latest/api-reference/document-apis/reindex/)
+ [索引](https://docs.opensearch.org/latest/api-reference/index-apis/index/)
+ [更新](https://docs.opensearch.org/latest/api-reference/document-apis/update-document/)
+ [删除](https://docs.opensearch.org/latest/api-reference/document-apis/delete-document/)
+ [强制合并](https://docs.opensearch.org/latest/api-reference/index-apis/force-merge/)

通过自动和[手动](https://docs.opensearch.org/latest/api-reference/index-apis/force-merge/)分段合并激活 GPU 加速。

## 支持的索引配置
<a name="gpu-acceleration-index-configurations"></a>

[Faiss](https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/#faiss-engine) 引擎支持 GPU 加速。

以下配置不支持 GPU 加速：
+ [Faiss 产品量化](https://docs.opensearch.org/latest/vector-search/optimizing-storage/faiss-product-quantization/)
+ [倒排文件索引 (IVF)](https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/#ivf-parameters)
+ [非公制空间库](https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/#nmslib-engine-deprecated)
+ [Lucene 发动机](https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/#lucene-engine)

## 支持 Amazon Web Services 区域
<a name="gpu-acceleration-regions"></a>

GPU 加速有以下几种版本： Amazon Web Services 区域
+ 美国东部（弗吉尼亚州北部）
+ 美国西部（俄勒冈州）
+ 亚太地区（悉尼）
+ 亚太地区（东京）
+ 欧洲地区（爱尔兰）

## 最佳实践
<a name="gpu-acceleration-best-practices"></a>

请遵循以下最佳实践，最大限度地发挥 GPU 加速对矢量搜索工作负载的优势：
+ **增加索引客户端**-要在索引构建 GPUs 期间充分利用索引客户端，请增加向其接收数据的索引客户端的数量。 OpenSearch这样可以更好地并行化和利用 GPU 资源。
+ **调整近似阈值**-更改`index.knn.advanced.approximate_threshold`设置以确保不会生成较小的区段索引，从而提高整体摄取速度。值为 10,000 是一个不错的起点。对于集合，您必须为此设置明确指定一个值。
+ **优化分片大小**-尝试创建至少包含 100 万个文档的分片。文档数量少于此数量的分片可能看不到 GPU 加速带来的总体好处。