这篇博客探讨了 Elastic 支持的机器学习 (ML) 模型,包括内置模型、第三方模型和自定义模型。它还讨论了用于加载模型的 Eland 库,并解释了如何在 Elastic 中应用转换器和 NLP,这是搜索应用程序中的常见用例。
Elastic 支持您需要的机器学习模型
Elastic 允许您应用适合您的用例和机器学习专业水平的机器学习 (ML)。您有多种选择
- 利用内置模型。除了针对我们可观察性和安全解决方案中特定安全威胁和系统问题类型的模型之外,您还可以开箱即用地使用我们专有的 Elastic Learned Sparse Encoder 模型,以及语言识别——如果您正在使用非英语文本数据,这将非常有用。
- 从任何地方访问第三方 PyTorch 模型,包括 HuggingFace 模型中心。
- 加载您自己训练的模型——目前主要是 NLP 转换器。
使用内置模型可以让您开箱即用地获得价值,而无需您具备任何机器学习专业知识,但您也可以灵活地尝试不同的模型并确定哪个模型在您的数据上表现最佳
我们设计了模型管理,使其能够在集群中的多个节点上进行扩展,同时还确保高吞吐量和低延迟工作负载都能获得良好的推理性能。这部分是通过授权摄取管道运行推理以及使用专用节点进行计算量大的模型推理来实现的——在摄取阶段,以及数据分析和搜索期间。
继续阅读以了解更多关于 Eland 库的信息,该库允许您将模型加载到 Elastic 中,以及这如何适用于您可能在 Elasticsearch 中使用的各种类型的机器学习——从最新的转换器和自然语言处理 (NLP) 模型到用于回归的增强树模型。
Eland 允许您将 ML 模型加载到 Elastic 中
我们的 Eland 库提供了一个简单的接口,可以将 ML 模型加载到 Elasticsearch 中——前提是它们是使用 PyTorch 训练的。使用原生库 libtorch,并期望已导出或保存为 TorchScript 表示形式的模型,Elasticsearch 在执行模型推理时避免运行 Python 解释器。
通过与 PyTorch 中构建 NLP 模型最流行的格式之一集成,Elasticsearch 可以提供一个适用于各种 NLP 任务和用例的平台。我们将在接下来的关于转换器部分中更详细地介绍这一点。
您有三种选择可以使用 Eland 上传模型:命令行、Docker 和您自己的 Python 代码中。Docker 比较简单,因为它不需要本地安装 Eland 及其所有依赖项。一旦您可以访问 Eland,下面的代码示例显示了如何上传 DistilBERT NER 模型,作为一个例子
在下面,我们将逐步介绍 eland_import_hub_model 的每个参数。您也可以从 Docker 容器中发出相同的命令。
上传后,Kibana 的 ML 模型管理用户界面允许您管理 Elasticsearch 集群上的模型,包括增加分配以获得额外的吞吐量,以及在(重新)配置系统时停止/恢复模型。
Elastic 支持哪些模型?
Elastic 支持各种转换器模型,以及最流行的监督学习库
- NLP 和嵌入模型:所有符合标准 BERT 模型接口并使用 WordPiece 分词算法的转换器。查看支持的模型架构的完整列表。
- 监督学习:来自 scikit-learn、XGBoost 和 LightGBM 库的训练模型,可以序列化并用作 Elasticsearch 中的推理模型。我们的文档提供了一个关于在 Elastic 中训练 XGBoost 分类器的示例。您还可以导出和导入在 Elastic 中使用数据帧分析训练的监督模型。
- 生成式 AI:您可以使用为 LLM 提供的 API 传递查询——可能使用从 Elastic 中检索到的上下文进行丰富——并处理返回的结果。有关更多说明,请参阅此博客,其中链接到一个包含用于通过 ChatGPT 的 API 进行通信的示例代码的 GitHub 存储库。
下面我们提供了更多关于您最有可能在搜索应用程序上下文中使用的模型类型的信息:NLP 转换器。
如何在 Elastic 中轻松应用转换器和 NLP!
让我们引导您完成加载和使用 NLP 模型的步骤,例如来自 Hugging Face 的流行 NER 模型,并回顾下面代码片段中标识的参数。
- 指定 Elastic Cloud 标识符。或者,使用 --url 。
- 提供访问集群的身份验证详细信息。您可以查找可用的身份验证方法。
- 指定 Hugging Face 模型中心中模型的标识符。
- 指定 NLP 任务的类型。支持的值包括 fill_mask、ner、text_classification、text_embedding 和 zero_shot_classification。
加载模型后,接下来需要部署它。您可以在 Kibana 中机器学习选项卡的模型管理屏幕上完成此操作。然后,您通常会测试模型以确保其正常工作。
现在,您可以使用已部署的模型进行推理。例如,要提取命名实体,您可以在加载的 NER 模型上调用 _infer 端点
模型识别两个实体:“Josh”这个人和“Berlin”这个地点。
有关其他步骤,例如在推理管道中使用此模型和调整部署,请阅读描述此示例的博客。
想要了解如何应用语义搜索——例如,如何为文本创建嵌入,然后应用向量搜索以查找相关文档?此博客逐步说明了这一点,包括验证模型性能。
不知道哪个模型对应哪种类型的任务?此表应该可以帮助您入门。
Hugging Face 模型 | 任务类型 |
---|---|
命名实体识别 | ner |
文本嵌入 | text_embedding |
文本分类 | text_classification |
零样本分类 | zero_shot_classification |
问答 | question_answering |
Elastic 还支持比较两段文本的相似度作为 text_similarity 任务类型——这对于在将文档文本与另一个提供的文本输入进行比较时对文档文本进行排序很有用,有时也称为交叉编码。
查看这些资源以获取更多详细信息
- 对 PyTorch 转换器的支持,包括 Eland 的设计考虑因素
- 将转换器加载到 Elastic 中并在推理中使用它们的步骤
- 描述如何使用 ChatGPT 查询您的专有数据的博客
- 调整预训练转换器以适应文本分类任务,并将自定义模型加载到 Elastic 中
- 内置语言识别,允许您在将文本传递到仅支持英语的模型之前识别非英语文本
Elastic、Elasticsearch 和相关标志是 Elasticsearch N.V. 在美国和其他国家/地区的商标、徽标或注册商标。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。
本帖中描述的任何功能或功能的发布和时间安排完全由 Elastic 自行决定。任何当前不可用的功能或功能可能无法按时或根本无法交付。
Elasticsearch 与业界领先的生成式 AI 工具和提供商具有原生集成。查看我们关于超越 RAG 基础知识的网络研讨会 Beyond RAG Basics,或关于构建生产就绪型应用程序的网络研讨会 Elastic Vector Database。