(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024150304
(43)【公開日】2024-10-23
(54)【発明の名称】制御プログラム,情報処理システムおよび制御方法
(51)【国際特許分類】
G06F 11/34 20060101AFI20241016BHJP
G06F 11/07 20060101ALI20241016BHJP
G06N 20/00 20190101ALI20241016BHJP
【FI】
G06F11/34 133
G06F11/07 190
G06F11/07 140H
G06N20/00
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023063659
(22)【出願日】2023-04-10
(71)【出願人】
【識別番号】598057291
【氏名又は名称】エフサステクノロジーズ株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】野津 隆弘
(72)【発明者】
【氏名】原 靖
(72)【発明者】
【氏名】甲斐 雄高
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042KK15
5B042MA08
5B042MA14
5B042MC22
5B042MC29
(57)【要約】
【課題】機械学習モデルの訓練において、よりよい計算機構成を実現できるようにする。
【解決手段】複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷とに基づいて、第1の種類の演算リソースの動作周波数を所定量低下させた時の機械学習モデルにおけるループ周期と、第2の種類の演算リソースの動作周波数を所定量低下させた時の機械学習モデルのループ周期とを算出し、算出したループ周期の比較結果に基づいて、第1の種類の演算リソースと第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
複数の種類の演算リソースを有する計算機システムにおいて、
前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、
算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する
処理をプロセッサに実行させることを特徴とする制御プログラム。
【請求項2】
前記改善対象の演算リソースを判定する処理が、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおける前記ループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルの前記ループ周期とのうち、遅い方のループ周期を求めるために動作周波数を低下させた演算リソースを前記改善対象の演算リソースと判定する処理を含む
ことを特徴とする、請求項1に記載の制御プログラム。
【請求項3】
判定した前記改善対象の演算リソースを提示する
処理を前記プロセッサに実行させることを特徴とする請求項1または2に記載の制御プログラム。
【請求項4】
複数の種類の演算リソースを有する計算機システムであって、
前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、
算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する
処理を実行する制御部を備えることを特徴とする情報処理システム。
【請求項5】
複数の種類の演算リソースを有する計算機システムにおいて、
前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、
算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する
処理をプロセッサが実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御プログラム,情報処理システムおよび制御方法に関する。
【背景技術】
【0002】
AI(Artificial Intelligence)技術は様々な分野で用いられており、今後の発展も期待できる。一方で機械学習モデルの訓練に多大な時間を要しており、この時間の短縮が急務である。
【0003】
機械学習モデルの訓練には巨大な計算資源が要求されるため、クラウドの計算機を一時的に調達して実行することが多い。
【0004】
一般に計算機システムの性能には、CPU(Central Processing Unit),GPU(Graphics Processing Unit),アクセラレータ,メモリ,ストレージ,ネットワークなどの様々な要素が複雑に影響する。そのため、調達した計算機構成が、必ずしも現在実行しようとしている訓練に適しているとは限らない。
【0005】
また、クラウド事業者の立場から見ると、機械学習モデルの訓練を実行する顧客に対し、より良い計算機構成を提案することで、自社が提供するサービスの付加価値を向上させることができる。
【0006】
例えば、顧客が機械学習モデルの訓練を実行する際に、訓練の実行上のボトルネックとなるリソースを特定し、このように特定したリソースをより高い性能のものにすることを顧客に提案することで、より良い計算機構成を顧客に提案することができる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2021-185469号公報
【特許文献2】特開2012-168660号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
機械学習モデルの訓練を行なう訓練プログラムの性能の良し悪しは、訓練の実行時間の長さで評価されるが、一般に機械学習モデルの訓練には時間を要するため、すべての訓練が終わるまで待機することは現実的ではない。
【0009】
一方、訓練プログラムはループを多く含んで構成されているため、1回のループの周期がわかれば訓練プログラムのおおよその性能を見積もることができる。
【0010】
しかしながら、ループの周期を測定するためには一般にはプログラムの修正が必要となる。
【0011】
また、クラウド事業者の立場からすると、CPUやGPUのクロックを制御することは電力制限やリソース割り当てという観点から許容されているが、顧客が実行するプログラムに手を入れることは許容されていない。従って、ループの周期を測定するためにプログラムの修正を行なうことはできない。
【0012】
そこで、顧客が実行する訓練プログラムを修正することなく、クラウド事業者が観測可能なデータを用いて訓練プログラムのループ周期を観測し、ボトルネックとなるリソースを特定することが求められている。
【0013】
1つの側面では、本発明は、機械学習モデルの訓練において、よりよい計算機構成を実現できるようにすることを目的とする。
【課題を解決するための手段】
【0014】
このため、この制御プログラムは、複数の種類の演算リソースを有する計算機システムにおいて、前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する処理をプロセッサに実行させる。
【発明の効果】
【0015】
一実施形態によれば、機械学習モデルの訓練において、よりよい計算機構成を実現できる。
【図面の簡単な説明】
【0016】
【
図1】一実施形態に係る情報処理システムのシステム構成を模式的に示す図である。
【
図2】一実施形態に係る情報処理システムのボトルネック解析部の機能構成を例示する図である。
【
図3】一実施形態に係る情報処理システムのボトルネック解析プログラムの構成を示す図である。
【
図4】AI学習モデルの訓練時におけるCPU使用率を例示する図である。
【
図5】AIモデルの訓練時におけるCPU負荷を例示する図である。
【
図6】CPUクロックダウンによる周期の変化を示す図である。
【
図7】一実施形態に係る情報処理システムの提示部が出力する提示情報を例示する図である。
【
図8】一実施形態に係る情報処理システムのボトルネック解析部による処理の概要を説明するためのフローチャートである。
【
図9】
図8のステップA1の処理の詳細を説明するためのフローチャートである。
【
図10】
図8のステップA2の処理の詳細を説明するためのフローチャートである。
【
図11】一実施形態に係る情報処理システムにおけるループ周期の推定処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0017】
以下、図面を参照して本制御プログラム,情報処理システムおよび制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0018】
(A)構成
図1は一実施形態に係る情報処理システム1のシステム構成を模式的に示す図である。
【0019】
情報処理システム1は、ハードウェアプラットフォーム10とソフトウェアプラットフォーム3とを有する。情報処理システム1を計算機システムといってよい。
【0020】
ソフトウェアプラットフォーム3はハードウェアプラットフォーム10上で実行される。ソフトウェアプラットフォーム3には、例えば、OS(Operating System),ライブラリ,フレームワークが含まれる。
【0021】
ソフトウェアプラットフォーム3上において、AI学習モデル訓練プログラム5およびボトルネック解析プログラム4sが実行される。ソフトウェアプラットフォーム3は、AI学習モデルや、AI学習モデル訓練プログラム5およびボトルネック解析プログラム4sを実行するために必要なソフトウェア環境を提供する。
【0022】
ハードウェアプラットフォーム10は、
図1に示すように、ハードウェア構成として、例示的に、CPU11,GPU12,メモリ13,ストレージ14および通信インタフェース15を備えてよい。ハードウェアプラットフォーム10に含まれるCPU11,GPU12,メモリ13,ストレージ14および通信インタフェース15をハードウェアエレメントといってよい。
【0023】
CPU11は、種々の制御や演算を行なう演算処理装置の一例であり、演算リソースの一例でもある。CPU11は、ハードウェアプラットフォーム10内の各ブロックと図示しないバスで相互に通信可能に接続されてよい。なお、CPU11は、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0024】
GPU12は、モニタ等の出力装置に対する画面表示制御に好適な演算処理装置であり、演算リソースの一例である。GPU12は、種々の制御や演算を行なう演算処理装置の一例である。GPU12は、ハードウェアプラットフォーム10内の各ブロックと図示しないバスで相互に通信可能に接続されてよい。ハードウェアエレメントのうち、演算処理装置(プロセッサ)をプロセッサエレメントといってよい。CPU11およびGPU12はプロセッサエレメントである。
【0025】
メモリ13は、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ13としては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、および、PM(Persistent Memory)等の不揮発性メモリ、の一方または双方が挙げられる。
【0026】
ストレージ14は、種々のデータやプログラム等の情報を格納するハードウェアの一例である。ストレージ14は、CPU11やGPU12が実行するプログラムや、プログラムの実行に際して用いられるデータを格納する。プログラムには、AI学習モデル訓練プログラム5およびボトルネック解析プログラム4sが含まれる。
【0027】
ストレージ14としては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0028】
通信インタフェース15は、ハードウェアプラットフォーム10と他の情報処理装置との間の接続および通信の制御等を行なう。例えば、通信インタフェース15は、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを含んでよい。当該アダプタは、無線および有線の一方又は双方の通信方式に対応してよい。
【0029】
例えば、ハードウェアプラットフォーム10は、通信インタフェース15およびネットワークを介して、図示しない端末装置やデータベース等のそれぞれと相互に通信可能に接続されてよい。なお、上述したプログラムは、当該通信インタフェース15を介して、ネットワークからダウンロードされ、ストレージ14に格納されてもよい。
【0030】
ハードウェアプラットフォーム10の構成は適宜変更することができる。例えば、
図1に示す例においては、CPU11,GPU12,メモリ13,ストレージ14および通信インタフェース15をそれぞれ1つずつ備えているが、それぞれ2つ以上備えてもよい。
【0031】
また、これらのハードウェアエレメントを、より性能の高いものなど、異なるハードウェアエレメントに交換してもよい。
【0032】
ハードウェアプラットフォーム10を構成するハードウェアエレメントの少なくとも一部をクラウド事業者が提供してもよい。ユーザはクラウド事業者が提供するハードウェアエレメントを組み合わせて、所望の性能を実現するハードウェアプラットフォーム10を構成してよい。例えば、ユーザは、AI学習モデル訓練プログラム5を実行させるに十分な性能を有するハードウェアプラットフォーム10を、ハードウェアエレメントを組み合わせることで構成してよい。
【0033】
AI学習モデル訓練プログラム5は、AI学習モデル(機械学習モデル)の訓練を行なうプログラムである。AI学習モデル訓練プログラム5として、既知の種々の訓練プログラムを用いてよく、その説明は省略する。AI学習モデル訓練プログラム5は、ハードウェアプラットフォーム10を用いて実行される。
【0034】
例えば、CPU11は、AI学習モデル訓練プログラム5の実行中に、GPU12に対して演算を実行させるコマンドを投入し、GPU12から応答される演算結果を用いて処理を行なう。
【0035】
AI学習モデル訓練プログラム5は、複数の種類の演算リソースであるCPU11とGPU12とを用いて機械学習モデルの訓練を実行する。
【0036】
ボトルネック解析プログラム4sは、ハードウェアプラットフォーム10を用いたAI学習モデル訓練プログラム5の実行中に収集した情報を用いて、ボトルネックとなるリソース(ハードウェアエレメント)がCPU11であるかGPU12であるかを特定する、ボトルネック解析機能を実現する。CPU11およびGPU12は、AI学習モデル訓練プログラム5の実行性能に影響する演算ユニットに相当する。
【0037】
CPU11がボトルネック解析プログラム4sを実行することで、
図2に示すボトルネック解析部4としての機能を実現する。
【0038】
図2は一実施形態に係る情報処理システム1のボトルネック解析部4の機能構成を例示する図、
図3はそのボトルネック解析プログラム4sの構成を示す図である。
【0039】
ボトルネック解析部4は、
図2に示すように、CPU性能制御部41,GPU性能制御部42,CPU負荷計測部43,ループ周期推定部44および提示部45としての機能を有する。
【0040】
そして、CPU11が、ボトルネック解析プログラム4sを実行することにより、これらのCPU性能制御部41,GPU性能制御部42,CPU負荷計測部43,ループ周期推定部44および提示部45として機能するようになっている。
【0041】
ボトルネック解析プログラム4sは、より詳細には、
図3に示すように、CPU性能制御プログラム41s,GPU性能制御プログラム42s,CPU負荷計測プログラム43s,ループ周期推定プログラム44sおよび提示プログラム45sを有する。
【0042】
CPU性能制御プログラム41sはCPU性能制御部41としての機能を実現する。GPU性能制御プログラム42sはGPU性能制御部42としての機能を実現する。CPU負荷計測プログラム43sはCPU負荷計測部43としての機能を実現する。ループ周期推定プログラム44sはループ周期推定部44としての機能を実現する。提示プログラム45sは提示部45としての機能を実現する。
【0043】
なお、ボトルネック解析プログラム4sに、必ずしも、CPU性能制御プログラム41s,GPU性能制御プログラム42s,CPU負荷計測プログラム43s,ループ周期推定プログラム44sおよび提示プログラム45sの全てが備えられる必要はない。例えば、CPU性能制御プログラム41s,GPU性能制御プログラム42s,CPU負荷計測プログラム43s,ループ周期推定プログラム44sおよび提示プログラム45sの少なくとも一部を、ボトルネック解析プログラム4sの外部に備え、ボトルネック解析プログラム4sから、このような外部に備えらえたプログラムを呼び出して実行してもよい。
【0044】
なお、これらのCPU性能制御部41,GPU性能制御部42,CPU負荷計測部43,ループ周期推定部44および提示部45としての機能を実現するためのプログラム(ボトルネック解析プログラム4s)は、例えばフレキシブルディスク,CD(CD-ROM,CD-R,CD-RW等),DVD(DVD-ROM,DVD-RAM,DVD-R,DVD+R,DVD-RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、CPU11はその記録媒体からプログラムを読み取って内部記憶装置(例えば、メモリ13)または外部記憶装置(例えば、ストレージ14)に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【0045】
CPU性能制御部41,GPU性能制御部42,CPU負荷計測部43,ループ周期推定部44および提示部45としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ13)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU11)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【0046】
CPU性能制御部41は、CPU11の動作性能を制御する。具体的には、CPU性能制御部41は、CPU11の動作周波数を変更(設定)する機能を実現する。
【0047】
CPU性能制御部41は、例えば、CPU11の動作周波数を設定するコマンドを実行することで、CPU11の動作周波数を変更する。
【0048】
CPU性能制御部41は、例えば、Linux(登録商標)におけるcpupower frequency-setコマンドを用いて、CPU11の動作周波数を設定してよい。
【0049】
例えば、CPU性能制御部41は、以下のコマンドを実行することで、CPU11の動作周波数を2100MHzに設定することができる。
【0050】
# cpupower frequency-set -g userspace
# cpupower frequency-set -f 2100MHz
【0051】
CPU性能制御部41は、例えば、CPU11の動作周波数を所定期間(例えば、20秒間)、所定量(例えば、20%)低下(クロックダウン)させる制御を行なう。CPU性能制御部41がCPU11の動作周波数を低下させた状態をCPUクロックダウン状態もしくはCPUクロックダウン時という場合がある。CPU性能制御部41はCPUクロックダウン状態を発生させる。
【0052】
また、CPU性能制御部41は、同様のコマンドを用いることで、低下させたCPU11の動作周波数を変更前の状態に戻すことができる。CPU性能制御部41は、Linux以外のOSの場合には、同様の他のコマンドやドライバプログラムを実行することでCPUクロックダウン状態を発生させてよい。
【0053】
GPU性能制御部42は、GPU12の動作性能を制御する。具体的には、GPU性能制御部42は、GPU12の動作周波数を変更(設定)する機能を実現する。
【0054】
GPU性能制御部42は、例えば、GPU12の動作周波数を設定するコマンドを実行することで、GPU12の動作周波数を変更する。
【0055】
GPU性能制御部42は、例えば、NVIDIA(登録商標)製のGPU12に対してnvidia-smiコマンドを用いて、GPU12の動作周波数を設定してよい。
【0056】
例えば、GPU性能制御部42は、以下のコマンドを実行することで、NVIDIA製のGPU12の動作周波数を866MHzに設定することができる。
【0057】
# nvidia-smi -ac 1593,866
【0058】
GPU性能制御部42は、例えば、GPU12の動作周波数を所定期間(例えば、20秒間)、所定量(例えば、20%)低下(クロックダウン)させる制御を行なう。GPU性能制御部42がGPU12の動作周波数を低下させた状態をGPUクロックダウン状態もしくはGPUクロックダウン時という場合がある。GPU性能制御部42はGPUクロックダウン状態を発生させる。
【0059】
CPU性能制御部41とGPU性能制御部42とは、CPUクロックダウンとGPUクロックダウンとで同率(例えば、20%)の性能低下(クロックダウン)となるように制御することが望ましい。
【0060】
また、GPU性能制御部42は、同様のコマンドを用いることで、低下させたGPU12の動作周波数を変更前の状態に戻すことができる。GPU性能制御部42は、NVIDIA製以外のGPU12の場合には、同様の他のコマンドやドライバプログラムを実行することでGPUクロックダウン状態を発生させてよい。
【0061】
CPU負荷計測部43は、CPU11の負荷状態を計測する。CPU負荷計測部43は、CPU11の負荷状態として、例えば、システム全体(情報処理システム1)のCPU使用率を測定してよい。
【0062】
CPU負荷計測部43は、CPUクロックダウン状態でのCPU使用率と、GPUクロックダウン状態でのCPU使用率とを、それぞれ測定する。
【0063】
CPU負荷計測部43は、一定間隔でCPU使用率(CPU負荷)を計測する。例えば、CPU負荷計測部43は、CPUクロックダウン状態において、20ms間隔でCPU11のCPU使用率を20秒間計測する。これにより、CPU負荷計測部43は、CPUクロックダウン状態における1000サンプルのCPU使用率(CPU負荷)を取得する。
【0064】
同様に、CPU負荷計測部43は、GPUクロックダウン状態において、20ms間隔でCPU11のCPU使用率を20秒間計測する。これにより、CPU負荷計測部43は、GPUクロックダウン状態における1000サンプルのCPU使用率(CPU負荷)を取得する。
【0065】
図4はAI学習モデルの訓練時におけるCPU使用率を例示する図である。
【0066】
この
図4においては、AI学習モデルの訓練に含まれる1つのループにおける、システム全体のCPU使用率,メインスレッドのCPU使用率,サブスレッドのCPU使用率およびアノテーション情報を示す。
【0067】
アノテーション情報は、プログラム上でのループ範囲(ループ開始位置およびループ終了位置)を表す。AI学習モデルの訓練に含まれる1つのループにおいては、GPU12にコマンドを投げるためにCPU使用率が高くなることがわかる。また、1ループの終了付近では、GPU12から応答される演算結果の受信(GPU間通信)を待つために、CPU使用率が低下する。
【0068】
なお、CPU使用率は既知の手法で取得することができ、その説明は省略する。
【0069】
ループ周期推定部44は、AI学習モデル訓練プログラム5における、AI学習モデルの訓練で繰り返し実行されるループの周期(ループ周期)を推定する。
【0070】
ループ周期推定部44は、CPU負荷計測部43によって測定されたCPUクロックダウン状態におけるCPU使用率(CPU負荷)に基づいて、CPUクロックダウン時のAI学習モデル訓練プログラム5のループ周期を算出する。
【0071】
すなわち、ループ周期推定部44は、複数の種類の演算リソース(CPU11とGPU12)のうちCPU11(第1の種類の演算リソース)の動作周波数(CPUクロック)を所定量低下させた時(CPUクロックダウン状態)の機械学習モデルにおけるループ周期を算出する。
【0072】
また、ループ周期推定部44は、CPU負荷計測部43によって測定されたGPUクロックダウン状態におけるCPU使用率(CPU負荷)に基づいて、GPUクロックダウン時のAI学習モデル訓練プログラム5のループ周期を算出する。
【0073】
すなわち、ループ周期推定部44は、複数の種類の演算リソース(CPU11とGPU12)のうちGPU12(第2の種類の演算リソース)の動作周波数(GPUクロック)を所定量低下させた時(GPUクロックダウン状態)の機械学習モデルのループ周期を算出する。
【0074】
図5はAIモデルの訓練時におけるCPU負荷を例示する図である。rnntとはAIモデルの名称である。
【0075】
この
図5において、横軸はサンプル数を示し、縦軸はCPU負荷(rnnt CPU負荷)を示す。
【0076】
AIモデルの訓練は、一般的には、そのほとんどがループでの実行である。ループの1イテレーションの間隔がわかれば、その性能(所要時間)を推定することができる。そして、ループの周期は、CPU負荷の変動周期として現れる。
【0077】
CPU負荷計測部43が一定時間、一定の時間間隔でシステムの負荷をN個計測し、得られた測定サンプルをs1,s2,・・・,sNと表現する。例えば、CPU負荷計測部43が、20ms間隔で20秒間測定し、1000サンプルを取得したとする(この場合、N=1000となる)。
【0078】
ループ周期推定部44は、得られた測定サンプルについてラグkを1からN-1まで変化させながら自己相関係数Rkを取得する。ここで、自己相関係数は以下の式(1)で求められる統計量である。なお、s1,s2,・・・,sNは測定サンプル、Nはサンプルの個数、μはサンプルの平均、σ2はサンプルの分散である。
【0079】
【0080】
ラグkごとに得られた自己相関係数のうち、k>0の範囲で最も大きな係数になるラグを算出する。これをk1とする。ループ周期推定部44は、ループ周期(CPU負荷変動の周期)を以下の式(2)を用いて推定する。
【0081】
ループ周期=k1×(負荷の計測間隔) ・・・(2)
負荷の計測間隔は、上述の例においては20msである。
【0082】
図6はCPUクロックダウンによる周期の変化を示す図である。
【0083】
この
図6においては、AI学習モデル訓練プログラム5の実行中におけるCPU負荷の測定結果に基づいて算出した、ラグと自己相関との関係を、CPUクロックダウン前とCPUクロックダウン後とで比較して示す。
【0084】
この
図6においては、CPUクロックダウン前の動作周波数(3.5GHz)についてのラグと自己相関との関係を実線で示し、CPUクロックダウン後の動作周波数(2.1GHz)についてのラグと自己相関との関係を破線で示している。
【0085】
k=0以外でピークになるところが推定される周期(ループ周期)を表す。この
図6においては、波形が右側にずれることで周期が長くなることを示しており、CPUの動作周波数を2.1GHzに落とすことで周期が長くなっていることがわかる。ループ周期が長くなることで、ループの実行時間が長くなり、処理性能が低下する。
【0086】
そして、ループ周期推定部44は、算出したループ周期に基づいて、性能低下の要因(ボトルネック)となるプロセッサエレメント(ハードウェアエレメント)を特定する。
【0087】
ループ周期推定部44は、CPUクロックダウン時のループ周期と、GPUクロックダウン時のループ周期とを比較し、CPU11とGPU12とのうち、クロックダウン時のループ周期がより長くなるプロセッサエレメントを、性能低下の要因(ボトルネック)であると判断する。性能低下の要因(ボトルネック)であると判断された演算リソースは、改善対象の演算リソースである。
【0088】
すなわち、ループ周期推定部44は、算出したループ周期の比較結果に基づいて、CPU11(第1の種類の演算リソース)とGPU12(第2の種類の演算リソース)とのうちから改善対象の演算リソースを判定する。この際、ループ周期推定部44は、CPU11(第1の種類の演算リソース)とGPU12(第2の種類の演算リソース)とのうち、遅い方のループ周期を求めるために動作周波数を低下させた演算リソースを改善対象の演算リソースと判定する。
【0089】
提示部45は、ループ周期推定部44が性能低下の要因(ボトルネック)であると特定したプロセッサエレメントを提示する。
【0090】
例えば、提示部45は、ボトルネックであると特定したプロセッサエレメントを表す提示情報をユーザに対して出力する。提示部45は、ループ周期推定部44が判定した改善対象の演算リソースを提示情報を用いて提示する。
【0091】
図7は一実施形態に係る情報処理システム1の提示部45が出力する提示情報を例示する図である。
【0092】
この
図7においては、ハードウェアプラットフォーム10にネットワーク等を介して接続された端末装置(図示略)のモニタに表示される表示画面50を示す。表示画面50は、提示部45が出力する提示情報に相当する。
【0093】
この表示画面50においては、コマンド“analyze_training_performance”を実行することで、ボトルネック解析プログラム4sが実行されたことを示している(符号P1参照)。
【0094】
また、表示画面50は、ループ周期推定部44により算出(推定)された、CPUクロックダウン時のループ周期とGPUクロックダウン時のループ周期とを示す(符号P2参照)。
【0095】
この
図7に示す例においては、CPUクロックダウン時のループ周期が600msであり、GPUクロックダウン時のループ周期が540msであることが示されている。
【0096】
さらに、表示画面50は、ボトルネックであると特定したプロセッサエレメントを表すメッセージを示す(符号P3参照)。
【0097】
この
図7に示す例おいては、CPUクロックダウン時のループ周期(600ms)の方がGPUクロックダウン時のループ周期(540ms)よりも長いので、CPU11がボトルネックであることを表すメッセージ文“CPU performance may limit the total performance”が表示されている。
【0098】
表示画面50において、符号P2に示す、ループ周期推定部44により算出(推定)された、CPUクロックダウン時のループ周期とGPUクロックダウン時のループ周期とは、CPU11をボトルネックであると判定した根拠を表し、提示情報の信頼性向上に寄与するものである。
【0099】
なお、この
図7に示す提示情報はあくまで例に過ぎず、提示部45が出力する提示情報は適宜変更して実施することができる。例えば、提示情報に、
図7に例示したもの以外の情報を含んでもよい。また、ループ周期推定部44により算出(推定)された、CPUクロックダウン時のループ周期とGPUクロックダウン時のループ周期を省略してもよい。
【0100】
(B)動作
上述の如く構成された一実施形態に係る情報処理システム1のボトルネック解析部4による処理の概要を、
図8に示すフローチャート(ステップA1~A4)に従って説明する。
【0101】
ステップA1において、ループ周期推定部44が、CPUクロックダウン時のループ周期を計測(算出)する。
【0102】
ステップA2において、ループ周期推定部44が、GPUクロックダウン時のループ周期を計測(算出)する。
【0103】
ステップA3において、ループ周期推定部44が、CPUクロックダウン時のループ周期と、GPUクロックダウン時のループ周期とを比較する。ループ周期推定部44は、クロックダウン時のループ周期がより長くなるプロセッサエレメントを、ボトルネックであると判断する。
【0104】
ステップA4において、提示部45が、ボトルネックであると特定したプロセッサエレメントを表す提示情報をユーザに対して出力する。その後、処理を終了する。
【0105】
なお、この
図8に示すフローチャートにおいて、ステップA1とステップA2の処理順序はこれに限定されるものではなく、適宜変更することができる。すなわち、ステップA2の処理の後にステップA1の処理を行なってもよく、また、ステップA1の処理とステップA2の処理とを並行して実施してもよい。
【0106】
次に、
図8に示したフローチャートのステップA1の処理の詳細を、
図9に示すフローチャート(ステップB1~B5)に従って説明する。
【0107】
ステップB1において、CPU性能制御部41がCPUクロックを一定量(例えば20%)ダウンさせることで、CPUクロックダウン状態を生成する。
【0108】
ステップB2において、CPU負荷計測部43が、CPUクロックダウン時のCPU使用率(CPU負荷)を計測する。
【0109】
ステップB3において、ループ周期推定部44が、CPU負荷計測部43によって計測されたCPU負荷(CPU使用率)に基づいて、AI学習モデル訓練プログラム5のループ周期を推定する。
【0110】
ステップB4において、CPU性能制御部41が、CPU11のCPUクロックダウン状態を、CPUクロックダウン前の状態に戻す。
【0111】
ステップB5において、ループ周期推定部44が、推定したループ周期をメモリ13やストレージ14の所定の記憶領域に記憶させる。その後、処理を終了し、
図8のステップA2に移行する。
【0112】
なお、この
図9に示すフローチャートにおいて、ステップB4の処理順序はステップB3の後に限定されるものではなく、適宜変更することができる。例えば、ステップB2の処理の後にステップB4の処理を行なってもよく、また、ステップB5の処理の後にステップB4の処理を行なってもよい。
【0113】
次に、
図8に示したフローチャートのステップA2の処理の詳細を、
図10に示すフローチャート(ステップC1~C5)に従って説明する。
【0114】
ステップC1において、GPU性能制御部42がGPUクロックを一定量(例えば20%)ダウンさせることで、GPUクロックダウン状態を生成する。
【0115】
ステップC2において、CPU負荷計測部43が、GPUクロックダウン時のCPU使用率(CPU負荷)を計測する。
【0116】
ステップC3において、ループ周期推定部44が、CPU負荷計測部43によって計測されたCPU負荷(CPU使用率)に基づいて、AI学習モデル訓練プログラム5のループ周期を推定する。
【0117】
ステップC4において、CPU性能制御部41が、GPU12のGPUクロックダウン状態を、GPUクロックダウン前の状態に戻す。
【0118】
ステップC5において、ループ周期推定部44が、推定したループ周期をメモリ13やストレージ14の所定の記憶領域に記憶させる。その後、処理を終了し、
図8のステップA3に移行する。
【0119】
なお、この
図10に示すフローチャートにおいて、ステップC4の処理順序はステップC3の後に限定されるものではなく、適宜変更することができる。例えば、ステップC2の処理の後にステップC4の処理を行なってもよく、また、ステップC5の処理の後にステップC4の処理を行なってもよい。
【0120】
次に、一実施形態に係る情報処理システム1におけるループ周期の推定処理を、
図11に示すフローチャート(ステップD1~D5)に従って説明する。この
図11に示す処理は、
図9のステップB2およびB3、ならびに、
図10のステップC2およびC3の処理の詳細な一例である。
【0121】
ステップD1において、CPU負荷計測部43が、一定時間、一定の時間間隔でシステムの負荷を複数(N個)計測する。
【0122】
ステップD2において、ループ周期推定部44が、CPU負荷計測部43によって取得された測定サンプルについてラグkを1からN-1まで変化させながら自己相関係数Rkを取得する。
【0123】
ステップD3において、ループ周期推定部44が、ラグkごとに得られた自己相関係数のうち、k>0の範囲で最も大きな係数になるラグ(k1)を算出する。
【0124】
ステップD4において、ループ周期推定部44が、上記の式(2)を用いて、ループ周期を推定(算出)する。
【0125】
ステップD5において、ループ周期推定部44が、推定したループ周期をメモリ13やストレージ14等の所定の記憶領域に保存する。その後、処理を終了する。
【0126】
(C)効果
このように、本発明の一実施形態としての情報処理システム1によれば、AI学習モデル訓練プログラム5の実行中において、CPU負荷計測部43が、CPU性能制御部41が発生させたCPUクロックダウン状態におけるCPU使用率を測定する。また、CPU負荷計測部43が、GPU性能制御部42が発生させたGPUクロックダウン状態におけるCPU使用率を測定する。
【0127】
また、ループ周期推定部44が、CPUクロックダウン状態におけるCPU使用率に基づいて、CPUクロックダウン時のAI学習モデル訓練プログラム5のループ周期を算出する。さらに、ループ周期推定部44は、測定されたGPUクロックダウン状態におけるCPU使用率に基づいて、GPUクロックダウン時のAI学習モデル訓練プログラム5のループ周期を算出する。
【0128】
そして、ループ周期推定部44は、CPUクロックダウン時のループ周期と、GPUクロックダウン時のループ周期とを比較し、CPU11とGPU12とのうち、クロックダウン時のループ周期がより長くなるプロセッサエレメントを、性能低下の要因(ボトルネック)であると判断する。
【0129】
これにより、AI学習モデル訓練プログラム5の実行に関して、性能低下の要因(ボトルネック)となる演算リソースを容易に特定することができ、AI学習モデル訓練プログラム5の実行させるための最適な計算機構成を構築することができる。これにより、機械学習モデルの訓練効率を向上させることができる。
【0130】
また、提示部45が、ループ周期推定部44がボトルネックであると特定したプロセッサエレメントを表す提示情報をユーザに対して出力する。これにより、ユーザ等がAI学習モデル訓練プログラム5の実行させるための最適な計算機構成を容易に把握することができる。
【0131】
また、クラウド事業者の立場において、クラウド事業者が観測可能なデータ(CPU負荷)を用いて性能低下の要因(ボトルネック)となる演算リソースを、顧客のプログラムに手を入れることなく容易に特定することができるので利便性が高い。また、顧客に対して、ボトルネックとなる演算リソースを提示することで、サービスの付加価値を向上させることができるとともに、顧客満足度を向上させることもできる。
【0132】
ループ周期推定部44が、自己相関係数を用いることで、容易にループ周期を推定することができる。
【0133】
(D)その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0134】
例えば、上述した実施形態においては、CPU11とGPU12との2つのプロセッサエレメント(演算リソース)を備えたハードウェアプラットフォーム10において、CPU11とGPU12とのどちらがボトルネック(改善対象)かを判断しているが、これに限定されるものではない。
【0135】
演算リソースとして、MPU(Micro Processing Unit)やAPU(Accelerated Processing Unit)等のCPUおよびGPU以外の演算リソースを備えてもよい。また、3つ以上の演算リソースを備え、これらの3つ以上の演算リソースの中からボトルネック(改善対象)となる演算リソースを判断してよい。さらに、例えば、ハードウェアプラットフォーム10に、種類の異なる複数のCPU(もしくはGPU)を備え、これらの複数種類のCPU(もしくはGPU)の中からボトルネックかを判断してもよい。
【0136】
さらに、演算エレメント以外のハードウェアエレメントに対して同様の手法を適用することで、ボトルネックとなるハードウェアエレメントを判断してよい。
【0137】
また、上述した実施形態においては、AI学習モデル訓練プログラム5を実行するCPU11がボトルネック解析プログラム4sを実行しているが、これに限定されるものではない。CPU11とは別に用意したプロセッサや、ハードウェアプラットフォーム10とは別に設けたコンピュータに搭載されたプロセッサにボトルネック解析プログラム4sを実行させてもよい。
【0138】
また、上述した実施形態においては、ループ周期推定部44が自己相関係数を用いて、AI学習モデル訓練プログラム5のループ周期を推定しているが、これに限定されるものではない。例えば、フーリエ級数を用いる等、既知の他の手法を用いてループ周期の推定を行なってもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【0139】
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0140】
(付記1)
複数の種類の演算リソースを有する計算機システムにおいて、
前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、
算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する
処理をプロセッサに実行させることを特徴とする制御プログラム。
【0141】
(付記2)
前記改善対象の演算リソースを判定する処理が、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおける前記ループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルの前記ループ周期とのうち、遅い方のループ周期を求めるために動作周波数を低下させた演算リソースを前記改善対象の演算リソースと判定する処理を含む
ことを特徴とする、付記1に記載の制御プログラム。
【0142】
(付記3)
判定した前記改善対象の演算リソースを提示する
処理を前記プロセッサに実行させることを特徴とする付記1または2に記載の制御プログラム。
【0143】
(付記4)
複数の種類の演算リソースを有する計算機システムであって、
前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソーの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、
算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する
処理を実行する制御部を備えることを特徴とする情報処理システム。
【0144】
(付記5)
前記改善対象の演算リソースを判定する処理が、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおける前記ループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルの前記ループ周期とのうち、遅い方のループ周期を求めるために動作周波数を低下させた演算リソースを前記改善対象の演算リソースと判定する処理を含む
ことを特徴とする、付記4に記載の情報処理システム。
【0145】
(付記6)
前記制御部が、
判定した前記改善対象の演算リソースを提示する
処理を実行することを特徴とする付記4または5に記載の情報処理システム。
【0146】
(付記7)
複数の種類の演算リソースを有する計算機システムにおいて、
前記複数の種類の演算リソースを用いた機械学習モデルの訓練の実行中に収集した、前記複数の種類の演算リソースのうち第1の種類の演算リソースの動作周波数を所定量低下させた時のシステム負荷と、前記複数の種類の演算リソースのうち第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記システム負荷とに基づいて、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおけるループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルのループ周期とを算出し、
算出した前記ループ周期の比較結果に基づいて、前記第1の種類の演算リソースと前記第2の種類の演算リソースとのうちから改善対象の演算リソースを判定する
処理をプロセッサが実行することを特徴とする制御方法。
【0147】
(付記8)
前記改善対象の演算リソースを判定する処理が、
前記第1の種類の演算リソースの動作周波数を所定量低下させた時の前記機械学習モデルにおける前記ループ周期と、前記第2の種類の演算リソースの動作周波数を前記所定量低下させた時の前記機械学習モデルの前記ループ周期とのうち、遅い方のループ周期を求めるために動作周波数を低下させた演算リソースを前記改善対象の演算リソースと判定する処理を含む
ことを特徴とする、付記7に記載の制御方法。
【0148】
(付記9)
判定した前記改善対象の演算リソースを提示する
処理を前記プロセッサが実行することを特徴とする付記7または8に記載の制御方法。
【符号の説明】
【0149】
1 情報処理システム
3 ソフトウェアプラットフォーム
4 ボトルネック解析部
4s ボトルネック解析プログラム
5 AI学習モデル訓練プログラム
10 ハードウェアプラットフォーム
11 CPU
12 GPU
13 メモリ
14 ストレージ
15 通信インタフェース
41 CPU性能制御部
42 GPU性能制御部
43 CPU負荷計測部
44 ループ周期推定部
45 提示部
41s CPU性能制御プログラム
42s GPU性能制御プログラム
43s CPU負荷計測プログラム
44s ループ周期推定プログラム
45s 提示プログラム
50 表示画面