使用 shuf 来打乱一个文件中的行或是选择文件中一个随机的行。

OpenSearch里的机器学习demo简介

OpenSearch | 作者 Charele | 发布于6 天前 | 阅读数:932

ES里面也有ML功能,但它底层用的是一个ES自己开发的C++程序,虽然好像也是开源的,
对于像我这样C盲来说,它就是黑盒子,理解不了。
1111.PNG
 
 
 OS里面用的是DJL,是亚妈逊开发的Java版的DL处理工具,
https://djl.ai/
  
https://opensearch.org/docs/la ... index
拿这个神经查询的例子来说明,此demo大致分为这么几步:
 
1 创建model组(忽略)
2 注册model
3 发布model
4 插入文档(生成Knn数据)
5 执行神经查询(实质就是Knn查询)
已邀请:

Charele - Cisco4321

赞同来自:

2 注册model
1111.PNG

此demo中用了一个DistilBERT模型,DistilBERT等于一个简化版的BERT,由HuggingFace提出。
 
你也可以用自已训练的模型 
 
 这里有DistilBERT的介绍
https://blog.csdn.net/qq_41185 ... 64185
(对于非NLP码农来说,想要一下子理解这些模型的细节还是有点困难的)
 
2222.png

相对于BERT的输入有4个,它去掉了两个,只有两个张量输入。
也就是说,不管你在训练还是test的时候,你输入的一句话,它会转成两个张量给模型
 

Charele - Cisco4321

赞同来自:

这点可以在OpenSearch的代码中得到验证:
3333.PNG

如何生成这两个向量,要看代码。
它们代表什么意思,要了解BERT(DistilBERT)
 
 说下“注册model",它执行的流程,
它会从网上把模型文件下载到本地(本地cache有就不必下载),
然后把模型文件切成一块一块的(每个块10M),然后插入到系统索引中(每一个块一个文档).
下载只有一个节点会下载,
但放到索引里,每个节点都到见到这个模块了。
4444.PNG

Charele - Cisco4321

赞同来自:

3 发布model

发布model,就是各数据节点从.plugins-ml-model索引中取出模型文件各块,拼成一个完整模型,
然后加载到内存中。
PS: 注册model,发布model什么的具体是包装成ML任务来进行的。
有专门的组件来管理ML任务,比如任务fail后如何处理等等。
 
这是发布model时的代码片断:
4444.PNG

A 有一个"model控制器"的概念,用来对模型使用进行控制,比如限速什么的。这是可选项
 B 模型要占内存。所以OS里有一个专门的ML容断器来检查内存

3333.PNG

这是加载模型,
A 程序中,并不是直接使用模型,而是用由模型产生的predictor。
在这里就是:input:句子 ---> output:768维向量
(实际output是4个向量,这个例子只用了一个)
 
B 这里模型是一个Zoo模型对像,你并不能改变他的结构,比如增加一层什么的。
C 最后warm一下模型

要回复问题请先登录注册