IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2023-147236説明により強化された機械学習パイプライン
<>
  • 特開-説明により強化された機械学習パイプライン 図1
  • 特開-説明により強化された機械学習パイプライン 図2
  • 特開-説明により強化された機械学習パイプライン 図3A
  • 特開-説明により強化された機械学習パイプライン 図3B
  • 特開-説明により強化された機械学習パイプライン 図4
  • 特開-説明により強化された機械学習パイプライン 図5
  • 特開-説明により強化された機械学習パイプライン 図6
  • 特開-説明により強化された機械学習パイプライン 図7
  • 特開-説明により強化された機械学習パイプライン 図8
  • 特開-説明により強化された機械学習パイプライン 図9
  • 特開-説明により強化された機械学習パイプライン 図10
  • 特開-説明により強化された機械学習パイプライン 図11
  • 特開-説明により強化された機械学習パイプライン 図12
  • 特開-説明により強化された機械学習パイプライン 図13
  • 特開-説明により強化された機械学習パイプライン 図14
  • 特開-説明により強化された機械学習パイプライン 図15
  • 特開-説明により強化された機械学習パイプライン 図16
  • 特開-説明により強化された機械学習パイプライン 図17
  • 特開-説明により強化された機械学習パイプライン 図18
  • 特開-説明により強化された機械学習パイプライン 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023147236
(43)【公開日】2023-10-12
(54)【発明の名称】説明により強化された機械学習パイプライン
(51)【国際特許分類】
   G06N 20/00 20190101AFI20231004BHJP
