(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183835
(43)【公開日】2023-12-28
(54)【発明の名称】実行制御プログラム、実行制御方法及び情報処理装置
(51)【国際特許分類】
G06F 9/445 20180101AFI20231221BHJP
【FI】
G06F9/445 130
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022097605
(22)【出願日】2022-06-16
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】▲濱▼田 祐介
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA32
5B376AC02
5B376DA12
5B376DA28
(57)【要約】
【課題】容易且つ信頼性の高いユーザインターフェース開発を実現する実行制御プログラム、実行制御方法及び情報処理装置を提供する。
【解決手段】複数のユーザインターフェースの間で共通化された複数のMLコマンド2それぞれについて、各MLコマンド2に応じて実行される処理を、複数種類のMLベースクラス3の内の1つ以上のMLベースクラス3の組み合わせで定義した関数定義14を記憶し、MLコマンド2の中の特定コマンドの入力を受け付け、受け付けた特定コマンドに対応する関数定義14で定義されるMLベースクラス3の組み合わせで特定コマンドを処理する処理をコンピュータに実行させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のユーザインターフェースの間で共通化された複数のコマンドそれぞれについて、各前記コマンドに応じて実行される処理を、複数種類のクラスの内の1つ以上のクラスの組み合わせで定義した関数定義を記憶し、
前記コマンドの中の特定コマンドの入力を受け付け、
受け付けた前記特定コマンドに対応する前記関数定義で定義される前記クラスの組み合わせで前記特定コマンドを処理する
処理をコンピュータに実行させることを特徴とする実行制御プログラム。
【請求項2】
前記ユーザインターフェース毎の各前記コマンドに対応する定義を前記関数定義が最下層となるように階層的に配置し、
前記特定コマンドの入力に用いられた前記ユーザインターフェースの定義から順に、1つ下の層の前記特定コマンドに対応する前記ユーザインターフェースの定義を呼び出すことを、前記特定コマンドに対応する前記関数定義を呼び出すまで繰り返して、呼び出した前記関数定義を用いて前記特定コマンドを処理する
ことを前記コンピュータに実行させることを特徴とする請求項1に記載の実行制御プログラム。
【請求項3】
前記コマンド毎に、第1ユーザインターフェースの定義と第2ユーザインターフェースの定義と前記関数定義とを記憶し、
前記特定コマンドの入力に前記第1ユーザインターフェースが用いられた場合、前記特定コマンドに対応する前記第1ユーザインターフェースの定義を用いて前記特定コマンドに対応する前記第2ユーザインターフェースの定義を呼び出し、呼び出した前記第2ユーザインターフェースの定義を用いて前記特定コマンドに対応する前記関数定義を呼び出し、呼び出した前記特定コマンドに対応する前記関数定義を用いて前記特定コマンドを処理し、
前記特定コマンドの入力に前記第2ユーザインターフェースが用いられた場合、前記特定コマンドに対応する前記第2ユーザインターフェースの定義を用いて前記特定コマンドに対応する前記関数定義を呼び出し、呼び出した前記特定コマンドに対応する前記関数定義を用いて前記特定コマンドを処理する
ことを前記コンピュータに実行させることを特徴とする請求項1に記載の実行制御プログラム。
【請求項4】
複数の前記コマンドは、機械学習モデルに関する処理を実行させる命令であることを特徴とする請求項1に記載の実行制御プログラム。
【請求項5】
コンピュータに、
複数のユーザインターフェースの間で共通化された複数のコマンドそれぞれについて、各前記コマンドに応じて実行される処理を、複数種類のクラスの内の1つ以上のクラスの組み合わせで定義した関数定義を記憶させ、
前記コマンドの中の特定コマンドの入力を受け付けさせ、
受け付けた前記特定コマンドに対応する前記関数定義で定義される前記クラスの組み合わせで前記特定コマンドを処理させる
ことを特徴とする実行制御方法。
【請求項6】
複数のユーザインターフェースの間で共通化された複数のコマンドの中の特定コマンドを受け付けるコマンド受付部と、
前記複数のコマンドそれぞれについて、各前記コマンドに応じて実行される処理を、複数種類のクラスの内の1つ以上の前記クラスの組み合わせで定義した関数定義を記憶し、前記コマンド受付部により受け付けられた前記特定コマンドに対応する前記関数定義で定義される前記クラスの組み合わせで前記特定コマンドを処理する関数定義管理部と、
を備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行制御プログラム、実行制御方法及び情報処理装置に関する。
【背景技術】
【0002】
機械学習で使用される機械学習モデルを開発もしくは提供を行う際、一般的に利用されるユーザインターフェースとしては以下のようなものがある。例えば、CLI(Command Line Interface)、関数コール、REST(Representation State Transfer) API(Application Programming Interface)、Web GUI(Graphical User Interface)などが挙げられる。
【0003】
通常、これらのコードは相互に独立しており、利用時のインターフェース要件に応じて、個別に各ユーザインターフェースが作成される。このため、従来は、異なる複数のユーザインターフェースを作成するには、各ユーザフェースについての個別の開発及び作成が行われてきた。
【0004】
なお、機械学習に関する技術として、機械学習モデルにアクセスするための複数のユーザインターフェースを用意して、学習段階においてユーザインターフェースに切り替えながらナビゲーションを実行することを可能とする技術が提案されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、ユーザインターフェース毎に開発及び作成を行う場合、同じ機械学習モデルに対してであっても、複数のユーザインターフェースを実装させるためには、多くの作業工数が発生する。また、様々なユーザインターフェースを個別に作成すると、インターフェース作成時のコード追加により、機械学習モデルの精度を意図せず変えてしまうおそれがある。
【0007】
開示の技術は、上記に鑑みてなされたものであって、容易且つ信頼性の高いユーザインターフェース開発を実現する実行制御プログラム、実行制御方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本願の開示する実行制御プログラム、実行制御方法及び情報処理装置の一つの態様において、以下の処理をコンピュータに実行させる。複数のユーザインターフェースの間で共通化された複数のコマンドそれぞれについて、各前記コマンドに応じて実行される処理を、複数種類のクラスの内の1つ以上のクラスの組み合わせで定義した関数定義を記憶する処理。前記コマンドの中の特定コマンドの入力を受け付ける処理。受け付けた前記特定コマンドに対応する前記関数定義で定義される前記クラスの組み合わせで前記特定コマンドを処理する処理をコンピュータに実行させる処理。
【発明の効果】
【0009】
1つの側面では、本発明は、容易且つ信頼性の高いユーザインターフェース開発を実現することができる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施例に係る実行制御方法の概要を示す図である。
【
図2】
図2は、実施例に係るMLフレームワークが動作する情報処理装置のブロック図である。
【
図3】
図3は、MLコマンドとMLベースクラスとの参照関係の一例を示す図である。
【
図4】
図4は、ユーザインターフェース毎の定義例を示す図である。
【
図5】
図5は、‘train’を実行するためのMLフレームワークの一例を示す図である。
【
図6】
図6は、実施例に係るMLフレームワークによるMLコマンドの実行処理のフローチャートである。
【
図7】
図7は、情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示する実行制御プログラム、実行制御方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する実行制御プログラム、実行制御方法及び情報処理装置が限定されるものではない。
【実施例0012】
図1は、実施例に係る実行制御方法の概要を示す図である。
図1を参照して、機械学習に関するML(Machine Learning)コマンド2が入力された場合の処理の概要について説明する。
図1に示すMLフレームワーク10は、機械学習モデルを利用する利用者やアプリケーションから機械学習に関する命令であるMLコマンド2の入力を受けて、機械学習モデルの学習処理、機械学習モデルを用いた推論処理、及び推論結果を用いた評価処理を実行するフレームワークである。本実施例では、機械学習モデルを開発又は使用するユーザインターフェースとして、WebGUI、REST API、CLI及び関数コールの4つを用いる。
【0013】
MLコマンド2は、複数のユーザインターフェースで共通化された機械学習に関する処理を実行するためのコマンドである。例えば、MLコマンド2には、data、sess、train、pred、eval、test、tune、sum及びloadなどが存在する。
【0014】
‘data’は、生データからモデル学習用のデータセットを生成するコマンドであり、学習、推論及び評価のいずれの段階でも使用される。‘sess’は、モデル学習のための1ハイパーパラメータに対応する試行単位であるセッションを生成するコマンドである。‘train’は、‘data’により生成されたデータセット及び‘sess’により生成されたセッションを使用して機械学習モデルの学習を実行するコマンドである。‘pred’は、‘train’により学習が行われた機械学習モデルを用いて推論を実行するコマンドである。‘load’は、学習済の機械学習モデルをメモリにロードするコマンドである。ここで機械学習モデルはサイズが大きい場合が多く、使用時毎に読み込むと処理速度に影響が大きいため、MLフレームワーク10は、‘load’を用いて予め機械学習モデルをメモリに読み込んでおくことが多い。‘tune’は、ハイパーパラメータを自動生成しながら複数の学習(‘train’)を実行するコマンドである。‘eval’は、学習済みの機械学習モデルが推論したデータを正解データと比較し、評価結果を出力するコマンドである。‘test’は、‘pred’と‘eval’とを連続して実行するコマンドである。‘sum’は、‘eval’の結果、すなわち機械学習モデルの評価結果をサマライズして、一覧出力するコマンドである。
【0015】
MLベースクラス3は、機械学習モデルを用いたアプリケーションの開発者により作成される。MLベースクラス3は、予め入出力が定義されたクラスである。MLベースクラス3は、使用する4つのユーザインターフェースで共通化されたコマンドそれぞれについて、コマンドに応じて実行される処理を1つ以上の組合せにより定義する。すなわち、開発者は、使用する4つのユーザインターフェースで共通化された各コマンドで使用可能なように各MLベースクラス3を設計し作成する。そして、MLベースクラス3は、MLフレームワーク10にインポートされる。このインポートにより、各関数定義14と関数定義14それぞれにおいて使用される1つ又は複数のMLベースクラス3とが関連付けられる。
【0016】
例えば、本実施例では、MLコマンド2で使用されるMLベースクラス3として、DataGenerator、Trainer、Evaluator、Predicror、Model、Summarizer及びTunerなどが存在する。
【0017】
‘DataGenerator’は、生データから機械学習モデルの学習用のデータセットを生成するためのクラスである。‘Trainer’は、モデルの学習を実行するためのクラスである。‘Evaluator’は、学習済みの機械学習モデルが推論したデータを正解データと比較し、評価結果を出力するためのクラスである。‘Predicror’は、学習済みの機械学習モデルを用いて推論を実行するためのクラスである。‘Model’は、モデルアーキテクチャのクラスである。ただし、このモデルアーキテクチャは、回帰モデルやCNN(Convolutional Neural Network)モデルなどであり、ハイパーパラメータや学習済みパラメータは含まない。‘Summarizer’は、‘eval’の結果である機械学習モデルの評価結果をパースして、サマリを返すためのクラスである。‘Tuner’は、学習用のハイパーパラメータを自動生成させるためのクラスである。
【0018】
MLフレームワーク10は、WebGUI定義11、REST API定義12、CLI定義13及び関数定義14を有する。MLフレームワーク10は、
図1に示すような階層化された設計で、WebGUI定義11、REST API定義12、CLI定義13及び関数定義14を使用する。すなわち、ユーザインターフェース毎の各MLコマンド2に対応する定義が、関数定義14が最下層となるように階層的に配置される。また、MLフレームワーク10は、図示しないが、機械学習モデルによる処理に用いる学習データ及び推論データの生成に用いる生データを保持する。
【0019】
WebGUI定義11とは、WebGUIによりMLコマンド2が入力された場合に実行する処理を定義する情報である。同様に、REST API定義12は、REST APIによりMLコマンド2が入力された場合に実行する処理を定義する情報である。CLI定義13は、CLIによりMLコマンド2が入力された場合に実行する処理を定義する情報である。関数定義14は、4つのユーザインターフェースで共通化されたMLコマンド2に対応する関数を定義する情報である。関数定義14は、複数のユーザインターフェースの間で共通化された複数のMLコマンド2それぞれについて、各MLコマンド2に応じて実行される処理を、1つ以上のMLベースクラス3を用いて実行する関数を定義する。
【0020】
図1のように階層化した設計の場合、WebGUI定義11は、少なくともREST APIを呼び出すためのインターフェースを備えていればよい。また、REST API定義12及びCLI定義13は、少なくとも関数定義14のラッパーコード、すなわち関数定義14を呼び出す処理として定義されればよい。
【0021】
次に、MLフレームワーク10によるMLコマンド2の処理について説明する。MLフレームワーク10は、WebGUI、REST API、CLI又は関数コールのいずれかのユーザインターフェースによるMLコマンド2の入力を受ける。このMLフレームワーク10が受け付けるMLコマンド2が、「特定コマンド」の一例にあたる。
【0022】
WebGUIによるMLコマンド2の入力を受けた場合、MLフレームワーク10は、WebGUI定義11にしたがって受信したMLコマンド2に対応するREST APIのMLコマンド2を実行するREST API定義12を呼び出す。次に、MLフレームワーク10は、呼び出したREST API定義12にしたがって、MLコマンド2に対応する関数定義14を呼び出す。次に、MLフレームワーク10は、呼び出した関数定義14にしたがい、指定された各種データに対して関数定義14で指定されたMLベースクラス3を用いて処理を実行する。その後、MLフレームワーク10は、得られた処理結果をMLコマンド2の入力元に返すなどして、入力されたMLコマンド2に対する応答を行う。
【0023】
この、WebGUIが第1ユーザインターフェースの一例にあたり、WebGUI定義11が、第1ユーザインターフェースの定義の一例にあたる。また、REST APIが第2ユーザインターフェースの一例にあたり、REST API定義12が、第2ユーザインターフェースの定義の一例にあたる。すなわち、MLフレームワーク10は、特定コマンドの入力に第1ユーザインターフェースが用いられた場合、特定コマンドに対応する第1ユーザインターフェースの定義を用いて特定コマンドに対応する第2ユーザインターフェースの定義を呼出す。次に、MLフレームワーク10は、呼び出した第2ユーザインターフェースの定義を用いて特定コマンドに対応する関数定義14を呼び出し、呼び出した特定コマンドに対応する関数定義14を用いて特定コマンドを処理する。
【0024】
REST APIによるMLコマンド2の入力を受けた場合、MLフレームワーク10は、REST API定義12にしたがって入力されたREST APIのMLコマンド2に対応する関数定義14を呼び出す。次に、MLフレームワーク10は、呼び出した関数定義14にしたがい、指定された各種データに対して関数定義14で指定されたMLベースクラス3用いて処理を実行する。その後、MLフレームワーク10は、得られた処理結果をMLコマンド2の入力元に返すなどして、入力されたMLコマンド2に対する応答を行う。
【0025】
すなわち、MLフレームワーク10は、特定コマンドの入力に第2ユーザインターフェースが用いられた場合、特定コマンドに対応する第2ユーザインターフェースの定義を用いて特定コマンドに対応する関数定義14を呼び出し、呼び出した特定コマンドに対応する関数定義14を用いて特定コマンドを処理する。
【0026】
CLIによるMLコマンド2の入力を受けた場合、MLフレームワーク10は、CLI定義13にしたがって入力されたCLIのMLコマンド2に対応する関数定義14を呼び出す。次に、MLフレームワーク10は、呼び出した関数定義14にしたがい、指定された各種データに対して関数定義14で指定されたMLベースクラス3用いて処理を実行する。その後、MLフレームワーク10は、得られた処理結果をMLコマンド2の入力元に返すなどして、入力されたMLコマンド2に対する応答を行う。
【0027】
関数コールによるMLコマンド2の入力を受けた場合、MLフレームワーク10は、関数コールで指定された関数定義14にしたがい、指定された各種データに対して関数定義14で指定されたMLベースクラス3用いて処理を実行する。その後、MLフレームワーク10は、得られた処理結果をMLコマンド2の入力元に返すなどして、入力されたMLコマンド2に対する応答を行う。
【0028】
このように、MLフレームワーク10は、特定コマンドの入力に用いられたユーザインターフェースの定義から順に、1つ下の層の特定コマンドに対応するユーザインターフェースの定義を呼び出すことを、特定コマンドに対応する関数定義14を呼び出すまで繰り返して、呼び出した関数定義14を用いて前記特定コマンドを処理する。
【0029】
すなわち、本実施例に係るMLフレームワーク10は、WebGUI定義11、REST API定義12及びCLI定義13として次の階層を呼び出す最低限の定義さえ規定されていればよい。このため、開発者は、各インターフェースの共通化されたMLコマンド2に対応するようにMLベースクラス3の設計及び開発を行なえばよく、基本的に4つのインターフェースを独立に開発しなくてもよい。
【0030】
ただし、MLフレームワーク10は、個別要件に応じて各ユーザインターフェースの定義を上書きや追加などによりカスタマイズできる機能を開発者に提供してもよい。
【0031】
図2は、実施例に係るMLフレームワークが動作する情報処理装置のブロック図である。次に、
図2を参照して、情報処理装置1について機能毎に説明する。
図2に示すように、情報処理装置1は、WebGUI制御部101、REST API制御部102、CLI制御部103、関数コール制御部104、関数定義管理部105、MLコマンド受付部106、モデル格納部107及びインポート処理部108を有する。WebGUI制御部101、REST API制御部102、CLI制御部103、関数コール制御部104、関数定義管理部105及びMLコマンド受付部106は、MLフレームワーク10により実現される。
【0032】
インポート処理部108は、MLベースクラス3及び機械学習モデル4の入力を受ける。そして、インポート処理部108は、MLベースクラス3をインポートして、各MLコマンド2の実行に用いるMLベースクラス3の参照関係を関数定義管理部105に記憶させる。インポート処理部108は、情報処理装置1の外部の装置に配置されてもよい。
【0033】
図3は、MLコマンドとMLベースクラスとの参照関係の一例を示す図である。
図3に示した表110は、横に並ぶ項目がMLコマンド2の種類を表し、縦に並ぶ項目がMLベースクラス3の種類を表す。
【0034】
例えば、MLコマンド2の‘data’は、MLベースクラス3の‘data’を参照する。また、MLコマンド2の‘train’は、MLベースクラス3の‘Model’及び‘Trainer’を参照する。また、MLコマンド2の‘pred’は、MLベースクラス3の‘Model’及び‘Predictor’を参照する。また、MLコマンド2の‘eval’は、MLベースクラス3の‘Evaluator’を参照する。また、MLコマンド2の‘test’は、MLベースクラス3の‘Predictor’及び‘Evaluator’を参照する。また、MLコマンド2の‘tune’は、MLベースクラス3の‘Model’、‘Trainer’及び‘Tuner’を参照する。また、MLコマンド2の‘sum’は、MLベースクラス3の‘Summarizer’を参照する。また、MLコマンド2の‘load’は、MLベースクラス3の‘Model’を参照する。
【0035】
また、インポート処理部108は、機械学習モデル4の入力を受ける。そして、インポート処理部108は、モデル格納部107に機械学習モデル4を格納させる。
【0036】
モデル格納部107は、機械学習モデル4の入力をインポート処理部108から受ける。そして、モデル格納部107は、機械学習モデル4を格納する。その後、モデル格納部107は、関数定義管理部105からの指示にしたがって機械学習モデル4を関数定義管理部105へ渡す。関数定義管理部105によりハイパーパラメータの更新が行われると、モデル格納部107は、更新された機械学習モデル4を新たに保持する。学習完了後には、モデル格納部107は、学習済みの機械学習モデル4を保持する。
【0037】
MLコマンド受付部106は、外部の端末装置20から入力されたMLコマンド2を受け付ける。そして、MLコマンド受付部106は、WebGUI、REST API、CLI及び関数コールのいずれを用いてMLコマンド2が入力されたか判定する。
【0038】
WebGUIによりMLコマンド2が入力された場合、MLコマンド受付部106は、受信したMLコマンド2をWebGUI制御部101へ出力する。また、REST APIによりMLコマンド2が入力された場合、MLコマンド受付部106は、受信したMLコマンド2をREST API制御部102へ出力する。また、CLIによりMLコマンド2が入力された場合、MLコマンド受付部106は、受信したMLコマンド2をCLI制御部103へ出力する。また、関数コールによりMLコマンド2が入力された場合、MLコマンド受付部106は、受信したMLコマンド2を関数コール制御部104へ出力する。
【0039】
その後、MLコマンド受付部106は、受け付けたMLコマンド2に対する処理結果を関数定義管理部105から受ける。そして、MLコマンド受付部106は、MLコマンド2に対する応答として、処理結果を端末装置20へ送信する。
【0040】
WebGUI制御部101は、MLコマンド2毎にWebGUI定義11を有する。WebGUI制御部101は、WebGUIにより入力されたMLコマンド2の入力をMLコマンド受付部106から受ける。そして、WebGUI制御部101は、取得したMLコマンド2のWebGUI定義11にしたがって、取得したMLコマンド2に対応するREST API定義12を特定する。次に、WebGUI制御部101は、特定したMLコマンド2の実行をREST API制御部102に指示する。
【0041】
REST API制御部102は、MLコマンド2毎にREST API定義12を有する。REST API制御部102は、REST APIにより入力されたMLコマンド2の入力をMLコマンド受付部106から受ける。そして、REST API制御部102は、取得したMLコマンド2のREST API定義12にしたがって、取得したMLコマンド2に対応する関数定義14を特定する。次に、REST API制御部102は、特定したMLコマンド2に対応する関数定義14の実行を関数定義管理部105に指示する。
【0042】
また、REST API制御部102は、MLコマンド2の実行の指示をWebGUI制御部101から受ける。そして、REST API制御部102は、指定されたMLコマンド2のREST API定義12にしたがって、取得したMLコマンド2に対応する関数定義14を特定する。次に、REST API制御部102は、特定したMLコマンド2に対応する関数定義14の実行を関数定義管理部105に指示する。
【0043】
CLI制御部103は、MLコマンド2毎にCLI定義13を有する。CLI制御部103は、CLIにより入力されたMLコマンド2の入力をMLコマンド受付部106から受ける。そして、CLI制御部103は、取得したMLコマンド2のCLI定義13にしたがって、取得したMLコマンド2に対応する関数定義14を特定する。次に、CLI制御部103は、特定したMLコマンド2に対応する関数定義14の実行を関数定義管理部105に指示する。
【0044】
関数コール制御部104は、関数コールにより入力されたMLコマンド2の入力をMLコマンド受付部106から受ける。そして、CLI制御部103は、関数コールであるMLコマンド2に対応する関数定義14の実行を関数定義管理部105に指示する。
【0045】
関数定義管理部105は、MLベースクラス3のインポートをインポート処理部108から受ける。そして、関数定義管理部105は、複数のユーザインターフェース間で共通化されたMLコマンド2と各MLコマンド2で参照されるMLベースクラス3とを対応付けて記憶する。
【0046】
関数定義管理部105は、入力されたMLコマンド2に対応する関数定義14の実行の指示を、REST API制御部102、CLI制御部103又は関数コール制御部104から受ける。そして、関数定義管理部105は、指示されたMLコマンド2に対応する関数定義14を実行する。具体的には、関数定義管理部105は、指定された関数定義14に含まれるMLベースクラス3を定義にしたがって実行する。この際、関数定義管理部105は、実行するMLベースクラス3に応じて、モデル格納部107から機械学習モデル4を取得して処理を実行したり、生データを用いて処理を実行したりする。その後、関数定義管理部105は、処理結果をMLコマンド受付部106へ出力する。また、機械学習モデル4を更新した場合、関数定義管理部105は、更新した機械学習モデル4をモデル格納部107へ出力して格納させる。
【0047】
図4は、ユーザインターフェース毎の定義例を示す図である。ここでは、MLコマンド2として‘train’が入力された場合で説明する。
【0048】
外部の端末装置20において、矢印Pで示すように操作者がマウスなどを用いて学習実行のGUIボタンを押下すると、端末装置20は、‘train’をMLフレームワーク10へ入力する。
【0049】
入力されたユーザインターフェースに応じて、MLフレームワーク10は、各ユーザインターフェースの‘train’の定義を呼び出す。
【0050】
例えば、WebGUIによりMLコマンド2が入力された場合、‘train’のWebGUI定義11が呼び出される。そして、‘train’のWebGUI定義11は、REST API定義12のPOSTというメソッドを呼び出し、‘train’をリソースとして指定する。REST API定義12は、‘train’をリソースとするPOSTのメソッドの呼び出しにより、‘train’の関数定義14を呼び出す。呼び出された‘train’の関数定義14は、クラス定義15で定義された‘Trainer’のMLベースクラス3を用いてmodelをdataで学習させる。Trainer’のMLベースクラス3のクラス定義15には、modelとして指定された機械学習モデル4をdataとして指定された学習データで学習するためのコードが記述される。これにより、MLフレームワーク10は、指定された学習データを用いて機械学習モデル4の学習を行うことができる。
【0051】
また、REST APIによりMLコマンド2が入力された場合、‘train’のREST API定義12が直接呼び出される。‘train’のREST API定義12は、‘train’の関数定義14を呼び出す。呼び出された‘train’の関数定義14は、クラス定義15で定義された‘Trainer’のMLベースクラス3を用いてmodelをdataで学習させる。これにより、MLフレームワーク10は、指定された学習データを用いて機械学習モデル4の学習を行うことができる。
【0052】
またCLIによりMLコマンド2が入力された場合、‘train’のCLI定義13が直接呼び出される。‘train’のCLI定義13は、‘train’の関数定義14を呼び出す。呼び出された‘train’の関数定義14は、クラス定義15で定義された‘Trainer’のMLベースクラス3を用いてmodelをdataで学習させる。これにより、MLフレームワーク10は、指定された学習データを用いて機械学習モデル4の学習を行うことができる。
【0053】
また関数コールによりMLコマンド2が入力された場合、‘train’の関数定義14が直接呼び出される。呼び出された‘train’の関数定義14は、クラス定義15で定義された‘Trainer’のMLベースクラス3を用いてmodelをdataで学習させる。これにより、MLフレームワーク10は、指定された学習データを用いて機械学習モデル4の学習を行うことができる。
【0054】
図5は、‘train’を実行するためのMLフレームワークの一例を示す図である。次に、
図5を参照して、‘train’を実行するためのMLフレームワーク10の一例について説明する。
【0055】
図5で示されるMLフレームワーク10は、範囲201のシンタックスにより、セッションを取得する。次に、範囲202のシンタックスにより、MLフレームワーク10は、学習実行のための入出力フォルダを設定する。次に、範囲203のシンタックスにより、MLフレームワーク10は、セッションを指定する。これにより、MLフレームワーク10は、複数あるハイパーパラメータやコードからこの学習に使用するものを一意に指定する。次に、範囲204のシンタックスにより、MLフレームワーク10は、指定されたハイパーパラメータに基づき、機械学習モデル4を生成する。そして、MLフレームワーク10は、生成した機械学習モデル4を使用して学習を実行する。その後、範囲205のシンタックスにより、MLフレームワーク10は、セッションを解除して、最良の結果として得られる機械学習モデル4のスコア値及びそのスコア値のIDをMLコマンド2の入力元へ返す。
【0056】
図6は、実施例に係るMLフレームワークによるMLコマンドの実行処理のフローチャートである。次に、
図6を参照して、本実施例に係るMLフレームワーク10によるMLコマンド2の実行処理の流れを説明する。
【0057】
MLコマンド受付部106は、端末装置20からのMLコマンド2の入力を受け付ける(ステップS101)。
【0058】
次に、MLコマンド受付部106は、MLコマンド2の入力がWebGUIによる入力か否かを判定する(ステップS102)。
【0059】
WebGUIによる入力の場合(ステップS102:肯定)、MLコマンド受付部106は、WebGUI制御部101へMLコマンド2を出力する。WebGUI制御部101は、入力されたMLコマンド2のWebGUI定義11にしたがって、MLコマンド2に対応するREST API定義12を呼び出す(ステップS103)。その後、MLコマンド2の実行処理はステップS105へ進む。
【0060】
これに対して、WebGUIによる入力でない場合(ステップS102:否定)、MLコマンド受付部106は、MLコマンド2の入力がREST APIによる入力か否かを判定する(ステップS104)。
【0061】
REST APIによる入力の場合(ステップS104:肯定)、MLコマンド受付部106は、REST API制御部102へMLコマンド2を出力して、MLコマンド2に対応するREST API定義12を呼び出す。そして、MLコマンド2の実行処理はステップS105へ進む。
【0062】
MLコマンド2に対応するREST API定義12が呼び出されると、REST API制御部102は、呼び出されたREST API定義12にしたがって、MLコマンド2に対応する関数定義14を呼び出す(ステップS105)。その後、MLコマンド2の実行処理は、ステップS109へ進む。
【0063】
これに対して、REST APIによる入力でない場合(ステップS104:否定)、MLコマンド受付部106は、MLコマンド2の入力がCLIによる入力か否かを判定する(ステップS106)。
【0064】
CLIによる入力の場合(ステップS106:肯定)、MLコマンド受付部106は、CLI制御部103へMLコマンド2を出力して、MLコマンド2に対応するCLI定義13を呼び出す。MLコマンド2に対応するCLI定義13が呼び出されると、CLI制御部103は、呼び出されたCLI定義13にしたがって、MLコマンド2に対応する関数定義14を呼び出す(ステップS107)。その後、MLコマンド2の実行処理は、ステップS109へ進む。
【0065】
これに対して、CLIによる入力でない場合(ステップS106:否定)、MLコマンド受付部106は、受信した関数コールを関数コール制御部104へ出力する。関数コール制御部104は、入力された関数コールに対応する関数定義14を呼び出す(ステップS108)。その後、MLコマンド2の実行処理は、ステップS109へ進む。
【0066】
関数定義14が呼び出されると、関数定義管理部105は、呼び出された関数定義14で参照されるMLベースクラス3を特定する(ステップS109)。
【0067】
その後、関数定義管理部105は、特定したMLベースクラス3を用いてMLコマンド2に対応する関数定義管理部105で指定された処理を実行する(ステップS110)。
【0068】
その後、MLコマンド2で指定された処理が完了すると、関数定義管理部105は、処理結果を端末装置20へ送信して処理結果を応答する(ステップS111)。
【0069】
以上に説明したように、本実施例に係る情報処理装置で動作するMLフレームワークは、複数のユーザインターフェース間で共通化されたMLコマンドを使用する。そして、MLフレームワーク、共通化されたMLコマンドで使用されるように設計及び開発された複数のMLベースクラスを保持する。そして、MLフレームワークは、ユーザインターフェースの定義を階層化して有し、そして、共通化されたMLコマンドの入力を受けると、MLフレームワークは、入力されたユーザインターフェースのMLコマンドに対応する定義を用いて下の階層のユーザインターフェースを呼び出す処理を繰り返す。最終的に、最下層の関数定義を呼び出し、呼び出した関数定義で参照されるMLベースクラスを用いて処理を実行して、応答を返す。
【0070】
このように、本実施例に係る情報処理装置は、階層化されたユーザインターフェース毎の定義において単に下層のユーザインターフェースの定義を呼び出しさえすればよい。このような単純な仮想のユーザインターフェースの呼び出しを繰り返すことで、情報処理装置は、最終的にはどのユーザインターフェースを用いたMLコマンドの入力であっても、同じ関数定義を用いて処理を実行することができる。そのため、様々な機械学習タスクに適用する場合に、毎回個別のユーザインターフェースの実装を避けることができる。また、個別のユーザインターフェースの開発を省略することで、機械学習モデルの精度の意図しない変更を回避することができる。したがって、容易且つ信頼性の高いユーザインターフェース開発を実現することが可能となる。
【0071】
(ハードウェア構成)
図7は、情報処理装置のハードウェア構成図である。次に、
図7を参照して、情報処理装置1の各機能を実現するためのハードウェア構成の一例について説明する。
【0072】
図7に示すように、情報処理装置1は、例えば、CPU(Central Processing Unit)91、メモリ92、ハードディスク93、ネットワークインターフェース94を有する。CPU91は、バスを介して、メモリ92、ハードディスク93及びネットワークインターフェース94に接続される。
【0073】
ネットワークインターフェース94は、情報処理装置1と外部装置との間の通信のためのインターフェースである。ネットワークインターフェース94は、例えば、端末装置20とCPU91との間の通信を中継する。
【0074】
ハードディスク93は、補助記憶装置である。ハードディスク93は、
図1に例示したモデル格納部107の機能を実現する。また、ハードディスク93は、以下に説明するプログラムを含む各種プログラムを格納する。例えば、ハードディスク93は、
図1に例示した、WebGUI制御部101、REST API制御部102、CLI制御部103、関数コール制御部104及び関数定義管理部105の機能を実現するためのプログラムを格納する。また、ハードディスク93は、
図1に例示した、MLコマンド受付部106及びインポート処理部108の機能を実現するためのプログラムを格納する。
【0075】
メモリ92は、主記憶装置である。メモリ92は、例えば、DRAM(Dynamic Random Access Memory)を用いることができる。
【0076】
CPU91は、ハードディスク93から各種プログラムを読み出して、メモリ92に展開して実行する。これにより、CPU91は、
図1に例示した、WebGUI制御部101、REST API制御部102、CLI制御部103、関数コール制御部104、関数定義管理部105、MLコマンド受付部106及びインポート処理部108の機能を実現する。