Elasticsearchにおける機械学習設定
機械学習を使用するために設定を構成する必要はありません。デフォルトで有効になっています。
機械学習はx86_64マシンでSSE4.2命令を使用するため、SSE4.2をサポートするCPUを持つx86_64マシンでのみ動作します(この制限はaarch64マシンには適用されません)。古いx86_64ハードウェアでElasticsearchを実行する場合、機械学習を無効にする必要があります(xpack.ml.enabled
をfalse
に設定することによって)。この状況では、クラスター内で機械学習機能を使用しようとしないでください。
一般的な機械学習設定
node.roles: [ ml ]
- (Static)
node.roles
を設定して、ノードを機械学習ノードとして識別します。機械学習ジョブを実行する場合、クラスター内に少なくとも1つの機械学習ノードが必要です。node.roles
を設定する場合、ノードに必要なすべての役割を明示的に指定する必要があります。詳細については、ノードを参照してください。- 専用のコーディネートノードまたは専用のマスターノードでは、
ml
役割を設定しないでください。 - 専用の機械学習ノードには
remote_cluster_client
役割を持たせることを強く推奨します。そうしないと、機械学習ジョブやデータフィードで使用する際にクロスクラスター検索が失敗します。リモート対応ノードを参照してください。
- 専用のコーディネートノードまたは専用のマスターノードでは、
xpack.ml.enabled
- (Static) デフォルト値(
true
)は、ノードで機械学習APIを有効にします。
クラスター内で機械学習機能を使用する場合、この設定のデフォルト値をすべてのノードで使用することをお勧めします。false
に設定すると、ノードで機械学習APIが無効になります。たとえば、ノードはジョブを開いたり、データフィードを開始したり、機械学習APIに関連するクライアント(Kibanaを含む)からのトランスポート(内部)通信リクエストを受信したりすることができません。xpack.ml.enabled
がクラスター内のすべてのノードで均一に設定されていない場合、機械学習機能が完全に動作しない問題が発生する可能性があります。xpack.ml.enabled
がfalse
であるノードからインジェストパイプラインのいかなる機械学習機能も使用してはいけません。ノードでxpack.ml.enabled
をfalse
に設定する前に、ml
をnode.roles
から除外することを本当に意図しているのかどうかを考慮してください。node.roles
からml
を除外すると、ノードは機械学習ジョブやNLPモデルを実行できなくなりますが、機械学習機能が存在することは認識します。xpack.ml.enabled
をfalse
に設定するのは、上記のようにハードウェアの制限によりクラスター内で機械学習機能をまったく使用できない状況に留めておくべきです。 xpack.ml.inference_model.cache_size
(Static) 許可される最大推論キャッシュサイズ。推論キャッシュは、各インジェストノードのJVMヒープに存在します。キャッシュは、
inference
プロセッサの処理時間を短縮します。値は静的なバイトサイズの値(2gb
など)または合計割り当てヒープのパーセンテージであることができます。デフォルトは40%
です。機械学習サーキットブレーカー設定も参照してください。xpack.ml.inference_model.time_to_live
- (Static) 推論モデルキャッシュ内のトレーニング済みモデルの生存時間(TTL)。TTLは最終アクセスから計算されます。キャッシュのユーザー(推論プロセッサや推論集約器など)は、最初の使用時にモデルをキャッシュし、使用するたびにTTLをリセットします。キャッシュされたモデルがTTLの期間中にアクセスされない場合、キャッシュからの排除のためにフラグが立てられます。後でドキュメントが処理されると、モデルは再びキャッシュにロードされます。この設定をElasticsearch Serviceで更新するには、Elasticsearchユーザー設定の追加を参照してください。デフォルトは
5m
です。 xpack.ml.max_inference_processors
- (Dynamic) すべてのインジェストパイプラインで許可される
inference
タイププロセッサの合計数。制限に達すると、パイプラインにinference
プロセッサを追加することはできません。デフォルトは50
です。 xpack.ml.max_machine_memory_percent
- (Dynamic) 機械学習が分析プロセスを実行するために使用できる最大メモリのパーセンテージ。これらのプロセスはElasticsearch JVMとは別です。制限は、マシンの合計メモリに基づいており、現在の空きメモリではありません。推定メモリ使用量が制限を超える場合、ジョブはノードに割り当てられません。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。最小値は
5
、最大値は200
です。デフォルトは30
です。
Elasticsearch JVMを実行した後に残るメモリの量よりも高い値にこの設定を構成しないでください。そうしないと、スワップスペースが十分にない場合や、特定のユースケースに適した構成であることが確認されていない場合に問題が発生します。最大設定値は、機械学習ジョブにスワップスペースを使用することが許可されている特別なケースに対して設定されます。一般的なベストプラクティスは、Elasticsearchノードでスワップを使用しないことです。 xpack.ml.max_model_memory_limit
(Dynamic) このクラスター内のすべての機械学習ジョブに設定できる最大
model_memory_limit
プロパティ値。model_memory_limit
プロパティ値がこの設定値を超えるジョブを作成しようとすると、エラーが発生します。この設定を更新しても、既存のジョブには影響しません。この設定が0
または未設定の場合、最大model_memory_limit
値はありません。ジョブのメモリ要件を満たすノードがない場合、最大メモリ制限がないため、利用可能なノードに割り当てられないジョブを作成することが可能です。model_memory_limit
プロパティの詳細については、異常検出ジョブの作成またはデータフレーム分析ジョブの作成を参照してください。xpack.ml.use_auto_machine_memory_percent
がfalse
の場合、0
は0
にデフォルト設定されます。xpack.ml.use_auto_machine_memory_percent
がtrue
で、xpack.ml.max_model_memory_limit
が明示的に設定されていない場合、クラスター内で割り当てられる最大model_memory_limit
がデフォルトになります。xpack.ml.max_open_jobs
- (Dynamic) ノードで同時に実行できるジョブの最大数。この文脈では、ジョブには異常検出ジョブとデータフレーム分析ジョブの両方が含まれます。ジョブの最大数はメモリ使用量によっても制約されます。したがって、ジョブの推定メモリ使用量が許可されているよりも高い場合、ノードで実行されるジョブの数は減ります。バージョン7.1以前では、この設定はノードごとの非動的設定でした。バージョン7.1では、クラスター全体の動的設定になりました。その結果、ノードの起動後にその値を変更しても、クラスター内のすべてのノードがバージョン7.1以上を実行している場合にのみ使用されます。最小値は
1
、最大値は512
です。デフォルトは512
です。 xpack.ml.nightly_maintenance_requests_per_second
- (Dynamic) 夜間メンテナンスタスクが期限切れのモデルスナップショットと結果を削除する速度。この設定は、削除リクエストで使用される
requests_per_second
パラメータへのプロキシであり、スロットリングを制御します。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。有効な値は0.0
より大きいか、-1.0
に等しい必要があり、-1.0
はデフォルト値が使用されることを意味します。デフォルトは-1.0
です。 xpack.ml.node_concurrent_job_allocations
- (Dynamic) 各ノードで
opening
状態に同時に存在できるジョブの最大数。通常、ジョブはopen
状態に移行する前にこの状態に少しの時間を費やします。大きなモデルを復元する必要があるジョブは、opening
状態により多くの時間を費やします。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。デフォルトは2
です。
高度な機械学習設定
これらの設定は高度なユースケース向けです。デフォルト値は一般的に十分です:
xpack.ml.enable_config_migration
- (Dynamic) 予約済み。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。
xpack.ml.max_anomaly_records
- (Dynamic) バケットごとに出力される最大レコード数。デフォルトは
500
です。 xpack.ml.max_lazy_ml_nodes
- (Dynamic) 遅延起動された機械学習ノードの数。最初の機械学習ジョブが開かれるまで機械学習ノードが不要な状況で便利です。現在の機械学習ノードの数がこの設定以上である場合、必要なノード数がすでにプロビジョニングされているため、遅延ノードはもうないと見なされます。ジョブが開かれ、この設定がゼロより大きい値を持ち、ジョブを受け入れることができるノードがない場合、ジョブは
OPENING
状態のままとなり、新しい機械学習ノードがクラスターに追加され、そのノードで実行されるようにジョブが割り当てられるまで待機します。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。デフォルトは0
です。
この設定は、外部プロセスがクラスターに機械学習ノードを追加できることを前提としています。この設定は、そのような外部プロセスと併用する場合にのみ有用です。 xpack.ml.max_ml_node_size
(Dynamic) 自動クラスタースケーリングをサポートするデプロイメントにおける機械学習ノードの最大サイズ。この設定を将来の機械学習ノードの最大サイズに設定すると、機械学習ジョブが遅延ノードに割り当てられたときに、スケーリングがジョブのサイズをサポートできない場合にすぐにチェック(および失敗)できます。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。デフォルトは
0b
で、これは自動クラスタースケーリングがクラスターに任意の大きさのノードを追加できると見なされることを意味します。xpack.ml.model_repository
- (Dynamic) 制限されたまたは閉じたネットワークでのモデルインストール時にモデルアーティファイルが利用可能な機械学習モデルリポジトリの場所。
xpack.ml.model_repository
はファイルの場所の文字列またはHTTP/HTTPSサーバーである可能性があります。例の値は:
またはxpack.ml.model_repository: file://${path.home}/config/models/
xpack.ml.model_repository: https://my-custom-backend
xpack.ml.model_repository
がファイルの場所である場合、Elasticsearchのconfig
ディレクトリのサブディレクトリを指す必要があります。 xpack.ml.persist_results_max_retries
- (Dynamic) 機械学習結果を処理中に失敗したバルクインデックスリクエストを再試行する最大回数。この制限に達すると、機械学習ジョブはデータの処理を停止し、そのステータスは
failed
になります。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。最小値は0
、最大値は50
です。デフォルトは20
です。 xpack.ml.process_connect_timeout
- (Dynamic) Elasticsearch JVMとは別に実行される機械学習プロセスの接続タイムアウト。このようなプロセスが開始されると、Elasticsearch JVMに接続する必要があります。この設定で指定された期間内にプロセスが接続しない場合、そのプロセスは失敗したと見なされます。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。最小値は
5s
です。デフォルトは10s
です。 xpack.ml.use_auto_machine_memory_percent
- (Dynamic) この設定が
true
の場合、xpack.ml.max_machine_memory_percent
設定は無視されます。代わりに、機械のメモリの最大パーセンテージが自動的に計算され、ノードの合計サイズとノード上のJVMのサイズを考慮に入れます。オペレータ特権機能が有効になっている場合、この設定はオペレータユーザーのみが更新できます。デフォルト値はfalse
です。- 専用の機械学習ノードがない場合(つまり、ノードが複数の役割を持つ場合)、この設定を有効にしないでください。その計算は、機械学習分析がノードの主な目的であることを前提としています。
- 計算は、専用の機械学習ノードがJVMの外部に少なくとも
256MB
のメモリを予約していると仮定します。クラスター内に小さな機械学習ノードがある場合、この設定を使用しないでください。
この設定がtrue
の場合、xpack.ml.max_model_memory_limit
のデフォルト値にも影響します。この場合、xpack.ml.max_model_memory_limit
は現在のクラスターで割り当てられる最大サイズにデフォルト設定されます。
機械学習サーキットブレーカー設定
関連するサーキットブレーカー設定は、サーキットブレーカーのページで見つけることができます。