- <https://www.iot.ipsj.or.jp/symposium/iots2021-program/>
- 発表20分質疑応答10分
- 11月26日(金)10:30~
## To-Do
- [x] 序盤の流れの再考
- [x] 要件導出
- [x] 既存手法との比較
- [x] 入力要件の整理
- [x] 背景の配置整理
- [x] データセットの課題 配置整理
- [x] データセットの作成手順 図解
- [x] ラベリングの要件整理
- [x] 評価指標ブラッシュアップ
- [x] 実験の設定 図解
- [x] 第一設計基準 和文
- [ ] 未来への道筋 (optional) [[AIOpsアプローチのプロダクション環境での半自動評価]]
- [ ] 発表練習 20minに収まるか
- [ ] 実装:故障注入スケジューリング部分のみ示す (optioal)
- [ ] Sock Shop
## アウトライン
- IT運用にAIを適用して改善できないかを研究をしている
- AIの推論性能を評価したり、推論性能をあげるために学習したり データセット が重要
- どんなデータセットをどう作るか、という類似の例がすくない研究
### はじめに (5分)
- クラウド上のシステムの複雑化と管理負担の増加
- [[AIOps]]で解決
- 評価用のデータセットとその課題
- 企業はプライバシーやセキュリティの問題で商用環境のデータを公開しづらい。
- 公開データセットと非公開データセット
- [[2021__ESEC-FSE__An Empirical Investigation of Practical Log Anomaly Detection for Online Service Systems|LogAD]]の研究では、1~2種類の異常パターンにしか対応できない
- [[Loghub]], [[2021__VLDB__Exathlon - A Benchmark for Explainable Anomaly Detection over Time Series]]
- 多数の異常パターンに対応したい
- しかし、あらゆる異常パターンを内包したデータセットを公開するのは無理がある
- データセットの動的生成システム
- 完全なデータセットを作成するのではなく、動的にデータセットを生成する
- 動的なデータセット生成の難しさ
- どのようにして、異常を含むデータを自動で作成するのか?
- 機械学習分野では、データセットには文脈理解のためのラベルが付与されるが、動的生成されるデータセットごとに手動でラベル付与することは手間がかかりすぎる
- [[データラベリング]]
- 本研究の貢献
1. 異常検知・原因分析の既存文献からデータセットの要件を導出
2. 動的なデータセット生成のための2つの設計基準の提案
- 故障を注入するためのスケジューリングとデータ管理
- データラベリングのための分類手法を提案
3. 実験の結果、分類手法の正解率が85%を達成
### 2. 関連研究と要件の導出 (5分)
- 要件の導出
- データの種別
- メトリック: 時系列の数値データ 7
- イベント: システムイベントに関する高度に構造化されたデータ
- ログ: 構造化されていない文字列のログ 3
- トレース: リクエストの実行経路のグラフ 2
- データセット作成手順
- マイクロサービスのデモアプリ ケーションを構築
- そのアプリケーションに対して, 実験者が意図的に故障を注入
- (1) マイクロサービスのデモアプリケーションを構築し,(2) そのアプリケーションに対して, 実験者が意図的に故障を注入し,(3) 故障が注入された前後の期間の運用データを取得する
- 対象アプリケーション
- [[Sock Shop]]
- [[TrainTicket]]
- [[Pymicro]]
- 故障の種類
- 計算機リソースに関する故障
- マイクロサービス間リクエストの成否・遅延
- マイクロサービス特有の故障
- ラベリングの動機
- データセットの「汚さ」
- 故障注入の結果、システム全体異常 or 部分異常 or 異常なしになるかがわからない
- 故障注入期間以外に、異常が混在している可能性がある
- 「汚さ」が推論性能の評価結果に影響
- 目視で「異常なし」が真の正解でも、「異常あり」を正答と判定
- 故障注入と関係ない異常を検知しても正答したと判定
- ラベリング:データ分析モデルの学習や評価のために、文脈を提供するプロセス
- 「汚さ」のラベリングにより、推論性能を正確に評価したい
- データセット作成の課題
- 自動で異常を発生させる必要がある
- [[Fault Injection]]と呼ばれるテクニックが必要
- [[Chaos Engineering]] ツール
- 目的の差異から、データの採取や管理などの機能がない
- 新たなシステムが必要
### 3. 提案システム (5分)
- データセットの要件
- OSSとして公開中
### 4. 評価 (4分)
- 評価項目
- 第一設計基準:「入力となる条件に対応するデータセットが出力されたか?」
- 故障注入とデータ計測の条件の網羅な組み合わせに対する(FOUND_INSIDE_ANOMALYに手動で分類された系列数) / (全選択系列数)
- 第二設計基準:「自動で付与したラベルはどの程度正確か?」
- 手動によるラベル付けを正解としたときの正確度(Accuracy)
- 実験の設定
- Sock Shopを構成する8種類のコンテナに対して,CPU過負荷とメモリリークの故障を、5回ずつ注入した(計90回の故障注入)
- データ取得の間隔は15秒
- スロットの時間範囲を30分
- 第一の設計基準の評価
- 第二の設計基準の評価
- 考察
- 研究の限界
- 対象アプリケーションは固定にならざるをえない
### 5. まとめと今後の課題 (1分)
- まとめ
- マイクロサービスの異常検知・原因分析の手法を効率よく検証するために、動的にデータセットを生成するシステムMeltriaを提案
- 故障注入のスケジューリング,故障とデータの対応管理
- 統計学の経験則によるデータセットのラベル付けの自動化
- 分類手法の正確度は85%
- 誤分類の要因は,変動が小さいケース
- 自動ラベリングの正確性は、ヒューマンエラーを含む手動ラベリングと同等程度であることが望ましい
- 今後の課題
- リアルアプリケーションへAIOpsを導入する際に自動で評価できるようになることを目指す
## メモ
- [[AIOpsアプローチのプロダクション環境での半自動評価]]
## 発表練習
1. 「はじめに」が6分程度
- ラベリングの説明していないけど、どうするか