Elasticsearch推論サービス
推論タスクをelasticsearch
サービスで実行するための推論エンドポイントを作成します。
## リクエスト
`````PUT /_inference/<task_type>/<inference_id>
パスパラメータ
<inference_id>
- (必須、文字列) 推論エンドポイントの一意の識別子。
<task_type>
- (必須、文字列) モデルが実行する推論タスクのタイプ。
利用可能なタスクタイプ:rerank
,text_embedding
.
リクエストボディ
service
- (必須、文字列) 指定されたタスクタイプに対してサポートされるサービスのタイプ。この場合、
elasticsearch
。 service_settings
- (必須、オブジェクト) 推論モデルをインストールするために使用される設定。
これらの設定はelasticsearch
サービスに特有です。model_id
- (必須、文字列) 推論タスクに使用するモデルの名前。これは、組み込みモデルのID(例えば、E5用の
.multilingual-e5-small
)またはすでにElandを通じてアップロードされたテキスト埋め込みモデルのIDである可能性があります。 num_allocations
- (必須、整数) このモデルが機械学習ノード全体に割り当てられる合計数。一般的にこの値を増やすとスループットが向上します。
num_threads
- (必須、整数) 推論中に各モデル割り当てによって使用されるスレッドの数を設定します。これは一般的に各推論リクエストの速度を向上させます。推論プロセスは計算に依存するプロセスです;
threads_per_allocations
はノードごとに利用可能な割り当てられたプロセッサの数を超えてはなりません。2の累乗でなければなりません。最大許可値は32です。
task_settings
- (オプション、オブジェクト) 推論タスクを構成するための設定。これらの設定は、指定した
<task_type>
に特有です。- `````return_documents
- (オプション、ブール値) インデックスだけでなくドキュメントを返します。デフォルトは
true
です。
Elasticsearchサービス経由のE5
以下の例は、my-e5-model
という名前の推論エンドポイントを作成してtext_embedding
タスクタイプを実行する方法を示しています。
以下のAPIリクエストは、すでにダウンロードされていない場合にE5モデルを自動的にダウンロードし、その後モデルをデプロイします。
Python
resp = client.inference.put(
task_type="text_embedding",
inference_id="my-e5-model",
inference_config={
"service": "elasticsearch",
"service_settings": {
"num_allocations": 1,
"num_threads": 1,
"model_id": ".multilingual-e5-small"
}
},
)
print(resp)
Js
const response = await client.inference.put({
task_type: "text_embedding",
inference_id: "my-e5-model",
inference_config: {
service: "elasticsearch",
service_settings: {
num_allocations: 1,
num_threads: 1,
model_id: ".multilingual-e5-small",
},
},
});
console.log(response);
コンソール
PUT _inference/text_embedding/my-e5-model
{
"service": "elasticsearch",
"service_settings": {
"num_allocations": 1,
"num_threads": 1,
"model_id": ".multilingual-e5-small"
}
}
model_id は、組み込みのE5モデルの1つのIDでなければなりません。有効な値は .multilingual-e5-small と.multilingual-e5-small_linux-x86_64 です。詳細については、E5モデルのドキュメントを参照してください。 |
Kibanaコンソールを使用しているときに502 Bad Gatewayエラーが応答に表示されることがあります。このエラーは通常、バックグラウンドでモデルがダウンロードされている間のタイムアウトを反映しています。ダウンロードの進行状況は、機械学習UIで確認できます。Pythonクライアントを使用している場合、timeout
パラメータをより高い値に設定できます。
Elasticsearchサービス経由でElandによってアップロードされたモデル
以下の例は、my-msmarco-minilm-model
という名前の推論エンドポイントを作成してtext_embedding
タスクタイプを実行する方法を示しています。
Python
resp = client.inference.put(
task_type="text_embedding",
inference_id="my-msmarco-minilm-model",
inference_config={
"service": "elasticsearch",
"service_settings": {
"num_allocations": 1,
"num_threads": 1,
"model_id": "msmarco-MiniLM-L12-cos-v5"
}
},
)
print(resp)
Js
const response = await client.inference.put({
task_type: "text_embedding",
inference_id: "my-msmarco-minilm-model",
inference_config: {
service: "elasticsearch",
service_settings: {
num_allocations: 1,
num_threads: 1,
model_id: "msmarco-MiniLM-L12-cos-v5",
},
},
});
console.log(response);
コンソール
PUT _inference/text_embedding/my-msmarco-minilm-model
{
"service": "elasticsearch",
"service_settings": {
"num_allocations": 1,
"num_threads": 1,
"model_id": "msmarco-MiniLM-L12-cos-v5"
}
}
推論エンドポイントの一意の識別子を提供します。inference_id は一意でなければならず、model_id と一致してはなりません。 |
|
model_id は、すでにElandを通じてアップロードされたテキスト埋め込みモデルのIDでなければなりません。 |