(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023124297
(43)【公開日】2023-09-06
(54)【発明の名称】障害データ生成装置、障害データ生成方法、及びプログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20230830BHJP
【FI】
G06N20/00
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022027975
(22)【出願日】2022-02-25
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】池内 光希
(72)【発明者】
【氏名】松田 康太郎
(72)【発明者】
【氏名】松井 知子
(57)【要約】
【課題】本開示は、機械学習やAI(Artificial Intelligence)に基づく障害対応において、少ない実験回数又は短い実験時間で、クリティカルな障害を発見し、それらに対する学習データを生成することを目的とする。
【解決手段】本開示は、検証対象システムに対して挿入する最適な障害を計算し決定する挿入障害計算部11と、前記挿入障害計算部からの命令に基づき、前記検証対象システムに対して前記決定されたの障害のデータの挿入を実行するシステム制御部12と、障害のデータの挿入により前記検証対象システムから得られた観測データを入力として機械学習モデルにより障害に関する情報を推論する推論モデル部13と、を有する障害データ生成装置である。
【選択図】
図1
【特許請求の範囲】
【請求項1】
検証対象システムに対して挿入する最適な障害を計算して決定する挿入障害計算部と、
前記挿入障害計算部からの命令に基づき、前記検証対象システムに対して前記決定された障害のデータの挿入を実行するシステム制御部と、
前記障害のデータの挿入により前記検証対象システムから得られた観測データを入力として機械学習モデルにより前記障害に関する情報を推論する推論モデル部と、
を有する障害データ生成装置。
【請求項2】
前記挿入障害計算部は、前記障害のデータの挿入によるデータ生成を行う価値を表す評価関数に基づき、当該評価関数が所定値より大きな値を持つような障害を優先的に探索する数理的アルゴリズムにより、挿入する前記最適な障害を決定する、請求項1に記載の障害データ生成装置。
【請求項3】
前記評価関数は、前記推論モデル部における機械学習モデルの推論確度に基づいて定義される、障害に対する脆弱性指標を用いる、請求項2に記載の障害データ生成装置。
【請求項4】
前記数理的アルゴリズムは、前記評価関数を最大化するベイズ最適化アルゴリズム又はバンディットアルゴリズムである、請求項2に記載の障害データ生成装置。
【請求項5】
前記システム制御部は、前記挿入障害計算部からの命令に基づき、前記検証対象システムに対して原状復旧を行う、請求項1乃至4のいずれか一項に記載の障害データ生成装置。
【請求項6】
前記推論モデル部は、前記障害のデータの挿入により前記検証対象システムから得られた観測データを入力として機械学習モデルの再学習を行う場合に、当該機械学習モデルの更新を一度で終えずに、更新後の前記機械学習モデルを用いて、障害挿入、データ収集、及び再学習の工程を繰り返して逐次的にモデル更新を重ねていく、請求項1乃至5のいずれか一項に記載の障害データ生成装置。
【請求項7】
検証対象システムに対して挿入する最適な障害を計算して決定し、
前記検証対象システムに対して前記決定された障害のデータを挿入し、
前記障害のデータの挿入により前記検証対象システムから得られた観測データを入力として機械学習モデルにより前記障害に関する情報を推論する
ことを実行する障害データ生成方法。
【請求項8】
コンピュータに、請求項7に記載の方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示内容は、障害データ生成装置、障害データ生成方法、及びプログラムに関する。
【背景技術】
【0002】
近年、機械学習やAI(Artificial Intelligence)に基づく障害対応に注目が集まっている。大規模化、複雑化を続けるICT(Information and Communication Technology)システムにおいて、障害対応を全て人手で行うことは現実的に困難である。膨大なデータを基にシステム挙動や障害パターンを事前学習し、構築された機械学習モデルを用いて迅速で高精度な異常検知や要因特定を行うアプローチは、人的コスト削減、安定したサービス提供などの観点から、必要不可欠となってきている。
【0003】
ところが、機械学習モデルは、発生する障害によっては期待通りに動作せず、誤推論(推定)や見逃しが発生することがある。例えば、発生が低頻度な障害や、類似したデータを出力する相異なる障害に対しては、限られたデータでは学習が十分に行われないため、機械学習モデルの性能が落ちる。機械学習モデルは一般に汎用性を持つが、特にシステムが環境状態(トラヒック量など)や障害種類(箇所や規模を含む)によって質的に異なる挙動を示すような場合には、機械学習モデルの性能が大きく落ちてしまうことがある。従って、そのような「クリティカルな障害」に対処するためには、どのような障害に対して機械学習モデルが脆弱であるのかを明らかにした上で、それらに対応する十分な数の学習データを改めて準備しなければならないという問題が生じる。
【0004】
これに対して、未発生のクリティカルな障害をあぶりだす方法として「カオスエンジニアリング」がある(非特許文献1)。これは、人工的に障害を挿入する実験を通して、システムの振る舞いを観察するアプローチである。主にマイクロサービスアーキテクチャにおいて導入が進んでおり、数多くのOSS(Open Source Software)や商用ツールが展開されている。近年では、機械学習モデルのためのデータ生成手法としてカオスエンジニアリングが言及されることもある。また、例えば、あらゆる障害を挿入(注入)して観測データを収集しておき、観測データと障害種類を関連付ける要因特定のための分類器を事前学習しておくことで、上述のような障害に対応することを提案している(特許文献1)。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】C. Rosenthal, L. Hochstein, A. Blohowiak, N. Jones, and A. Basiri, Chaos Engineering: Building Confidence in System Behavior Through Experiments. O'Reilly Media, 2017.[3] Frazier, Peter I. "A tutorial on Bayesian optimization." arXiv preprint arXiv:1807.02811 (2018).
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、現実的に実現しうる環境状態や発生しうる障害種類は膨大なバリエーションがあるため、従来のカオスエンジニアリングのスキームを直接的に適用しただけでは、上記問題を解決できない。即ち、現状のカオスエンジニアリングのスキームは、「ランダムな障害発生」または「運用者により指定された特定の障害発生」を実施する。しかし、起こり得る環境状態や障害種類のパターン数が膨大な場合、ランダム探索は非効率的であり、クリティカルな障害のデータがなかなか取れなかったり、十分な学習データが既にある障害に対し冗長なデータ収集をしてしまったりといった課題が生じる。また、運用者がクリティカルな障害を事前に全て指定するのは現実的に困難である。特許文献1の方法では網羅的な障害挿入を仮定しているが、これも同様に困難である。
【0008】
本発明は上記の点に鑑みてなされたものであり、障害挿入実験を最適化することで、できるだけ低コスト、即ち、少ない実験回数又は短い実験時間で、クリティカルな障害を発見し、それらに対する学習データを生成することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するため、請求項1に係る発明は、検証対象システムに対して挿入する最適な障害を計算して決定する挿入障害計算部と、前記挿入障害計算部からの命令に基づき、前記検証対象システムに対して前記決定された障害のデータの挿入を実行するシステム制御部と、前記障害のデータの挿入により前記検証対象システムから得られた観測データを入力として機械学習モデルにより前記障害に関する情報を推論する推論モデル部と、を有する障害データ生成装置である。
【発明の効果】
【0010】
以上説明したように本発明によれば、障害挿入実験を最適化することで、できるだけ低コスト、即ち、少ない実験回数又は短い実験時間で、クリティカルな障害を発見し、それらに対する学習データを生成することができるという効果を奏する。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係る障害データ生成装置及び検証対象システムの関係と、障害データ生成装置の機能構成を示した図である。
【
図2】実施形態に係る障害データ生成装置のハードウェア構成図である。
【
図3】実施形態における数理的アルゴリズムを示す図である。
【発明を実施するための形態】
【0012】
以下、図面に基づいて本発明の実施形態を説明する。
【0013】
〔本実施形態の概要〕
まず、本実施形態の概要について説明する。
【0014】
本実施形態では、異常検知又は要因特定などの機械学習モデルの障害に対する脆弱性を測る指標を導入する。一般に異常検知又は要因特定の機械学習モデルは、推論ラベルの他に、確率分布などで算出される推論確度を出力する。正解ラベルに対する推論確度が低い場合、その機械学習モデルは与えられた障害に対して脆弱であると言える。従って、異常検知又は要因特定の機械学習モデルに対して、推論確度に基づいた脆弱性指標を定義できる。続いて、本実施形態では、類似の障害は脆弱性指標も近くなるはずであるという仮定の下で、ベイズ最適化による高脆弱性障害、即ち、クリティカルな障害の効率的な探索を行う。障害挿入実験はデータ取得までにある程度時間の要するものであり、脆弱性関数は未知形状であるため、一般にサンプル取得が高コストなブラックボックス関数の最適化手法として秀でているベイズ最適化のユースケースとして適している。こうした方法で、少ない実験回数で効率的にクリティカル障害に対するデータを収集し、機械学習モデルを逐次的に更新していくことで、あらゆる環境状態又は障害種類に対応可能な異常検知又は要因特定の機械学習モデルを構築することができる。
【0015】
〔障害データ生成装置の機能構成〕
次に、
図1を用いて、障害データ生成装置1の機能構成について説明する。
図1は、実施形態に係る障害データ生成装置及び検証対象システムの関係と、障害データ生成装置の機能構成を示した図である。
【0016】
図1において、障害データ生成装置1は、コンピュータにより構築され、機械学習モデルmの再学習に関して、機械学習モデルmの更新を一度で終えずに、更新後の機械学習モデルmを用いて、障害挿入、データ収集、及び再学習の工程を繰り返して逐次的にモデル更新を重ねていくことで、検証対象システム2の構成変化などへの追随が可能な装置である。検証対象システムは、物理システム又は仮想システムである。
【0017】
図1に示されているように、障害データ生成装置1は、挿入障害計算部11、システム制御部12、及び機械学習モデルmを含む推論モデル部13を有している。これら各部は、プログラムに基づき、後述の
図2のプロセッサ101による命令によって実現される機能である。また、障害データ生成装置1は、学習用データベース10を有しており、後述の
図2のメモリ102又は補助記憶装置103に構築されている。
【0018】
これらのうち、挿入障害計算部11は、ベイス最適化エンジンとして、挿入する最適な障害を計算し決定する。具体的には、挿入障害計算部11は、障害挿入によるデータ生成を行う価値を表す評価関数に基づき、その評価関数が所定値より大きな値を持つような障害を優先的に探索する数理的アルゴリズムにより、挿入する障害を決定する。
【0019】
ここで、評価関数としては、推論モデル部13の機械学習モデルmの推論確度に基づいて定義される、障害に対する脆弱性指標が用いられる。また、数理的アルゴリズムとしては、評価関数を最大化するベイズ最適化アルゴリズム又はバンディットアルゴリズムが用いられる。
【0020】
また、システム制御部12は、障害挿入エンジン12a、及び原状復旧エンジン12bを有している。障害挿入エンジン12aは、挿入障害計算部11から障害(c,x)挿入命令を取得し、検証対象システム2に対して障害(c,x)のデータを挿入する。原状復旧エンジン12bは、挿入障害計算部11から原状普及命令を取得し、検証対象システム2に対して原状復旧のデータを出力する。
【0021】
また、推論モデル部13は、障害挿入エンジン12aからの障害挿入により検証対象システム2から得られた観測データ{zi(c,x)}iを入力データとして、機械学習モデルmにより障害に関する情報を推論し、推論結果h(c,x)を出力データとして挿入障害計算部11に出力する。これにより、挿入障害計算部11は、脆弱性指標VD(c,x)や獲得関数を計算し、次に挿入すべき障害(c,x)を決定する。
【0022】
学習用データベース10は、原状復旧エンジン12bによる検証対象システム2の原状復旧により検証対象システム2から得られた観測データ{zi(c,x)}iを格納(蓄積)する。
【0023】
挿入障害計算部11、システム制御部12、及び推論モデル部13による処理を一定回数繰り返した後、推論モデル部13は、学習用データベース10からモデル更新のためのデータの提供を受けて、機械学習モデルmを再学習して更新する。更新された機械学習モデルmは、実運用システムで稼働する推論モデル部13へ適宜インポートされる。
【0024】
〔障害データ生成装置のハードウェア構成〕
続いて、
図2を用いて、障害データ生成装置1のハードウェア構成図である。
図2は、実施形態に係る障害データ生成装置のハードウェア構成図である。なお、検証対象システム2が物理システムの場合のハードウェア構成は、障害データ生成装置1と同様であるため、説明を省略する。
【0025】
図2に示されているように、障害データ生成装置1は、プロセッサ101、メモリ102、補助記憶装置103、接続装置104、通信装置105、ドライブ装置106を有する。なお、障害データ生成装置1を構成する各ハードウェアは、バス107を介して相互に接続される。
【0026】
プロセッサ101は、障害データ生成装置1全体の制御を行う制御部の役割を果たし、CPU(Central Processing Unit)等の各種演算デバイスを有する。プロセッサ101は、各種プログラムをメモリ102上に読み出して実行する。なお、プロセッサ101には、GPGPU(General-purpose computing on graphics processing units)が含まれていてもよい。
【0027】
メモリ102は、ROM(Read Only Memory)、RAM(Random Access Memory)等の主記憶デバイスを有する。プロセッサ101とメモリ102とは、いわゆるコンピュータを形成し、プロセッサ101が、メモリ102上に読み出した各種プログラムを実行することで、当該コンピュータは各種機能を実現する。
【0028】
補助記憶装置103は、各種プログラムや、各種プログラムがプロセッサ101によって実行される際に用いられる各種情報を格納する。
【0029】
接続装置104は、外部装置(例えば、表示装置110、操作装置111)と障害データ生成装置1とを接続する接続デバイスである。
【0030】
通信装置105は、他の装置との間で各種情報を送受信するための通信デバイスである。
【0031】
ドライブ装置106は(非一時的)記録媒体130をセットするためのデバイスである。ここでいう記録媒体130には、CD-ROM(Compact Disc Read-Only Memory)、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。また、記録媒体130には、ROM(Read Only Memory)、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等が含まれていてもよい。
【0032】
なお、補助記憶装置103にインストールされる各種プログラムは、例えば、配布された記録媒体130がドライブ装置106にセットされ、該記録媒体130に記録された各種プログラムがドライブ装置106により読み出されることでインストールされる。あるいは、補助記憶装置103にインストールされる各種プログラムは、通信装置105を介してネットワークからダウンロードされることで、インストールされてもよい。
【0033】
〔実施形態の処理又は動作〕
続いて、本実施形態の処理又は動作について詳細に説明する。なお、処理又は動作の説明の前に、問題設定について説明する。
【0034】
<問題設定>
以下では本実施形態で考える問題を定式化する。ここでは、障害の要因特定に用いられる教師ありクラス分類の機械学習モデルと、異常検知に用いられる教師なし2値分類の機械学習モデルに対する定式化を行うが、あくまで例を示したものであり、厳格に従わない状況でも適用可能である。
【0035】
まずは、教師ありクラス分類の機械学習モデル(ここでは「要因特定器」と呼ぶ)に対する定式化を述べる。障害空間F=(C,X)∋(c,x)=(c,x1,…,xn)は、検証対象システム2において発生が想定されるすべての障害からなる集合である。
【0036】
c∈Cは、要因特定器で分類すべき障害のカテゴリーであり、障害種類や障害箇所などを表す。複数の障害が組み合わさった複合障害も、その組み合わせを列挙することで対応可能である。
【0037】
x∈Xは、検証対象システム2の状態を規定するその他の離散的または連続的な多次元パラメータであり、例えば、障害発生時のトラヒック量や、障害の規模(遅延障害であれば遅延時間、パケットロス障害であればパケットロス率、CPU障害であればCPU負荷率など)である。システム運用時においては何らかの障害が発生していることはわかっても、(c、x)を直接観測することはできない。正確にはxを部分観測できる状況はあるかもしれないが、cを直接観測することはできない。代わりに、障害(c,x)発生の際に対象システムが生成する観測データz(c,x)=(z1 (c,x),…,zn(c,x))を観測することができる。障害が同一であっても生成されるデータは揺らぎを持ち得るため、{z(c,x)|(c,x)∈F}は(c,x)でパラメトライズされた多次元の確率過程とみなせる((c,x)を固定した場合はz(c,x)は確率変数とみなせる)。各zi(c,x)は、観測可能な数値量であればなんでもよく、各種システムメトリクスや特定のログの出現数、サービス品質の評価値などがある。
【0038】
運用時には要因特定器を用い、観測データzを入力として、直接観測ができないcを推論する。すなわち、要因特定器Dとは、
【0039】
【数1】
という関数とみなせる。ここで|C|は障害のカテゴリー数であり、h(z)は規格化された非負成分からなる|C|次元ベクトルであり、各成分はそのカテゴリーである確率を表す。
【0040】
例えば、ニューラルネットワークモデルであれば、出力層におけるsoftmax関数の出力値がこれにあたる。一般には、最大値を与えるインデックスargmaxchc(z)を推論結果とする。
【0041】
このような要因特定器Dの脆弱性、すなわち、適切に推論がなされない可能性を表す指標を導入する。障害(c,x)に対する要因特定器Dの脆弱性VD(c,x)を、
【0042】
【0043】
【数3】
は確率変数z(c,x)に対するものである。この定義によると正解カテゴリーに対する推論確率が低い障害に対して脆弱性が高いことになる。つまり、要因特定器DはV
D(c,x)が大きくなるような障害(c,x)に対しては、適切な推論がなされない可能性が高く、そのような障害に対する観測データz(c,x)を積極的に提供するのが本実施形態の目的である。なお、脆弱性の具体的な定義式は上記のものに限る必要はなく、
【0044】
【数4】
などとしたり、障害に依存して適当な重みを課したりしてもよい。
【0045】
続いて、VD(c,x)の最大化の方法を説明する前に、教師なし2値分類の機械学習モデル(ここでは「異常検知器」と呼ぶ)に対する定式化の例も説明しておく。通常、異常検知では、検証対象システム2の正常状態に対応する学習データのみで学習を行い、モデルを構築して、テストデータに対しては正常状態からの乖離具合を参照して正常か異常かを判定するというアプローチをとることが多い。具体的には、1クラスサポートベクターマシーンやオートエンコーダなどの機械学習モデルで実装される。このような状況で、前述の各種概念は次のように定義できる。障害空間はF=(C,X)∋(c,x)=(c,x1,…,xn)と示すことができ、特にc∈{0、1}は正常(0)か異常(1)かを表す2値変数である(障害空間の中には正常状態(c=0)も含まれていることに注意する)。観測データz(c,x)は要因特定器のときと同様に定義される。異常検知器Dは、
【0046】
【数5】
と示すことができ、h(z)は検証対象システム2が異常である確率を表す。一般には、適当な閾値α∈(0、1)を用いて、
【0047】
【数6】
であれば異常、そうでなければ正常と推論する。状態(c,x)に対する異常検知器Dの脆弱性V
D(c,x)を、
【0048】
【0049】
【0050】
【数9】
は引数が真であれば1、偽であれば0を取る指示関数である。
【0051】
以下では、要因特定器の場合を例に説明を行うが、異常検知器あるいは別の機械学習モデルの場合でも同様な議論が可能である。
【0052】
本実施形態で考える問題は以下の通りである。今、事前データに基づき要因特定器Dが構築されたとする。事前データの網羅的な準備は不可能であるため、Dは特定の障害に対し高脆弱性となっている可能性がある。そこで任意の障害(c,x)を意図的に挿入し、追加学習用の観測データを生成できる環境が利用可能であるとする。これはカオスエンジニアリングツールや自作のスクリプトを用いて実現できる。しかし、一般に、障害挿入、データ取得、及び原状復旧というサイクルには一定の時間がかかるため、網羅的なデータ生成は依然として困難である。では、脆弱性指標V(c,x)が大きくなるような障害(c,x)を効率的に発見し、追加学習データの生成を行い、要因特定器の精度を向上するには、障害空間をどのように探索すればよいかという問題が生じる。
【0053】
<処理又は動作>
続いて、
図3を用いて、本実施形態の処理又は動作について説明する。
図3は、実施形態におけるアルゴリズムを示す図である。
【0054】
上述の問題を解決するため、本実施形態では、ベイズ最適化(参考文献1)のアプローチをとる。
<参考文献1> Frazier, Peter I. "A tutorial on Bayesian optimization." arXiv preprint arXiv:1807.02811 (2018).
ベイズ最適化とは、サンプル取得コストの大きいブラックボックス関数の最大値を求める際に用いられる汎用的な最適化手法である。ベイズ最適化では、ブラックボックスな目的関数をガウス過程などの確率過程としてモデル化した上で、不確かさの大きさと期待値の大きさのバランス(探索と活用のトレードオフ)を考慮し、各点で値を取得した際に得られる効用を獲得関数により表現することで、最適なサンプリングを逐次的に実行していく。すなわち、現状で最大値を取ると思われる周辺の領域のサンプリング(活用)と同時に、サンプリング回数が少なく不確かさが大きいように領域のサンプリング(探索)もバランスよく実行しながら、目的関数の最大化を目指して行く。今回の問題設定の場合、脆弱性指標V
D(c,x)が最大化を目指す目的関数となる。本実施形態の目的は必ずしも最大化ではなく、V
D(c,x)の大きい障害を発見しデータ生成することだが、ベイズ最適化では上記のように探索と活用の双方が試行されるため、高脆弱性の障害を幅広く探索し、目的を達成することができる。なお、障害(c,x)を表す変数が連続変数だけの場合は通常のベイズ最適化手法がそのまま適用できるが、離散変数だけの場合はベイズ最適化の代わりに多腕バンディットアルゴリズムを利用する。また離散変数と連続変数が入り混じっている場合は、離散変数を連続緩和したりベイズ最適化と多腕バンディットアルゴリズムを融合した方法を用いたりする必要があるが、いずれの場合もオープンソースのベイズ最適化ツール(参考文献2)や、既存アルゴリズム(参考文献3,4)により実装可能である。
<参考文献2>Balandat, Maximilian, et al. "BoTorch: A Framework for Efficient Monte-Carlo Bayesian Optimization." NeurIPS. 2020.
<参考文献3>Nguyen, Dang, et al. "Bayesian optimization for categorical and category-specific continuous inputs." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 34. No. 04. 2020.
<参考文献4>Ru, Binxin, et al. "Bayesian optimisation over multiple continuous and categorical inputs." International Conference on Machine Learning. PMLR, 2020.
図3に示されているアルゴリズムのように、基本的には、要因特定器Dの脆弱性指標V
D(c,x)を目的関数としてベイズ最適化を適用する。まず、挿入障害計算部11、システム制御部12、及び推論モデル部13は、N
1回(適当な自然数回、反復のたびに動的に変化させてもよい)のランダムサンプリングを行う(S1)。
【0055】
1回のサンプリングとは、指定された障害(c,x)を対象システムに挿入し観測データ
【0056】
【数10】
を取得、追加用データセットとして保存の上、脆弱性V
D(c,x)を計算して、検証対象システム2を原状復旧することを指す。z
i(c,x)は確率変数z(c,x)の実現値を表しており、ここではT個のデータが取れたことになる。例えば、データのスクレイピング間隔を10秒としたとき、障害挿入を10×T秒間継続していれば、T個のデータが取れる。V
D(c,x)の計算においては、例えば、期待値操作を
【0057】
【0058】
【数12】
のように求めればよい。ただし、この計算式は例であり、別の方法により算出してもよい。
【0059】
ここで、
図3を用いて、処理(S1)について詳細に説明する。
S11:挿入障害計算部11は、ランダムに障害(c,x)を選択する。
S12:障害挿入エンジン12aが検証対象システム2に対して障害(c,x)のデータを挿入する。
S13:学習用データベース10は、検証対象システム2から観測データ{z
i(c,x)}
iを取得して格納する。
S14:推論モデル部13は、検証対象システム2から観測データ{z
i(c,x)}
iを取得し、機械学習モデルmにより障害に関する情報を推論し、推論結果h(c,x)を出力データとして挿入障害計算部11に出力する。更に、挿入障害計算部11は、脆弱性指標V
D(c,x)や獲得関数を計算し、次に挿入すべき障害(c,x)を決定する。
S15:学習用データベース10は、検証対象システム2から観測データ{z
i(c,x)}
iを取得して格納する。
S16:原状復旧エンジン12bは、検証対象システム2に対して、原状復旧を行う。
【0060】
続いて、挿入障害計算部11、システム制御部12、及び推論モデル部13は、ベイズ最適化の枠組みに従い、獲得関数を計算して逐次的に次にサンプルすべき障害(c,x)を決めるというサイクルをN2回(適当な自然数回、反復のたびに動的に変化させてもよい)繰り返す(S2)。獲得関数の設計方法は様々な変種が考えられているが、いずれの手法でも本実施形態では適用可能である。
【0061】
ここで、
図3を用いて、処理(S2)について詳細に説明する。
S21:挿入障害計算部11は、ランダムに障害(c,x)を選択する。
S22:障害挿入エンジン12aが検証対象システム2に対して障害(c,x)のデータを挿入する。
S23:学習用データベース10は、検証対象システム2から観測データ{z
i(c,x)}
iを取得して格納する。
S24:推論モデル部13は、検証対象システム2から観測データ{z
i(c,x)}
iを取得し、機械学習モデルmにより障害に関する情報を推論し、推論結果h(c,x)を出力データとして挿入障害計算部11に出力する。更に、挿入障害計算部11は、脆弱性指標V
D(c,x)や獲得関数を計算し、次に挿入すべき障害(c,x)を決定する。
S25:学習用データベース10は、検証対象システム2から観測データ{z
i(c,x)}
iを取得して格納する。
S26:原状復旧エンジン12bは、検証対象システム2に対して、原状復旧を行う。
S27:挿入障害計算部11は、脆弱性指標V
D(c,x)や獲得関数を計算する。
S28:挿入障害計算部11は、S28による計算により、次に挿入すべき障害(c,x)を決定する。
【0062】
最後に、推論モデル部13は、追加用データセットとしてA内に保存されていた、(N
1+N
2)回のサンプリング中に得られた観測データすべてを学習データとして用いて、要因特定器を再学習する(S13)。再学習する際は、オンライン学習や逐次学習の方法を使ってもよいし、事前学習用のデータと追加用の学習データを全て合わせてバッチ学習するのでもよい。以上で新しく得られた要因特定器D'(
図3ではS3の左側のDを示す)は、以前の要因特定器Dよりも特定の障害に対して脆弱性が低くなっていることが期待できる。さらにD'に対して新たに定義される脆弱性指標V
D'(c,x)を用いて上記工程を繰り返すことで、さらに要因特定器の精度を向上することができる。繰り返しは適当な条件(SomeConditions)の下で実行するとよい。終了条件としては、十分な試行回数の間、脆弱性が一定値以上になるような障害が見つからないことなどが考えられる。
【0063】
〔適用事例〕
実施形態の適用事例としては以下のようなものが考えられる。
【0064】
検証対象システム2において本実施形態における障害挿入とデータ生成を実施して、要因特定器の事前構築を行ってから、本番環境に要因特定器を導入する。
【0065】
本番環境で動作中の要因特定器と同様のものを用い、検証対象システム2が、本実施形態における障害挿入とデータ生成を行う。再学習により更新された要因特定器は、本番環境での要因特定器に適宜インポートされる。本番環境の構成が変更した際も、検証対象システム2もそれに追随させるようにすれば、新たに発生しうる障害データも本実施形態により半リアルタイムに生成できるようになる。
【0066】
上記の検証対象システム2としては、本番環境を模擬したコンテナ環境などの仮想環境を用いる。仮想環境では、既存のカオスエンジニアリングを利用可能であるので、実装が容易であり、データ取得や原状復旧なども短時間で実行可能である。
【0067】
本番環境で障害挿入実験が可能であれば、本実施形態を本番環境で実施してもよい。すなわち、本番環境で動作中の要因特定器を用いて、実際に本発明による障害挿入、データ収集を繰り返して、要因特定器を半リアルタイムに更新していく。本番環境での障害挿入はカオスエンジニアリングのスキームでは一般的なので、本実施形態も現実的である。
【0068】
〔実施形態の主な効果〕
以上説明したように本実施形態によれば、機械学習モデルでの推論の難しさを脆弱性指標により定量化した上で、脆弱性が高く推論が難しいクリティカルな障害をベイズ最適化に基づいて探索する。これにより、従来のカオスエンジニアリングで行われてきたランダム探索よりも少ない実験回数で効率的にクリティカルな障害を発見し、それらに対するデータ生成を行うことができる。これらのデータを用い機械学習モデルの再学習を繰り返し行うことで、機械学習モデルの推論精度をあらゆる障害に対して向上させることができるようになる。
【符号の説明】
【0069】
1 障害データ生成装置
2 検証対象システム
10 学習用データベース
11 挿入障害計算部
12 システム制御部
12a 障害挿入エンジン
12b 原状復旧エンジン
13 推論モデル部
m 機械学習モデル