【FI】
G06N20/00
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023044863
(22)【出願日】2023-03-22
(31)【優先権主張番号】17/707,847
(32)【優先日】2022-03-29
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】サハ・リポン ケー.
(72)【発明者】
【氏名】プラサド・ムクル アール.
(57)【要約】      (修正有)
【課題】説明による機械学習パイプラインの強化の方法を提供する。
【解決手段】方法は、新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき新しいMLパイプライン内の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、所与の機能ブロックを組み合わせて記述する入力可能部分及び静的テキスト部分を含むパラメトリックテンプレートを取得することと、新しいMLパイプラインを生成するための要求を受け取ることと、MLパイプラインスケルトンモデルに基づき新しいMLパイプラインをポピュレートする機能ブロックを決定することと、機能ブロックをもたらす意思決定条件を抽出することと、パラメトリックテンプレートを用いて機能ブロックの説明を生成することと、生成された説明により機能ブロックを含む新しいMLパイプラインをインスタンス化することと、を含む。
【選択図】図13
【特許請求の範囲】
【請求項1】
新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき前記新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、
複数のパラメトリックテンプレートを取得することであり、前記複数のパラメトリックテンプレートの夫々は、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、ことと、
前記データセットに基づき前記新しいMLパイプラインを生成するための要求を受け取ることと、
前記訓練済みMLパイプラインスケルトンモデルに基づき前記新しいMLパイプラインをポピュレートするよう複数の機能ブロックを決定することと、
前記複数の機能ブロックのうちの少なくとも1つをもたらす意思決定条件を抽出することと、
前記複数のパラメトリックテンプレートを用いて前記複数の機能ブロックのうちの前記少なくとも1つの説明を生成することであり、前記1つ以上の入力可能部分のうちの少なくとも1つは、前記複数の機能ブロックのうちの前記少なくとも1つをもたらす前記意思決定条件に基づき埋められる、ことと、
生成された前記説明により前記複数の機能ブロックを含む前記新しいMLパイプラインをインスタンス化することと
を有する方法。
【請求項2】
前記複数の機能ブロックの間の依存関係を決定することと、
前記依存関係に基づき前記新しいMLパイプライン内の機能ブロックの順序に関する説明を生成することと
を更に有する請求項1に記載の方法。
【請求項3】
前記依存関係を決定することは、前記新しいMLパイプライン内の前記データセットのデータフローモデルを用いて前記複数の機能ブロックの非巡回グラフを構成することを有する、
請求項2に記載の方法。
【請求項4】
前記複数の機能ブロックを決定することは、前記データセットのメタ特徴に基づき使用すべき複数のモデルからMLモデルを決定することを含む、
請求項1に記載の方法。
【請求項5】
前記MLモデルに関する前記説明を生成することは、前記複数のモデルからの前記MLモデルの決定に最も影響を及ぼした前記データセットの前記メタ特徴のうちの少なくとも1つを識別することを含む、
請求項4に記載の方法。
【請求項6】
所与の機能ブロックについて前記説明を生成することは、
決定木モデルの根から前記所与の機能ブロックを含めるとの決定に対応するリーフまでの前記決定木モデル内のパスをトラバースすることと、
前記データセットのメタ特徴に基づきなされた前記決定木モデルに沿った決定を集めることと、
集められた前記決定、前記メタ特徴、又はその両方に基づき前記所与の機能ブロックに対応する所与のパラメトリックテンプレートの前記1つ以上の入力可能部分をポピュレートすることと
を含む、
請求項1に記載の方法。
【請求項7】
前記入力可能部分をポピュレートすることは、前記所与の機能ブロックをホストしているサートパーティソースから得られたデータを適用することを含む、
請求項6に記載の方法。
【請求項8】
所与の機能ブロックについて前記説明を生成することは、前記所与の機能ブロックに代わるものを提案することを含む、
請求項1に記載の方法。
【請求項9】
前記複数の機能ブロックを決定することは、前記所与の機能ブロックに対して重複する機能を実行する第2機能ブロックを除くことを含み、
前記代わるものは、除かれた前記第2機能ブロックである、
請求項8に記載の方法。
【請求項10】
1つ以上のプロセッサによって実行される場合に、システムに、
新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき前記新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、
複数のパラメトリックテンプレートを取得することであり、前記複数のパラメトリックテンプレートの夫々は、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、ことと、
前記データセットに基づき前記新しいMLパイプラインを生成するための要求を受け取ることと、
前記訓練済みMLパイプラインスケルトンモデルに基づき前記新しいMLパイプラインをポピュレートするよう複数の機能ブロックを決定することと、
前記複数の機能ブロックのうちの少なくとも1つをもたらす意思決定条件を抽出することと、
前記複数のパラメトリックテンプレートを用いて前記複数の機能ブロックのうちの前記少なくとも1つの説明を生成することであり、前記1つ以上の入力可能部分のうちの少なくとも1つは、前記複数の機能ブロックのうちの前記少なくとも1つをもたらす前記意思決定条件に基づき埋められる、ことと、
生成された前記説明により前記複数の機能ブロックを含む前記新しいMLパイプラインをインスタンス化することと
を有する動作を実行させる命令を含む1つ以上の非一時的なコンピュータ可読媒体。
【請求項11】
前記動作は、
前記複数の機能ブロックの間の依存関係を決定することと、
前記依存関係に基づき前記新しいMLパイプライン内の機能ブロックの順序に関する説明を生成することと
を更に有する、
請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項12】
前記依存関係を決定することは、前記新しいMLパイプライン内の前記データセットのデータフローモデルを用いて前記複数の機能ブロックの非巡回グラフを構成することを有する、
請求項11に記載の非一時的なコンピュータ可読媒体。
【請求項13】
前記複数の機能ブロックを決定することは、前記データセットのメタ特徴に基づき使用すべき複数のモデルからMLモデルを決定することを含む、
請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項14】
前記MLモデルに関する前記説明を生成することは、前記複数のモデルからの前記MLモデルの決定に最も影響を及ぼした前記データセットの前記メタ特徴のうちの少なくとも1つを識別することを含む、
請求項13に記載の非一時的なコンピュータ可読媒体。
【請求項15】
所与の機能ブロックについて前記説明を生成することは、
決定木モデルの根から前記所与の機能ブロックを含めるとの決定に対応するリーフまでの前記決定木モデル内のパスをトラバースすることと、
前記データセットのメタ特徴に基づきなされた前記決定木モデルに沿った決定を集めることと、
集められた前記決定、前記メタ特徴、又はその両方に基づき前記所与の機能ブロックに対応する所与のパラメトリックテンプレートの前記1つ以上の入力可能部分をポピュレートすることと
を含む、
請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項16】
前記入力可能部分をポピュレートすることは、前記所与の機能ブロックをホストしているサートパーティソースから得られたデータを適用することを含む、
請求項15に記載の非一時的なコンピュータ可読媒体。
【請求項17】
所与の機能ブロックについて前記説明を生成することは、前記所与の機能ブロックに代わるものを提案することを含む、
請求項10に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記複数の機能ブロックを決定することは、前記所与の機能ブロックに対して重複する機能を実行する第2機能ブロックを除くことを含み、
前記代わるものは、除かれた前記第2機能ブロックである、
請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項19】
1つ以上のプロセッサと、命令を含む1つ以上の非一時的なコンピュータ可読媒体とを有するシステムであって、
前記命令は、前記1つ以上のプロセッサによって実行される場合に、当該システムに、
新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき前記新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、
複数のパラメトリックテンプレートを取得することであり、前記複数のパラメトリックテンプレートの夫々は、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、ことと、
前記データセットに基づき前記新しいMLパイプラインを生成するための要求を受け取ることと、
前記訓練済みMLパイプラインスケルトンモデルに基づき前記新しいMLパイプラインをポピュレートするよう複数の機能ブロックを決定することと、
前記複数の機能ブロックのうちの少なくとも1つをもたらす意思決定条件を抽出することと、
前記複数のパラメトリックテンプレートを用いて前記複数の機能ブロックのうちの前記少なくとも1つの説明を生成することであり、前記1つ以上の入力可能部分のうちの少なくとも1つは、前記複数の機能ブロックのうちの前記少なくとも1つをもたらす前記意思決定条件に基づき埋められる、ことと、
生成された前記説明により前記複数の機能ブロックを含む前記新しいMLパイプラインをインスタンス化することと
を有する動作を実行させる、システム。
【請求項20】
前記動作は
前記複数の機能ブロックの間の依存関係を決定することと、
前記依存関係に基づき前記新しいMLパイプライン内の機能ブロックの順序に関する説明を生成することと
を更に有する、
請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示で議論されている実施形態は、説明による機械学習パイプラインの強化に関する。
【背景技術】
【0002】
機械学習(ML)は、進行中の訓練により自動的により正確になる予測を行うよう訓練データにより訓練されるMLモデルを一般的に用いる。MLは、交通予測、ウェブ検索、オンライン不正検知、医療診断、速度認識、電子メールフィルタリング、画像認識、バーチャルパーソナルアシスタント、及び自動翻訳を含むがそれらに限られない多種多様な用途で使用される可能性がある。
【0003】
本開示で請求される対象は、上述されたような環境でしか動作しない実施形態又は如何なる欠点も解決する実施形態に制限されない。むしろ、この背景は、本開示で記載されるいくつかの実施形態が実施される可能性がある技術範囲の一例を説明するためにのみ設けられている。
【発明の概要】
【0004】
実施形態の態様に従って、動作は、新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、パラメトリックテンプレートを取得することであり、パラメトリックテンプレートの夫々が、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、こととを含んでよい。方法はまた、データセットに基づき新しいMLパイプラインを生成するための要求を受け取ることと、訓練済みMLパイプラインスケルトンモデルに基づき新しいMLパイプラインをポピュレートするよう機能ブロックを決定することとを含んでもよい。方法は更に、機能ブロックの少なくとも1つをもたらす意思決定条件を抽出することと、パラメトリックテンプレートを用いて機能ブロックの少なくとも1つの説明を生成することであり、入力可能部分のうちの少なくとも1つが、機能ブロックをもたらす意思決定条件に基づき埋められ得る、こととを含んでもよい。方法はまた、生成された説明により機能ブロックを含む新しいMLパイプラインをインスタンス化することを含んでもよい。
【0005】
実施形態の目的及び利点は、少なくとも、特許請求の範囲で特に指し示されている要素、特徴、及び組み合わせによって、実現及び達成される。
【0006】
上記の概要及び下記の詳細な説明は両方とも、例として与えられており、例示であって、請求されている発明の限定ではない。
【0007】
例となる実施形態は、添付の図面の使用を通じて、更なる特定及び詳細をもって記載及び説明される。
【図面の簡単な説明】
【0008】
図1】既存の機械学習プロジェクトに基づき新しい機械学習プロジェクトを自動的に生成することに関係がある環境の例を表す図である。
図2】精緻化されたパイプラインスケルトンを生成するよう新しい機械学習プロジェクトのパイプラインプロジェクトを変更するために実行され得る動作の組の例を説明する。
図3A】機能ブロックの依存関係を決定する方法の例のフローチャートである。
図3B】データセットの異なるカラムに関して3つの異なる機能ブロックの利用を示し得る表の例を表す。
図4】機能ブロックとデータセット特徴との間の関係マッピングを定義する方法の例のフローチャートである。
図5】パイプラインスケルトンのためのブロックインスタンス化を決定する方法の例のフローチャートである。
図6】パイプラインスケルトンを精緻化されたスケルトンに精緻化する方法の例のフローチャートである。
図7】パイプラインスケルトンを具体的なパイプラインスケルトンにインスタンス化するために実行され得る動作の組の例を説明する。
図8】パイプラインスケルトンのインスタンス化のためのコードスニペットを取得する方法の例のフローチャートである。
図9】パイプラインスケルトンのインスタンス化のためのコードスニペットを取得する方法の他の例のフローチャートである。
図10】パイプラインスケルトンに関して実装されるコードスニペットの適応性を決定する方法の例のフローチャートである。
図11】候補パイプラインの組を生成する方法の例のフローチャートである。
図12】例となるコンピューティングシステムのブロック図を表す。
図13】付随する説明とともにMLパイプラインを生成する方法の例のフローチャートを表す。
図14】付随する説明とともにMLパイプラインを生成するのに備えて情報を収集する方法の例のフローチャートを表す。
図15】スケルトンモデルを訓練する方法の例のフローチャートを表す。
図16】付随する説明とともにMLパイプラインを生成する方法の他の例のフローチャートを表す。
図17】MLパイプライン内の前処理機能ブロックに関連した説明を生成する方法の例のフローチャートを表す。
図18】MLパイプライン内のMLモデルに関連した説明を生成する方法の他の例のフローチャートを表す。
図19】付随する説明とともにMLパイプラインを生成する方法の他の例のフローチャートを表す。
【発明を実施するための形態】
【0009】
本開示で記載されるいくつかの実施形態は、既存の機械学習(ML)プロジェクトを新しいMLプロジェクトに自動的に適応させる方法及びシステムに関係がある。
【0010】
MLがますます一般的になるにつれて、新しいMLプロジェクトを実装するのに利用可能なMLの専門家(例えば、熟練したデータサイエンティスト)の不足がしばしば起きている。様々なオートMLソリューション(例えば、Auto-Sklearn、AutoPandas、など)が、MLの専門家の不足による新しいMLプロジェクトの実装のますます増えている課題を解決するために提案されているが、現在のオートMLソリューションは、安易で部分的な解決法しか提供せず、非専門家が新しいMLプロジェクトを十分に実装することを可能にするは不十分である。更に、既存のMLプロジェクトのオープン・ソース・ソフトウェア(OSS)データベース(例えば、Kaggle、GitHub、など)も、非専門家によって新しいMLプロジェクトを実装するという課題のための他の解決法として提案されているが、これらのデータベースにおいて有用と思われる既存のMLプロジェクトを見つけることは、非専門家にとって困難又は不可能であり得る。更に、たとえ非専門家がこれらのデータベースにおいて有用と思われる既存のMLプロジェクトを見つけることに成功するはずであったとしても、新しいMLプロジェクトの新しい要件のためにその有用と思われる既存のMLプロジェクトを変更することは、非専門家にとって困難又は不可能であり得る。
【0011】
本開示で、「MLプロジェクト」という用語は、データセットと、データセットで定義されているMLタスクと、MLタスクのためにデータセットに対してMLモデルを訓練するための一連の動作を実施し、新しい予測のためにそのMLモデルを使用するよう構成されるMLパイプライン(例えば、スクリプト又はプログラムコード)とを含むプロジェクトを指し得る。本開示で、「計算ノートブック」という用語は、特に開発フェーズ中に、MLパイプラインを開発及び/又は表現するために使用される計算構造を指し得る(例えば、Jupyterノートブック)。本明細書で開示される実施形態は、Pythonプログラミング言語及びJupyterノートブックとして構造化された計算ノートブックにおけるMLパイプラインを用いて説明されるが、他の実施形態は、異なる言語及び他のプラットフォームで構造化された計算ノートブックで書かれたMLパイプラインを含んでもよいことが理解される。
【0012】
本開示の1つ以上の実施形態に従って、動作は、既存のMLプロジェクトを新しいMLプロジェクトに自動的に適応させるよう実行されてよい。例えば、いくつかの実施形態で、コンピュータシステムは、データサイエンティストが最初に、新しいMLプロジェクトを構築するための優れた出発点となり得る既存のMLプロジェクトを探し、それからその既存のMLプロジェクトを適切に適応させて、新しいプロジェクトの新しいMLタスク及び新しいデータセットのためのMLパイプラインを構築する「サーチ・アンド・アダプト」(search-and-adapt)スタイルのワークフローで構築することによって、データサイエンティストの自然なワークフローを組織的にサポートし得る。
【0013】
例えば、いくつかの実施形態で、コンピュータシステムは、既存のMLプロジェクトのOSSデータベースから未加工(row)のMLプロジェクトを自動的にマイニングしてもよく、また、未加工のMLプロジェクトを、それらを既存のMLプロジェクトのコーパスに格納する前に、自動的にキュレーションしてもよい。いくつかの実施形態で、大規模なリポジトリからの既存のMLプロジェクトのこのようなマイニング及びキュレーションは、サーチ・アンド・アダプトワークフローで使用することができる多様で高品質な既存のMLプロジェクトのコーパスをもたらし得る。また、このキュレーションは、既存のMLプロジェクトのMLパイプラインのクリーニング(例えば、動的なプログラムスライシングを使用する)を伴うことがあり、また、各MLプロジェクトの品質及び多様性を把握し、これらの目標と一致する既存のMLプロジェクトの最適な数を選択するために、特徴の組を計算することを伴うことがある。
【0014】
また、いくつかの実施形態で、このキュレーションは、既存のMLプロジェクトのMLパイプラインにおいて機能ブロックを自動的に識別して索引付けするために実行される動作を必要とすることがある。従来のソフトウェアプログラムとは異なり、MLプロジェクトのMLパイプラインは、一般的に、データセット特性に基づき明確に定義されたワークフローに従い、一連の機能ブロックと見なされ得る。従って、いくつかの実施形態は、MLパイプライン内の機能ブロックを自動的に抽出及びラベル付けして、それらをコーパス内で適切に索引付けする技術を含んでもよく、それにより、機能ブロックは、新しいMLタスクのための新しいMLパイプラインを合成するよう効率的に検索され得る。より具体的には、この技術は、適切なレベルでMLパイプラインを抽象化することができ、グラフに基づいたシーケンスマイニングアルゴリズムを用いて、カスタム機能ブロック及び慣用的機能ブロックの両方を抽出することができる。最終的に、各機能ブロックは意味的にラベル付けされ得る。
【0015】
更に、いくつかの実施形態では、説明が提供されてもよく、人間オペレータがその説明を観察し、新しいMLパイプラインを生成するために自動化されたシステムによって行われた意思決定プロセスを理解し得るようにする。いくつかの実施形態で、各機能ブロックは、新しいMLパイプラインがインスタンス化される場合に、対応する説明を含んでもよい。例えば、前処理機能ブロックの場合に、説明は、新しいMLパイプラインに含まれているその前処理機能ブロックをもたらした意思決定木内の決定の詳述を含んでもよい。その情報は、パラメトリックテンプレートの入力可能部分をポピュレートするために使用されてよく、入力可能部分は、パラメトリックテンプレートの自然言語静的テキスト部分とともに、説明のテキストを提供し得る。他の例として、説明は、データセットのどのメタ特徴がMLパイプラインで使用されているモデルの選択に最も影響を与えたかについての言及を含んでもよい。いくつかの実施形態で、説明は、新しいMLパイプラインに含まれている機能ブロックに代わるものの提案を含んでもよい。
【0016】
本開示で、「機能ブロック」への言及は、特定の機能ブロックが特定のタイプの機能に対応し得るMLパイプラインによって実行され得る動作を指し得る。意味的ラベリングは、対応する機能ブロックの機能を示し得る。更に、各機能ブロックは、その対応するMLパイプラインにおいて、対応する機能ブロックの機能の実行を引き起こすよう構成された特定のコードスニペットによりインスタンス化されてもよい。多くの事例で、異なるMLパイプラインにわたる同じ機能ブロックは、異なるMLパイプラインの夫々異なるインスタンス化を有してもよい。
【0017】
いくつかの実施形態で、例えば専門家でないデータサイエンティストから、新しいMLプロジェクトのための新しいMLタスク及び新しいデータセットを受け取ると、コンピュータシステムは、MLモデルを用いて新しいMLプロジェクトのための機能ブロックレベルのパイプラインスケルトンを最初に合成するために、階層的なアプローチを自動的に使用してもよい。追加的に、又は代替的に、コンピュータシステムは、(例えば、ユーザ入力から)他のメカニズムを介してパイプラインスケルトンを取得してもよい。パイプラインスケルトンは、どの機能ブロックが新しいMLプロジェクトに使用され得るかを示し得る。
【0018】
いくつかの事例で、取得されたパイプラインスケルトンは、互いに技術的に異なってもよいが、それらが冗長と見なされ得るほど十分に類似していてもよい機能ブロックを含んでもよい。追加的に、又は代替的に、上述されたように、パイプラインスケルトンは、どの機能ブロックが新しいMLプロジェクトのために使用され得るかを示し得るが、いくつかの事例では、機能ブロックの使用の順序を示さなくてもよい。以下で詳細に議論されるように、いくつかの実施形態で、コンピュータシステムは、冗長性解析に従って機能ブロックを除くことによって、取得されたパイプラインスケルトンを精緻化するよう構成されてよい。追加的に、又は代替的に、コンピュータシステムは、パイプラインスケルトンの機能ブロックの順序を識別するよう構成されてもよく、それに応じてパイプラインスケルトンを精緻化してもよい。
【0019】
パイプラインスケルトンは、新しいMLプロジェクトのためにどの機能ブロックを使用すべきかを示し得るが、機能ブロックのインスタンス化を示さなくてもよい。以下で詳細に議論されるように、いくつかの実施形態で、コンピュータシステムはまた、パイプラインスケルトンの機能ブロックの夫々を新しいデータセットのどの部分に適用すべきかを決定するよう構成されてもよい。追加的に、又は代替的に、コンピュータシステムは、パイプラインスケルトンを新しいMLプロジェクトのための具体的なパイプラインスケルトンにインスタンス化するために使用され得る既存のMLプロジェクトの既存のコードスニペットを識別するよう構成されてもよい。
【0020】
従って、いくつかの実施形態で、専門家でないデータサイエンティストは、新しいMLプロジェクトのための新しいMLタスク及び新しいデータセットを単に定式化すればよく、その場合に、コンピュータシステムは、専門家でないデータサイエンティストによる如何なる変更もなしで、新しいデータセットに対して新しいMLタスクを実行するために即座に実行することができるMLプロジェクトのための新しいMLパイプラインを自動的に生成するよう、ツールにより支援されるインタラクティブなサーチ・アンド・アダプトワークフローを実装し得る。よって、いくつかの実施形態は、初心者のデータサイエンティストが新しいMLプロジェクトのための新しい高品質なエンド・ツー・エンドのMLパイプラインを効率的に作成することができるようにし得る。
【0021】
本開示の1つ以上の実施形態に従って、MLプロジェクト開発の技術分野は、データサイエンティスト(しばしば専門家でない者)に、有用と思われる既存のMLプロジェクトを手動で見つけ出し、その有用と思われる既存のMLプロジェクトを新しいMLプロジェクトの新しい要件のために変更するタスクを負わせることと比較して、既存のMLプロジェクトに基づき新しいMLプロジェクトを自動的に生成するようコンピューティングシステムを構成することによって、改善され得る。そのような構成は、コンピューティングシステムが、関連する既存のMLプロジェクトをより良く探し、それらを使用して、機能ブロック及びそれらの対応するインスタンス化を既存のMLパイプラインから識別及び抽出し、新しいMLプロジェクトでの使用のためにそれらを自動的に使用及び変更することによって新しいMLプロジェクトを生成することを可能にし得る。
【0022】
本開示の実施形態は、添付の図面を参照して説明される。
【0023】
図1は、本開示で記載される少なくとも1つの実施形態で配置される、既存のMLプロジェクトに基づき新しいMLプロジェクトを自動的に生成することに関係がある例示的な環境100を表す図である。環境100は、新しいMLプロジェクトの実装のために使用され得る具体的なパイプライン(concrete pipeline)122を生成するようにパイプラインスケルトン102を変更するよう構成された変更モジュール120を含んでよい。いくつかの実施形態で、変更モジュール120は、MLプロジェクトコーパス105に含まれ得る既存のMLプロジェクト110に基づきパイプラインスケルトン102を変更するよう構成されてよい。
【0024】
MLプロジェクトコーパス105は、既存のMLプロジェクト110の如何なる適切なリポジトリも含んでよい。夫々の既存のMLプロジェクト110は、データセット109と、データセットで定義されているMLタスクと、MLタスクのためにMLモデルを訓練するための一連の動作を実施し、新しい予測のためにそのMLモデルを使用するよう構成されるMLパイプライン111(例えば、スクリプト又はプログラムコード)とを含んでよい。いくつかの実施形態で、夫々の既存のMLプロジェクト110は計算ノートブックを含んでもよく、それは、特に開発フェーズ中に、対応するMLパイプラインを開発及び/又は表現するために使用される計算構造であってよい。計算ノートブックの一例は、Jupyterノートブックである。
【0025】
いくつかの実施形態で、MLプロジェクトコーパス105は、1つ以上のOSS MLプロジェクトデータベースを含んでもよく、それらは、既存のMLプロジェクトの大規模リポジトリであってよい。既存のMLプロジェクト110の大規模リポジトリのいくつかの例には、Kaggle及びGitHubが含まれるが、これらに限られない。
【0026】
追加的に、又は代替的に、いくつかの実施形態で、MLプロジェクトコーパス105の既存のMLプロジェクト110は、OSS MLプロジェクトデータベースの1つ以上からキュレーション及び選択されてもよい。キュレーションは、MLプロジェクトコーパス105が、自動化された「サーチ・アンド・アダプト」スタイルのワークフローで用いられ得るクリーニングされた高品質の索引付けされた既存のMLプロジェクトの大規模コーパスであり得るようなものであってよい。
【0027】
パイプラインスケルトン102は、新しいMLプロジェクト115の新しいデータセット106に関して新しいMLタスク108を達成するために使用され得る機能を示し得る機能ブロックの組を含んでよい。いくつかの実施形態で、機能ブロックは、パイプラインスケルトン102で順序付けられなくてもよい。追加的に、又は代替的に、パイプラインスケルトン102は、パイプラインスケルトン102の1つ以上の他の機能ブロックと比較して相対的に冗長であり得る1つ以上の機能ブロックを含んでもよい。
【0028】
いくつかの実施形態で、パイプラインスケルトン102は、パイプラインスケルトンモデル104を用いて生成されてよい。パイプラインスケルトンモデル104は、データセットメタ特徴と機能ブロック意味的ラベル(例えば、MLプロジェクトコーパス105の既存のMLプロジェクト110とともに含まれている既存のMLプロジェクト情報に基づく)との間のマッピングを学習するよう訓練されている1つ以上のMLモデルを含んでもよい。例えば、新しいデータセット106のメタ特徴を考えると、パイプラインスケルトンモデル104は、マッピングを用いて、新しいデータセット106のメタ特徴に対応する機能ブロックを識別することができ、また、それに応じてパイプラインスケルトン102を合成することができる。追加的に、又は代替的に、パイプラインスケルトン102は、手動で又は任意の他の適切な技術で生成されてもよい。
【0029】
いくつかの実施形態で、パイプラインスケルトンモデル104は、パイプラインスケルトンを生成する前に訓練されている多変量多価分類器を含んでもよい。多変量多価分類器は、パイプラインスケルトンが含むべきである順序付けられていない機能ブロック(対応する意味的ラベルによって表される)の組に新しいデータセットのメタ特徴をマッピングするよう構成されてよい。この訓練は、図2に関連して以下で記載されるような関係マッピングを実行することを含んでよい。例えば、訓練は、特定の意味的ラベルと関連付けられている既存のMLプロジェクトの既存のデータセットからデータセット特徴を抽出し、既存のMLプロジェクトの機能ブロックから全てのラベルの組を識別子、データセット特徴を有する入力ベクトルと、全てのラベルの組の中の各ラベルの有無を表すバイナリ出力タプルとを有する訓練データを準備し、パイプラインスケルトンモデル104を用いてデータセット特徴と全てのラベルの組の中の対応するラベルとの間のマッピングを学習することを含んでよい。いくつかの実施形態で、パイプラインスケルトンモデル104の訓練は、パイプラインスケルトンモデル104が、新しいデータセット106及び新しいMLタスク108(メタ特徴)の顕著な(salient)特性を使用して、パイプラインスケルトンのスケルトンブロックとして機能ブロックの組を予測することを可能にし得る。
【0030】
変更モジュール120は、コンピューティングデバイスが1つ以上の動作を実行することを可能にするよう構成されたコード及びルーチンを含んでもよい。追加的に、又は代替的に、変更モジュール120は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行するか又はその動作を制御するためのもの)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを用いて実装されてよい。いくつかの他の事例では、変更モジュール120は、ハードウェアとソフトウェアとの組み合わせを用いて実装されてもよい。本開示で、変更モジュール120によって実行されるものとして記載される動作は、変更モジュール120が対応するシステムを実行することを指示し得る動作を含んでもよい。
【0031】
変更モジュール120は、パイプラインスケルトン102を取得し、パイプラインスケルトン102を変更して具体的なパイプライン122を生成するよう構成されてよい。例えば、いくつかの実施形態で、変更モジュール120は、パイプラインスケルトン102を精緻化するようにパイプラインスケルトン102を変更するよう構成されてよい。例えば、変更モジュール120は、パイプラインスケルトン102の異なる機能ブロックを新しいデータセット106のどの部分に適用すべきかを決定することによって、パイプラインスケルトン102を精緻化してもよい。追加的に、又は代替的に、変更モジュール120は、パイプラインスケルトン102に含まれている機能ブロックの順序を精緻化の部分として識別するよう構成されてもよい。このような又は他の実施形態で、変更モジュール120は、パイプラインスケルトン102に対して冗長性解析を実行することによってパイプラインスケルトンを精緻化するよう構成されてもよい。追加的に、又は代替的に、変更モジュール120は、冗長性解析に基づきパイプラインスケルトン102から1つ以上の機能ブロックを除いてもよい。いくつかの実施形態で、変更モジュール120は、図2~6に関連して以下で記載されるように、精緻化されたパイプラインスケルトンを生成するようにパイプラインスケルトン102を変更するよう構成されてよい。
【0032】
このような又は他の実施形態で、変更モジュール120は、パイプラインスケルトン102の機能ブロックをインスタンス化し、それに応じてパイプラインスケルトン102を具体的なパイプライン122に具体化するために使用され得る既存のMLパイプライン111からコードスニペットを識別するよう構成されてもよい。追加的に、又は代替的に、変更モジュール120は、具体的なパイプライン122の部分としての使用のために識別されたコードスニペットを適応させることに関して、識別されたコードスニペットの適応性を決定するよう構成されてもよい。このような又は他の実施形態で、変更モジュール120は、パイプラインスケルトン102の異なる具体的なパイプラインであってよい1つ以上の候補パイプラインを生成するよう構成されてもよい。候補パイプラインは、異なる識別されたコードスニペットを用いてパイプラインスケルトン102の同じ機能ブロックの異なるインスタンス化を夫々含んでもよい。追加的に、又は代替的に、変更モジュール120は、候補パイプラインの性能を決定するように候補パイプラインを解析するよう構成されてもよい。このような又は他の実施形態で、変更モジュール120は、性能決定に基づき具体的なパイプライン122として候補パイプラインのうちの1つを選択してもよい。いくつかの実施形態で、変更モジュール120は、図7~12に関連して以下で記載されるように、具体的なパイプライン122の生成及び選択のためにコードスニペットを識別、選択、及び実装するよう構成されてもよい。
【0033】
変更モジュール120は、従って、新しいMLプロジェクト115の部分としての使用のために具体的なパイプライン122を生成するようにパイプラインスケルトン102を変更するよう構成されてよい。動作は、コンピュータシステムによって新しいMLプロジェクトの生成及び実装の自動化を改善することができ、これにより、増加した数のプロジェクトに機械学習を適用する能力を向上させることができる。
【0034】
本開示の範囲から外れずに、図1に対して変更、追加、又は削除が行われてよい。例えば、環境100は、本開示で例示及び記載されているものよりも多い又は少ない要素を含んでもよい。
【0035】
図2は、精緻化されたパイプラインスケルトン212を生成するように新しいMLプロジェクト215のパイプラインスケルトン202を変更するよう実行され得る例示的な動作の組200(「動作セット200」)を表す。動作セット200は、如何なる適切なシステム又はデバイスによって実行されてよい。例えば、動作セット200の1つ以上の動作は、図1の変更モジュール120によって実行されるか、又はそれによる実行のために命令されてもよい。追加的に、又は代替的に、動作セット200は、図12のコンピューティングシステム1202などのコンピューティングシステムによって(例えば、変更モジュール120によって命令されるように)実行されてもよい。
【0036】
概して、動作セット200は、精緻化されたパイプラインスケルトン212を生成するためにパイプラインスケルトン202、新しいデータセット206、及び1つ以上の既存のMLプロジェクト210に関して1つ以上の動作を実行するよう構成されてよい。いくつかの実施形態で、動作セット200は、精緻化されたパイプラインスケルトン212を生成するために依存関係解析250、既存MLマッピング252、インスタンス化決定254、及びパイプライン精緻化256を含んでよい。
【0037】
パイプラインスケルトン202は、図1のパイプラインスケルトン102に類似してよく、新しいMLプロジェクト215に関連した機能ブロック(「スケルトンブロック」と呼ばれる)の組を含んでもよい。新しいデータセット206も新しいMLプロジェクト215の部分であってよく、図1の新しいデータセット106に類似してもよい。既存のMLプロジェクト210は、図1の既存のMLプロジェクト110と類似してよく、既存のMLパイプライン211及び対応する既存のデータセット209を含んでもよく、これらは夫々、図1の既存のMLパイプライン111及び対応する既存のデータセット109に類似してもよい。
【0038】
依存関係解析250は、1つ以上の機能ブロック依存関係258を決定するために使用され得る動作を含んでよい。機能ブロック依存関係258は、機能ブロックの対が、各々の対の機能ブロックの夫々が同じデータセットの同じ部分に適用されるかどうかに基づき、互いに依存しているかどうかを示し得る。いくつかの実施形態で、依存関係解析250は、既存のMLパイプライン211のうちの1つ以上の機能ブロックの利用に基づき機能ブロック依存関係258を決定してもよい。既存のMLパイプライン211の機能ブロックは「既存の機能ブロック」と呼ばれ得る。
【0039】
いくつかの実施形態で、依存関係解析250の利用決定は、既存のデータセット209のどの部分に既存の機能ブロックが適用されるかを決定することを含んでもよい。例えば、依存関係解析250は、既存のデータセット209のどのカラムに既存の機能ブロックが適用されるかを決定することを含んでもよい。
【0040】
このような又は他の実施形態で、依存関係解析250は、どの機能ブロックが既存のデータセット209の同じ部分に適用されるかを決定することを含んでもよい。このような又は他の実施形態で、同じ部分に適用される既存の機能ブロックは、機能ブロック依存関係258において互いに依存していると見なされ得る。反対に、同じ部分に適用されているとは識別されない異なる既存の機能ブロックは、互いに独立していると見なされ得る。
【0041】
例えば、既存の機能ブロックのうちの第1機能ブロック及び第2機能ブロックは両方とも、特定の既存のデータセット209の特定のカラムに適用されてよい。いくつかの実施形態で、機能ブロック依存関係258は、従って、第1機能ブロック及び第2機能ブロックが依存した対であることを示し得る。他の例として、既存の機能ブロックのうちの第1機能ブロック及び第3機能ブロックは、既存のデータセット209のうちのいずれかの同じカラムに適用されると決して識別され得ない。いくつかの実施形態で、機能ブロック依存関係258は、従って、第1機能ブロック及び第3機能ブロックを機能ブロックの独立した対として示し得る。
【0042】
いくつかの実施形態で、依存関係解析250は、既存の機能ブロックの複数の機能ブロック対に関して実行されてよい。このような又は他の実施形態で、依存関係解析250は、既存の機能ブロックの夫々のとり得る対について実行されてよい。追加的に、又は代替的に、機能ブロック依存関係258は、異なる依存関係の全ての指示を含んでもよい。既存のMLパイプライン211は同じ既存の機能ブロックの複数のインスタンスを含んでもよく、それにより、既存の機能ブロックの“あらゆる対”への参照が必ずしも既存の機能ブロックのあらゆるインスタンスのあらゆる対を含まなくてもよく、代わりに、あらゆる異なる既存の機能ブロックタイプのあらゆる対を参照してもよい、ことが理解される。いくつかの実施形態で、依存関係解析250は、図3A及び図3Bに関連して以下で記載される1つ以上の動作を含んでもよい。以下で更に議論されるように、機能ブロック依存関係258は、いくつかの実施形態で、パイプライン精緻化256において使用されてもよい。
【0043】
既存MLマッピング252(「MLマッピング252」)は、関係マッピング260(「関係マッピング260」)を生成する動作を含んでよい。関係マッピング260は、特定の特徴を備えたデータセットの部分に関して、データセットのそれらの特徴と機能ブロックの利用との間の関係を示し得る。いくつかの実施形態で、MLマッピング252は、1つ以上の既存のMLパイプライン211の既存の機能ブロックの利用に基づきマッピング260を決定してよい。
【0044】
いくつかの実施形態で、MLマッピング252の利用決定は、既存の機能ブロックの既存のデータセット209のどの部分が適用されるかを示す利用情報を決定することを含んでよい。例えば、MLマッピング252は、既存の機能ブロックが既存のデータセット209のどのカラムに適用されるかを決定することを含んでもよい。いくつかの実施形態で、この情報は、依存関係解析250に関連して行われた同じ決定から取得されてもよい。
【0045】
このような又は他の実施形態で、MLマッピング252は、既存のデータセット209の異なる部分の1つ以上のメタ特徴を「データセット特徴」と識別することを含んでもよい。データセット特徴は、ロー(行)の数、特徴の数、番号の存在、欠測値の存在、数の存在、番号カテゴリの存在、ストリングカテゴリの存在、テキストの存在、及びターゲットのタイプを含んでもよいが、これらに限られない。
【0046】
いくつかの実施形態で、MLマッピング252は、既存の機能ブロックと、既存の機能ブロックが適用される部分のデータセット特徴との間の関係を決定することを含んでもよい。関係は、利用情報に基づき決定されてよく、特定の機能ブロックが、特定のデータセット特徴を備えた部分に関してどの程度使用される可能性があるかを示し得る。MLマッピング252は、決定された関係に基づき関係マッピング260を生成し得る。例えば、関係マッピング260は、関係から決定されるような、異なる機能ブロックがどのデータセット特徴に対応するか、を示すマッピングを提供し得る。
【0047】
いくつかの実施形態で、MLマッピング252は、図4に関連して以下で記載される1つ以上の動作を含んでもよい。以下で更に議論されるように、関係マッピング260は、いくつかの実施形態で、インスタンス化決定254において使用されてもよい。
【0048】
上述されたように、いくつかの事例で、パイプラインスケルトン202は、新しいMLプロジェクト215のために実行すべき動作を示すスケルトンブロックの組を含んでよいが、異なるスケルトンブロックを新しいデータセット206のどの部分に適用すべきかを示さなくてもよい。インスタンス化決定254は、スケルトンブロックを新しいデータセット206のどの部分(例えば、カラム)に適用すべきかを決定する動作を含んでもよい。いくつかの実施形態で、インスタンス化決定254は、新しいデータセット206の異なる部分のデータセット特徴に基づきスケルトンブロック及び新しいデータセット206に関係マッピング260を適用することによって、決定されてよい。いくつかの実施形態で、インスタンス化決定254はブロックインスタンス化262を生成してもよく、それは、決定に基づき異なるスケルトンブロックを新しいデータセット206のどの部分に適用すべきかを示し得る。いくつかの実施形態で、インスタンス化決定254は、図5に関連して以下で記載される1つ以上の動作を含んでもよい。以下で更に議論されるように、インスタンス化決定254は、いくつかの実施形態で、パイプライン精緻化256において使用されてもよい。
【0049】
パイプライン精緻化256は、パイプラインスケルトン202を精緻化することに関係がある動作を含んでよい。例えば、パイプライン精緻化256は、パイプラインスケルトン202から1つ以上のスケルトンブロックを除くことを含んでもよい。このような又は他の実施形態で、スケルトンブロックの1つ以上の除去は冗長性解析に基づいてもよく、冗長性解析は機能ブロック依存関係258を使用してもよい。追加的に、又は代替的に、スケルトンブロックの1つ以上の除去はブロックインスタンス化262に基づいてもよい。いくつかの実施形態で、スケルトンブロックの1つ以上の除去は、図6に関連して以下で記載される1つ以上の動作を含んでもよい。
【0050】
このような又は他の実施形態で、パイプライン精緻化256は、スケルトンブロックの実行の順序を決定することを含んでもよい。この順序は、最初に、既存のMLプロジェクト210内のMLパイプライン211からブロック順序付けの部分的な順序を推測することによって、決定されてよい。例えば、いくつかの実施形態で、この部分的な順序は、グラフとして表されてよく、グラフでは、MLパイプライン211のいずれかで現れる機能ブロックごとにノードが存在する。このような又は他の実施形態で、グラフは、対応する機能ブロックの実行の順序を示すノード間のエッジを含んでもよい。例えば、第1機能ブロック及び第2機能ブロックが同時に起こるあらゆるMLパイプライン211において、第2ノードに対応する第2機能ブロックの前に第1ノードに対応する第1機能ブロックが起こる事例では、第1ノードから第2ノードへの有向エッジが含まれてもよい。この部分的な順序は、次いで、スケルトンブロックの実行の順序を決定するために(例えば、推測された部分的な順序と一致する任意のものとして、スケルトン機能ブロックの全体の順序を決定するために)使用されてもよい。
【0051】
追加的に、又は代替的に、パイプライン精緻化256は、ブロックインスタンス化262から選択された1つ以上のインスタンス化によりパイプラインスケルトン202に注釈を付けることを含んでよい。例えば、パイプライン精緻化256の後に精緻化されたパイプラインスケルトン212に残っているスケルトンブロックに関係があるブロックインスタンス化262は、精緻化されたパイプラインスケルトン212において示さ得る。
【0052】
動作セット200は、従って、精緻化されたパイプラインスケルトン212を生成するようにパイプラインスケルトン202を変更するよう構成されてよい。精緻化されたパイプラインスケルトン212は、スケルトンブロックの実行順序を示すこと、及び/又は冗長若しくは不要であり得るスケルトンブロックを除くことによって、パイプラインスケルトン202よりもインスタンス化に適し得る。
【0053】
本開示の範囲から外れずに、図2に対して変更、追加、又は削除が行われてよい。例えば、動作セット200は、本開示で例示及び記載されているものよりも多い又は少ない動作を含んでもよい。更に、動作セット200の動作の説明の順序は、記載されている順序で動作が実行されるべきであることを意味するものではない。更に、いくつかの事例では、同じ動作が動作セット200の異なる部分に関して記載されることがある(例えば、依存関係解析250及びMLマッピング252に関する利用決定)が、いくつかの事例では、一度しか実行されず、動作セット200の異なる部分に使用されてもよい。
【0054】
図3Aは、本開示で記載される少なくとも1つの実施形態に従って、機能ブロックの依存関係を決定する例示的な方法300のフローチャートである。方法300は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法300に関連した動作の1つ以上を実行してもよい。更に、上述されたように、いくつかの実施形態で、方法300の動作の1つ以上は、図2の依存関係解析250に関連して実行されてもよい。別個のブロックで表されているとしても、方法300のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、あるいは削除されてもよい。
【0055】
方法300は、ブロック302で、1つ以上のMLプロジェクトの1つ以上のパイプライン及び1つ以上の対応するデータセットのデータセット及び抽象構文木(AST)解析を実行することを含んでよい。例えば、AST解析は、コーパス内の1つ以上の既存のMLプロジェクトの1つ以上の既存のパイプライン及び各々の既存のデータセットに関して実行されてよい。AST解析は、既存のパイプラインのコードに基づき既存のパイプラインの各々のASTを生成することを含んでもよい。データセット解析は、既存のデータセットの部分の名称(例えば、既存のデータセットのカラムの名称)を識別することを含んでもよい。ASTは、どのコード要素が特定の機能ブロックと関係があり得るかを示し得る。例えば、ASTは、機能ブロックに対応するアプリケーションプログラムインターフェース(API)へのコールを示し得る。更に、ASTは、データセットのどの部分が特定の動作及びAPIコールの対象であり得るかを示し得る。
【0056】
これらの指示に基づき、データセット及びAST解析は、既存のデータセットの異なる部分に関して既存の機能ブロックの利用を識別することを含み得る。例えば、異なる既存の機能ブロックが既存のデータセットのどの部分(例えば、どのカラム)に適用され得るかが決定され得る。例えば、図3Bは、データセットの異なるカラムに関して3つの機能ブロックの利用を示し得る。これは、データセット及びAST解析に基づき決定され得る。図3Bの例で、表350は、機能ブロック「drop」がデータセットのカラム「Year」(年)に適用されることを示す。図3Bの例で、表350はまた、機能ブロック「LabelEncoder」がデータセットのカラム「Publisher」(発行元)及び「Genre」(ジャンル)に適用されることを示す。図3Bの例で、表350は更に、機能ブロック「fillna」がデータセットのカラム「Publisher」に適用されることを示す。
【0057】
図3Aに戻ると、ブロック304で、データセットの同じ部分に適用される機能ブロックが識別されてよい。例えば、図3Bの例に関して、機能ブロック「LabelEncoder」及び「fillna」は、同じ「Publisher」のからに適用されていると識別され得る。いくつかの実施形態で、これは、同じカラム及び特徴又はメタ特徴に適用されることを含んでもよい。
【0058】
ブロック306で、依存した機能ブロックが、ブロック304で実行された識別に基づき識別されてよい。例えば、同じ部分に適用される機能ブロックは、互いに依存していると識別されてよい。例えば、図3Bの機能ブロック「fillna」及び「LabelEncoder」は、両方ともカラム「Publisher」に適用されていることに基づき、依存した対として識別され得る。
【0059】
ブロック308で、独立した機能ブロックも、ブロック304で実行された識別に基づき識別されてよい。例えば、同じ部分に適用されていると識別されない機能ブロックは、互いに独立していると識別されてよい。例えば、図3Bの機能ブロック「drop」及び「LabelEncoder」は、それらが同じカラムのいずれにも適用されていないことに基づき、独立した対として識別され得る。
【0060】
いくつかの実施形態で、ブロック306及び308の依存関係解析は、既存の機能ブロックの複数の機能ブロック対に関して実行されてよい。このような又は他の実施形態で、ブロック306及び308の依存関係解析は、既存の機能ブロックの夫々のとり得る対について実行されてよい。更に、そのような解析は、図2の夫々のMLパイプライン211及びデータセット209について実行され、結果は、全てのパイプラインにわたって集計されてよく、それにより、ブロックの対は、それらのブロックが同時に起こる1つ以上のパイプラインで依存していると見なされる場合に依存していると見なされ、そうでない場合には独立してると見なされる。
【0061】
本開示の範囲から外れずに、方法300に対して変更、追加、又は削除が行われてよい。例えば、方法300の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0062】
図4は、本開示で記載される少なくとも1つに従って、機能ブロックとデータセット特徴との間の関係マッピングを決定する例示的な方法400のフローチャートである。方法400は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法400に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法400のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、又は削除されてもよい。
【0063】
概して、方法400は、既存のMLパイプラインの既存の機能ブロックが適用される既存のデータセットの部分の特徴に関して、既存の機能ブロックの利用を決定するよう構成されてよい。利用は、機能ブロックとデータセット特徴との間のマッピングを決定するために使用されてよく、マッピングは、機能ブロックがどのデータセット特徴に対応するかを示し得る。更に、上述されたように、いくつかの実施形態で、方法400の動作の1つ以上は、図2のMLマッピング252に関して実行されてよい。
【0064】
方法400は、データセット特徴が取得され得るブロック402を含んでよい。例えば、いくつかの実施形態で、既存のMLプロジェクトの1つ以上の既存のデータセットが取得されてよい。このような又は他の実施形態で、既存のデータセットの1つ以上の特徴が取得されてよい。このような又は他の実施形態で、既存のデータセットの異なる部分(例えば、異なるカラム)は異なる特徴を有してよい。このような又は他の実施形態で、データセット特徴の識別は、どの部分がどの特徴を有するかを識別することも含んでよい。このような又は他の実施形態で、異なるデータセット特徴の識別は、異なるデータセット特徴を有する異なる部分に適用され得る意味的ラベルに基づいてよい。意味的ラベルは、対応する部分の対応するデータセット特徴を示し得る。
【0065】
いくつかの実施形態で、方法400は、データセット特徴に関する機能ブロックの利用が決定されるブロック404を含んでもよい。例えば、いくつかの実施形態で、利用を決定することは、各々の既存の機能ブロックが、各々のデータセット特徴を有する異なる部分に関して使用される回数(「機能ブロックの発生」とも呼ばれる)を決定することを含んでもよい。例えば、特定の機能ブロックが所与のデータセット特徴を有する部分に関して使用される回数が、決定されてもよい。
【0066】
他の例として、利用を決定することは、各々のデータセット特徴を有する部分に関する機能ブロックの使用の頻度を決定することを含んでもよい。例えば、特定の機能ブロックが所与のデータセット特徴を有する部分に関して使用される回数は、所与のデータセット特徴を有するデータセット部分に関して特定の機能ブロックの使用頻度(例えば、使用割合)を決定するために、所与のデータセット特徴を有するデータセット部分の総数と比較されてもよい。
【0067】
いくつかの実施形態で、利用を決定することは、利用に基づき1つ以上の条件付き確率を決定することを含んでもよい。条件付き確率は、対応する機能ブロックが特定のデータセット特徴を有するデータセット部分に適用される可能性がある確率を示し得る。例えば、第1の条件付き確率は、第1データセット特徴に関して特定の機能ブロックについて決定されてよい。第1の条件付き確率は、第1データセット特徴を有するデータ部分による特定の機能ブロックの利用に基づき決定されてよく、特定の機能ブロックが第1データセット特徴を備えたデータセット部分でどの程度使用される可能性があるかを示し得る。第2の条件付き確率は、第2データセット特徴に関して同様に、特定の機能ブロックについて決定されてよい。いくつかの実施形態で、異なる条件付き確率は、各機能ブロック及び各データセット特徴に関して決定されてよい。
【0068】
いくつかの実施形態で、利用情報を決定することは、図3Aに関連して上述されたAST及びデータセット解析に基づいてもよい。追加的に、又は代替的に、識別されたデータセット特徴は、機能ブロックが適用される部分の特徴を決定するために使用されてよい。
【0069】
ブロック406で、データセット特徴と機能ブロックとの間のマッピングは、決定されたりように基づき決定されてよい。例えば、特定の機能ブロック及び所与のデータセット特徴に関する1つ以上の利用因子が閾値を満足することに応答して、特定の機能ブロック及び所与のデータセット特徴は、互いに対応する者として互いにマッピングされてよい。
【0070】
例えば、第1機能ブロックは、第1データセット特徴を有するデータセット部分に関して第1の回数使用されると決定されてよい。更に、第1機能ブロックは、第2データセット特徴を有するデータセット部分に関して第2の回数使用されると決定されてよい。このような又は他の実施形態で、第1の回数は発生閾数を満足し得るが、第2の回数は発生閾数を満足し得ない。このような又は他の実施形態で、第1機能ブロックは第1データセット特徴にマッピングされるが、第2データセット特徴にはマッピングされ得ない。
【0071】
他の例として、第2機能ブロックは、第1データセット特徴に関して第1の条件付き確率を有すると決定されてよく、また、第2データセット特徴に関して第2の条件付き確率を有すると決定されてよい。いくつかの実施形態で、第2の条件付き確率は確率閾値を満足し得るが、第1の条件付き確率は満足し得ない。このような又は他の実施形態で、第2機能ブロックはそれに応じて、第2データセット特徴にマッピングされ得るが、第1データセット特徴にはマッピングされ得ない。
【0072】
このような又は他の実施形態で、マッピングは、閾値にかかわらず、決定された発生を示し得る。例えば、いくつかの実施形態で、マッピングは、異なる特徴の夫々に関して機能ブロックの夫々の条件確率、発生、及び/又は利用頻度を示し得る。
【0073】
本開示の範囲から外れずに、方法400に対して変更、追加、又は削除が行われてよい。例えば、方法400の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0074】
図5は、本開示で記載される少なくとも1つの実施形態に従って、パイプラインスケルトンのためのブロックインスタンス化を決定する例示的な方法500のフローチャートである。方法500は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法500に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法400のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、又は削除されてもよい。更に、上述されたように、いくつかの実施形態で、方法500の動作の1つ以上は、図2のインスタンス化決定254に関して実行されてよい。
【0075】
方法500は、新しいデータセットのデータセット部分が選択され得るブロック502を含んでよい。例えば、新しいデータセットのカラムが選択されてよい。新しいデータセットは、パイプラインスケルトンが生成されたデータセットであってよい。
【0076】
ブロック504で、選択された部分の1つ以上のデータセット特徴が取得されてよい。例えば、選択された部分の1つ以上のメタ特徴が決定されてよい。
【0077】
ブロック506で、選択された部分のデータセット特徴に対応するパイプラインスケルトンの機能ブロック(「スケルトンブロック」)が識別されてよい。いくつかの実施形態で、対応するスケルトンブロックは、図2の関係マッピング260又は図4に関連して記載されたものなどの関係マッピングに基づき、識別されてもよい。例えば、選択された部分は、関係マッピングにおいて第1機能ブロックに対応するものとして示されている第1データセット特徴を有してよい。第1機能ブロックと同じである(例えば、同じ機能を有している)パイプラインスケルトンのスケルトンブロックは、このようにして、新しいデータセットの選択された部分に対応するものとして識別され得る。
【0078】
他の例として、関係マッピングは、異なるデータセット特徴に関して異なる機能ブロックの利用頻度、条件付き確率、及び/又は発生を示してもよい。このような又は他の実施形態で、対応は、選択された部分のデータセット特徴が特定の閾値に従って機能ブロックに対応することに基づいてもよい。例えば、関係マッピングは、第2機能ブロックが選択された部分の第2データセット特徴に関してある条件付き確率を有し得ることを示し得る。このような又は他の実施形態で、第2機能ブロックに対応するスケルトンブロックは、それに応じて、選択された部分にマッピングされてもよい。対照的に、確率閾値を満足しない条件付き確率を第2データセット特徴に関して有している第3機能ブロックに対応するスケルトンブロックは、選択された部分にマッピングされ得ない。
【0079】
ブロック508で、1つ以上のブロックインスタンス化が、選択された部分について決定されてよい。上述されたように、ブロックインスタンス化は、選択された部分にどのスケルトンブロックを適用すべきかを示し得る。いくつかの実施形態で、ブロックインスタンス化は、ブロック506で決定された対応に基づき決定されてもよい。例えば、ブロック506で決定された対応は、第1スケルトンブロック及び第2スケルトンブロックが選択された部分に対応することを示してよい。第1ブロックインスタンス化は、それに応じて、第1スケルトンブロックが選択された部分に適用されるべきであることを示すと決定され得る。更に、第2ブロックインスタンス化が、第2スケルトンブロックが選択された部分に適用されるべきであることを示すことも、決定され得る。
【0080】
いくつかの実施形態で、方法500は、新しいデータセットの複数の部分について実行されてもよい。このような又は他の実施形態で、方法500は、新しいデータセットの全ての異なる部分(各カラム)ごとに実行されてよい。そのようなものとして、いくつかの実施形態で、新しいデータセットの異なる部分の全部が、ブロックインスタンス化の生成を通じて1つ以上のスケルトンブロックにマッピングされ得る。
【0081】
本開示の範囲から外れずに、方法500に対して変更、追加、又は削除が行われてよい。例えば、方法500の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0082】
図6は、本開示で記載される少なくとも1つの実施形態に従って、精緻化されたパイプラインスケルトンにパイプラインスケルトンを精緻化する例示的な方法600のフローチャートである。方法600は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法600に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法600のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、又は削除されてもよい。
【0083】
概して、方法600は、パイプラインスケルトンから1つ以上のスケルトンブロックを除くよう構成されてよい。追加的に、又は代替的に、方法600は、スケルトンブロックの実行順序を決定するよう構成されてよい。このような又は他の実施形態で、方法600は、方法500で決定されたブロックインスタンス化から選択された1つ以上のインスタンス化でパイプラインスケルトンに注釈を付けることを含んでもよい。更に、上述されたように、いくつかの実施形態で、方法600の動作の1つ以上は、図2のパイプライン精緻化256に関して実行されてもよい。
【0084】
方法600は、パイプラインスケルトンの機能ブロック(「スケルトンブロック」)が識別され得るブロック602を含んでよい。ブロック604で、方法500を用いて決定されたものなどのブロックインスタンス化が、取得されてよい。
【0085】
ブロック606で、1つ以上のスケルトンブロックが、ブロックインスタンス化に従ってパイプラインスケルトンから除かれてよい。例えば、いくつかの実施形態で、ブロックインスタンス化のいずれにも含まれていないスケルトンブロックは除かれてもよい。このような又は他の実施形態で、ブロックインスタンス化に含まれていない全てのスケルトンブロックは除かれてよい。
【0086】
ブロック608で、機能ブロック依存関係が取得されてよい。例えば、方法300に基づき決定された機能ブロック依存関係が取得されてよい。追加的に、又は代替的に、ブロック608で、1つ以上の既存のMLプロジェクトの1つ以上の既存のMLパイプラインの既存の機能ブロックに関連した利用情報が取得されてもよい。例えば、利用情報は、図4の方法400のブロック404に関して決定されたものと同じ又は類似してよい。例えば、利用情報は、各々のデータセット特徴に関する機能ブロックの発生、各々のデータセット特徴に関する使用頻度、及び/又は各々のデータセット特徴に関する条件付き確率を含んでよい。
【0087】
ブロック610で、1つ以上のスケルトンブロックが除かされてよい。除去は、新しいデータセットの同じ部分に適用される重複機能を表す1つ以上の機能ブロックが望まれ得るようなものであってよい。
【0088】
いくつかの実施形態で、除去は、ブロックインスタンス化、依存関係、及び利用情報に基づいてよい。例えば、機能ブロック依存関係情報を用いて、スケルトンブロックの依存関係は、依存関係情報で示されている機能ブロックとスケルトンブロックを(例えば、同じ機能、同じ名称、などに基づき)照合することによって、決定されてよい。照合の後、依存関係情報で示されている依存関係が、スケルトンブロックに一致するものとして識別されている機能ブロックの依存関係に従って、スケルトンブロックに適用されてよい。
【0089】
追加的に、又は代替的に、新しいデータセットの同じ部分にマッピングされているスケルトンブロックがブロックインスタンス化から識別されてよい。このような又は他の実施形態で、同じ部分にマッピングされているスケルトンブロックの対(「マッピングされた対」)は、これらのスケルトンブロックについて決定された依存関係を用いて互いに独立又は依存しているものとして識別されてよい。スケルトンブロックのマッピングされた対が互いに独立していることに応答して、マッピングされた対のスケルトンブロックのうちの1つは除かれてよい。
【0090】
いくつかの実施形態で、除去は利用情報に基づいてもよい。例えば、マッピングされた対のうち、条件付き確率が低い方のスケルトンブロックは、除かれてよい。他の例として、マッピングされた対のうち、発生数が少ないか又は使用頻度が低い方のスケルトンブロックは、除かれてよい。
【0091】
本開示の範囲から外れずに、方法600に対して変更、追加、又は削除が行われてよい。例えば、方法600の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。例えば、ブロック604及び/又は606は完全に省略されてもよい。
【0092】
図7は、本開示の1つ以上の実施形態に従って、パイプラインスケルトン702をインスタンス化するよう実行され得る例示的な動作の組700(「動作セット700」)を表す。動作セット700は、如何なる適切なシステム又はデバイスによって実行されてよい。例えば、動作セット700の1つ以上の動作は、図1の変更モジュール120によって実行されるか、又はそれによる実行のために命令されてもよい。追加的に、又は代替的に、動作セット700は、図12のコンピューティングシステム1202などのコンピューティングシステムによって(例えば、変更モジュール120によって命令されるように)実行されてもよい。
【0093】
動作セット700は、パイプラインスケルトン702具体的なパイプライン732にインスタンス化するためにパイプラインスケルトン702、パイプラインスケルトンモデル704、1つ以上の既存のMLプロジェクト710、及び/又は新しいデータセット706に関して実行される1つ以上の動作を含んでよい。いくつかの実施形態で、動作セット700はまた、パイプラインスケルトン702を具体的なパイプライン732にインスタンス化するために、コードスニペット識別720、適応性解析722、候補パイプライン生成724、及びパイプライン解析726を含んでもよい。
【0094】
パイプラインスケルトン702は、新しいMLプロジェクトに関連した機能ブロック(「スケルトンブロック」と呼ばれる)の組を含んでよい。いくつかの実施形態で、パイプラインスケルトン702は、図1のパイプラインスケルトン102又は図2のパイプラインスケルトン202に類似してよい。追加的に、又は代替的に、パイプラインスケルトン702は、図2の精緻化されたパイプラインスケルトン212に類似してもよい。このような又は他の実施形態で、パイプラインスケルトン702は1つ以上のブロックインスタンス化718を含んでもよい。ブロックインスタンス化718は、ブロックインスタンス化718が、パイプラインスケルトン702のどのスケルトンブロックを新しいデータセット706のどの部分に(例えば、どのカラムに)適用すべきかを示し得るという点で、図2のブロックインスタンス262に類似し得る。
【0095】
新しいデータセット706も新しいMLプロジェクトの部分であってよく、図1の新しいデータセット106に類似してよい。既存のMLプロジェクト710は、図1の既存のMLプロジェクト110に類似してよく、既存のMLパイプライン711及び対応する既存のデータセット709を含んでもよく、これらは夫々、図1の既存のMLパイプライン111及び対応する既存のデータセット109に類似してもよい。パイプラインスケルトンモデル704は、いくつかの実施形態で、パイプラインスケルトン702を生成するよう構成されてよい。パイプラインスケルトンモデル704は、図1のパイプラインスケルトンモデル104に類似してよい。具体的なパイプライン732は、図1の具体的なパイプライン122に類似してよい。
【0096】
コードスニペット識別は、1つ以上のコードスニペット728を識別するために使用され得る動作を含んでよい。コードスニペット728は、既存のMLパイプライン711からの1つ以上の既存のコードスニペットを含んでよい。コードスニペット728として識別され得る既存のコードスニペットは、パイプラインスケルトン702の各々のスケルトンブロックをインスタンス化するために使用される可能性があるものとして識別されてよい。
【0097】
いくつかの実施形態で、コードスニペット728は、新しいデータセット706と既存のデータセット709との間の類似度に基づき識別されてよい。類似度は、既存のデータセット709及び新しいデータセット706の1つのメタ特徴間の類似度に基づき決定されてよい。いくつかの実施形態で、決定された類似度に基づいたコードスニペット728の識別は、図8に関連して以下で記載される1つ以上の動作を含んでもよい。
【0098】
このような又は他の実施形態で、コードスニペット728は、パイプラインスケルトンモデル704によりパイプラインスケルトン702の生成の解析に基づき識別されてよい。例えば、どの機能ブロックをパイプラインスケルトン702に含めるべきかを決定するためにパイプラインスケルトンモデル704のどの訓練データが使用されたかが決定されてよい。このような又は他の実施形態で、識別された訓練データは、既存のMLプロジェクト710から取得されたものであってもよい。例えば、識別された訓練データは、既存のデータセットの特定の特徴とパイプライン内の特定の既存の機能ブロックの存在との間の相関を例示してよく、これにより、パイプラインスケルトンモデル704は、新しいデータセット706について予測されたパイプラインスケルトン702にその特定の機能ブロックを含めることができる。このような又は他の実施形態で、識別された訓練データは、従って、いくつかの事例では、新しいデータセット706のコンテキストにおいて機能ブロックの最も適切なインスタンス化を表し得る。追加的に、又は代替的に、識別された訓練データは、識別された訓練データの既存の機能ブロックをインスタンス化するコードスニペットを含んでもよく、あるいは、そのようなコードスニペットを識別するために使用されてもよい。識別された訓練データに関連したコードスニペットは、パイプラインスケルトン702をインスタンス化することにとって有用であり得る。いくつかの実施形態で、パイプラインスケルトン702を生成するために使用された訓練データセットに基づいたコードスニペット728の識別は、図9に関連して以下で記載される1つ以上の動作を含んでもよい。
【0099】
適応性解析722は、コードスニペット728がパイプラインスケルトン702に関して実施のための適応のためにどの程度適切であり得るかを決定することに関係がある動作を含んでよい。適応性解析722は、コードスニペット728のプログラム要素に基づきコードスニペット728の要素適応性を決定することを含んでよい。追加的に、又は代替的に、適応性解析722は、コードスニペット728のデータフローに基づきコードスニペット728のデータフロー適応性を決定することを含んでもよい。このような又は他の実施形態で、適応性解析722は、各々のコードスニペット728のカーディナリティ互換性に基づきコードスニペット728のカーディナリティ適応性を決定することを含んでもよい。いくつかの実施形態で、適応性解析722は、各々のコードスニペット728の要素適応性、データフロー適応性、又はカーディナリティ適応性のうちの2つ以上の組み合わせに基づき、各々のコードスニペット728の各々の全体的な適応性を決定することを含んでもよい。
【0100】
いくつかの実施形態で、適応性解析は、コードスニペット728に関する拡張コードスニペット情報730(「拡張情報730」)を出力してよい。拡張情報730は、各々のコードスニペット728についての各々の適応性決定を含んでよい。このような又は他の実施形態で、拡張情報730はコードスニペット728を含んでよい。いくつかの実施形態で、適応性解析722は、図10に関連して以下で記載される1つ以上の動作を含んでもよい。
【0101】
追加的に、又は代替的に、拡張情報730は、互いに対するコードスニペット728の順位付けを含んでもよい。例えば、異なるコードスニペットは、同じスケルトンブロックのインスタンス化のための潜在的な候補であってよい。いくつかの実施形態で、異なるコードスニペットは、同じスケルトンブロックのインスタンス化に関して互いに順位付けされてよい。いくつかの実施形態で、異なるコードスニペットは、図8図9、及び/又は図10に関連して以下で記載されるように、順位付けされてよい。
【0102】
候補パイプライン生成724は、拡張情報730に基づき1つ以上の候補パイプライン734を生成し得る動作を含んでもよい。候補パイプライン734は夫々、選択されたコードスニペット728の組を使用しているパイプラインスケルトン702の具体化されたインスタンス化であってよい。コードスニペット728は、いくつかの実施形態で、拡張情報730に含まれている適応性情報に基づき選択されてよい。このような又は他の実施形態で、コードスニペット728は、拡張情報730に含まれ得る順位付けに基づき選択されてよい。いくつかの実施形態で、候補パイプライン生成724は、図11に関連して以下で記載される1つ以上の動作を含んでもよい。
【0103】
パイプライン解析726は、具体的なパイプライン732としての使用のために候補パイプライン734のうちの1つを選択するよう候補パイプライン734を解析し得る動作を含んでよい。例えば、いくつかの実施形態で、候補パイプライン734の夫々は、各々の候補パイプラインの性能レベルを決定するよう新しいデータセット706に適用されてよい。このような又は他の実施形態で、特定の候補パイプライン734は、決定された性能レベルに基づき候補パイプライン734として選択されてよい。いくつかの実施形態で、パイプライン解析726は、如何なる適切な技術も用いて実行されてよい。追加的に、又は代替的に、いくつかの実施形態で、新しいデータセット706は比較的に大きくてよく、データサンプリング(例えば、層化データ抽出法)が、候補パイプライン734を解析するために使用されるデータの量を減らすよう新しいデータセット706をプルーニングするために使用されてもよい。
【0104】
本開示の範囲から外れずに、図7に対して変更、追加、又は削除が行われてよい。例えば、動作セット700は、本開示で例示及び記載されているものよりも多い又は少ない動作を含んでもよい。更に、動作セット700の動作の説明の順序は、記載されている順序で動作が実行されるべきであることを意味するものではない。更に、いくつかの事例では、同じ動作が動作セット700の異なる部分に関して記載されることがあるが、いくつかの事例では、一度しか実行されず、動作セット700の異なる部分に使用されてもよい。
【0105】
図7は、パイプラインスケルトン702のインスタンス化に対する1つのアプローチを説明するが、パイプラインスケルトン702をインスタンス化することには多数の他の可能なアプローチが存在することが理解されるだろう。例えば、コードスニペットを使用して、コードスニペットの適応性などを決定するのではなく、データベースルックアップが使用されてもよく、このとき、各個別的な機能ブロックの機能は、機能ブロックの機能に関連したテンプレートにより実装されてよい。いくつかの実施形態で、そのようなテンプレートは、データサイエンティスト又はプログラマなどのユーザによって手動で準備されてよい。
【0106】
図8は、本開示で記載される少なくとも1つの実施形態に従って、パイプラインスケルトンのインスタンス化のためにコードスニペットを取得する例示的な方法800のフローチャートである。方法800は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法800に関連した動作の1つ以上を実行してもよい。別個のブロックで表されているとしても、方法800のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックへとまとめられても、あるいは削除されてもよい。更に、上述されたように、いくつかの実施形態で、方法800の動作の1つ以上は、図7のコードスニペット識別720に関して実行されてもよい。
【0107】
方法800は、新しいMLプロジェクトに関する情報が取得され得るブロック802を含んでよい。新しいML情報は、新しいMLプロジェクトの新しいデータセット及び/又は新しいMLプロジェクトのパイプラインスケルトンを含んでよい。例えば、新しいML情報は、図7のパイプラインスケルトン702及び/又は図7の新しいデータセット706を含んでもよい。
【0108】
このような又は他の実施形態で、1つ以上の既存のMLプロジェクトに関する情報がブロック820で取得されてもよい。既存のML情報は、1つ以上の既存のMLプロジェクト及び対応する情報、例えば、既存のMLプロジェクト710を含んでよい。例えば、既存のML情報は、既存のMLプロジェクトの既存のパイプライン及び/又は既存のデータセットを含んでもよい。追加的に、又は代替的に、既存のML情報は、既存のMLパイプラインのコードを含んでもよい。このような又は他の実施形態で、既存のML情報は、異なる既存の機能ブロック及び対応する既存のコードスニペットが既存のデータセットのどの部分に適用され得るかを示す利用情報を含んでもよい。このような又は他の実施形態で、利用情報は、図3Aの方法300のブロック302に関して上述されたように、既存のML情報に基づき取得されてもよい。
【0109】
ブロック804で、既存のMLパイプラインの1つ以上の既存の機能ブロックが識別されてよい。いくつかの実施形態で、既存の機能ブロックは、新しいMLプロジェクトのパイプラインスケルトンの機能ブロック(「スケルトンブロック」)に基づき識別されてよい。例えば、いくつかの実施形態で、既存の機能ブロックは、スケルトンブロックと同じであることに基づいて(例えば、同じ名称及び/又は機能を有していることに基づいて)識別されてもよい。
【0110】
ブロック806で、既存のMLプロジェクトの1つ以上の既存のデータセットが、識別された既存の機能ブロックに基づき識別されてよい。例えば、既存の機能ブロックが適用される既存のデータセットが識別されてよい。いくつかの実施形態で、既存のデータセットは、既存のMLプロジェクト情報に含まれている利用情報を用いて識別されてもよい。
【0111】
ブロック808で、新しいデータセットと識別された既存のデータセットの夫々との間で、各々の類似度が決定されてよい。いくつかの実施形態で、類似度は、既存のデータセット及び新しいデータセットの1つ以上の取得されたメタ特徴間の比較に基づき決定されてよい。例えば、メタ特徴は、データセットのロー(行)の数、データセットのカラム(列)の数、及び/又はデータセットのカラムのカラムタイプを含んでよい。このような又は他の実施形態で、各々の類似度スコアは、新しいデータセットの異なるメタ特徴が各々の既存のデータセットの対応するメタ特徴とどれくらい類似しているかに基づき、決定されてよい。例えば、類似度スコアは、如何なる適切な距離メトリック決定も用いて決定されてよい。このような又は他の実施形態で、既存のデータセットの夫々は、新しいデータセットに対する類似度に関して、他の既存のデータセットと比較した類似度順位を与えられてもよい。例えば、既存のデータセットは、類似度解析によって示される最も類似した既存のデータセットが最も高く順位付けされるように、順位付けされてよい。いくつかの実施形態で、コードスニペット自体は、それらの対応する既存のデータセットの順位に応じて順位付けされてよい。
【0112】
ブロック810で、1つ以上の既存のコードスニペットが、既存のデータセット類似度決定に基づき識別及び選択されてよい。例えば、最も高く順位付けされた既存のデータセットのパイプラインから導出された既存のコードスニペットが識別され得る。このような又は他の実施形態で、新しいデータセットに関して閾類似度を満足する既存のデータセットに適用される既存のコードスニペットが、識別されてもよい。このような又は他の実施形態で、既存のコードスニペットは、最も高く順位付けされた既存のデータセットとやはり関連付けられているブロック840で識別された既存の機能ブロックをインスタンス化するものであってよい。このような又は他の実施形態で、識別されたコードスニペットは、既存のデータセットの順位に対応し得るコードスニペットの順位に基づき識別されてもよい。いくつかの実施形態で、コードスニペットの順位付けは、図7の拡張コードスニペット情報730などの拡張コードスニペット情報に含まれてもよい。
【0113】
識別された既存のコードスニペットは、いくつかの実施形態で、パイプラインスケルトンのスケルトンブロックの潜在的なインスタンス化として識別されてもよい。例えば、識別された既存のコードスニペットは、いくつかの実施形態で、図7のコードスニペット728であってもよい。
【0114】
本開示の範囲から外れずに、方法800に対して変更、追加、又は削除が行われてよい。例えば、方法800の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0115】
図9は、本開示で記載される少なくとも1つの実施形態に従って、パイプラインスケルトンのインスタンス化のためにコードスニペットを取得する例示的な方法900のフローチャートである。方法900は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法900に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法900のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、又は削除されてもよい。更に、上述されたように、いくつかの実施形態で、方法900の動作の1つ以上は、図7のコードスニペット識別720に関して実行されてもよい。
【0116】
方法900は、パイプラインスケルトンモデルが取得され得るブロック902を含んでよい。上述されたように、パイプラインスケルトンモデルは、コードスニペットが識別され得るパイプラインスケルトンを生成するために使用されるMLモデルであってよい。いくつかの実施形態で、パイプラインスケルトンモデルは、前に生成されたものであってよい。このような又は他の実施形態で、パイプラインスケルトンモデルは、パイプラインスケルトンモデルを取得することの部分としてブロック920で生成されてもよい。例えば、パイプラインスケルトンモデルは、上述されたように多変量多価分類器を訓練することによって生成されてもよい。このような又は他の実施形態で、パイプラインスケルトンは、パイプラインスケルトンモデルを用いてブロック902で生成されてもよい。
【0117】
ブロック904で、パイプラインスケルトンを生成するためにパイプラインスケルトンモデルによって使用される訓練データセットが識別されてよい。いくつかの実施形態で、訓練データセットを識別することは、パイプラインスケルトンに含めるべき機能ブロックを予測するためにパイプラインスケルトンモデルによって使用される新しいMLプロジェクトのメタ特徴(例えば、新しいデータセット及び/又は対応する新しいタスクのメタ特徴)を識別することを含んでもよい。このような又は他の実施形態で、メタ特徴は、パイプラインスケルトンの各個別的なスケルトンブロックを決定するために使用されるメタ特徴が識別され得るように、スケルトンブロックの機能ブロックごとに機能ブロックで識別される。
【0118】
いくつかの実施形態で、予測を行う際に使用されるメタ特徴の識別は、パイプラインスケルトンモデルの構造が知られている1つ以上の「ホワイトボックス」技術に基づいてもよい。例えば、パイプラインスケルトンモデルが決定木の樹形図に基づく場合について、パイプラインスケルトンに含めるために特定の機能ブロックの特定の決定に到達するために使用されるパスが、識別され得る。このような又は他の実施形態で、パイプラインスケルトンの各々の機能ブロックの夫々について各々の決定の夫々に到達するために使用される各パスが、識別され得る。他の例となる「ホワイトボックス」技術は、パイプラインスケルトンモデルの線形回帰モデルで使用される支配項(dominant terms)を見つけることを含んでもよい。以上は、単に例となる「ホワイトボックス」技術であり、如何なる他の適切なホワイトボックス技術も使用されてよい。
【0119】
追加的に、又は代替的に、予測を行う際に使用されるメタ特徴の識別は、パイプラインスケルトンモデルの特定の構造が未知又は不要であり得る1つ以上の「ブラックボックス」技術に基づいてもよい。そのような「モデル非依存」(model agnostic)技術は、LIME(Local Interpretable Model-agnostic Explanation)技術又はSHAP(Shapely Additive exPlanations)技術を含む如何なる適切な技術も含んでよい。
【0120】
いくつかの実施形態で、識別されたメタ特徴は、パイプラインスケルトンモデルに関して新しいデータセットの1つ以上のデータセットベクトル(「新しいデータセットベクトル」)を生成するために使用されてよい。これらのデータセットベクトルは、新しいデータセットについての識別されたメタ特徴の値のベクトルであってよい。いくつかの実施形態で、新しいデータセットベクトルは、スケルトンブロックごとに識別されてもよい。
【0121】
このような又は他の実施形態で、新しいデータセットベクトルは、パイプラインスケルトンの生成に影響を与えている可能性がある訓練データセットとして既存のMLプロジェクトを識別するために使用されてよい。例えば、既存のMLプロジェクトのデータセットベクトル(「既存のデータセットベクトル」)は、既存のデータセットのコンテキストで前に識別されたメタ特徴を計算することによって、新しいデータセットからの新しいデータセットベクトルの構成と同じように、既存のMLデータセットから構成され得る。このような又は他の実施形態で、新しいデータセットベクトルに最も近い既存のデータセットベクトルが識別され得る。例えば、新しいデータセットベクトルの閾距離内にある既存のデータセットベクトルが識別され得る。
【0122】
いくつかの実施形態で、最も近い既存のデータセットベクトルに関する決定は、パイプラインスケルトンの異なるスケルトンブロックに対応する異なる新しいデータセットベクトルに関して行われてもよい。いくつかの実施形態で、最も近い既存のデータセットベクトルは、各々の新しいデータセットベクトルと各々の既存のデータセットベクトルとの間で如何なる適切な最近点解析も実行することによって、識別されてよい。いくつかの実施形態で、最も近い既存のデータセットベクトルに対応する既存のMLプロジェクトに関連した訓練データは、パイプラインスケルトンの生成に影響を与えた訓練データセットと識別され得る。
【0123】
ブロック906で、1つ以上のコードスニペットが、ブロック904で識別された訓練データセットから識別されてよい。例えば、いくつかの実施形態で、訓練データセットに関連した(例えば、それに含まれるか又はそれによって示される)既存のMLプロジェクトの既存のMLパイプラインが識別されてもよい。更に、既存のMLパイプラインの既存の機能ブロックをインスタンス化するコードスニペットも識別され得る。
【0124】
いくつかの実施形態で、同じ機能ブロックの選択に寄与しているものであり得る異なるMLプロジェクトに関連した異なる既存のMLパイプラインからの異なるコードスニペットが、互いに順位付けされ得る。いくつかの実施形態で、順位付けは、コードスニペットに対応する既存のMLプロジェクトの既存のデータセットベクトルに対する新しいデータセットベクトルの距離に基づいてよい。例えば、第1コードスニペットは、新しいデータセットベクトルから第1の距離である第1の既存のデータセットベクトルを有する第1MLプロジェクトに対応してよい。更に、第2コードスニペットは、新しいデータセットベクトルから第2の距離である第2の既存のデータセットベクトルを有する第2MLプロジェクトに対応してよく、第2の距離は第1の距離よりも長い。この例の第1コードスニペットは、第2コードスニペットよりも高く順位付けされ得る。
【0125】
ブロック908で、識別されたコードスニペットのうちの1つ以上が選択されてよい。いくつかの実施形態で、選択されたコードスニペットは、それらのコードスニペットが、パイプラインスケルトンのスケルトンブロックに対応する訓練データセットに示されている既存の機能ブロックをインスタンス化することに基づき、選択されてよい。そのようなものとして、選択されたコードスニペットは、パイプラインスケルトンのスケルトンブロックを決定するために使用される訓練データに基づき選択されてよい。いくつかの実施形態で、選択されたコードスニペットは、特定の順位を有するものであってよい。いくつかの実施形態で、コードスニペットの順位付けは、図7の拡張コードスニペット情報730などの拡張コードスニペット情報に含まれてもよい。
【0126】
本開示の範囲から外れずに、方法900に対して変更、追加、又は削除が行われてよい。例えば、方法900の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0127】
図10は、本開示で記載される少なくとも1つの実施形態に従って、パイプラインスケルトンに関して実施のためにコードスニペットの適応性を決定する例示的な方法1000のフローチャートである。方法1000は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法1000に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法1000のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、又は削除されてもよい。上述されたように、いくつかの実施形態で、方法1000の動作の1つ以上は、図7の適応性解析722に関連して実行されてよい。追加的に、又は代替的に、方法1000は、図8の方法800及び図9の方法900を夫々用いて識別されたコードスニペットに関して実行されてもよい。
【0128】
方法1000は、パイプラインスケルトンの潜在的なインスタンス化のために識別されたコードスニペットが取得され得るブロック1002を含んでよい。例えば、図7のコードスニペット728が、いくつかの実施形態で、方法800又は900を用いて識別され得る。
【0129】
ブロック1004で、要素適応性が各々のコードスニペットごとに決定されてよい。いくつかの実施形態で、要素適応性は、対応するコードスニペットのプログラム要素に基づいてよい。例えば、プログラム要素が識別されてよく、プログラム要素が一般的なコード要素又はドメイン固有のコード要素であるかどうかに関して決定が行われてもよい。一般的なコード要素は、複数のデータセットにわたって一般的に適用できるコード要素を含んでよい。対照的に、ドメイン固有のコード要素は、対応するコードスニペットが適用されるデータセットに特有であるコード要素を含んでよい。
【0130】
いくつかの実施形態で、プログラム要素を識別することは、対応するコードスニペットから全ての定数を抽出し、定数をプログラム要素として識別することを含んでよい。追加的に、又は代替的に、識別された定数は、コードスニペットが適用されるデータセットの名称又は値と比較されてよい。例えば、定数は、データセットのカラム名と比較されてよい。追加的に、又は代替的に、定数は、データセットのフィールドに含まれている値と比較されてもよい。特定の定数がデータセットの名称又は値と一致することに応答して、それらに対応するプログラム要素は、ドメイン固有のコード要素であると決定され得る。対照的に、特定の定数がデータセットの名称又は値と一致しない場合には、それらに対応するプログラム要素は、一般的なコード要素であると決定され得る。
【0131】
このような又は他の実施形態で、パイプラインスケルトンが対応する新しいMLプロジェクトの新しいデータセットにドメイン固有のコード要素がマッピングされ得るかどうかが決定されてもよい。例えば、特定のドメイン固有のコード要素が対応する既存のデータセットの名称又は値にマッピングされ得る名称又は値を新しいデータセットが含むかどうかが決定され得る。新しいデータセットが既存のデータセットの名称又は値にマッピングされ得る名称又は値を含むことに応答して、特定のドメイン固有のコード要素は、新しいデータセットにマッピングすることができると見なされ得る。
【0132】
各々のコードスニペットの要素適応性は、各々のコードスニペットが何らかのドメイン固有のコード要素を含むかどうかに基づいてよい。例えば、いくつかの実施形態で、特定のコードスニペットは、特定のコードスニペットが1つ以上のドメイン固有のコード要素を含むことに応答して、要素適応性を有さない可能性があると見なされてよい。このような又は他の実施形態で、ドメイン固有のコード要素が新しいデータセットにマッピング可能であるかどうか決定されてよい。ドメイン固有のコード要素が新しいデータセットにマッピング可能であることに応答して、特定のコードスニペットは、要素適応性を有していると見なされ得る。対照的に、ドメイン固有のコード要素の1つ以上が新しいデータセットにマッピング可能でないことに応答して、特定のコードスニペットは、要素適応性を有さないと見なされ得る。追加的に、又は代替的に、特定のコードスニペットが一般的なコード要素しか有さないことに応答して、その特定のコードスニペットは、要素適応性を有すると見なされてもよい。
【0133】
ブロック1006で、データフロー適応性が各々のコードスニペットごとに決定されてよい。いくつかの実施形態で、データフロー適応性は、対応するコードスニペットへ入力され得るよい入力のフローと、対応するコードスニペットによって出力され得る出力のフローとに基づいてよい。特に、入力が対応するデータセットのデータフレームから導出されるかどうかと、出力が対応するデータセットのデータフレームへ送られるかどうかとが決定され得る。対応するコードスニペットは、入力及び出力が全てデータフレームに対応している(例えば、データフレームから導出されるか又はデータフレームへ送られる)ことに応答して、データフロー適応性を有すると見なされ得る。対照的に、対応するコードスニペットは、入力の1つ以上及び/又は出力の1つ以上がデータフレームに対応していないことに応答して、データフロー適応性を有さないと見なされ得る。
【0134】
いくつかの実施形態で、静的な解析が、コードスニペットごとに入力及び出力を決定するために実行されてもよい。更に、静的な解析は、対応する既存のデータセットのどの部分から入力が取得され得るか、及び/又は対応する既存のデータセットのどの部分へ出力が送られ得るかを示し得る。よって、静的な解析は、入力又は出力が対応する既存のデータセットのデータフレームに対応するかどうかを示し得る。
【0135】
ブロック1008で、カーディナリティ適応性が各々のコードスニペットごとに決定されてよい。カーディナリティ適応性は、新しいデータセットに関して対応するコードスニペットのカーディナリティ互換性に基づいてよい。例えば、カーディナリティ互換性は、対応するコードスニペットが新しいデータセットに関して適用され得る部分の数と比較して、対応するコードスニペットがその対応する既存のデータセットに関して適用される部分の数(例えば、カラムの数)に基づいてよい。
【0136】
例えば、カーディナリティ適応性を決定するために、対応するコードスニペットが新しいデータセットのいくつの部分(例えば、列)に適用され得るかかが決定されてよい。いくつかの実施形態で、この決定は、パイプラインスケルトンに含まれ得るブロックインスタンス化(例えば、図7のブロックインスタンス化718)に基づいて行われ得る。例えば、パイプラインスケルトンの特定の機能ブロックの潜在的なインスタンス化のために、対応するコードスニペットが選択されてよい。更に、ブロックインスタンス化は、特定の機能ブロックを新しいデータセットのどの部分に適用すべきかを示し得る。従って、対応するコードスニペットが新しいデータセットのいくつの部分に適用され得るかは、特定の機能ブロックのインスタンス化として決定され得る。対応するコードスニペットが適用され得る新しいデータセットの部分の決定された数は、「新しいデータセット部分の数」と呼ばれ得る。更に、対応するコードスニペットが対応する既存のデータセットのいくつの部分に適用され得るかが決定されてもよい。この決定は、対応するコードスニペットの如何なる適切な解析にも基づいてよい。対応するコードスニペットが適用される既存のデータセットの部分の決定された数は、「既存のデータセット部分の数」と呼ばれ得る。
【0137】
カーディナリティ適応性は、新しいデータセット部分の数と既存のデータセット部分の数との間の比較に基づいてよい。例えば、第1コードスニペットは、第1の既存のデータセット部分の数に等しい第1の新しいデータセット部分の数を有してよい。更に、第2コードスニペットは、第2の既存のデータセット部分の数に等しくない第2の新しいデータセット部分の数を有してよい。この例では、第1コードスニペットは、第2コードスニペットよりも高いカーディナリティ適応性を有し得る。
【0138】
いくつかの実施形態で、新しいデータセット部分の数が既存のデータセット部分の数に一致しないことに応答して、カーディナリティ適応性を改善するために1つ以上の変換が対応するコードスニペットに適用され得るかどうかが決定されてもよい。例えば、既存のデータセット部分の数が1であり、新しいデータセット部分の数が特定のコードスニペットについて1よりも多いことに応答して、その特定のコードスニペットは、新しいデータセット部分の数に一致する回数繰り返されるループに置かれ得る。このような又は他の実施形態で、カーディナリティを改善するために変換することができるコードスニペットは依然として、一致するカーディナリティを有するコードスニペットよりも低いカーディナリティ適応性を有するとみなされ得る。追加的に、又は代替的に、カーディナリティを改善するために変換することができるコードスニペットは、カーディナリティを改善するために変換することができないコードスニペットよりも高いカーディナリティ適応性を有すると見なされ得る。このような又は他の実施形態で、コードスニペットは、そのコードスニペットが一致した新しいデータセット部分の数及び既存のデータセット部分の数を有することに応答して、又はそのコードスニペットが異なるデータセット部分の数が一致するよう変換可能であることに応答して、カーディナリティ適応性を有していると一般的には見なされ得る。
【0139】
いくつかの実施形態で、方法1000は、全体的な適応性が各々のコードスニペットごとに決定され得るブロック1010を含んでよい。いくつかの実施形態で、全体的な適応性は、要素適応性、データフロー適応性、又はカーディナリティ適応性のうちの2つ以上の組み合わせに基づいてよい。このような又は他の実施形態で、全体的な適応性は、要素適応性、データフロー適応性、及びカーディナリティ適応性の全ての組み合わせに基づいてもよい。
【0140】
例えば、いくつかの実施形態で、対応するコードスニペットは、対応するコードスニペットが適応可能又は適応不可能のいずれかであると見なされる全体的な適応性を有している見なされてよい。いくつかの実施形態で、対応するコードスニペットは、対応するコードスニペットが要素適応性、データフロー適応性、及びカーディナリティ適応性を有すると見なされることに応答して、全体的な適応性を有すると見なされ得る。
【0141】
このような又は他の実施形態で、パイプラインスケルトンの同じスケルトンブロックの潜在的なインスタンス化であるコードスニペットは、互いに及びそれらの各々の適応性に関して順位付けされてもよい。例えば、第1コードスニペットは、第1コードスニペットがプログラム要素適応性を有し得るように新しいデータセットにマッピング可能であるドメイン固有のコード要素を有してよい。更に、同じスケルトンブロックをインスタンス化する第2コードスニペットは、それが一般的なコード要素しか有し得ないので、プログラム要素適応性を有してよい。第2コードスニペットは、従って、プログラム要素適応性に関して第1コードスニペットよりも高く順位付けされ得る。追加的に、又は代替的に、他の条件が全て等しい場合に、第2コードスニペットは、全体的な適応性に関して第1コードスニペットよりも高く順位付けされ得る。同様に、変換によりカーディナリティ適応性を有するコードスニペットは、変換を必要とせずにカーディナリティ適応性を有するコードスニペットよりも低く順位付けされ得る。
【0142】
いくつかの実施形態で、異なるコードスニペットに関する適応性決定は、図7の拡張コードスニペット情報730などの拡張コードスニペット情報に含まれてもよい。追加的に、又は代替的に、適応性決定に基づいたコードスニペットの順位付けは、拡張コードスニペット情報に含まれてもよい。
【0143】
本開示の範囲から外れずに、方法1000に対して変更、追加、又は削除が行われてよい。例えば、方法1000の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0144】
図11は、本開示で記載される少なくとも1つの実施形態に従って、候補パイプラインの組を生成する例示的な方法1100のフローチャートである。方法1100は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1の変更モジュール120又は図12のコンピューティングシステム1202(例えば、変更モジュールによって命令される)が、方法1100に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法1100のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、又は削除されてもよい。
【0145】
概して、方法1100は、新しいMLプロジェクトのパイプラインスケルトンの潜在的なインスタンス化としての複数の具体的なパイプラインの生成を含んでよい。複数の具体的なパイプラインは、従って、新しいMLプロジェクトの新しいデータセットに適用され得る新しいMLプロジェクトの候補パイプラインであり得る。上述されたように、いくつかの実施形態で、方法1100の動作の1つ以上は、図7の候補パイプライン生成724に関して実行されてもよい。追加的に、又は代替的に、方法1100は、図8の方法800、図9の方法900、及び図10の方法1000を夫々用いて識別され得る図7のコードスニペット728に関して拡張コードスニペット情報730を用いて実行されてもよい。
【0146】
方法1100は、パイプラインスケルトンをインスタンス化するために識別され得る異なるコードスニペットごとのコードスニペット順位付けが取得され得るブロック1102を含んでよい。コードスニペット順位付けは、パイプラインスケルトンのスケルトンブロックのスケルトンブロックベースに基づいてよい。例えば、コードスニペットは、各々のコードスニペットがインスタンス化し得るスケルトンブロックに従ってグループ化されてよい。このような又は他の実施形態で、コードスニペット順位付けは、コードスニペットの各異なるグループごとであってよい。例えば、第1スケルトンブロックに対応する第1のコードスニペットのグループは、互いに順位付けられてよく、第2スケルトンブロックに対応する第2のコードスニペットのグループは、互いに順位付けられてよい。コードスニペット順位付けは、いくつかの実施形態で、方法1000に関して上述されたような適応性順位付けの如何なる適切な組み合わせも含んでよい。追加的に、又は代替的に、コードスニペット順位付けは、方法800又は方法900に関して上述されたようにコードスニペットを選択するようために使用される順位付けを含んでもよい。
【0147】
ブロック1104で、各々のコードスニペットは、パイプラインスケルトンの各スケルトンブロックについて選択されてよい。いくつかの実施形態で、各々のコードスニペットは、各々のセット内のそれらの各々の順位付けに基づき選択されてよい。例えば、第1のコードスニペットの組の中の最も高く順位付けされたコードスニペットが、第1スケルトンブロックについて選択されてよく、第2のコードスニペットの組の中の最も高く順位付けされたコードスニペットが、第2スケルトンブロックについて選択されてよい。このような又は他の実施形態で、各スケルトンブロックの1つよりも多いインスタンス化が評価され得るように、複数の異なるコードスニペットがスケルトンブロックの夫々について選択されてもよい。
【0148】
いくつかの実施形態で、ブロック1104で、動作はまた、新しいデータセットのコンテキストにおいて各選択されたコードスニペットを変換することを含んでもよい。この変換は、コードスニペットの変数名又はオブジェクト名の如何なる不一致も解消すること(例えば、プログラム解析に基づいて名称を適応させること)を含んでよい。
【0149】
ブロック1106で、候補パイプラインの組は、選択されたコードスニペットを用いて生成されてもよい。例えば、各候補パイプラインは、パイプラインスケルトンのスケルトンブロックの夫々のインスタンス化を含む具体的なパイプラインであってよい。そのようなものとして、いくつかの実施形態で、選択されたコードスニペットの組は、候補パイプラインを生成するために夫々使用され得るパイプライングループとして選択されてもよい。
【0150】
例えば、パイプラインスケルトンはスケルトンブロックA~Dを含んでよい。更に、複数のパイプライングループが、パイプラインスケルトンの複数の候補パイプラインを生成するために選択されてよい。例えば、第1パイプライングループは、第1パイプライングループが、スケルトンブロックAをインスタンス化する第1コードスニペット、スケルトンブロックBをインスタンス化する第2コードスニペット、スケルトンブロックCをインスタンス化する第3コードスニペット、及びスケルトンブロックDをインスタンス化する第4コードスニペットを含むパイプラインスケルトンの第1候補パイプラインを生成するために使用されてよい。追加的に、第2パイプライングループは、第2パイプライングループが、スケルトンブロックAを含む第5コードスニペット、スケルトンブロックBをインスタンス化する第6コードスニペット、スケルトンブロックCをインスタンス化する第7コードスニペット、及びスケルトンブロックDをインスタンス化する第8コードスニペットを含むパイプラインスケルトン第2候補パイプラインを生成するために使用されてよい。この例で、第1コードスニペット及び第5コードスニペットは、スケルトンブロックAに対応する同じコードスニペットの組の部分であってよく、第2コードスニペット及び第6コードスニペットは、スケルトンブロックBに対応する同じコードスニペットの組の部分であってよく、第3コードスニペット及び第7コードスニペットは、スケルトンブロックCに対応する同じコードスニペットの組の部分であってよく、第4コードスニペット及び第8コードスニペットは、スケルトンブロックDに対応する同じコードスニペットの組の部分であってよい。
【0151】
いくつかの実施形態で、異なるスケルトングループは、コードスニペットの異なる組み合わせの異なる順列の夫々について生成されてよい。そのようなものとして、いくつかの実施形態で、ブロック1106で生成された候補パイプラインの組は、異なる順列の夫々について異なる候補パイプラインを含んでよい。
【0152】
いくつかの実施形態で、テンプレートコードが、候補パイプラインの組の中の候補パイプラインの夫々に加えられてもよい。テンプレートコードは、データセットにおいて読み出し、それを訓練データセット及び試験データセットに分け、インスタンス化されたパイプラインスケルトンからのモデルを訓練データへ適合し、試験データに対して訓練済みモデルを評価することを含む、全てのパイプラインに現れる共通の動作の標準的なインスタンス化を提供し得る。そのような動作は、通常、パイプライン又はデータセットごとに機能又はシンタックスが異なることがないので、適切なパラメータでインスタンス化された標準のボイラープレート(boiler-plate)コードが、いくつかの実施形態では、インスタンス化されたパイプラインのそれらの部分を完成させるために使用されてもよい。
【0153】
ブロック1108で、候補パイプラインの組は出力されてよい。候補パイプラインの組の各具体的なパイプラインは、パイプラインスケルトンの候補インスタンス化であり得る。
【0154】
本開示の範囲から外れずに、方法1100に対して変更、追加、又は削除が行われてよい。例えば、方法1100の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、又は更なる動作に拡張されてもよい。
【0155】
図12は、本開示の少なくとも1つの実施形態に係る例示的なコンピューティングシステム1202のブロック図を表す。コンピューティングシステム1202は、変更モジュール(例えば、図1の変更モジュール120)に関連した1つ以上の動作を実施又は指示するよう構成されてよい。コンピューティングシステム1202は、プロセッサ1250、メモリ1252、及びデータストレージ1254を含んでよい。プロセッサ1250、メモリ1252、及びデータストレージ1254は、通信可能に結合されてよい。
【0156】
概して、プロセッサ1250は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む如何なる適切な専用又は汎用のコンピュータ、コンピューティングエンティティ、又は処理デバイスも含んでよく、如何なる適用可能なコンピュータ可読記憶媒体にも記憶されている命令を実行するよう構成されてよい。例えば、プロセッサ1250は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは、プログラム命令を解釈及び/又は実行するよう及び/又はデータを処理するよう構成された任意の他のデジタル又はアナログ回路を含んでよい。図12には単一のプロセッサとして表されているが、プロセッサ1250は、本開示で記載されている動作をいくつでも個別的に又は集合的に実行し又はその実行を指示するよう構成されたプロセッサをいくつでも含んでよい。更には、プロセッサの1つ以上は、異なるサーバなどの1つ以上の異なる電子デバイスに存在してもよい。
【0157】
いくつかの実施形態で、プロセッサ1250は、メモリ1252、データストレージ1254、又はメモリ1252とデータストレージ1254に記憶されているプログラム命令を解釈及び/又は実行するよう及び/又は記憶されているデータを処理するよう構成されてよい。いくつかの実施形態で、プロセッサ1250は、データストレージ1254からプログラム命令をフェッチし、プログラム命令をメモリ1252にロードしてよい。プログラム命令がメモリ1252にロードされた後、プロセッサ1250はプログラム命令を実行してよい。
【0158】
例えば、いくつかの実施形態で、変更モジュールは、プログラム命令としてデータストレージ1254に含まれてもよい。プロセッサ1250は、データストレージ1254から対応するモジュールのプログラム命令をフェッチしてよく、対応するモジュールのプログラム命令をメモリ1252にロードしてよい。対応するモジュールのプログラム命令がメモリ1252にロードされた後、プロセッサ1250はプログラム命令を実行してよく、それにより、コンピューティングシステムは、命令によって指示されるように、対応するモジュールに関連した動作を実施してよい。
【0159】
メモリ1252及びデータストレージ1254は、コンピュータ実行可能命令又はデータ構造を担持又は記憶しているコンピュータ可読記憶媒体を含んでよい。そのようなコンピュータ可読記憶媒体は、プロセッサ1250などの汎用又は専用のコンピュータによってアクセスされ得る如何なる利用可能な媒体も含んでよい。例として、限定としてではなく、そのようなコンピュータ可読記憶媒体には、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去可能なプログラム可能リードオンリーメモリ(EEPROM)、コンパクトディスク-リードオンリーメモリ(CD-ROM)若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、あるいは、コンピュータ実行可能命令又はデータ構造の形で特定のプログラムコードを担持又は記憶するために使用されてよく、かつ、汎用又は専用のコンピュータによってアクセスされ得る任意の他の記憶媒体を含む有形な又は非一時的なコンピュータ可読記憶媒体が含まれ得る。上記のものの組み合わせもコンピュータ可読記憶媒体の範囲内に含まれてよい。コンピュータ実行可能命令は、例えば、プロセッサ1250に特定の動作又は動作のグループを実行させるよう構成された命令及びデータを含んでよい。
【0160】
本開示の範囲から外れずに、コンピューティングシステム1202に対して、変更、追加、又は削除が行われてよい。例えば、いくつかの実施形態で、コンピューティングシステム1202は、明示的に図示又は記載されていない場合がある任意の数の他のコンポーネントを含んでもよい。
【0161】
図13~19は、新しいMLパイプラインに含まれる機能ブロックの説明を含む新しいパイプラインの準備及び生成に関係がある。方法は、如何なる適切なシステム、装置、又はデバイスによっても実行されてよい。例えば、図1のシステム100もしくはその1つ以上のコンポーネント又は図12のコンピューティングシステム1202が、方法に関連した動作の1つ以上を実行してもよい。別個のブロックとして表されているとしても、方法のブロックの1つ以上に関連したステップ及び動作は、特定の実施に応じて、更なるブロックに分けられても、より少ないブロックにまとめられても、あるいは、削除されてもよい。
【0162】
本開示の範囲から外れずに、図13~19の方法に対して、変更、追加、又は削除が行われてよい。例えば、図13~19の方法の動作のいくつかは、異なる順序で実施されてもよい。追加的に、又は代替的に、2つ以上の動作は同時に実行されてもよい。更に、説明されている操作及び動作は、単に一例として与えられており、操作及び動作のいくつかは、開示されている実施形態から逸脱せずに、任意であっても、より少ない操作及び動作にまとめられても、あるいは、更なる操作及び動作に拡張されてもよい。
【0163】
図13は、本開示の1つ以上の実施形態に従って、付随する説明とともにMLパイプラインを生成する例示的な方法1300のフローチャートを表す。
【0164】
ブロック1310で、訓練されたMLパイプラインスケルトンモデルが取得されてよい。例えば、パイプラインスケルトンモデルは、パイプラインスケルトンモデル104及び/又は704に類似しても又はそれと同等であってもよい。例えば、訓練されたMLパイプラインスケルトンモデルは、データセットメタ特徴と機能ブロック意味的ラベルとの間のマッピングを学習する用訓練された1つ以上のMLモデルを含んでよい。例えば、新しいデータセットのメタ特徴を考えると、パイプラインスケルトンモデルは、マッピングを用いて、新しいデータセットのメタ特徴に対応する機能ブロックを識別することができ、また、それに応じてパイプラインスケルトンを合成することができる。
【0165】
ブロック1320で、1つ以上のパラメトリックテンプレートが取得されてよい。パラメトリックテンプレートは、説明が生成され得るテキストフレームワークを含んでよい。例えば、所与の潜在的な機能ブロックは、対応するパラメトリックテンプレートを含み得る。いくつかの実施形態で、パラメトリックテンプレートは、入力可能部分(fillable portion)及び静的テキスト部分を含んでよく、それらは組み合わせて、所与の機能ブロックが生成されたMLパイプラインに含まれる理由の側面及び/又は背後にある理由を記載し得る。
【0166】
パラメトリックテンプレートの例が以下に含まれる:
【数1】
(訳出:{target_functional_block_name}は、データセットが{relevant_meta_feature_list}を有するので、このパイプラインで必要とされる。関連する特徴は{relevant_column_list}である。)
ここで、括弧{}内の語は、生成されたパイプラインに特有のデータセット、機能ブロック、及び/又は他のデータに関して収集され、説明の生成に使用され得る入力可能データを含み得る。イタリック体のテキストは、説明の生成に使用され得る静的なテキストを含み得る。説明が提供されるとき、他のフィールド、フォーム、及び/又はテキストも、本開示の範囲内で企図される。例えば、パラメトリックテンプレートは、機能ブロックの順序、機能ブロックに代わるもの、機能ブロックに関係があるメタ特徴、及び/又は機能ブロック、それらの使用、それらの目的若しくは機能、又は他の機能に関する他の情報に関して説明を提供してよい。
【0167】
ブロック1330で、要求が、データセットに基づき新しいMLパイプラインを生成するために受け取られてよい。例えば、ユーザはデータセットをサブミットしてもよく、また、データセットに対して実行される何らかの予測又は解析プロセスを容易にする用MLパイプラインを要求してもよい。このような及び他の実施で、ユーザは非技術者のユーザであってもよく、新しいMLパイプラインの生成は、MLプロジェクトをプログラムすることに精通していない可能性がある非技術者のユーザでもMLパイプラインを利用して、新しいパイプラインがインスタンス化された方法及びそれが変更され得る方法を理解することができるような単純化されたコマンドを利用し得る。
【0168】
ブロック1340で、訓練されたMLパイプラインスケルトンモデルを用いて新しいMLパイプラインをポピュレートする機能ブロックに関して、決定が行われてよい。そのようなプロセスの例は、図1に関して記載されてよく、かつ/あるいは、本開示のいずれかの他の実施形態に従って実行されてもよい。例えば、訓練されたMLパイプラインスケルトンモデルは、新しMLパイプラインが基づくべきであるデータセットを入力としてとってもよい。データセットを用いて、訓練されたMLパイプラインスケルトンモデルは、MLパイプラインに関連のある機能ブロックを識別し得る。
【0169】
ブロック1350で、機能ブロックに至る意思決定条件が抽出されてよい。例えば、前処理機能ブロックに至る決定木モデルに沿った移動経路が抽出されてもよい。他の例として、MLパイプラインのための所与のモデルの選択に寄与する最も関連の深いメタ特徴が抽出されてもよい。
【0170】
いくつかの実施形態で、ブロック1350は、MLパイプラインに含まれない機能ブロックについての意思決定条件を含んでもよい。例えば、冗長な機能を実行する2つの機能ブロックがブロック1340で含まれると決定された場合に、冗長な機能のうちの一方は除かれてよい。そのような重複排除の例は、図1及び/又は図2を参照して記載されてよい。このような及び他の実施形態で、冗長な機能ブロックが除かれること及び/又は他のブロックがMLパイプラインに残ることに至る意思決定条件が抽出され得る。他の例として、機能ブロックとして含まれると決定されたもの以外の他のモデルに関係がある意思決定条件(例えば、それらのモデルが含まれなかった理由に関係がある意思決定条件)が抽出されてもよい。
【0171】
ブロック1360で、機能ブロック間の依存関係が決定されてよい。例えば、1つの機能ブロックは、他の機能ブロックで起こるデータ又はデータの処理を利用してもよく、機能ブロック間のそのような依存関係が決定されてよい。そのような決定の例は、図16を参照して記載されてよい。
【0172】
ブロック1370で、機能ブロックの夫々の説明が、パラメトリックテンプレートを用いて生成されてよい。例えば、所与の機能ブロックについて、関連するパラメトリックテンプレートが識別され得、対応するデータが、説明をもたらすよう入力可能部分に挿入され得る。機能名SimpleImputerを含み、データセットの「年齢」(age)内の欠損値に基づき含まれる機能ブロックについて上記で与えられた例に従って、パラメトリックテンプレート:
【数2】
(訳出:{target_functional_block_name}は、データセットが{relevant_meta_feature_list}を有するので、このパイプラインで必要とされる。関連する特徴は{relevant_column_list}である。)
は、次のような説明に変換され得る:
【数3】
(訳出:SimpleImputerは、データセットが欠損データ値を有するので、このパイプラインで必要とされる。関連する特徴は年齢である。)
【0173】
ブロック1380で、新しいMLパイプラインが、機能ブロック及びブロック1370で説明された説明によりインスタンス化されてよい。例えば、各機能ブロックについて、対応する説明は、機能ブロックを実装するコンピュータプログラミングコードの直前又は直後に与えられてよい。そのようなインスタンス化の例は、図19を参照して更に詳細に記載されてよい。
【0174】
図14は、本開示の1つ以上の実施形態に従って、付随する説明とともにMLパイプラインを生成するのに備えて情報を収集する例示的な方法1400のフローチャートを表す。例えば、方法1400の動作は、新しいMLパイプラインの生成の要求を受け取る前に実行されてよい。
【0175】
ブロック1410で、1つ以上のパラメトリックテンプレートが生成されてよい。パラメトリックテンプレートの生成は、ユーザがMLパイプライン内の所与の機能ブロックに関して情報を提供するために静的及び/又は入力可能なテキストの組み合わせを生成する手動プロセスを含んでもよい。いくつかの実施形態で、パラメトリックテンプレートは、機能ブロックに関する情報(例えば、機能ブロックで呼び出される機能のタイトル)、機能ブロックの主因(例えば、機能ブロックが所与のMLパイプラインに含まれる意思決定の根拠及び/又は背後にある理由)、機能ブロックの目的(例えば、機能ブロックが何を達成又は実行するかの説明)、機能ブロックのフォーム(例えば、機能ブロックの入力及び出力がどのようなものであるか、及び/又はどのようなデータフォーマットが入力及び/又は出力で使用されるか)、機能ブロックに代わるもの(例えば、ユーザがMLパイプラインを変更すること望んだ場合に、他のどのようなオプションが。識別された機能ブロックの代わりに使用されるのに利用可能であり得るか)、及び機能ブロックに関連した任意の順序因子(例えば、先の機能ブロックで生成されたデータを機能ブロックが利用する場合に、先の機能ブロックに対する依存性が、例えば:
【数4】
(訳出:{target_functional_block_name}は、{dependent_functional_block_name}の{前/後}で実行されるべきである。)などのパラメトリックテンプレートの一部とともに含まれ得る)に関する情報を提供するように起草されてよい。
【0176】
ブロック1420で、アプリケーションプログラミングインターフェース(API)データが収集されてよい。いくつかの実施形態で、ブロック1420は、所与の機能ブロックについてAPIドキュメンテーションをクロールすることを含んでもよい。例えば、プロジェクトページ、readme.txtファイル、ヘルプデータベース、又は所与の機能ブロックに関する情報の他のソースが、その所与の機能ブロックに関するデータを識別及び/又は収集するよう解析及び/又はパースされてよい。いくつかの実施形態で、様々な情報片のハイパーテキストマークアップ言語(HTML)タグパス、例えば、API名、サマリー、ハイパーパラメータ記述、及び/又は属性が識別されてもよい。そのようなアプローチは、ドキュメンテーションの統合された(unified)HTML構造特性を利用してもよい。ブロック1420は、APIに関する情報を集めることを参照して記載されているが、ブロック1420は、APIとは異なる方法で実装され得る機能ブロックに関するデータの収集を含んでもよいことが理解されるだろう。
【0177】
いくつかの実施形態で、ブロック1420は、収集された情報(例えば、API名、サマリー、ハイパーパラメータ、属性記述、及び/又は他のデータ)を記憶することを含んでもよい。このような及び他の実施形態で、収集された情報は、JSONファイルなどの構造化されたデータフォーマット文書でキー-値対として記憶されてもよい。
【0178】
ブロック1430で、データフローモデルが構成されてよい。例えば、新しいMLパイプラインの機能ブロックを通るデータセットのフローがトレース及び/又は追跡されてよい。いくつかの実施形態で、データフローモデルは、各ノードが機能ブロックを表し、各辺がソースノードからあて先ノードへのデータフロー依存性を表す有向非巡回グラフを使用することを含んでもよい。有向非巡回グラフを構成した後、サンプルデータにおいて少なくとも1つのカラムごとに適用される機能ブロックの各対が収集される。このような及び他の実施形態で、機能ブロックのそのような対は、有向非巡回グラフ内の辺を生成するために使用されてよい。例えば、対のうちの第1機能ブロックが、サンプルデータの全パイプライン内のデータの所与のカラムについて、常に第2機能ブロックの前に適用される場合に、辺は、第1機能ブロックから第2機能ブロックへと生成されてよい。
【0179】
ブロック1440で、MLスケルトンモデルが訓練されてよい。例えば、データセットを記述するメタ特徴の組、数あるメタ特徴の中でもとりわけ、ローの数、カラムの数、欠損値の存在、カラムが数値又は文字列値を有するかどうか、などが定義されてよい。データに対して前処理を実行する機能ブロックについて、決定木分類器は、データセットのメタ特徴に基づき所与のデータセットについて当該機能ブロックがMLパイプラインに存在する確率スコアを予測するよう、サンプルデータに対して訓練されてよい。MLモデル機能ブロックについて、ロジスティック回帰モデルが、各モデルが所与のデータセットについて使用される確率を計算するよう訓練されてもよい。MLスケルトンモデルの訓練の例は、図15及び/又は本開示の他の実施形態を参照して更に詳細に記載され得る。
【0180】
図15は、本開示の1つ以上の実施形態に従って、スケルトンモデルを訓練する例示的な方法1500のフローチャートを表す。
【0181】
ブロック1510で、プロジェクトが訓練コーパスから選択されてよい。例えば、関連するデータセットを有するサンプルMLパイプラインの訓練コーパスが訓練コーパスとして記憶されてもよく、所与のプロジェクトは訓練コーパスから選択されてよい。
【0182】
ブロック1520で、メタ特徴がデータセットから抽出され、入力特徴ベクトル生成するために使用されてよい。例えば、入力特徴ベクトルは、8つのカラム及び36のローが存在し、0が欠損値の不存在を表す場合に、{8,36,0}などの、メタ特徴に関連した値のベクトルを含んでもよい。3つのメタ特徴の簡単な例がここでは与えられているが、メタ特徴はいくつでも含まれてよいことが理解されるだろう。
【0183】
ブロック1530で、ブロック1510で選択されたプロジェクトのMLパイプライン内の各機能ブロックについて、機能ブロックの夫々がMLパイプラインに存在するかどうかを示す出力タプルが生成されてよい。例えば、出力タプルは、各潜在的な機能ブロックに対応する値を有する値の例であってよい。他の例として、各機能ブロックは、それ自体の出力を、機能ブロック名又は他の識別子と、機能ブロックがMLパイプラインに含まれるか否かの指示(例えば、0又は1として)とのキー-値対として含んでもよい。
【0184】
ブロック1540で、ブロック1520の入力特徴ベクトル及びブロック1530の出力タプルが訓練データに加えられてよい。このようにして、訓練データは、メタ特徴間の関係のデータに基づいた表現と、どの機能ブロックが対応するデータセットを提供するためにMLパイプラインに以前に含まれていたかとを含んでよい。
【0185】
ブロック1550で、解析されずかつ訓練データに追加されていない追加のプロジェクトが存在するかどうかが決定されてよい。追加のプロジェクトがある場合に、方法1500は、解析のために追加のプロジェクトを選択するようブロック1510へ戻ってもよい。全てのプロジェクトが検討された(例えば、追加のプロジェクトがない)場合には、方法1500はブロック1560へ進んでよい。
【0186】
ブロック1560で、スケルトンモデルが訓練データを用いて訓練されてもよい。例えば、スケルトンモデルは、スケルトンモデルがその場合に、1つ以上のメタ特徴と機能ブロックとの間の確率又は数値相関スコアを提供することができるように、訓練されてよい。このようにして、訓練されたスケルトンモデルは、入力としてデータセットを受取、新しいMLパイプラインに含める可能な又は潜在的な機能ブロックを提案することができる。
【0187】
図16は、本開示の1つ以上の実施形態に従って、付随する説明とともにMLパイプラインを生成する他の例示的な方法1600のフローチャートを表す。
【0188】
ブロック1610で、機能ブロックのリストが取得されてよい。例えば、データセットを入力として供給されると、訓練されたMLパイプラインスケルトンモデルは、データセットに基づき、新しいパイプラインに含まれる機能ブロックのリストを生成してよい。いくつかの実施形態で、ブロック1610は、重複機能を実行するブロックを除くよう冗長な又は機能的に類似した機能ブロックの重複排除を含んでよい。いくつかの実施形態で、ブロック1610は、図5図6図11、及び/又は他の方法に類似しても又は同等であってもよい。
【0189】
ブロック1620で、前処理機能ブロックについての意思決定条件が抽出されてよい。例えば、ブロック1610で取得されたリストに含まれる機能ブロックの夫々に関連した各々の決定木モデルが取得されてよい。根ノードから始まって、前処理機能ブロックを含めるとの決定に対応するリーフノードに至る、決定木を通るパスが、トラバースされてよい。決定木に沿った決定の夫々と、各決定に関連した関連するメタ特徴とが、収集されてよい。決定木は、前処理機能ブロックの夫々について解析されてよい。
【0190】
いくつかの実施形態で、ブロック1620は、収集された決定及び関連するメタ特徴を使用してパラメトリックテンプレートの入力可能部分の少なくとも一部を埋め、前処理機能ブロックを含めるための根拠に関する説明を生成することを含んでよい。
【0191】
ブロック1630で、どのモデル機能ブロックを含めるかの決定に影響を与えるメタ特徴が抽出されてよい。例えば、MLプロセス(例えば、論理的回帰モデル)が、新しいパイプラインのためのMLモデルを選択するために使用されてよい。そうすることで、MLプロセスは、モデルを選択する際に様々なメタ機能に特定の重み及び/又は値を割り当ててもよい。ブロック1630は、選択されたMLモデルのために異なるメタ特徴の重みを呼び出すことを含んでもよい。メタ特徴の重みは、比例的メタ特徴重み(例えば、MLモデルの決定においてこの特定のメタ特徴の値がどれくらい重要か)を計算するよう、それらの元々のメタ特徴値に関して正規化されてもよい。比例的メタ特徴重みは、降順でソートされてもよく、特定の数の上位メタ特徴が、MLモデルが選択された理由の説明に含めるために選択されてよい。いくつかの実施形態で、上位K個のメタ特徴よりもむしろ、メタ特徴のセット数、比例的メタ特徴重みの閾値を上回るやメタ特徴の数、又は任意の他の同等若しくは類似のメトリックが、新しいMLパイプラインのためのMLモデルを選択する決定に影響を与えるものとして含めるべきメタ特徴の数を選択するために使用されてもよい。
【0192】
いくつかの実施形態で、ブロック1630は、収集されたメタ特徴を用いてパラメトリックテンプレートの入力可能部分の少なくとも一部を埋め、モデルの選択の根拠に関する説明を生成することを含んでもよい。
【0193】
ブロック1640で、代替の機能ブロックが決定されてもよい。例えば、前処理機能ブロックについて、冗長性に基づき除かれる機能ブロックは、代替物としてリストアップされてもよい。このような及び他の実施形態で、所与の前処理機能ブロックは、同じ又は類似した機能を実行する多数の機能ブロックから選択されることがある。選択されなかった残りの前処理機能ブロックは、代替の機能ブロックとして識別されてよい。他の例として、MLモデル機能ブロックについて、所与のMLモデルは、それらの重みに基づく特定のメタ機能値、及びMLパイプラインがターゲットタスクを実行することにおける期待される成功確率を反映し得るそれらの値の組み合わせに基づき、選択されてよい。所与のMLモデルは、これらの値の最高の組み合わせを含むことができ、例えば、MLモデルの順位付けリストが、所与のMLモデルを選択する際にブロック1610で生成されてもよく、所与のMLモデルの後の次のK個のMLモデルが、所与のMLモデルの代替物であると決定されてもよい。いくつかの実施形態で、決定された代替の機能ブロックは、生成された説明に含まれてもよい。例えば、ユーザが新しいMLパイプラインにおいて所与の機能ブロックを調整したいという希望を示す場合に(前処理機能ブロック又はMLモデル機能ブロック)、説明は、ここで決定された代替の機能ブロックを提案してもよい。
【0194】
ブロック1650で、依存する機能ブロック及び機能ブロックの順序が決定されてよい。例えば、データフローモデルが、ブロック1610から含まれている機能ブロックに含まれる機能ブロックについて生成されてもよい。いくつかの実施形態で、有向非巡回グラフが、データの処理/受け渡しに関与する機能ブロックに基づき構成されてよい。このような及び他の実施形態で、説明は、非巡回グラフを用いて観察されるデータ依存関係に基づき生成されてもよい。例えば、ブロック1650は、機能ブロック間の依存関係が識別され得るブロック1430と類似又は同等であり得る。
【0195】
いくつかの実施形態で、ブロック1650は、識別された依存関係に基づき説明を生成することを含んでもよい。例えば、パラメトリックテンプレートの入力可能部分の少なくとも一部は、順序依存及び関連する機能ブロックにより補足され得る。そのようなパラメトリックテンプレートの例には、次のものが含まれ得る:
【数5】
(訳出:{target_functional_block_name}は、{dependent_functional_block_name}の{前/後}で実行されるべきである。)
【0196】
図17は、本開示の1つ以上の実施形態に従って、MLパイプライン内の前処理機能ブロックに関連した説明を生成する例示的な方法1700のフローチャートを表す。
【0197】
ブロック1710で、前処理機能ブロックに関連した決定木モデルがアクセスされ得る。例えば、MLパイプラインスケルトンに含まれる所与の前処理機能ブロックについて、スケルトンモデルは、所与の前処理機能ブロックがMLパイプラインスケルトンに含まれるべきであると決定するよう、決定木モデルなどのモデルを利用してもよい。
【0198】
ブロック1720で、決定木モデルの根ノードと前処理機能ブロックを含めるとの決定に対応するリーフノードとの間のパスがトラバースされてよい。
【0199】
ブロック1730で、決定木モデルを通ってトラバースされた決定が、ブロック1720のパス沿いの決定をレンダリングする際に、データセット特性(メタ特徴)及び値条件に関して収集されてよい。例えば、パス沿いの各決定について、メタ特徴及びその関連する値が、メタ特徴及びその関連する値を考慮した決定とともに収集されてもよい。
【0200】
ブロック1740で、パラメトリックテンプレートが、説明を生成するよう決定及び特性(例えば、メタ特徴)でポピュレートされてよい。例えば、パラメトリックテンプレートの入力可能部分は、関連するメタ特徴及び/又はそれらの値により補足されてよく、それにより、テキストの静的な部分と組み合わせて、説明は、所与の機能ブロックがMLパイプラインスケルトンに含まれる理由を詳述する。
【0201】
図18は、本開示の1つ以上の実施形態に従って、MLパイプライン内のMLモデルに関連した説明を生成する他の例示的な方法1800のフローチャートを表す。
【0202】
ブロック1810で、モデル機能ブロックごとに確率スコアを予測するメタモデルがアクセスされてよい。例えば、MLスケルトンモデルは、生成されるMLパイプラインに関連したデータセットのメタ特徴に基づき、タスクの実行の際に、各々の候補モデルの正確さを示すスコアを各候補モデルに割り当ててよい。
【0203】
ブロック1820で、選択されたモデル機能ブロックについて、メタ特徴重みが取得されてよい。例えば、最も高い精度スコアを有するモデル機能ブロックを決定することにおいて、様々なメタ特徴は、異なるモデル機能ブロックについて精度スコアを決定する際に特定の重みを与えられてよい。
【0204】
ブロック1830で、各メタ特徴重みは、比例的メタ特徴重みを計算するよう元のメタ特徴値に関して正規化されてよい。例えば、データセットは、メタ特徴の元の値(例えば、カラムの数、データセット内の特徴の数、データセットが欠損値であるかどうかを表すバイナリ値、など)を含んでもよく、その値は、正規化された値を得るために重みで除されてよい。
【0205】
ブロック1840で、メタ特徴が、それらの比例的メタ特徴重みに基づき(例えば、所与のモデル機能ブロックを含めるとの決定において所与のメタ特徴がどの程度大きい要因であったかに基づき)降順でソートされてよい。ソート後、上位K個のメタ特徴がそれらの値とともに、モデル機能ブロックの選択についての説明を提供するよう選択されてよい。例えば、上位3つ又は上位5つの最も影響がある又は最も関係があるメタ特徴が、それらの各々の値とともに提示されてよく、それにより、ユーザは、所与のモデルが他に対して選択された理由を理解することができる。このような及び他の実施形態で、ブロック1840は、選択されたメタ特徴及び/又はそれらの値によりパラメトリックテンプレートの入力可能部分を補足することを含んでもよい。
【0206】
図19は、本開示の1つ以上の実施形態に従って、付随する説明とともにMLパイプラインを生成する他の例示的な方法1900のフローチャートを表す。いくつかの実施形態で、方法1900は、本明細書で記載されるアプローチのいずれかに従って、新しいMLパイプラインがデータセットに基づき既に生成された後に実行されてよい。
【0207】
ブロック1910で、機能ブロックがMLパイプラインから選択されてよい。例えば、機能ブロックは、MLパイプライン内で時間的若しくは線形的な順序で、又は任意の他の方法若しくは順序で、選択されてよい。
【0208】
ブロック1920で、選択された機能ブロックについて、パラメトリックテンプレートが、収集されたデータをパラメトリックテンプレートの入力可能部分に適用することによって、インスタンス化されてよい。例えば、機能ブロックの名称、機能ブロックの目的、機能ブロックの依存関係、機能ブロックが含まれる理由、又は説明の任意の他の部分若しくは側面が、収集されたデータを用いてインスタンス化されてよい。
【0209】
ブロック1930で、説明は、MLパイプラインのフォーマットに応じてフォーマット化されてもよい。例えば、説明は、コンピュータプログラミングコードでの(例えば、Pythonプログラムコードでの)テキストコメントとして、Jupyterノートブックでのマークダウンセルとして、又はコンピュータプログラム若しくはコードに付随する任意の他のコメント若しくはテキスト特徴としてレンダリングされてよい。いくつかの実施形態で、説明は、MLパイプラインのフォーマットに基づきフォーマット化されてもよい。例えば、MLパイプラインをJupyterノートブックとして出力するようユーザが要求しているか及び/又はシステムが設計されている場合に、説明は、Jupyterノートブックでのマークダウンセルとしてフォーマット化されてよい。他の例として、MLパイプラインがPythonプログラミングコードとして出力される場合には、説明は、コンピュータプログラミングコードにテキストコメントとして含まれてもよい。
【0210】
ブロック1940で、機能ブロックに関連したコードの前に説明が置かれてよい。例えば、説明は、MLパイプラインにおいて機能ブロックに関連したコードスニペットの直前にテキストコメントして置かれてもよい。
【0211】
ブロック1950で、説明が生成されていない更なる機能ブロックがMLパイプラインにあるか否かが決定されてよい。更なる機能ブロックがある場合には、方法1900は、MLパイプラインにおいて他の機能ブロックを選択するようブロック1910へ戻ってもよい。更なるブロックがない(例えば、全ての機能ブロックが説明を有している)場合には、方法1900はブロック1960へ進んでよい。
【0212】
ブロック1960で、機能ブロック及び関連する説明を有する、結果として得られたMLパイプラインは、記憶されてもよい。例えば、関連する説明を含むMLパイプラインは、JSON又はXMLファイルなどの構造化されたデータ構造として記憶されてもよい。他の例として、関連する説明を含むMLパイプラインは、Jupyterノートブックとして記憶されてもよい。他の例として、関連する説明を含むMLパイプラインは、Pythonスクリプトなどの定番のコンピュータプログラミングスクリプトとして出力されてもよい。
【0213】
上述されたように、本開示で記載される実施形態は、以下で更に詳細に議論されるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む専用又は汎用のコンピュータの使用を含んでもよい。更に、上述されたように、本開示で記載される実施形態は、コンピュータ実行可能命令又はデータ構造を搬送するか又は記憶しているコンピュータ可読媒体を用いて実施されてもよい。
【0214】
本開示で使用されるように、「モジュール」又は「コンポーネント」という用語は、モジュール若しくはコンポーネントの動作を実行するよう構成された特定のハードウェア実装、並びに/又はコンピューティングシステムの汎用ハードウェア(例えば、コンピュータ可読媒体、処理デバイス、など)に記憶され及び/若しくはそれによって実行され得るソフトウェアオブジェクト若しくはソフトウェアルーチンを指し得る。いくつかの実施形態において、本開示で記載される異なるコンポーネント、モジュール、エンジン、及びサービスは、コンピューティングシステムで(例えば、別個のスレッドとして)実行するオブジェクト又はプロセスとして実装されてもよい。本開示で記載されるシステム及び方法のいくつかは、(汎用ハードウェアに記憶され及び/又はそれによって実行される)ソフトウェアにおいて実装されるものとして概して記載されているが、特定のハードウェア実装、又はソフトウェアと特定のハードウェア実装との組み合わせも可能であり、考えられている。本明細書中、「コンピューティングエンティティ」は、本開示で先に定義されたあらゆるコンピューティングシステム、又はコンピューティングシステムで実行されるあらゆるモジュール若しくはモジュールの組み合わせであってよい。
【0215】
本開示で、特に添付の特許請求の範囲(例えば、添付の特許請求の本文)で使用される用語は、一般的に、“非限定的な(open)”用語として意図されている(例えば、語「含んでいる(including)」は、“~を含んでいるが、~に限定されない”との意に解釈されるべきであり、語「備えている(having)」は、「少なくとも~を備えている」との意に解釈されるべきであり、語「含む(includes)」は、“~を含むが、~に限定されない”との意に解釈されるべきである、など。)。
【0216】
更に、導入されたクレーム記載(introduced claim recitation)において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しない。例えば、理解を促すために、後続の添付された特許請求の範囲では、「少なくとも1つの(at least one)」及び「1つ以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって、「a」又は「an」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「1つ以上の」又は「少なくとも1つの」といった導入句と「a」又は「an」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を1しか含まない例に限定されるということが示唆されると解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである。)。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。
【0217】
更には、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、通常、少なくとも記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう(例えば、他に修飾語のない、単なる「2つの記載事項」という記載がある場合、この記載は、少なくとも2つの記載事項、又は2つ以上の記載事項を意味する。)。更に、「A、B及びCなどのうち少なくとも1つ」又は「A、B及びCなどのうちの1つ以上」に類する表記が使用される場合、一般的に、そのような構造は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、及び/又はAとBとCの全て、などを含むよう意図される。
【0218】
更に、2つ以上の選択可能な用語を表す如何なる離接語及び/又は離接句も、明細書、特許請求の範囲、又は図面のいずれであろうと、それら用語のうちの1つ、それらの用語のうちのいずれか、あるいは、それらの用語の両方を含む可能性を意図すると理解されるべきである。例えば、「A又はB」という句は、「A又はB」、あるいは、「A及びB」の可能性を含むことが理解されるべきである。
【0219】
本開示で挙げられている全ての例及び条件付き言語は、当該技術の促進に本発明者によって寄与される概念及び本発明を読者が理解するのを助ける教育上の目的を意図され、そのような具体的に挙げられている例及び条件に制限されないと解釈されるべきである。本開示の実施形態が詳細に記載されてきたが、様々な変更、置換、及び代替が、本開示の主旨及び適用範囲から逸脱することなしに行われてよい。
【0220】
上記の実施形態に加えて、以下の付記を開示する。
(付記1)
新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき前記新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、
複数のパラメトリックテンプレートを取得することであり、前記複数のパラメトリックテンプレートの夫々は、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、ことと、
前記データセットに基づき前記新しいMLパイプラインを生成するための要求を受け取ることと、
前記訓練済みMLパイプラインスケルトンモデルに基づき前記新しいMLパイプラインをポピュレートするよう複数の機能ブロックを決定することと、
前記複数の機能ブロックのうちの少なくとも1つをもたらす意思決定条件を抽出することと、
前記複数のパラメトリックテンプレートを用いて前記複数の機能ブロックのうちの前記少なくとも1つの説明を生成することであり、前記1つ以上の入力可能部分のうちの少なくとも1つは、前記複数の機能ブロックのうちの前記少なくとも1つをもたらす前記意思決定条件に基づき埋められる、ことと、
生成された前記説明により前記複数の機能ブロックを含む前記新しいMLパイプラインをインスタンス化することと
を有する方法。
(付記2)
前記複数の機能ブロックの間の依存関係を決定することと、
前記依存関係に基づき前記新しいMLパイプライン内の機能ブロックの順序に関する説明を生成することと
を更に有する付記1に記載の方法。
(付記3)
前記依存関係を決定することは、前記新しいMLパイプライン内の前記データセットのデータフローモデルを用いて前記複数の機能ブロックの非巡回グラフを構成することを有する、
付記2に記載の方法。
(付記4)
前記複数の機能ブロックを決定することは、前記データセットのメタ特徴に基づき使用すべき複数のモデルからMLモデルを決定することを含む、
付記1に記載の方法。
(付記5)
前記MLモデルに関する前記説明を生成することは、前記複数のモデルからの前記MLモデルの決定に最も影響を及ぼした前記データセットの前記メタ特徴のうちの少なくとも1つを識別することを含む、
付記4に記載の方法。
(付記6)
所与の機能ブロックについて前記説明を生成することは、
決定木モデルの根から前記所与の機能ブロックを含めるとの決定に対応するリーフまでの前記決定木モデル内のパスをトラバースすることと、
前記データセットのメタ特徴に基づきなされた前記決定木モデルに沿った決定を集めることと、
集められた前記決定、前記メタ特徴、又はその両方に基づき前記所与の機能ブロックに対応する所与のパラメトリックテンプレートの前記1つ以上の入力可能部分をポピュレートすることと
を含む、
付記1に記載の方法。
(付記7)
前記入力可能部分をポピュレートすることは、前記所与の機能ブロックをホストしているサートパーティソースから得られたデータを適用することを含む、
付記6に記載の方法。
(付記8)
所与の機能ブロックについて前記説明を生成することは、前記所与の機能ブロックに代わるものを提案することを含む、
付記1に記載の方法。
(付記9)
前記複数の機能ブロックを決定することは、前記所与の機能ブロックに対して重複する機能を実行する第2機能ブロックを除くことを含み、
前記代わるものは、除かれた前記第2機能ブロックである、
付記8に記載の方法。
(付記10)
1つ以上のプロセッサによって実行される場合に、システムに、
新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき前記新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、
複数のパラメトリックテンプレートを取得することであり、前記複数のパラメトリックテンプレートの夫々は、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、ことと、
前記データセットに基づき前記新しいMLパイプラインを生成するための要求を受け取ることと、
前記訓練済みMLパイプラインスケルトンモデルに基づき前記新しいMLパイプラインをポピュレートするよう複数の機能ブロックを決定することと、
前記複数の機能ブロックのうちの少なくとも1つをもたらす意思決定条件を抽出することと、
前記複数のパラメトリックテンプレートを用いて前記複数の機能ブロックのうちの前記少なくとも1つの説明を生成することであり、前記1つ以上の入力可能部分のうちの少なくとも1つは、前記複数の機能ブロックのうちの前記少なくとも1つをもたらす前記意思決定条件に基づき埋められる、ことと、
生成された前記説明により前記複数の機能ブロックを含む前記新しいMLパイプラインをインスタンス化することと
を有する動作を実行させる命令を含む1つ以上の非一時的なコンピュータ可読媒体。
(付記11)
前記動作は、
前記複数の機能ブロックの間の依存関係を決定することと、
前記依存関係に基づき前記新しいMLパイプライン内の機能ブロックの順序に関する説明を生成することと
を更に有する、
付記10に記載の非一時的なコンピュータ可読媒体。
(付記12)
前記依存関係を決定することは、前記新しいMLパイプライン内の前記データセットのデータフローモデルを用いて前記複数の機能ブロックの非巡回グラフを構成することを有する、
付記11に記載の非一時的なコンピュータ可読媒体。
(付記13)
前記複数の機能ブロックを決定することは、前記データセットのメタ特徴に基づき使用すべき複数のモデルからMLモデルを決定することを含む、
付記10に記載の非一時的なコンピュータ可読媒体。
(付記14)
前記MLモデルに関する前記説明を生成することは、前記複数のモデルからの前記MLモデルの決定に最も影響を及ぼした前記データセットの前記メタ特徴のうちの少なくとも1つを識別することを含む、
付記13に記載の非一時的なコンピュータ可読媒体。
(付記15)
所与の機能ブロックについて前記説明を生成することは、
決定木モデルの根から前記所与の機能ブロックを含めるとの決定に対応するリーフまでの前記決定木モデル内のパスをトラバースすることと、
前記データセットのメタ特徴に基づきなされた前記決定木モデルに沿った決定を集めることと、
集められた前記決定、前記メタ特徴、又はその両方に基づき前記所与の機能ブロックに対応する所与のパラメトリックテンプレートの前記1つ以上の入力可能部分をポピュレートすることと
を含む、
付記10に記載の非一時的なコンピュータ可読媒体。
(付記16)
前記入力可能部分をポピュレートすることは、前記所与の機能ブロックをホストしているサートパーティソースから得られたデータを適用することを含む、
付記15に記載の非一時的なコンピュータ可読媒体。
(付記17)
所与の機能ブロックについて前記説明を生成することは、前記所与の機能ブロックに代わるものを提案することを含む、
付記10に記載の非一時的なコンピュータ可読媒体。
(付記18)
前記複数の機能ブロックを決定することは、前記所与の機能ブロックに対して重複する機能を実行する第2機能ブロックを除くことを含み、
前記代わるものは、除かれた前記第2機能ブロックである、
付記17に記載の非一時的なコンピュータ可読媒体。
(付記19)
1つ以上のプロセッサと、命令を含む1つ以上の非一時的なコンピュータ可読媒体とを有するシステムであって、
前記命令は、前記1つ以上のプロセッサによって実行される場合に、当該システムに、
新しい機械学習(ML)パイプラインに関連したデータセットのメタ特徴に基づき前記新しいMLパイプライン内の1つ以上の機能ブロックを予測するよう構成された訓練済みMLパイプラインスケルトンモデルを取得することと、
複数のパラメトリックテンプレートを取得することであり、前記複数のパラメトリックテンプレートの夫々は、所与の機能ブロックを組み合わせて記述する1つ以上の入力可能部分及び1つ以上の静的テキスト部分を含む、ことと、
前記データセットに基づき前記新しいMLパイプラインを生成するための要求を受け取ることと、
前記訓練済みMLパイプラインスケルトンモデルに基づき前記新しいMLパイプラインをポピュレートするよう複数の機能ブロックを決定することと、
前記複数の機能ブロックのうちの少なくとも1つをもたらす意思決定条件を抽出することと、
前記複数のパラメトリックテンプレートを用いて前記複数の機能ブロックのうちの前記少なくとも1つの説明を生成することであり、前記1つ以上の入力可能部分のうちの少なくとも1つは、前記複数の機能ブロックのうちの前記少なくとも1つをもたらす前記意思決定条件に基づき埋められる、ことと、
生成された前記説明により前記複数の機能ブロックを含む前記新しいMLパイプラインをインスタンス化することと
を有する動作を実行させる、システム。
(付記20)
前記動作は
前記複数の機能ブロックの間の依存関係を決定することと、
前記依存関係に基づき前記新しいMLパイプライン内の機能ブロックの順序に関する説明を生成することと
を更に有する、
付記19に記載のシステム。
【符号の説明】
【0221】
102,702 パイプラインスケルトン
104,704 パイプラインスケルトンモデル
105 MLプロジェクトコーパス
106,206,706 新しいデータセット
108 新しいMLタスク
109,209,709 データセット
110,210,710 既存のMLプロジェクト
111,211,711 MLパイプライン
115,215 新しいMLプロジェクト
120 変更モジュール
122,732 具体的なパイプライン
212 精緻化されたパイプラインスケルトン
258 機能ブロック依存関係
260 関係マッピング
262,718 ブロックインスタンス化
728 コードスニペット
730 拡張コードスニペット情報
734 候補パイプライン
1202 コンピューティングシステム
1250 プロセッサ
1252 メモリ
1254 データストレージ
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19