(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024106633
(43)【公開日】2024-08-08
(54)【発明の名称】機械学習のライフサイクルの管理方法、および機械学習のライフサイクルの管理システム
(51)【国際特許分類】
G06N 20/00 20190101AFI20240801BHJP
G06F 8/70 20180101ALI20240801BHJP
G06F 8/60 20180101ALI20240801BHJP
【FI】
G06N20/00
G06F8/70
G06F8/60
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023011003
(22)【出願日】2023-01-27
(71)【出願人】
【識別番号】000213297
【氏名又は名称】中部電力株式会社
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】岡本 雄司
(72)【発明者】
【氏名】追良瀬 利也
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AB01
5B376DA21
(57)【要約】
【課題】MLOpsパイプラインの全てに精通することなくその一部の開発に容易に携われるようにする機械学習のライフサイクルの管理方法を提供する。
【解決手段】ITプラットフォーム10の記憶装置14の第1リモートリポジトリRR1には、MLOpsパイプライン定義ファイル20が記憶されている。MLOpsパイプライン定義ファイル20は、機械学習の開発のライフサイクルの各工程を自動化するパイプラインに関するソースコードを有する。記憶装置14の第2リモートリポジトリRR2には、編集ファイル30が記憶されている。編集ファイル30は、機械学習モデルの学習を自動化するためのソースコードを有する。ユーザ端末60は、MLOpsパイプライン定義ファイル20に触れることなく、編集ファイル30を編集可能である。
【選択図】
図1
【特許請求の範囲】
【請求項1】
定義ファイルに規定されたパイプラインを実行装置に実行させるパイプライン実行工程を有し、
前記定義ファイルは、
記憶装置に記憶されて且つ、
機械学習のライフサイクルを自動化する前記パイプラインを規定するファイルを含んで且つ、前記ライフサイクルの一部を構成する工程を自動化するための前記パイプラインを規定する第2定義ファイルと、前記ライフサイクルの他の工程を自動化するための前記パイプラインを規定する第1定義ファイルとを含み、
前記第2定義ファイルを、前記第1定義ファイルに含まれるソースコードを把握することなく編集可能とした機械学習のライフサイクルの管理方法。
【請求項2】
前記記憶装置は、第1記憶装置であり、
前記第1記憶装置に記憶された前記定義ファイルのうちの前記第2定義ファイルを、前記第1記憶装置とは別の第2記憶装置に選択的に複製する複製工程と、
前記複製された前記第2定義ファイルを編集する編集工程と、
前記編集した前記第2定義ファイルを前記第1記憶装置にアップロードするアップロード工程と、を有する請求項1記載の機械学習のライフサイクルの管理方法。
【請求項3】
前記第2定義ファイルには、機械学習モデルの学習を実行するためのソースコードが含まれる請求項1記載の機械学習のライフサイクルの管理方法。
【請求項4】
前記第1定義ファイルには、検査工程を自動化するためのファイルが含まれ、
前記検査工程は、前記機械学習モデルの学習を実行するためのソースコードを検査する工程である請求項3記載の機械学習のライフサイクルの管理方法。
【請求項5】
前記第2定義ファイルには、前記検査工程におけるテスト項目を設定する設定ファイルが含まれ、
前記実行工程は、前記設定ファイルによって設定された項目に従って前記機械学習のパイプラインを前記実行装置に実行させる工程である請求項4記載の機械学習のライフサイクルの管理方法。
【請求項6】
前記第1定義ファイルに対するアクセス権限と、前記第2定義ファイルに対するアクセス権限とが異なっている請求項1記載の機械学習のライフサイクルの管理方法。
【請求項7】
前記第1定義ファイルは、第1リモートリポジトリに保存され、
前記第2定義ファイルは、第2リモートリポジトリに保存されている請求項6記載の機械学習のライフサイクルの管理方法。
【請求項8】
前記第2定義ファイルが前記第2リモートリポジトリに更新されることに応じて、前記機械学習のパイプラインが実行される請求項7記載の機械学習のライフサイクルの管理方法。
【請求項9】
前記ライフサイクルには、機械学習モデルの学習を実行するためのソースコードをデプロイするデプロイ工程が含まれ、
前記第1定義ファイルには、前記デプロイ工程を自動化するためのファイルが含まれる請求項1記載の機械学習のライフサイクルの管理方法。
【請求項10】
前記第2定義ファイルには、前記機械学習の前記パイプラインの実行のトリガに対して、実行される工程を定めるための設定ファイルが含まれ、
前記設定ファイルによって設定された項目に従って前記機械学習の前記パイプラインを実行する請求項1記載の機械学習のライフサイクルの管理方法。
【請求項11】
前記第2定義ファイルに対するアクセス権限を有して且つ前記第1定義ファイルに対するアクセス権限を有しない場合であっても、前記機械学習のパイプラインが実行される場合に、前記パイプラインの進捗状況に関する情報を提供する請求項6記載の機械学習のライフサイクルの管理方法。
【請求項12】
前記第2定義ファイルに対するアクセス権限を有して且つ前記第1定義ファイルに対するアクセス権限を有しない場合であっても、前記機械学習のパイプラインが実行される場合に、前記パイプラインのログに関する情報を提供する請求項6記載の機械学習のライフサイクルの管理方法。
【請求項13】
実行装置と、記憶装置と、を備え、
前記実行装置は、定義ファイルに規定されたパイプラインを実行するパイプライン実行処理を実行するように構成され、
前記記憶装置には、前記定義ファイルが記憶され、
前記定義ファイルは、機械学習のライフサイクルを自動化する前記パイプラインを規定するファイルを含んで且つ、前記ライフサイクルの一部を構成する工程を自動化するための前記パイプラインを規定する第2定義ファイルと、前記ライフサイクルの他の工程を自動化するための前記パイプラインを規定する第1定義ファイルとを含み、
前記第2定義ファイルを、前記第1定義ファイルに含まれるソースコードを把握することなく編集可能とした機械学習のライフサイクルの管理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習のライフサイクルの管理方法、および機械学習のライフサイクルの管理システムに関する。
【背景技術】
【0002】
たとえば下記非特許文献1には、機械学習モデルのライフサイクルには、機械学習モデルを開発する工程以外に様々な工程が存在することが記載されている。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Hidden Technical Debt in Machine Learning Systems(D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov, Todd Phillips著:NeurIPS2015)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したように、機械学習モデルのライフサイクルが様々な工程を有することから、たとえば機械学習モデルの開発者等、ライフサイクルの一部の工程を自動化するパイプラインの開発者にとって、全ての工程のパイプラインを把握することは困難である。
【課題を解決するための手段】
【0005】
以下、上記課題を解決するための手段およびその作用効果について記載する。
[1]定義ファイルに規定されたパイプラインを実行装置に実行させるパイプライン実行工程を有し、前記定義ファイルは、記憶装置に記憶されて且つ、機械学習のライフサイクルを自動化する前記パイプラインを規定するファイルを含んで且つ、前記ライフサイクルの一部を構成する工程を自動化するための前記パイプラインを規定する第2定義ファイルと、前記ライフサイクルの他の工程を自動化するための前記パイプラインを規定する第1定義ファイルとを含み、前記第2定義ファイルを、前記第1定義ファイルに含まれるソースコードを把握することなく編集可能とした機械学習のライフサイクルの管理方法である。
【0006】
上記方法では、第1定義ファイルに含まれるソースコードを把握することなく、第2定義ファイルを編集可能とする。したがって、第2定義ファイルの編集者は、機械学習のライフサイクルを自動化する一連のパイプラインの全てに精通しているわけではなくても、第2定義ファイルによって規定されるパイプラインを開発することができる。
【0007】
[2]前記記憶装置は、第1記憶装置であり、前記第1記憶装置に記憶された前記定義ファイルのうちの前記第2定義ファイルを、前記第1記憶装置とは別の第2記憶装置に選択的に複製する複製工程と、前記複製された前記第2定義ファイルを編集する編集工程と、前記編集した前記第2定義ファイルを前記第1記憶装置にアップロードするアップロード工程と、を有する上記1記載の機械学習のライフサイクルの管理方法である。
【0008】
上記方法では、編集対象である第2定義ファイルのコピーが第2記憶装置に選択的に複製される。すなわち、第1定義ファイルについては複製されることなく、第2定義ファイルが第2記憶装置に複製される。そして、第2記憶装置に記憶された第2定義ファイルが編集された後、第1記憶装置にアップロードされる。これにより、編集対象となる第2定義ファイルを編集用の記憶装置である第2記憶装置に選択的に記憶させて作業することができる。
【0009】
[3]前記第2定義ファイルには、機械学習モデルの学習を実行するためのソースコードが含まれる上記1または2記載の機械学習のライフサイクルの管理方法である。
上記方法では、機械学習モデルの学習を実行するソースコードを、第1定義ファイルのソースコードを把握することなく編集可能である。機械学習のライフサイクルは、機械学習モデルの学習のみならず、様々な工程を有する。そしてそれらすべてについて精通することは、機械学習モデルの開発者にとって負担となる。この点、上記方法では、第1定義ファイルによって定義されるパイプラインについて把握することなく、第2定義ファイルを編集できることから、機械学習モデルの開発に集中することができる。
【0010】
[4]前記第1定義ファイルには、検査工程を自動化するためのファイルが含まれ、前記検査工程は、前記機械学習モデルの学習を実行するためのソースコードを検査する工程である上記3記載の機械学習のライフサイクルの管理方法である。
【0011】
上記方法では、機械学習モデルの開発者が、検査工程を自動化するパイプラインについて把握していなくても、同開発者が検査工程を利用することができる。
[5]前記第2定義ファイルには、前記検査工程におけるテスト項目を設定する設定ファイルが含まれ、前記実行工程は、前記設定ファイルによって設定された項目に従って前記機械学習のパイプラインを前記実行装置に実行させる工程である上記4記載の機械学習のライフサイクルの管理方法である。
【0012】
上記方法では、機械学習モデルの開発者が設定ファイルを設定することによって、検査工程におけるテスト項目を選択できる。したがって、機械学習モデルの開発者が、機械学習モデルの学習を実行するソースコードに、所定の項目のテストに合格しないソースコードを意図的に含める場合、その項目を検査工程から外すことができる。
【0013】
[6]前記第1定義ファイルに対するアクセス権限と、前記第2定義ファイルに対するアクセス権限とが異なっている上記1~5のいずれか1つに記載の機械学習のライフサイクルの管理方法である。
【0014】
上記方法では、機械学習モデルの開発者がアクセス権限を有する定義ファイルを第2定義ファイルに制限することができる。そのため、機械学習モデルの開発者が第1定義ファイルによって規定される工程に精通していないにもかかわらず、同開発者によって第1定義ファイルが更新されることを抑制できる。
【0015】
[7]前記第1定義ファイルは、第1リモートリポジトリに保存され、前記第2定義ファイルは、第2リモートリポジトリに保存されている上記6記載の機械学習のライフサイクルの管理方法である。
【0016】
リモートリポジトリを利用する場合、1つのリモートリポジトリに、第1定義ファイルと第2定義ファイルとを記憶すると、第2定義ファイルにアクセス権限を有する者は、第1定義ファイルにもアクセス権限を有する設定となりやすい。そのため、上記方法では、第1定義ファイルを記憶するリモートリポジトリと、第2定義ファイルを記憶するリモートリポジトリとを、互いに異なるリモートリポジトリとした。これにより、第1定義ファイルに対するアクセス権限と、第2定義ファイルに対するアクセス権限とを異ならせることができる。
【0017】
[8]前記第2定義ファイルが前記第2リモートリポジトリに更新されることに応じて、前記機械学習のパイプラインが実行される上記7記載の機械学習のライフサイクルの管理方法である。
【0018】
上記方法によれば、機械学習モデルの開発者が、第2定義ファイルを編集後、第2リモートリポジトリにプッシュすることによって、パイプラインが実行される。これにより、開発されたモデルを簡易にライフサイクルに載せることができる。
【0019】
[9]前記ライフサイクルには、機械学習モデルの学習を実行するためのソースコードをデプロイするデプロイ工程が含まれ、前記第1定義ファイルには、前記デプロイ工程を自動化するためのファイルが含まれる上記1~8のいずれか1つに記載の機械学習のライフサイクルの管理方法である。
【0020】
上記方法では、第2定義ファイルの編集者が、デプロイ工程について精通していなくてもデプロイ工程を利用できる。
[10]前記第2定義ファイルには、前記機械学習の前記パイプラインの実行のトリガに対して、実行される工程を定めるための設定ファイルが含まれ、前記設定ファイルによって設定された項目に従って前記機械学習の前記パイプラインを実行する上記1~9のいずれか1つに記載の機械学習のライフサイクルの管理方法である。
【0021】
上記方法では、第2定義ファイルの編集者が定義ファイルを設定することによって、実行される工程を定めることができる。そのため、編集した第2定義ファイルとの相性が悪い工程を除くことなどが可能となる。
【0022】
[11]前記第2定義ファイルに対するアクセス権限を有して且つ前記第1定義ファイルに対するアクセス権限を有しない場合であっても、前記機械学習のパイプラインが実行される場合に、前記パイプラインの進捗状況に関する情報を提供する上記1~10のいずれか1つに記載の機械学習のライフサイクルの管理方法である。
【0023】
上記方法では、第2定義ファイルの編集者がパイプラインの進捗状況を把握できる。
[12]前記第2定義ファイルに対するアクセス権限を有して且つ前記第1定義ファイルに対するアクセス権限を有しない場合であっても、前記機械学習のパイプラインが実行される場合に、前記パイプラインのログに関する情報を提供する上記6記載の機械学習のライフサイクルの管理方法である。
【0024】
上記方法では、第2定義ファイルの編集者がパイプラインのログを把握できる。
[13]実行装置と、記憶装置と、を備え、前記実行装置は、定義ファイルに規定されたパイプラインを実行するパイプライン実行処理を実行するように構成され、前記記憶装置には、前記定義ファイルが記憶され、前記定義ファイルは、機械学習のライフサイクルを自動化する前記パイプラインを規定するファイルを含んで且つ、前記ライフサイクルの一部を構成する工程を自動化するための前記パイプラインを規定する第2定義ファイルと、前記ライフサイクルの他の工程を自動化するための前記パイプラインを規定する第1定義ファイルとを含み、前記第2定義ファイルを、前記第1定義ファイルに含まれるソースコードを把握することなく編集可能とした機械学習のライフサイクルの管理システムである。
【0025】
上記構成では、第1定義ファイルに含まれるソースコードを把握することなく、第2定義ファイルを編集可能とする。したがって、第2定義ファイルの編集者は、機械学習のライフサイクルを自動化する一連のパイプラインの全てに精通しているわけではなくても、第2定義ファイルによって規定されるパイプラインを開発することができる。
【0026】
なお、上記構成は、上記2~12の事項によって特定されてもよい。
【図面の簡単な説明】
【0027】
【
図1】一実施形態にかかる機械学習のライフサイクルの管理方法を実現するシステムの構成を示すブロック図である。
【
図2】ユーザ端末が実行する処理の手順を示す流れ図である。
【
図3】ITプラットフォームが実行する処理の手順を示す流れ図である。
【
図4】上記ITプラットフォームが実行する処理の一部の詳細な手順を示す流れ図である。
【発明を実施するための形態】
【0028】
以下、一実施形態について図面を参照しつつ説明する。
「システム構成」
図1に、本実施形態にかかるシステムの構成を示す。
【0029】
図1に示すITプラットフォーム10は、たとえばインターネット等のネットワークを介して各端末が要求するタスクを実行するサービスを提供する。ITプラットフォーム10は、PU12と、記憶装置14とを備える。PU12は、CPU、GPU、およびTPU等のソフトウェア処理装置である。記憶装置14は、電気的に書き換え可能な不揮発性メモリ、およびディスク媒体等の記憶媒体であってよい。
【0030】
記憶装置14は、第1リモートリポジトリRR1および第2リモートリポジトリRR2に対応する記憶領域を有する。第1リモートリポジトリRR1には、MLOpsパイプライン定義ファイル20が記憶されている。MLOpsパイプライン定義ファイル20は、MLOpsパイプラインを定義するファイルである。MLOpsパイプラインは、機械学習の開発のライフサイクルの各工程を自動化するパイプラインに関するソースコードを有する。ライフサイクルは、データ処理工程、モデル学習工程、モデル評価工程、デプロイ工程、およびモデル監視工程を含む。
【0031】
データ処理工程は、モデル学習工程、およびモデル評価工程を自動で実行するためのソースコードのテスト工程を含む。テスト工程は、ソースコードの品質をチェックする工程と、ユニットテストを実行する工程とを含む。ソースコードの品質チェック工程を自動化するパイプラインは、継続インテグレーション、すなわち、CI(Continuous Integration)である。
【0032】
デプロイ工程を自動化するパイプラインは、継続デプロイ、すなわち、CD(Continuous Deploy)である。
モデル監視工程は、機械学習モデルを実際に利用しているときにその精度が要求通りかなど、機械学習モデルの性能を監視する工程である。
【0033】
第2リモートリポジトリRR2には、編集ファイル30と、設定ファイル32とが記憶されている。
編集ファイル30は、MLOpsのモデル学習工程、およびモデル評価工程を実行するためのソースコードを含む。モデル学習工程を実行するためのソースコードには、データを選択してモデルに入力する処理を実行するソースコードが含まれる。なお、モデルに入力するデータ自体は、ITプラットフォームの外に存在する。上述のデータを選択してモデルに入力する処理を実行するソースコードは、外部からデータを選択的に取得してモデルに入力する処理を実行するソースコードである。また、モデル学習を実行するためのソースコードには、モデルのパラメータを更新する処理を実行するソースコードが含まれる。また、モデル学習を実行するためのソースコードには、モデルのアーキテクチャを規定するためのソースコードが含まれる。なお、モデルのパラメータ自体は、第2リモートリポジトリRR2には記憶されていない。上述のアーキテクチャを規定するためのソースコードには、パラメータを取得する処理を実行するソースコードが含まれる。なお、アーキテクチャを規定するソースコードは、たとえば第1レイヤが畳み込み層であるアーキテクチャの場合、畳み込みに用いる特徴マップを規定するパラメータを取得する処理を定めるソースコードを含む。また、このソースコードは、同パラメータとの結合演算をするデータを取得するソースコードを含む。また、このソースコードは、上記結合演算を実行するソースコードを含む。
【0034】
モデル評価を実行するためのソースコードには、最新のモデルと従来のモデルとの性能比較を実行するソースコードが含まれる。
ちなみに、MLOpsパイプライン定義ファイル20には、データ処理工程のパイプラインの実行後にモデル学習工程のパイプラインに移行するソースコードが含まれる。また、MLOpsパイプライン定義ファイル20には、モデル学習工程のパイプラインの実行後にモデル評価工程のパイプラインに移行するソースコードが含まれる。また、MLOpsパイプライン定義ファイル20には、モデル評価工程のパイプラインの実行後にデプロイ工程のパイプラインに移行するソースコードが含まれる。すなわち、MLOpsパイプライン定義ファイル20は、一連の工程を自動化するパイプラインを規定するものである。編集ファイル30は、MLOpsパイプライン定義ファイル20が規定するパイプラインの一部の詳細を規定するファイルである。
【0035】
設定ファイル32は、MLOpsのパイプラインを実行する際に実際に実行する工程を指定するためのファイルである。具体的には、設定ファイル32には、たとえばCIパイプラインにおけるソースコードの品質チェック項目が列挙されている。そして、それら各項目について、実行するか否かを選択可能となっている。またたとえば、設定ファイル32には、CIパイプラインのユニットテストにおけるチェック項目が列挙されている。そして、それら各項目について、実行するか否かを選択可能となっている。
【0036】
記憶装置14には、第1リモートリポジトリRR1および第2リモートリポジトリRR2とは別の領域に、上位プログラム40および設定ファイル42が記憶されている。
上位プログラム40は、MLOpsパイプライン定義ファイル20に従って、MLOpsのパイプラインをPU12に実行させる指令が含まれている。設定ファイル42は、MLOpsのパイプラインの実行条件等を設定するファイルである。
【0037】
管理者端末50は、MLOpsのパイプラインの管理者の端末である。管理者端末50は、PU52および記憶装置54を備える。記憶装置54は、第1ローカルリポジトリLR1を有する。第1ローカルリポジトリLR1は、管理者が第1リモートリポジトリRR1内のデータを管理者端末50内においてダウンロードする領域である。なお、管理者端末50には、第2リモートリポジトリRR2内のデータをダウンロードすることも可能である。
【0038】
ユーザ端末60は、機械学習モデルを開発するユーザの端末である。ユーザ端末60は、PU62および記憶装置64を備える。記憶装置64は、第2ローカルリポジトリLR2を有する。第2ローカルリポジトリLR2は、ユーザが第2リモートリポジトリRR2内のデータをユーザ端末60内においてダウンロードする領域である。
【0039】
上述のように、MLOpsのパイプラインを定義する定義ファイルは、第1リモートリポジトリRR1および第2リモートリポジトリRR2に分散して記憶されている。これは、第1リモートリポジトリRR1に記憶されたファイルと、第2リモートリポジトリRR2に記憶されたファイルと、でアクセス権限を異ならせるための設定である。すなわち、本実施形態では、機械学習モデルのユーザは、第2リモートリポジトリRR2にアクセス権限を有するものの、第1リモートリポジトリRR1にアクセス権限を有しない。
【0040】
「ユーザ端末の処理」
図2に、ユーザ端末60が実行する処理の手順を示す。
図2に示す処理は、たとえば、ユーザ端末60が備える記憶装置64に記憶されたプログラムをユーザ端末60が備えるPU62が実行することによって実現される。なお、以下では、先頭に「S」が付与された数字によって、各処理のステップ番号を表現する。
【0041】
図2に示す一連の処理において、ユーザ端末60に識別記号またはパスワードを入力することによって、PU62は、ITプラットフォーム10にログインする(S10)。次に、PU62は、第2ローカルリポジトリLR2に第2リモートリポジトリRR2のファイルを複製する(S12)。このファイルには、編集ファイル30および設定ファイル32が含まれる。S12の処理は、ユーザがユーザ端末60のマンマシンインターフェースを操作することに応じて実行される処理である。
【0042】
次に、PU62は、編集ファイル30を編集する(S14)。S14の処理は、ユーザがユーザ端末60のマンマシンインターフェースを操作することによって実現される。ユーザは、マンマシンインターフェースを操作することによって、たとえば、機械学習のモデルの新たなアーキテクチャを設計する。またたとえば、ユーザは、マンマシンインターフェースを操作することによって、機械学習モデルの学習に際してのパラメータの更新の仕方を定める学習率を指定する。またたとえば、ユーザは、マンマシンインターフェースを操作することによって、機械学習モデルの学習回数を指定する。S14の処理は、PU62が、マンマシンインターフェースの操作に応じて編集ファイル30を編集する処理である。
【0043】
次にPU62は、設定ファイル32を設定する(S16)。S16の処理は、ユーザがユーザ端末60のマンマシンインターフェースを操作することに応じてPU62が設定ファイル32を設定する処理である。たとえば、開発したソースコードが、所定のソースコードの品質チェックを通らないことが予めわかっているソースコードである場合、ユーザは、設定ファイル32の設定によって、所定のソースコードの品質チェックを実行しないように指定する。
【0044】
次にPU62は、ユーザによるマンマシンインターフェースの操作に応じて、第2ローカルリポジトリLR2内のファイルをコミットする(S18)。そしてPU62は、コミットしたファイルを、第2リモートリポジトリRR2にプッシュする(S20)。
【0045】
なお、ユーザ端末60は、S20の処理を完了する場合、
図2に示す一連の処理を一旦終了する。
「ITプラットフォーム10の処理」
図3に、ITプラットフォーム10によって実行される、MLOpsのパイプラインの実行に関する処理の手順を示す。
図3に示す一連の処理は、上位プログラム40をPU12がたとえば所定周期で繰り返し実行することによって実現される。
【0046】
図3に示す一連の処理において、PU12は、まず、第2リモートリポジトリRR2にファイルがプッシュされたか否かを判定する(S30)。PU12は、プッシュされたと判定する場合(S30:YES)、プッシュされたファイルが他のファイルと整合するか否かのチェックをする(S32)。PU12は、整合すると判定する場合(S34:YES)、MLOpsの一連のパイプラインを実行する際に実行すべき項目をチェックすべく、設定ファイル32を読み込む(S36)。そしてPU12は、今回実行するパイプラインを設定する(S38)。そして、PU12は、S38の処理において設定されたパイプラインを実行する(S40)。なお、S34の処理において肯定判定される場合にパイプラインを実行するのは、設定ファイル42に、パイプラインの実行条件として、S42の処理において肯定判定される旨の条件が設定されているためである。
【0047】
PU12は、パイプラインの実行に伴って記憶装置14にログを記憶する(S42)。このログは、ユーザからの要求に応じてPU12によりユーザ端末60に提供される。また、PU12は、パイプラインの実行に伴って、進捗状況に関する情報を出力する(S44)。ここで、PU12は、たとえばユーザ端末60に進捗状況に関する情報を出力する。
【0048】
なお、PU12はS44の処理を完了する場合と、S30,S34の処理において否定判定する場合と、には、
図3に示す一連の処理を一旦終了する。
「パイプラインの詳細」
図4に、S40の処理の詳細な手順を示す。
【0049】
図4に示す一連の処理においては、まずPU12は、コード品質チェックのうちの設定ファイル32によって実行することが選択されている項目に該当するチェックを実行する(S50)。そしてPU12は、コード品質チェックの結果を表示する(S52)。S52の処理は、PU12が、コード品質チェックの結果を示すデータをユーザ端末60に出力する処理とすればよい。これにより、ユーザ端末60の表示装置にコード品質チェックの結果を表示できる。
【0050】
次にPU12は、ユニットテストのうちの設定ファイル32によって実行することが選択されている項目に該当するテストを実行する(S54)。そしてPU12は、ユニットテストの結果を表示する(S56)。S56の処理は、PU12が、ユニットテストの結果を示すデータをユーザ端末60に出力する処理とすればよい。これにより、ユーザ端末60の表示装置にユニットテストの結果を表示できる。
【0051】
PU12は、S50,S54の処理の結果が、OKであるか否かを判定する(S58)。PU12は、OKであると判定する場合(S58:YES)、機械学習モデルの学習に用いるデータセットを準備する(S60)。また、PU12は、学習に用いる計算機を準備する(S62)。なお、
図1には、ITプラットフォーム10の計算機を簡易的にPU12と記載している。ただし実際には、PU12は、複数であり得る。その場合、S62の処理は、学習に用いるPUを準備する処理となる。
【0052】
次にPU12は、モデル学習を実行する(S64)。すなわち、PU12は、規定されたアーキテクチャに従ってパラメータと入力データとの合成演算を実行することによって、モデルの出力を算出する。そしてPU12は、モデルの出力と目標値との差を縮めるようにパラメータを更新する。なお、PU12は、編集ファイル30に定義されている終了条件を満たす場合、学習を終了する。
【0053】
次にPU12は、モデルを評価する(S66)。すなわち、PU12は、今回プッシュされたファイルによって規定されるモデルの性能と、それ以前に用いられていたモデルの性能とを比較する。
【0054】
そしてPU12は、S66の処理において精度の高かったモデルを利用するモデルとして登録する(S68)。
次にPU12は、モデル学習、モデル評価の処理がOKであるか否かを判定する(S70)。PU12は、たとえば、登録されたモデルが新しいモデルであることを条件にOKと判定する。
【0055】
そしてPU12は、登録したモデルをデプロイする(S72)。なお、S68の処理において従来のモデルが登録される場合には、すでにデプロイされていることから、S70の処理において否定判定される。
【0056】
そして、PU12は、モデル監視の工程を開始する(S74)。
PU12は、S74の処理を完了する場合と、S58,S70の処理において否定判定する場合と、には、
図3のS40の処理を完了する。
【0057】
「本実施形態の作用および効果」
機械学習モデルの開発者であるユーザは、ITプラットフォーム10にログインすると、第2リモートリポジトリRR2に記憶されている編集ファイル30を第2ローカルリポジトリLR2にダウンロードする。そして、ユーザは、編集ファイル30のコピーを編集することによって、たとえば、新たなモデルを開発する。また、ユーザは、編集ファイル30のコピーを編集することによって、たとえば、モデルの学習の実行方法を定義する。ユーザは、編集ファイル30を編集すると、編集したファイルを、第2リモートリポジトリRR2にプッシュする。
【0058】
ITプラットフォーム10のPU12は、ファイルがプッシュされたことに応じて、MLOpsのパイプラインを実行する。すなわち、PU12は、第1リモートリポジトリRR1に記憶されたMLOpsパイプライン定義ファイル20に従ってパイプラインを実行する。MLOpsパイプライン定義ファイル20は、MLOpsのパイプラインを定義するものである。ここで、モデル学習のパイプラインについては、編集ファイル30の内容に従って学習をすることが規定されている。PU12は、第1リモートリポジトリRR1および第2リモートリポジトリRR2の双方のファイルを参照しつつ、MLOpsのパイプラインを実行する。これにより、CIパイプライン、モデル学習のパイプライン、モデル評価のパイプライン、CDパイプライン等の一連のパイプラインを実行できる。
【0059】
この一連の流れにおいて、ユーザは、MLOpsパイプライン定義ファイル20のソースコードを把握していない。にもかかわらず、ユーザは、機械学習モデルの開発、学習手法の設定等を行って且つ、それに従って一連のパイプラインを実行させることができる。したがって、ユーザが機械学習のライフサイクルの全ての工程を把握することなく、機械学習モデルを開発できる。したがって、ユーザは、機械学習モデルの開発に専念できる。
【0060】
さらに、ユーザが編集した機械学習モデルをアップロードすることにより、MLOpsの一連のパイプラインが実行される。したがって、ユーザが機械学習のライフサイクルの全ての工程を自動化するソースコードについては把握していなくても、ライフサイクルの全ての工程が実行されるときの状況を把握できる。換言すれば、機械学習モデルの開発者であるユーザは、MLOpsのパイプラインのユーザとなることができる。
【0061】
<対応関係>
上記実施形態における事項と、上記「課題を解決するための手段」の欄に記載した事項との対応関係は、次の通りである。以下では、「課題を解決するための手段」の欄に記載した解決手段の番号毎に、対応関係を示している。[1,3]実行装置は、PU12に対応する。記憶装置は、記憶装置14に対応する。第1定義ファイルは、MLOpsパイプライン定義ファイル20に対応する。第2定義ファイルは、編集ファイル30に対応する。第1定義ファイルに含まれるソースコードは、MLOpsパイプラインを実行するためのソースコードに対応する。実行工程は、PU12にS40の処理を実行させる工程に対応する。[2]第2記憶装置は、記憶装置64に対応する。複製工程は、S12の処理を実行する工程に対応する。編集工程は、S14の処理を実行する工程に対応する。アップロード工程は、S20の処理を実行する工程に対応する。[4]検査工程は、S50~S56の処理を実行する工程に対応する。[5,10]設定ファイルは、設定ファイル32に対応する。「設定ファイルによって設定された項目に従って機械学習のパイプラインを実行する」ことは、S38の処理に従ってS40の処理を実行することに対応する。[6]ユーザが、第2リモートリポジトリRR2をプルできるものの、第1リモートリポジトリRR1にはプルできないことに対応する。[7]第1リモートリポジトリは、第1リモートリポジトリRR1に対応する。第2リモートリポジトリは、第2リモートリポジトリRR2に対応する。[8]S30の処理において肯定判定されることに基づき、PU12がS40の処理を実行することに対応する。[9]デプロイ工程は、S72の処理を実行する工程に対応する。[11]S44の処理に対応する。[12]S42の処理に対応する。[13]実行装置は、PU12に対応する。記憶装置は、記憶装置14に対応する。第1定義ファイルは、MLOpsパイプライン定義ファイル20に対応する。第2定義ファイルは、編集ファイル30に対応する。第1定義ファイルに含まれるソースコードは、MLOpsパイプラインを実行するためのソースコードに対応する。実行処理は、S40の処理に対応する。
【0062】
<その他の実施形態>
なお、本実施形態は、以下のように変更して実施することができる。本実施形態および以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【0063】
「定義ファイルについて」
・編集ファイル30が、モデル学習工程、およびモデル評価工程を実行するためのソースコードを含むことは必須ではない。たとえば、編集ファイル30が、モデル学習工程を実行するためのソースコードを含むものの、モデル評価工程を実行するためのソースコードを含まなくてもよい。またたとえば、編集ファイル30が、モデル監視の工程を実行するためのパイプラインのソースコードを含んでもよい。
【0064】
「機械学習のパイプラインの実行条件について」
・機械学習のパイプラインの実行条件は、第2リモートリポジトリPR2にファイルがプッシュされて且つ、プッシュされたファイルが他のファイルと整合すると判定される旨の条件に限らない。たとえば、機械学習のパイプラインの実行条件は、第2リモートリポジトリPR2にファイルがプッシュされる旨の条件であってもよい。またたとえば、機械学習のパイプラインの実行条件では、編集したファイルを第2リモートリポジトリPR2の所定のブランチにマージさせた旨の条件であってもよい。またたとえば、機械学習のパイプラインの実行条件は、S18の処理が実行された旨の条件であってもよい。要は、第2リモートリポジトリPR2が更新される旨の条件であればよい。
【0065】
「リモートリポジトリ」
・MLOpsのパイプラインを実行するうえでの処理を定義する定義ファイルが記憶されているリモートリポジトリとしては、第1リモートリポジトリRR1および第2リモートリポジトリRR2の2つに限らない。たとえば3つ以上のリモートリポジトリを利用してもよい。これにより、機械学習のライフサイクルの工程を定義する定義ファイルの様々な部分について、局所的に編集可能なユーザを複数定義できる。
【0066】
「ログの提供について」
・上記実施形態では、パイプラインの実行に伴うログの記録およびユーザへの提供が上位プログラム40によって規定されることとしたが、これに限らない。たとえばMLOpsパイプライン定義ファイル20によって規定してもよい。
【0067】
「進捗状況の提供について」
・上記実施形態では、パイプラインの実行に伴う進捗状況のユーザへの提供が上位プログラム40によって規定されることとしたが、これに限らない。たとえばMLOpsパイプライン定義ファイル20によって規定してもよい。
【0068】
「第1記憶装置、第2記憶装置」
・編集ファイル30を編集するときに利用する記憶装置と、パイプラインが実行されるときに同パイプラインを規定する定義ファイルが記憶されている記憶装置とが別であることは必須ではない。換言すれば、第1記憶装置および第2記憶装置を有することは必須ではない。たとえば、ユーザ端末60から記憶装置14に記憶された編集ファイル30を編集するようにしてもよい。これは、リモートリポジトリとローカルリポジトリとを利用することなく編集ファイル30を編集する手法でもある。
【0069】
「実行装置について」
・実行装置としては、ソフトウェア処理を実行するものに限らない。たとえば、上記実施形態において実行される処理の少なくとも一部を実行するたとえばASIC等の専用のハードウェア回路を備えてもよい。すなわち、実行装置は、以下の(a)~(c)のいずれかの構成を備える処理回路を含んでいればよい。(a)上記処理の全てを、プログラムに従って実行する処理装置と、プログラムを記憶する記憶装置等のプログラム格納装置とを備える処理回路。(b)上記処理の一部をプログラムに従って実行する処理装置およびプログラム格納装置と、残りの処理を実行する専用のハードウェア回路とを備える処理回路。(c)上記処理の全てを実行する専用のハードウェア回路を備える処理回路。ここで、処理装置およびプログラム格納装置を備えたソフトウェア実行装置は、複数であってもよい。また、専用のハードウェア回路は複数であってもよい。
【符号の説明】
【0070】
10…ITプラットフォーム
14,54,64…記憶装置
50…管理者端末
60…ユーザ端末