モデルスナップショットのリバートAPI

特定のスナップショットにリバートします。

リクエスト

POST _ml/anomaly_detectors/<job_id>/model_snapshots/<snapshot_id>/_revert

前提条件

  • 保存されたスナップショットにリバートする前に、ジョブを閉じる必要があります。
  • manage_ml クラスタ特権が必要です。この特権は machine_learning_admin 組み込みロールに含まれています。

説明

機械学習機能は異常な入力に迅速に反応し、データの新しい振る舞いを学習します。非常に異常な入力は、モデルの分散を増加させ、システムがこれが新しい行動の変化なのか、一時的なイベントなのかを学習します。この異常な入力が一時的なものであることが知られている場合、イベントの前の状態にモデルの状態をリセットすることが適切かもしれません。たとえば、ブラックフライデーや重大なシステム障害の後に保存されたスナップショットにリバートすることを検討するかもしれません。

スナップショットにリバートしても、異常検出ジョブの data_counts 値は変更されず、これらの値は以前の状態にリバートされません。

パスパラメータ

  • <job_id>
  • (必須、文字列) 異常検出ジョブの識別子。
  • <snapshot_id>
  • (必須、文字列) モデルスナップショットの識別子。
    empty
    \u003csnapshot_id

クエリパラメータ

  • delete_intervening_results
  • (オプション、Boolean) true の場合、最新の結果とリバートされたスナップショットの時点の間の期間の結果を削除します。また、この期間のレコードを受け入れるためにモデルをリセットします。デフォルト値は false です。
    スナップショットをリバートする際に介在する結果を削除しない場合、ジョブは現在の時間よりも古い入力データを受け入れません。データを再送信したい場合は、介在する結果を削除してください。

リクエストボディ

リクエストボディ内で delete_intervening_results クエリパラメータを指定することもできます。

Python

  1. resp = client.ml.revert_model_snapshot(
  2. job_id="low_request_rate",
  3. snapshot_id="1637092688",
  4. delete_intervening_results=True,
  5. )
  6. print(resp)

Ruby

  1. response = client.ml.revert_model_snapshot(
  2. job_id: 'low_request_rate',
  3. snapshot_id: 1_637_092_688,
  4. body: {
  5. delete_intervening_results: true
  6. }
  7. )
  8. puts response

Js

  1. const response = await client.ml.revertModelSnapshot({
  2. job_id: "low_request_rate",
  3. snapshot_id: 1637092688,
  4. delete_intervening_results: true,
  5. });
  6. console.log(response);

コンソール

  1. POST _ml/anomaly_detectors/low_request_rate/model_snapshots/1637092688/_revert
  2. {
  3. "delete_intervening_results": true
  4. }

操作が完了すると、次の結果が得られます:

Js

  1. {
  2. "model" : {
  3. "job_id" : "low_request_rate",
  4. "min_version" : "7.11.0",
  5. "timestamp" : 1637092688000,
  6. "description" : "State persisted due to job close at 2021-11-16T19:58:08+0000",
  7. "snapshot_id" : "1637092688",
  8. "snapshot_doc_count" : 1,
  9. "model_size_stats" : {
  10. "job_id" : "low_request_rate",
  11. "result_type" : "model_size_stats",
  12. "model_bytes" : 45200,
  13. "peak_model_bytes" : 101552,
  14. "model_bytes_exceeded" : 0,
  15. "model_bytes_memory_limit" : 11534336,
  16. "total_by_field_count" : 3,
  17. "total_over_field_count" : 0,
  18. "total_partition_field_count" : 2,
  19. "bucket_allocation_failures_count" : 0,
  20. "memory_status" : "ok",
  21. "assignment_memory_basis" : "current_model_bytes",
  22. "categorized_doc_count" : 0,
  23. "total_category_count" : 0,
  24. "frequent_category_count" : 0,
  25. "rare_category_count" : 0,
  26. "dead_category_count" : 0,
  27. "failed_category_count" : 0,
  28. "categorization_status" : "ok",
  29. "log_time" : 1637092688530,
  30. "timestamp" : 1641495600000
  31. },
  32. "latest_record_time_stamp" : 1641502169000,
  33. "latest_result_time_stamp" : 1641495600000,
  34. "retain" : false
  35. }
  36. }

これらのプロパティの説明については、モデルスナップショット取得APIを参照してください。