テキサスA&M大学の研究者がIntel Labsのコンピュータ科学者と共同で、ソフトウェアのアップデートに起因する処理速度の低下に関する研究結果を発表した。PCやサーバが備える数百のパフォーマンスカウンタから情報を取得し、正常動作と異常動作を判定できる。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
アップデートによって動作速度が高まったことをうたうソフトウェアを試してみると、実際には動作速度が遅くなっていることがある。テキサスA&M大学の研究者とIntel Labsのコンピュータ科学者は共同で、このような問題の原因を特定する作業を完全に自動化する手法「AutoPerf」を開発した。2020年2月11日にテキサスA&M大学が発表したもの。
ディープラーニングで問題特定用のアルゴリズムをトレーニングし、ソフトウェアが含む問題を数日ではなく数時間で発見できるという。
テキサスA&M大学コンピュータ科学工学部 助教授のアブドラ・ムザヒド氏は次のように語る。
「ソフトウェアをアップデートすると、かえって動作が遅くなる場合がある。ソフトウェアに変更を加える過程でエラーが混入することがあるからだ。この問題は、継続的に進化する大規模なソフトウェアシステムを使用する企業では、一段と深刻だ」
このようなパフォーマンス上の問題を、コンピュータ科学の分野では「パフォーマンスリグレッション」と呼ぶ。同氏を含む研究チームは、パフォーマンスリグレッションに向けた便利な診断ツールを開発した。このツールは、あらゆるソフトウェアやプログラミング言語と互換性があるとしている。
ムザヒド氏によると、パフォーマンスリグレッションの診断には、CPUのパフォーマンスカウンタのデータを使う。
「パフォーマンスカウンタは、プログラムの実行状態を理解するための情報を提供する。プログラムが期待通りに動いていない場合、パフォーマンスカウンタが通常、異常な挙動の兆候を記録する」(同氏)
ソフトウェア実行後のパフォーマンスカウンタには特定のメモリアドレスにアクセスした回数やアクセスしていた時間、終了した時間などが記録されているため、診断に役立つ情報を引き出すことができる。
だが、現代のデスクトップPCやサーバには、数百のパフォーマンスカウンタが存在しており、それら全ての状態を追跡し、パフォーマンスエラーを示唆する異常なパターンを探すのは、手動ではほぼ不可能だ。そこでディープラーニングの出番となる。
研究チームはディープラーニングを利用することで、多数のパフォーマンスカウンタから得たデータのサイズを縮小してモニタリングした。これは高解像度画像を、フォーマットを変更して、多数の断片に圧縮するのと似た処理によるものだ。機械学習では低次元のデータへの変更を施すと効率的に学習できる。
研究チームはアルゴリズムを準備した後、ある商用のデータ管理ソフトウェアを対象としてバグを発見、診断できるかどうかテストした。まず、欠陥がない古いバージョンのデータ管理ソフトウェアを実行し、正常なカウンタデータを認識できるようにアルゴリズムをトレーニングした。
次に、パフォーマンスリグレッションを含むアップデート版のソフトウェアに対してアルゴリズムを実行したところ、アルゴリズムは数時間でバグを発見し、診断結果を報告できた。この種の分析は、手動で行うと多大な時間がかかるという。
ムザヒド氏によれば今回開発したアルゴリズムは自動運転車用ソフトウェアの診断など他の研究分野にも転用できる可能性があるという。
「基本的な考え方はパフォーマンスリグレッションの検知と同じだ。異常なパターンを検出できるという点では。自動運転車は、車や人が前方に存在するかどうかを検知し、それに従って行動することが不可欠だ。これも一種の異常検出であり、われわれのアルゴリズムにはこれが可能なように設計されている」
今回の研究成果は、2019年12月に開催された「Neural Information Processing Systems 2019」カンファレンスの記録として作成された「Advances in Neural Information Processing Systems 32(NIPS 2019)」に収録されている。
Copyright © ITmedia, Inc. All Rights Reserved.