机器学习
编辑机器学习编辑
训练模型编辑
Eland 允许将 scikit-learn、XGBoost 和 LightGBM 库中的训练模型转换为序列化形式,并用作 Elasticsearch 中的推理模型。
>>> from xgboost import XGBClassifier >>> from eland.ml import MLModel # Train and exercise an XGBoost ML model locally >>> xgb_model = XGBClassifier(booster="gbtree") >>> xgb_model.fit(training_data[0], training_data[1]) >>> xgb_model.predict(training_data[0]) [0 1 1 0 1 0 0 0 1 0] # Import the model into Elasticsearch >>> es_model = MLModel.import_model( es_client="https://127.0.0.1:9200", model_id="xgb-classifier", model=xgb_model, feature_names=["f0", "f1", "f2", "f3", "f4"], ) # Exercise the ML model in Elasticsearch with the training data >>> es_model.predict(training_data[0]) [0 1 1 0 1 0 0 0 1 0]
使用 PyTorch 进行自然语言处理 (NLP)编辑
您需要安装适当版本的 PyTorch 才能导入 NLP 模型。运行 python -m pip install 'eland[pytorch]'
来安装该版本。
对于 NLP 任务,Eland 使您能够将 PyTorch 模型导入 Elasticsearch。使用 eland_import_hub_model
脚本下载并安装支持的 转换器模型,这些模型来自 Hugging Face 模型中心。例如
$ eland_import_hub_model <authentication> \ --url https://127.0.0.1:9200/ \ --hub-model-id elastic/distilbert-base-cased-finetuned-conll03-english \ --task-type ner \ --start
使用身份验证方法访问您的集群。请参阅 身份验证方法。 |
|
集群 URL。或者,使用 |
|
指定 Hugging Face 模型中心中模型的标识符。 |
|
指定 NLP 任务的类型。支持的值为 |
有关可用选项的更多信息,请使用 --help
选项运行 eland_import_hub_model
。
$ eland_import_hub_model --help
使用 Docker 导入模型编辑
要使用 Docker 容器,您需要克隆 Eland 存储库:https://github.com/elastic/eland
如果您想在不安装 Eland 的情况下使用它,可以使用 Docker 镜像
您可以以交互方式使用容器
$ docker run -it --rm --network host docker.elastic.co/eland/eland
运行已安装的脚本也可以在没有交互式 shell 的情况下进行,例如
docker run -it --rm docker.elastic.co/eland/eland \ eland_import_hub_model \ --url $ELASTICSEARCH_URL \ --hub-model-id elastic/distilbert-base-uncased-finetuned-conll03-english \ --start
将 $ELASTICSEARCH_URL
替换为 Elasticsearch 集群的 URL。出于身份验证目的,请在 URL 中包含管理员用户名和密码,格式如下:https://username:password@host:port
。
在隔离环境中安装模型编辑
您可以通过将 eland_import_hub_model
脚本指向本地文件,在受限或封闭网络中安装模型。
对于 Hugging Face 模型的离线安装,需要先在本地克隆模型,您的系统中需要安装 Git 和 Git 大文件存储。
- 从 Hugging Face 中选择您要使用的模型。有关支持的架构的更多信息,请参阅 兼容的第三方模型 列表。
-
使用模型 URL 从 Hugging Face 克隆选定的模型。例如
git clone https://hugging-face.cn/dslim/bert-base-NER
此命令将在
bert-base-NER
目录中生成模型的本地副本。 -
使用
eland_import_hub_model
脚本,并将--hub-model-id
设置为克隆模型的目录以安装它eland_import_hub_model \ --url 'XXXX' \ --hub-model-id /PATH/TO/MODEL \ --task-type ner \ --es-username elastic --es-password XXX \ --es-model-id bert-base-ner
如果您使用 Docker 镜像运行
eland_import_hub_model
,则必须绑定挂载模型目录,以便容器可以读取文件docker run --mount type=bind,source=/PATH/TO/MODELS,destination=/models,readonly -it --rm docker.elastic.co/eland/eland \ eland_import_hub_model \ --url 'XXXX' \ --hub-model-id /models/bert-base-NER \ --task-type ner \ --es-username elastic --es-password XXX \ --es-model-id bert-base-ner
上传到 Elasticsearch 后,模型将具有由
--es-model-id
指定的 ID。如果未设置,则模型 ID 将从--hub-model-id
派生;空格和路径分隔符将转换为双下划线__
。
通过代理连接到 Elasticsearch编辑
在幕后,Eland 使用 requests
Python 库,该库 允许通过环境变量配置代理。例如,要使用 HTTP 代理连接到 HTTPS Elasticsearch 集群,您需要在调用 Eland 时设置 HTTPS_PROXY
环境变量
HTTPS_PROXY=http://proxy-host:proxy-port eland_import_hub_model ...
如果您在 Elasticsearch 集群上禁用了安全性,则应使用 HTTP_PROXY
。
身份验证方法编辑
使用导入脚本时,可以使用以下身份验证选项
-
Elasticsearch 用户名和密码身份验证(使用
-u
和-p
选项指定)eland_import_hub_model -u <username> -p <password> --cloud-id <cloud-id> ...
这些
-u
和-p
选项在使用--url
时也有效。 -
Elasticsearch 用户名和密码身份验证(嵌入在 URL 中)
eland_import_hub_model --url https://<user>:<password>@<hostname>:<port> ...
-
Elasticsearch API 密钥身份验证
eland_import_hub_model --es-api-key <api-key> --url https://<hostname>:<port> ...
-
HuggingFace Hub 访问令牌(用于私有模型)
eland_import_hub_model --hub-access-token <access-token> ...
TLS/SSL编辑
使用导入脚本时,可以使用以下 Elasticsearch 的 TLS/SSL 选项
-
指定备用 CA 捆绑包以验证集群证书
eland_import_hub_model --ca-certs CA_CERTS ...
-
完全禁用 TLS/SSL 验证(强烈不建议)
eland_import_hub_model --insecure ...