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

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

▶ キナクシス インコーポレイテッドの特許一覧

特許7478318フレキシブル・パイプライン生成のための方法及びシステム
<>
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図1
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図2
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図3
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図4
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図5
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図6
  • 特許-フレキシブル・パイプライン生成のための方法及びシステム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-24
(45)【発行日】2024-05-07
(54)【発明の名称】フレキシブル・パイプライン生成のための方法及びシステム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20240425BHJP
【FI】
G06F9/48 370
【請求項の数】 12
(21)【出願番号】P 2021172467
(22)【出願日】2021-10-21
(62)【分割の表示】P 2020562802の分割
【原出願日】2019-01-28
(65)【公開番号】P2022009364
(43)【公開日】2022-01-14
【審査請求日】2021-12-01
(31)【優先権主張番号】62/623,242
(32)【優先日】2018-01-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】521084851
【氏名又は名称】キナクシス インコーポレイテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】バクーリン、ユーリ
(72)【発明者】
【氏名】マルケス、マルシオ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2005-352618(JP,A)
【文献】特表2015-512099(JP,A)
【文献】特開2008-176804(JP,A)
【文献】米国特許出願公開第2016/0103706(US,A1)
【文献】米国特許出願公開第2004/0243543(US,A1)
【文献】特表2014-513372(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
フレキシブル・パイプライン生成のための方法であって、前記方法が、少なくとも1つの処理ユニット上で実行され、前記方法は、
2つ又はそれ以上のタスクを生成することであって、前記2つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義する、生成することと、
各タスクについて、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも1つの入力と少なくとも1つの出力とを受信することと、
前記2つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成することであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも1つの前記出力を前記ワークフローの前記完遂した出力とマッピングすることであって、前記タスクのうちの少なくとも1つの出力が、他のタスクのうちの少なくとも1つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、マッピングすることと、
前記タスクのうちの少なくとも1つの入力を前記他のタスクのうちの少なくとも1つの出力にマッピングすることと、
前記タスクのうちの少なくとも1つの前記入力を前記ワークフローの前記発生した入力とマッピングすることであって、前記タスクのうちの少なくとも1つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、マッピングすることと
を含む、生成することと、
前記2つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行することと
を含む、方法。
【請求項2】
前記タスクのうちの少なくとも1つの前記入力を前記他のタスクのうちの少なくとも1つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力にマッピングされた前記少なくとも1つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも1つのタスクについて、前記少なくとも1つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項1に記載の方法。
【請求項3】
前記タスクのうちの少なくとも1つの前記入力を前記他のタスクのうちの少なくとも1つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも1つの前記入力を前記発生した入力にマッピングされた前記少なくとも1つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも1つのタスクについて、前記少なくとも1つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項1に記載の方法。
【請求項4】
前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが予め定められた出力表明子を含み、前記出力表明子は、前記完遂した出力に何がマッピングされることを望まれるかを表明するために定義される、マッピングすることを含む、請求項1に記載の方法。
【請求項5】
前記タスクのうちの少なくとも1つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも1つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが予め定められた入力表明子を含み、前記入力表明子は、前記発生した入力に何がマッピングされることを望まれるかを表明するために定義される、マッピングすることを含む、請求項1に記載の方法。
【請求項6】
修正を受信することであって、前記修正が、前記タスクのうちの少なくとも1つについての修正された機能性、前記タスクのうちの少なくとも1つについての修正された入力、前記タスクのうちの少なくとも1つについての修正された出力、前記タスクのうちの少なくとも1つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも1つを含む、受信することと、
前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成することであって、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも1つの前記入力を前記他のタスクのうちの少なくとも1つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも1つの前記入力を前記発生した入力とマッピングすることと
を含む、再構成することと、
前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行することと
をさらに含む、請求項1に記載の方法。
【請求項7】
フレキシブル・パイプライン生成のためのシステムであって、前記システムが、少なくとも1つの処理ユニットとデータ・ストレージとを備え、前記少なくとも1つの処理ユニットは、前記データ・ストレージと通信しており、
2つ又はそれ以上のタスクを生成するためのタスク・モジュールであって、前記2つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義し、各タスクについて、前記タスク・モジュールが、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも1つの入力と少なくとも1つの出力とを受信する、タスク・モジュールと、
前記2つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成するためのワークフロー・モジュールであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも1つの前記出力を前記ワークフローの前記完遂した出力とマッピングすることであって、前記タスクのうちの少なくとも1つの出力が、他のタスクのうちの少なくとも1つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、マッピングすることと、
前記タスクのうちの少なくとも1つの入力を前記他のタスクのうちの少なくとも1つの出力にマッピングすることと、
前記タスクのうちの少なくとも1つの前記入力を前記ワークフローの前記発生した入力とマッピングすることであって、前記タスクのうちの少なくとも1つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、マッピングすることと
を含む、ワークフロー・モジュールと、
前記2つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行するための実行モジュールと
を実行するように構成された、システム。
【請求項8】
前記タスクのうちの少なくとも1つの前記入力を前記他のタスクのうちの少なくとも1つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力にマッピングされた前記少なくとも1つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも1つのタスクについて、前記少なくとも1つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項7に記載のシステム。
【請求項9】
前記タスクのうちの少なくとも1つの前記入力を前記他のタスクのうちの少なくとも1つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも1つの前記入力を前記発生した入力にマッピングされた前記少なくとも1つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも1つのタスクについて、前記少なくとも1つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項7に記載のシステム。
【請求項10】
前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが予め定められた出力表明子を含む、マッピングすることを含み、前記出力表明子は、前記完遂した出力に何がマッピングされることを望まれるかを表明するために定義される、請求項7に記載のシステム。
【請求項11】
前記タスクのうちの少なくとも1つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも1つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが予め定められた入力表明子を含む、マッピングすることを含み、前記入力表明子は、前記発生した入力に何がマッピングされることを望まれるかを表明するために定義される、請求項7に記載のシステム。
【請求項12】
前記タスク・モジュールがさらに、修正を受信し、前記修正が、前記タスクのうちの少なくとも1つについての修正された機能性、前記タスクのうちの少なくとも1つについての修正された入力、前記タスクのうちの少なくとも1つについての修正された出力、前記タスクのうちの少なくとも1つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも1つを含み、
前記ワークフロー・モジュールが、前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成し、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも1つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも1つの前記入力を前記他のタスクのうちの少なくとも1つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも1つの前記入力を前記発生した入力とマッピングすることと
を含み、
前記実行モジュールがさらに、前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行する、
請求項7に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
以下は、一般に、データ処理に関し、より詳細には、フレキシブル・パイプライン生成のための方法及びシステムに関する。
【背景技術】
【0002】
いくつかの実世界の問題を解決するために、データ科学、特に、機械学習技法が使用され得る。したがって、これらの問題は大幅に変動することがあるが、データ科学手法のうちの1つから結果を生成するための技術プロセスは、概して、同様の手法、構造、又はパターンの形態をとることができる。いくつかの状況では、異なるデータ科学モデル又は機械学習モデルは異なり得るが、全体的構造において共通性があり得る。
【0003】
大きいデータセットに対処するとき、リアル・タイムでエンド・ツー・エンドで処理することは、しばしば困難である。この場合、異なる段階が、データ処理パイプラインにコンパイルされ得る。それにより、データ処理パイプラインは、概して、システムがどのように動作するかに、論理構造を与えることを意味する。しかしながら、従来のパイプライン実装形態は、それらの接続及び構造において融通のきかないことがあり、並びに他の望ましくない態様を有し得る。
【0004】
したがって、本発明の目的は、上記の欠点が取り除かれ又は緩和され、望ましい属性の達成が実現される、方法及びシステムを提供することである。
【発明の概要】
【0005】
一態様では、フレキシブル・パイプライン生成のための方法が提供され、本方法は、少なくとも1つの処理ユニット上で実行され、本方法は、2つ又はそれ以上のタスクを生成することであって、2つ又はそれ以上のタスクが、パイプラインの少なくとも一部分を定義する、生成することと、各タスクについて、それぞれのタスクについての機能性を受信し、それぞれのタスクに関連付けられた少なくとも1つの入力と少なくとも1つの出力とを受信することと、2つ又はそれ以上のタスクについての関連付けを定義するための再構成可能なワークフローを生成することであって、ワークフローが、発生した入力と完遂した出力とを有し、ワークフローを生成することが、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることと、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることとを含む、生成することと、2つ又はそれ以上のタスクの実行の順序のためにワークフローを使用して、パイプラインを実行することと含む。
【0006】
特定の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、マッピングされていない入力を有するタスクの各々について、他のタスクのどの出力が、それぞれのタスクの機能性についての入力として受信されるために依存されるかを決定することを含む。
【0007】
別の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、マッピングされていない出力を有するタスクの各々について、他のタスクのどの入力が、そのような他のタスクの機能性についての出力として与えられるために依存されるかを決定することを含む。
【0008】
また別の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、タスクのうちの少なくとも1つの出力を完遂した出力にマッピングされた少なくとも1つのタスクの入力とマッピングすることであって、そのような入力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた出力を有するタスクの入力が、そのようなタスクの機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの入力を、それぞれのタスクが依存するタスクの出力にマッピングすることと、そのような依存がない場合、マッピングされていない入力をもつ少なくとも1つのタスクについて、少なくとも1つのタスクの入力を発生した入力とマッピングすることを実施することとを含む。
【0009】
また別の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、タスクのうちの少なくとも1つの入力を発生した入力にマッピングされた少なくとも1つのタスクの出力とマッピングすることであって、そのような出力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた入力を有するタスクの出力が、そのようなタスクの機能性について他のタスクの入力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの出力を、それぞれのタスクが依存するタスクの入力にマッピングすることと、そのような依存がない場合、マッピングされていない出力をもつ少なくとも1つのタスクについて、少なくとも1つのタスクの出力を完遂した出力とマッピングすることを実施することとを含む。
【0010】
また別の場合には、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることは、タスクのうちの少なくとも1つの出力が、他のタスクのうちの少なくとも1つへの入力として依存されないかどうかを決定することと、そのようなタスクの出力を完遂した出力にマッピングすることとを含む。
【0011】
また別の場合には、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることは、タスクのうちの少なくとも1つの入力が、他のタスクのうちの少なくとも1つへの出力として依存されないかどうかを決定することと、そのようなタスクの入力を発生した入力にマッピングすることとを含む。
【0012】
また別の場合には、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることは、出力表明子を含むタスクのうちの少なくとも1つの出力を完遂した出力にマッピングすることを含む。
【0013】
また別の場合には、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることは、入力表明子を含むタスクのうちの少なくとも1つの入力を発生した入力にマッピングすることを含む。
【0014】
また別の場合には、本方法は、修正を受信することであって、修正が、タスクのうちの少なくとも1つについての修正された機能性、タスクのうちの少なくとも1つについての修正された入力、タスクのうちの少なくとも1つについての修正された出力、タスクのうちの少なくとも1つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも1つを含む、受信することと、修正をもつタスクについての関連付けを再定義することによるワークフローを再構成することであって、ワークフローを再構成することが、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることと、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることとを含む、再構成することと、タスクの実行の順序のために、再構成されたワークフローを使用して、パイプラインを実行することとをさらに含む。
【0015】
別の態様では、フレキシブル・パイプライン生成のためのシステムが提供され、本システムは、少なくとも1つの処理ユニットとデータ・ストレージとを備え、少なくとも1つの処理ユニットは、データ・ストレージと通信しており、2つ又はそれ以上のタスクを生成するためのタスク・モジュールであって、2つ又はそれ以上のタスクが、パイプラインの少なくとも一部分を定義し、各タスクについて、タスク・モジュールが、それぞれのタスクについての機能性を受信し、それぞれのタスクに関連付けられた少なくとも1つの入力と少なくとも1つの出力とを受信する、タスク・モジュールと、2つ又はそれ以上のタスクについての関連付けを定義するための再構成可能なワークフローを生成するためのワークフロー・モジュールであって、ワークフローが、発生した入力と完遂した出力とを有し、ワークフローを生成することが、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることと、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることとを含む、ワークフロー・モジュールと、2つ又はそれ以上のタスクの実行の順序のためにワークフローを使用して、パイプラインを実行するための実行モジュールとを実行するように構成される。
【0016】
特定の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、マッピングされていない入力を有するタスクの各々について、他のタスクのどの出力が、それぞれのタスクの機能性についての入力として受信されるために依存されるかを決定することを含む。
【0017】
別の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、マッピングされていない出力を有するタスクの各々について、他のタスクのどの入力が、そのような他のタスクの機能性についての出力として与えられるために依存されるかを決定することを含む。
【0018】
また別の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、タスクのうちの少なくとも1つの出力を完遂した出力にマッピングされた少なくとも1つのタスクの入力とマッピングすることであって、そのような入力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた出力を有するタスクの入力が、そのようなタスクの機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの入力を、それぞれのタスクが依存するタスクの出力にマッピングすることと、そのような依存がない場合、マッピングされていない入力をもつ少なくとも1つのタスクについて、少なくとも1つのタスクの入力を発生した入力とマッピングすることを実施することとを含む。
【0019】
また別の場合には、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることは、タスクのうちの少なくとも1つの入力を発生した入力にマッピングされた少なくとも1つのタスクの出力とマッピングすることであって、そのような出力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた入力を有するタスクの出力が、そのようなタスクの機能性について他のタスクの入力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの出力を、それぞれのタスクが依存するタスクの入力にマッピングすることと、そのような依存がない場合、マッピングされていない出力をもつ少なくとも1つのタスクについて、少なくとも1つのタスクの出力を完遂した出力とマッピングすることを実施することとを含む。
【0020】
また別の場合には、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることは、タスクのうちの少なくとも1つの出力が、他のタスクのうちの少なくとも1つへの入力として依存されないかどうかを決定することと、そのようなタスクの出力を完遂した出力にマッピングすることとを含む。
【0021】
また別の場合には、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることは、タスクのうちの少なくとも1つの入力が、他のタスクのうちの少なくとも1つへの出力として依存されないかどうかを決定することと、そのようなタスクの入力を発生した入力にマッピングすることとを含む。
【0022】
また別の場合には、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることは、出力表明子を含むタスクのうちの少なくとも1つの出力を完遂した出力にマッピングすることを含む。
【0023】
また別の場合には、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることは、入力表明子を含むタスクのうちの少なくとも1つの入力を発生した入力にマッピングすることを含む。
【0024】
また別の場合には、タスク・モジュールがさらに、修正を受信し、修正が、タスクのうちの少なくとも1つについての修正された機能性、タスクのうちの少なくとも1つについての修正された入力、タスクのうちの少なくとも1つについての修正された出力、タスクのうちの少なくとも1つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも1つを含み、ワークフロー・モジュールが、修正をもつタスクについての関連付けを再定義することによってワークフローを再構成し、ワークフローを再構成することが、タスクのうちの少なくとも1つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも1つの入力を他のタスクのうちの少なくとも1つの出力とマッピングすることと、タスクのうちの少なくとも1つの入力を発生した入力とマッピングすることとを含み、実行モジュールがさらに、タスクの実行の順序のために、再構成されたワークフローを使用して、パイプラインを実行する。
【0025】
これら及び他の実施例は、本明細書で企図及び説明される。上記の概要は、以下の発明を実施するための形態を理解する際に熟練した読者を支援するために、システム及び方法の代表的態様を提示することが諒解されよう。
【0026】
本発明の特徴は、添付の図面に対して参照が行われる以下の発明を実施するための形態においてより明らかになろう。
【図面の簡単な説明】
【0027】
図1】一実施例による、フレキシブル・パイプライン生成のためのシステムの概略図である。
図2図1のシステムと例示的な動作環境とを示す、概略図である。
図3】一実施例による、フレキシブル・パイプライン生成のための方法のフローチャートである。
図4図1のシステムの例示的な実装形態の図である。
図5】異なる構成を有する図4の例示的な実装形態の図である。
図6図1のシステムの例示的な実装形態の図である。
図7】パイプラインの概略の実例を示す図である。
【発明を実施するための形態】
【0028】
次に、図を参照しながら実施例が説明される。説明の簡潔及び明快のために、適切であると見なされた場合、対応する又は類似する要素を示すために参照番号が図の間で繰り返され得る。さらに、本明細書で説明される実施例の完全な理解を与えるために多数の具体的な詳細が記載される。ただし、本明細書で説明される実施例はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。他の事例では、本明細書で説明される実施例を不明瞭にしないように、よく知られている方法、手順及び構成要素は詳細に説明されていない。また、説明は、本明細書で説明される実施例の範囲を限定するものと見なされるべきではない。
【0029】
本明細書全体にわたって使用される様々な用語は、コンテキストが別段に示さない限り、以下のように読まれ、理解され得、すなわち、全体を通して使用される「又は」は、「及び/又は」と書かれたかのように包含的であり、全体を通して使用される単数の冠詞及び代名詞は、それらの複数形を含み、その逆も同様であり、同様に、性別を表す代名詞は、その逆の性別を表す代名詞を含み、その結果、代名詞は、本明細書で説明されるいかなるものをも、単一の性別による使用、実装、実施などに限定するものとして理解されるべきではなく、「例示的な(exemplary)」は、「例示的な(illustrative)」又は「例示する(exemplifying)」と理解されるべきであり、必ずしも他の実施例よりも「好ましい」と理解されるべきであるとは限らない。用語についてのさらなる定義が本明細書に提示され、これらは、本明細書を読むことから理解されるように、それらの用語の前の事例及び後続の事例に適用され得る。
【0030】
命令を実行する、本明細書で例示されるモジュール、ユニット、構成要素、サーバ、コンピュータ、端末、エンジン又はデバイスは、記憶媒体などのコンピュータ可読媒体、コンピュータ記憶媒体、又は、例えば磁気ディスク、光ディスク、又はテープなどのデータ・ストレージ・デバイス(リムーバブル及び/又は非リムーバブル)を含むか又はそれへのアクセスを有し得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、又は他のデータなど、情報の記憶のための任意の方法又は技術において実装される揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体を含み得る。コンピュータ記憶媒体の実例は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気ストレージ・デバイス、或いは、所望の情報を記憶するために使用され得、アプリケーション、モジュール、又はその両方によってアクセスされ得る任意の他の媒体を含む。そのようなコンピュータ記憶媒体は、デバイスの一部であるか或いはそれにアクセス可能又は接続可能であり得る。さらに、コンテキストが別段に明らかに示さない限り、本明細書で提示されるプロセッサ又はコントローラは、単数のプロセッサとして又は複数のプロセッサとして実装され得る。複数のプロセッサが配列されるか又は分散され得、本明細書で言及される処理機能は、単一のプロセッサが例示されることがあっても、1つのプロセッサによって実行されるか又は複数のプロセッサによって実行され得る。本明細書で説明される方法、アプリケーション又はモジュールは、コンピュータ可読/実行可能命令を使用して実装され得、それらの命令は、そのようなコンピュータ可読媒体によって記憶され又は場合によっては保持され、1つ又は複数のプロセッサによって実行され得る。
【0031】
以下の説明では、「ユーザ」、「開発者」、及び「管理者」という用語が、互換的に使用され得ることを理解されたい。
【0032】
以下は、一般に、データ処理に関し、より詳細には、フレキシブル・パイプライン生成のための方法及びシステムに関する。
【0033】
本明細書で説明されるように、大きいデータセットに対処するとき、リアル・タイムでエンド・ツー・エンドに処理することは、しばしば困難である。この場合、異なる段階が、データ処理パイプラインにコンパイルされ得る。それにより、データ処理パイプラインは、概して、機械学習技法を採用するシステムの動作に、構造を与えることを意味する。
【0034】
機械学習を採用するシステムの場合、一般的なパイプラインは、様々な段階又は構成要素、例えば、生データを収集するためのデータ収集段階、生データの変換を実施するための変換段階、機械学習モデルをトレーニングするために、変換されたデータを機械学習モデルに供給するためのトレーニング段階、トレーニングされたモデルを実際のテスト・データに適用するための適用段階、及び様々なモデル・パラメータについてのスコアを作り出すための出力段階を含むことができる。いくつかの場合には、出力データのユーザ固有の操作を可能にするための操作段階もあり得る。ソリューションのタイプに応じて、いくつかのパイプラインが変動し得、段階の間に異なる段階及び異なる分岐を有することを含む。
【0035】
一般に、パイプラインの独立した構成要素の各々が、パイプラインの各単一の実装形態において実行される。本明細書で説明される実施例では、例えば、機械学習ベース・システムに関する技術的問題を解決するために、フレキシブルであるように、個々の構成要素の各々を実装し、それらを互いに結びつけるための、バッチ・データ処理システムが与えられる。
【0036】
特定の場合、バッチ・データ処理は、パイプラインを介して、例えば「Luigi」と呼ばれるPython(商標)モジュールを介して実装され得る。そのようなモジュールを使用することは、システムが、大きいマルチステップ・データ処理タスクを、特定の相互依存をもつより小さいサブタスクのグラフに分解することを可能にする。したがって、特に、依存解消をハンドリングすること、ワークフロー管理、可視化、失敗をハンドリングすること、コマンド・ライン統合によって、システムがバッチ・ジョブの複雑なパイプラインを構築することを可能にする。Luigiは、特定の構成要素の、「タスク」への定義を可能にする。Luigiは、モジュラーであり、タスク間の依存の作成を可能にする。システムは、ユーザから所望の出力を受信し、システムは、Luigiを介して、所望の出力を達成するために実行されるべき必要とされるタスク又はジョブをスケジュールする。
【0037】
例えばLuigiを用いてパイプラインを構築するとき、各タスクが、概して、定義されるべきである。各タスクの定義は、各タスクの機能と、そのような機能を達成するために何が必要とされるかとを定義することを伴う。したがって、各タスクについての依存、各タスクがどの他のタスクに依存するかは、概して、各タスクの定義にハードコーディングされるべきである。一実例として、「タスクA」の機能が定義され得、そのような機能が別のタスク「タスクB」に依存することが、定義され得る。この実例では、Luigiを採用するシステムは、ラン・タイムにおいて、タスクBへのタスクAの依存により、タスクBがすでに完了した場合のみタスクAが実行されることになることを、識別することになる。この場合、依存は、タスクAの入力のうちの少なくとも1つが、タスクBの出力の少なくとも1つに関する値があることに依存することを意味すると理解される。したがって、タスクAが実行されるたびに、システムは、タスクBがすでに完了したかどうかを照会し、したがって、タスクBが完了するまでタスクAを実行しないことになる。
【0038】
Luigi及び同様のモジュールのハードコーディングされた依存は、新しいタスクの挿入又は依存の変更など、パイプラインを変更することが、影響を受けたタスクを再定義することを必要とするので、コストがかかり、時間がかかり、不都合であり得ることを意味する。一実例として、機械学習モデルのトレーニング中、異なるタイプの入力されたデータを用いた実験が望まれる場合、各実験について1つ又は複数のタスクについてのコードを変更しなければならないことは、非常に非効率的であろう。
【0039】
本明細書で説明される一実施例では、出願人は、フレキシブル・パイプラインを生成するために、タスクの機能性をそれの依存から分離することの実質的な利点を認識した。
【0040】
次に図1を参照すると、一実施例による、フレキシブル・パイプライン生成のためのシステム100が示されている。本実施例では、システム100は、クライアント側デバイス(図2における26)上で実行され、インターネット(図2における24)など、ネットワークを介してサーバ(図2における32)に位置するコンテンツにアクセスする。さらなる実施例では、システム100は、任意の他のコンピューティング・デバイス、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、タブレット・コンピュータ、ポイントオブセール(「PoS:point-of-sale」)デバイス、サーバ、スマートウォッチ、(1つ又は複数の)分散型又はクラウド・コンピューティング・デバイスなどの上で実行され得る。
【0041】
いくつかの実施例では、システム100の構成要素は、単一のコンピュータ・システムによって記憶され、その上で実行される。他の実施例では、システム100の構成要素は、ローカルに又は遠隔で分散され得る、2つ又はそれ以上のコンピュータ・システムの間で分散される。
【0042】
図1は、システム100の実施例の様々な物理及び論理構成要素を示す。示されているように、システム100は、(1つ又は複数のプロセッサを備える)中央処理ユニット(「CPU:central processing unit」)102と、ランダム・アクセス・メモリ(「RAM:random access memory」)104と、入力インターフェース106と、出力インターフェース108と、ネットワーク・インターフェース110と、不揮発性ストレージ112と、CPU102が他の構成要素と通信することを可能にするローカル・バス114とを含む、いくつかの物理及び論理構成要素を有する。CPU102は、オペレーティング・システムと、以下でより詳細に説明される、様々なモジュールとを実行する。RAM104は、相対的にレスポンシブな揮発性ストレージをCPU102に与える。入力インターフェース106は、管理者又はユーザが入力デバイス、例えばキーボード及びマウスを介して入力を与えることを可能にする。出力インターフェース108は、出力デバイス、例えば、ディスプレイ及び/又はスピーカーに情報を出力する。ネットワーク・インターフェース110は、一般的なクラウドベース・アクセス・モデルのためになど、システム100から遠隔に位置する他のコンピューティング・デバイス及びサーバなど、他のシステムとの通信を可能にする。不揮発性ストレージ112は、オペレーティング・システム及びモジュールを実装するためのコンピュータ実行可能命令を含む、オペレーティング・システム及びプログラム、並びにこれらのサービスによって使用されるデータを記憶する。以下で説明される追加の記憶されるデータは、データベース116に記憶され得る。システム100の動作中、オペレーティング・システム、モジュール、及び関係データは、実行を可能にするために、不揮発性ストレージ112から取り出され、RAM104中に配置され得る。
【0043】
一実施例では、CPU102は、タスク・モジュール120と、ワークフロー・モジュール122と、実行モジュール124とを実行するように構成可能である。本明細書で説明されるように、パイプラインの一部として、システム100は、1つ又は複数のタスクに組み込まれた機械学習モデル及び/又は統計モデルを使用することができる。1つ又は複数のモデルは、補間モデル(例えば、ランダム・フォレスト)、外挿モデル(例えば、線形回帰)、深層学習モデル(例えば、人工ニューラル・ネットワーク)、そのようなモデルのアンサンブルなどを含むことができる。
【0044】
本明細書で言及される、タスクは、任意の実行可能サブルーチン又は動作、例えば、データ収集動作、データ変換動作、機械学習モデル・トレーニング動作、重み付け動作、スコアリング動作、出力操作動作などを含むことができる。
【0045】
図3は、一実施例による、フレキシブル・パイプライン生成のための方法300のためのフローチャートを示す。
【0046】
ブロック302において、タスク・モジュール120は、パイプラインを集合的に構成する、2つ又はそれ以上のタスクを生成する。2つ又はそれ以上のタスクは、パイプラインのビルディング・ブロックを形成する。ブロック304において、各タスクについて、タスク・モジュール120は、そのそれぞれのタスクの機能性を定義するラン・コマンドを実施する。ブロック306において、各タスクについて、タスク・モジュール120はまた、そのそれぞれのタスクの機能性を実現するために、少なくとも1つの入力と少なくとも1つの出力とを定義する。一実施例では、説明されるように、少なくとも1つの入力と少なくとも1つの出力との定義は、ユーザ又は開発者によって定義される。一実例として、タスクを定義することは、以下のように実装され得る。
【数1】
【0047】
上記の実施例では、transaction_data関数は、関数を実装するための英数字ストリング又は整数、並びに他の関数に与えるための英数字ストリング又は整数(例えば、order_count_model関数に与えるための整数)を取り出すための構造の期待される値を(例えば、カンマ区切り値(CSV:comma-separated values)ファイルへの経路を介して)有する。order_count_model関数は、「model.fit(feature_vector)」方法を実装する、選ばれたモデル・オブジェクトへの経路を含むことができる。
【0048】
ブロック308において、ワークフロー・モジュール122は、タスクに関連する論理構成要素を自動的に定義するためのワークフロー・フレームワークを生成する。ワークフローは、タスク間の論理関係のセットである。いくつかの場合には、ワークフローは、「依存ツリー」と呼ばれることがある。一実施例では、ワークフロー・フレームワークは、完遂した出力と発生した入力とを含む。
【0049】
ブロック310において、ワークフロー・モジュール122は、他のタスクの入力を照会し、どのタスク出力からのデータが他のタスクのうちの1つへの入力として依存されないかを決定することによって、1つ又は複数のタスク出力を完遂した出力にマッピングする。一実施例では、ワークフロー・モジュール122は、それぞれのタスクの定義内で定義された又はそれぞれのタスクの出力を用いて定義された、所定の出力表明子について照会することによって、1つ又は複数のタスク出力を完遂した出力にマッピングすることができる。特定の場合には、出力表明子は、完遂した出力に何がマッピングされることを望まれるかを表明するために、ユーザ又は開発者によって定義され得る。完遂した出力にマッピングされた出力をもつ1つ又は複数のタスクは、本明細書では「第1のアップストリーム・タスク」と呼ばれる。ブロック312において、ワークフロー・モジュール122は、1つ又は複数のタスク出力を第1のアップストリーム・タスクの入力にマッピングし、そのような1つ又は複数のタスクは本明細書では「第2のアップストリーム・タスク」と呼ばれる。第2のアップストリーム・タスクの出力は、第1のアップストリーム・タスクが機能するために、どのタスク出力からのデータが第1のアップストリーム・タスクへの入力として依存されるかを決定することによって、第1のアップストリーム・タスクの入力にマッピングされる。
【0050】
ブロック314において、ワークフロー・モジュール122は、機能するために、第2のアップストリーム・タスクの入力が他のタスクの出力からのデータに依存するかどうかを決定する。ブロック314における決定が肯定である場合、ワークフロー・モジュール122は、1つ又は複数のタスク出力を第2のアップストリーム・タスクの入力にマッピングすることによってブロック312を繰り返し、そのような1つ又は複数のタスクは本明細書では「第3のアップストリーム・タスク」と呼ばれる。現在のアップストリーム・レベルにおけるタスクの入力の、(「第nのアップストリーム・タスク(’n’ upstream tasks)」と呼ばれる)連続するアップストリーム・タスクの出力へのそのようなマッピングは、ブロック314における決定が否定になるまで、ワークフロー・モジュール122によって繰り返される。
【0051】
ブロック316において、ブロック314における決定が否定である場合、ワークフロー・モジュール122は、他のタスクの出力にマッピングされていないタスクの入力を発生した入力にマッピングする。一実施例では、ワークフロー・モジュール122は、それぞれのタスクの定義内で定義された又はそれぞれのタスクの入力を用いて定義された、所定の入力表明子について照会することによって、1つ又は複数のタスク入力を発生した入力にマッピングすることができる。特定の場合には、表明子は、発生した入力に何がマッピングされることを望まれるかを表明するために、ユーザ又は開発者によって定義され得る。
【0052】
ブロック318において、実行モジュール124が、パイプライン中のタスクを実行する。実行モジュール124は、タスクを実行するための順序を決定するために、ワークフロー・モジュール122によって生成されたワークフローと相談する。
【0053】
一実施例では、ワークフロー・モジュール122は、入力インターフェース106を介して与えられたユーザ又は開発者入力に基づいてどのタスク出力がどのタスク入力に依存するかを決定する。
【0054】
有利に、システム100は、パイプラインの構成及び最終的な機能性に関してフレキシビリティを与えるために、Luigiにおいて必要とされることとは対照的に、タスクの定義からの依存の分離を可能にする。このようにして、ワークフローは、パイプラインの実装形態に関して、例えばユーザ又は開発者によって、再定義可能である。さらに、有利に、上記は、個々のタスクの各々が再使用可能であることを可能にする。このようにして、ユーザ又は開発者は、既存のタスクのいずれにおいても入力及び/又は出力定義を変更する必要がない。ユーザ又は開発者は、既存のワークフローを変更することをも必要とされない。いくつかの場合には、本明細書で説明されるように、システム100は、関係するワークフロー構成要素をオーバーライドすることができる既存のワークフローの下位分類が定義されるように、再定義されたタスクとともに上記の手法を再び実行することができる。
【0055】
さらなる実施例では、ワークフロー・モジュール122は、発生した入力から開始してパイプラインを構築し、ダウンストリーム・タスクをマッピングすることによって、方法300を逆に実行することができる。例えば、他のタスクの出力に依存しない入力をもつ(「第1のダウンストリーム・タスク」と呼ばれる)タスクを、発生した入力にマッピングすること。次いで、第1のダウンストリーム・タスクの出力を、第1のダウンストリーム・タスクの出力に依存する(「第2のダウンストリーム・タスク」と呼ばれる)他のタスクの入力にマッピングすることなど。出力の、ダウンストリーム・タスクの入力へのこのマッピングは、特定のタスクの出力が他のタスクの入力によって依存されなくなり、それにより、そのような出力が完遂した出力にマッピングされ得るまで続けられ得る。
【0056】
本明細書で与えられる実例では、予測は、履歴データを使用してある対象についての推定される将来の値を取得するプロセスを意味すると理解される。たいていの場合、予測は、1つ又は複数の予測を生成するための履歴データのセットがあることに基づいている。これらの場合、機械学習技法は、それらのモデルをトレーニングし、したがって合理的に正確な予想を作り出すために、極めて多くの履歴データに依拠することができる。
【0057】
本明細書で説明される実施例の例示的な実装形態では、ユーザは、以下を定義することができる。
【数2】
【0058】
上記は、2つの論理構成要素(producer_component、consumer_component)を定義し、前者の出力を後者の入力にマッピングする、最小ワークフローのための本明細書で説明される実施例の一実例である。それは、それぞれProducerTaskA及びConsumerTaskであるように、それらの構成要素の実装形態をも定義する。
【0059】
上記は、本明細書で説明される実施例を使用して生成されるので、ユーザが、例えば、ProducerTaskAを何らかの他の論理と置き換えて、新しいワークフローを作ることを希望する場合、ユーザはただ、新しいタスクを書く必要がある。新しいタスクは単に、新しいタスクの出力が消費者構成要素によって期待される構造に適合することを確実にし、元のワークフローを拡張/下位分類する新しいワークフローにおけるその構成要素定義をオーバーライドするための、新しい論理を必要とする。一実例として、以下の通りである。
【数3】
【0060】
図4は、本明細書で説明される実施例の別の例示的な実装形態を示す。この実例では、パイプライン400が、機械学習モデルを使用して、製品の販売の増加又は減少を予測することなど、製品の販売促進の結果を予測することを対象とする。パイプライン400は、発生した入力420と、完遂した出力422と、タスク・モジュール120によって生成された5つの別個のタスクとを含む。パイプラインの第1の場合、5つのタスクは、製品の前の購入のデータベースからデータを取り出す機能性を有する第1のタスク402と、入力データを用いて機械学習モデルをトレーニングする機能性を有する第2のタスク404と、ポイントオブサービス・コンソールからテスト・データを取り出す機能性を有する第3のタスク406と、予測に到達するためにテスト・データをスコアリングする機能性を有する第4のタスク408と、出力(予測)を公開及び操作する機能性を有する第5のタスク410とである。
【0061】
この実例では、パイプライン400は、ワークフロー・モジュール122によって生成されたワークフロー430をも含む。第1の場合、ワークフロー・モジュール122は、第5のタスク410の出力に依存する入力を有する他のタスクがないと決定することによって、第5のタスク410を完遂した出力422にマッピングする。ワークフロー・モジュール122は、次いで、第5のタスク410の入力が第4のタスク408の出力に依存するので、第4のタスク408の出力を第5のタスク410の入力にマッピングする。ワークフロー・モジュール122は、次いで、第4のタスク408の入力が第2のタスク404の出力と第3のタスク406の出力からのデータに依存するので、両方のタスクの出力をこの入力にマッピングする。ワークフロー・モジュール122は、次いで、第1のタスク402の出力を第2のタスク404の入力にマッピングする。ワークフロー・モジュール122は、次いで、第1のタスク402と第3のタスク406との入力が他のタスクの出力に依存しないので、両方のそれらのタスクの入力を発生した入力420にマッピングする。ワークフロー・モジュール122によって生成されたワークフロー430と相談して、実行モジュール124は、各々のタスクを適切な順序で実行することができる。したがって、システム100は、生成されたパイプライン400に従って、データベースから顧客データを取り出し、そのようなデータを使用して、機械学習モデルをトレーニングすることができ、トレーニングされた機械学習モデルは、顧客データを使用して販売促進結果を予測することが可能である。トレーニングされた機械学習モデルを使用して、入力されたテスト・データ(及びテスト・パラメータ)は、その特定の入力されたデータについての予測に到達するためにスコアリングされ得る。スコアリングされたデータ(予測)は、公開され(例えば、JavaScriptオブジェクト表記法(JSON:JavaScript Object Notation)又はカンマ区切り値(CSV)フォーマットで、出力インターフェース108を介してスクリーン上に表示されるか、又はネットワーク・インターフェース110上で送られる)、いくつかの場合には、入力インターフェース106を介してユーザによって操作され得る。その出力が、パイプライン400の完遂した出力422を形成することができる。
【0062】
図5は、図4の例示的な実装形態の例示的な適応を示す。この場合、ユーザは、異なるデータセットを取り出し、そのデータを使用して、異なる機械学習モデルをトレーニングすることによって、実験することを決めた。この実例では、タスク・モジュール120は、オンライン販売データベースからトレーニング・データを取り出す機能性をもつ第6のタスク412を生成する。タスク・モジュール120は、オンライン販売データを用いて新しい機械学習モデルをトレーニングするための第7のタスク414をも生成する。したがって、ワークフロー・モジュール122は、上記で説明された手法を使用して、ワークフロー430を再生成するが、この場合、ワークフロー・モジュール122は、第7のタスク414の出力と第3のタスク406の出力とを、第4のタスク408の入力にマッピングする。ワークフロー・モジュール122はまた、第6のタスク412の出力を第7のタスク414の入力にマッピングし、次いで、第6のタスク412の入力を発生した入力420にマッピングする。次いで、ワークフロー・モジュール122によって生成された補正されたワークフロー430と再び相談して、実行モジュール124は、補正されたパイプライン400中のタスクから各々を適切な順序で実行することができる。
【0063】
図6は、システム100の例示的な実装形態600の図を示す。この実例では、そこは、ワークフロー実行サーバと統合するための、及び、例えばユーザによるワークフローの構成、提出、及び監視を可能にするためのユーザ・インターフェース602を含む。そこは、ジョブ構成の集中型モジュラー管理のためのサービスである、構成API604をも含む。そこは、「プラガブル(pluggable)」並列化及び/又は分散処理のためのスパーク・クラスタ614をも含む。そこは、各々が1つ又は複数のプロセッサと、データ・ストレージ・メモリと、ロード・バランサ616とを備える、1つ又は複数のサーバを備えるサーバ・クラスタ606をも含む。このようにして、サーバ・クラスタ606は、ワークフローのための分散型実行環境であり得る。サーバ・クラスタ606は、ジョブ、ワーカーなどに関するサーバ状態を維持するためのデータベース608を含む。サーバ・クラスタ606は、複数のワーカーの間で作業を同期させるための、及びワークフローを実行するための監視インターフェースを与えるための、スケジューラ610をも含む。サーバ・クラスタ606は、それぞれのワークフローを実行するための複数の(「ソース」とも呼ばれる)ワーカー612をも含む。この例示的な実装形態600では、有利に、ジョブ又はワークフローのリソース要件をそれのパラメータ(及び履歴実行)から学習し、リソース使用率、時間又はコストを最適化するやり方でワーカー・ノードにジョブを割り当てる能力を有することによる、インテリジェント・ロード・バランシングがあり得る。この例示的な実装形態600では、また有利に、各関係する構成要素が、明確に定義されたインターフェースを通してシステム100と対話することができるので、プラガビリティ(pluggability)があり得る。これは、使用されるリソースのインスタンスを容易に切り替えることを可能にする。スパーク・クラスタの場合、例えば、システム100の同じ展開が、スパークのローカル・インスタンス、ローカル・クラスタ、又は管理されたクラウド・サービスをそれのセットアップの変更なしで使用することができる。
【0064】
本明細書で説明される実施例の例示として、図7は、本明細書で説明される実施例において、この場合、トランザクション特徴(履歴)に基づいてインベントリ中の(1つ又は複数の)特定の製品の販売の予想を生成するために、使用され得る例示的なパイプラインと例示的な関連するタスクとを示す。この実例において説明されるタスクは、本明細書で説明されるフレキシブル・パイプライン生成に関して説明されるように、フレキシブルに生成及びルーティングされ得ることを理解されたい。依存において非線形性があり得るように、タスクが必ずしも連続的であるとは限らないことを理解されたい。
【0065】
この実例では、パイプライン700は、最初に、トランザクション特徴702、インベントリ特徴704、及び結合特徴706のタスクを含む、トレーニング特徴を生成すること701を伴う。この実例では、トランザクション特徴タスク702は、機能として、データベースからトランザクション・データを抽出することと、トランザクション・データからの特定の特徴を変換及び抽出することと、トランザクション特徴セットを、例えばカンマ区切り値(CSV)ファイル中に、保存することとを含む。トランザクション特徴タスク702は、ワークフロー・モジュール122によって、発生した入力730にマッピングされ、ここで、トランザクション特徴タスク702は入力CSVファイルを受信する。トランザクション特徴タスク702は、修正されたCSVファイル又は修正されたCSVファイルへの経路を出力することをさらに含む。
【0066】
この実例では、インベントリ特徴タスク704は、機能として、データベースからインベントリ・データを抽出することと、インベントリ・データからの特定の特徴を変換及び抽出することと、インベントリ特徴セットを、例えばカンマ区切り値(CSV)ファイル中に、保存することとを含む。インベントリ特徴タスク704は、ワークフロー・モジュール122によって、発生した入力730にマッピングされ、ここで、インベントリ特徴タスク704は入力CSVファイルを受信する。インベントリ特徴タスク704は、第2の修正されたCSVファイル又は第2の修正されたCSVファイルへの経路を出力することをさらに含む。
【0067】
この実例では、結合特徴タスク706が機能するために、ワークフロー・モジュール122は、結合特徴タスク706の入力を、(関連するCSVファイル中で)トランザクション特徴を受信するためにトランザクション特徴タスク702の出力にマッピングし、(関連するCSVファイル中で)インベントリ特徴を受信するためにインベントリ特徴タスク704の出力にマッピングする。結合特徴タスク706は、機能として、インベントリ及びトランザクション特徴セットをロードすることと、インデックス列上でインベントリ特徴セットとトランザクション特徴セットとを結合することと、可能な場合、失われたレコードを挿入することと、結合された特徴セットを、例えばカンマ区切り値(CSV)ファイル中に、保存することとをさらに含む。結合特徴タスク706は、後続の修正されたCSVファイル又は後続の修正されたCSVファイルへの経路を出力することをさらに含む。
【0068】
この実例では、パイプライン700は、次に、平均価格モデルをトレーニングするタスク708とユニット予想モデルをトレーニングするタスク710とを含む、モデルのトレーニング707を伴う。
【0069】
この実例では、平均価格モデル・タスク708が機能するために、ワークフロー・モジュール122は、(関連する後続の修正されたCSVファイル中で)平均価格モデル・タスク708の入力を結合特徴タスク706の出力にマッピングする。平均価格モデル・タスク708は、機能として、結合された特徴データセットをロードし、(列などの)関係する情報を抽出することと、ランダム・フォレスト回帰モデルをトレーニングすることと、メタデータとともに平均価格モデルをデータ・ストレージに保存することとをさらに含む。平均価格モデル・タスク708は、保存する平均価格モデル・ファイル又は保存する平均価格モデルへの経路を出力することをさらに含む。
【0070】
この実例では、ユニット予想モデル・トレーニング・タスク710が機能するために、ワークフロー・モジュール122は、(関連する後続の修正されたCSVファイル中で)ユニット予想モデル・トレーニング・タスク710の入力を結合特徴タスク706の出力にマッピングする。ユニット予想モデル・トレーニング・タスク710は、機能として、結合された特徴データセットをロードし、(列などの)関係する情報を抽出することと、アンサンブル・モデルをトレーニングすることと、関連するメタデータとともにユニット予想モデルをデータ・ストレージに保存することとをさらに含む。ユニット予想モデル・トレーニング・タスク710は、ユニット予想モデル・ファイル又はユニット予想モデルへの経路を出力することをさらに含む。
【0071】
この実例では、パイプライン700は、次に、スコアリング特徴を生成するタスク712と予想を生成するタスク714とを含む、トレーニングされたモデルを使用して予測すること711を伴う。
【0072】
この実例では、スコアリング特徴を生成するタスク712が機能するために、ワークフロー・モジュール122は、スコアリング特徴を生成するタスク712の入力を発生した入力730にマッピングし、ここで、スコアリング特徴を生成するタスク712は入力CSVファイルを受信する。スコアリング特徴を生成するタスク712は、機能として、データベースから将来のインベントリ・データを抽出することと、インベントリ・データからスコアリング特徴を変換及び抽出することと、スコアリング特徴セットを、例えばカンマ区切り値(CSV)ファイル中に、保存することとを含む。スコアリング特徴を生成するタスク712は、スコアリング特徴CSVファイル又はスコアリング特徴CSVファイルへの経路を出力することをさらに含む。
【0073】
この実例では、予想を生成するタスク714が機能するために、ワークフロー・モジュール122は、予想を生成するタスク714の入力を(保存する平均価格モデル・ファイル中の)平均価格モデル・タスク708の出力と、(ユニット予想モデル・ファイル中の)ユニット予想モデル・トレーニング・タスク710の出力と、(スコアリング特徴CSVファイル中の)スコアリング特徴を生成するタスク712の出力とにマッピングする。予想を生成するタスク714は、機能として、スコアリング特徴セットをロードすることと、平均価格モデルをロードすることと、ユニット予想モデルをロードすることと、モデルをスコアリング特徴データセットに適用することと、予想を生成することと、予想を、例えばカンマ区切り値(CSV)ファイル中に、保存することとを含む。予想を生成するタスク714は、予想CSVファイル中の予想又は予想CSVファイルへの経路を出力することをさらに含む。
【0074】
この実例では、パイプライン700は、次に、報告生成のタスク716と予想配信のタスク718とを含む、配信及び/又は報告715を伴う。この実例では、報告生成タスク716が機能するために、ワークフロー・モジュール122は、(予想CSVファイル中で)報告生成タスク716の入力を予想を生成するタスク714の出力にマッピングする。報告生成タスク716は、機能として、予測データをロードすることと、異常報告を生成することと、相関報告を生成することと、異常報告及び相関報告をデータ・ストレージに保存することとをさらに含む。報告生成タスク716は、異常報告及び/又は相関報告を完遂した出力740に出力することをさらに含み、例えば、パイプライン中の他のタスクが報告生成タスク716の出力に依存しないので、スコアリング特徴タスク704は、ワークフロー・モジュール122によって、完遂した出力740にマッピングされる。
【0075】
この実例では、予想配信タスク718が機能するために、ワークフロー・モジュール122は、(予想CSVファイル中で)予想配信タスク718の入力を予想を生成するタスク714の出力にマッピングする。予想配信タスク718は、機能として、予想ファイルをロードすることと、ファイル・ホスティング・サービス又はプロトコルに接続することと、予想ファイルをファイル・ホスティング・サービス又はサーバにアップロードすることと、成功フラグ・ファイルをデータ・ストレージに保存することとをさらに含む。予想配信タスク718は、成功フラグ・ファイル又は成功フラグ・ファイルへの経路を完遂した出力740に出力することをさらに含み、例えば、パイプライン中の他のタスクが予想配信タスク718の出力に依存しないので、予想配信タスク718は、ワークフロー・モジュール122によって、完遂した出力740にマッピングされる。
【0076】
有利に、本明細書で説明される実施例は、上記で例示されたように、当技術分野において特徴的な問題の一実例である、タスクのハードコーディングされた依存を変更する必要なしに、パイプラインを容易に及び効率的に補正する能力を可能にする。このようにして、タスクが、依存を定義しなくてはならないことから分離されるので、タスク定義は、任意のパイプラインにおける再展開のためにコンテナ化される。これは、パイプラインのフレキシブル構成を与えることによって、開発の速度を実質的に上げることができ、パイプラインの異なる態様について実験又は機械学習モデル微調整が望まれる研究プロセスを大幅に改善することができる。さらに、これは、パイプラインが、例えば、異なる対象及びデータセットとともに使用するために、極めてカスタマイズ可能であることを可能にすることができる。
【0077】
有利に、本明細書で説明される実施例では、1つ又は複数の他のタスクを再定義する必要があれば、個々のタスクが、変更されるか又は置換され得、これは、パイプラインの容易な再使用、パイプラインの容易なスケーラビリティ、開発における実質的な時間節約、及びパイプライン全体を再生成する必要がないことについての計算量的節約を可能にする。有利に、本明細書で説明される実施例は、システムの破損に対する何らかの保護をも与え、パイプライン中の実際のタスクを再定義する必要がなく、むしろワークフローの調節のみを必要とすることにより、あまり経験をもたない管理者又は開発者が変更を行うことを可能にする。
【0078】
したがって、本明細書で説明される実施例は、パイプライン・フレキシビリティがないことによる当技術分野における特徴的な技術的問題に技術的ソリューションを与える。本明細書で説明される実施例は、様々なプラットフォーム上で迅速に展開可能であり得、フォールト・トレラントであり得る、コンテナ化されフレキシブルなソリューションを与えることができる。本明細書で説明される実施例は、様々なパイプライン構成において機械学習を使用することを通して、インテリジェント・ロード・バランシングをも可能にすることができる。本明細書で説明される実施例はまた、独立してスケーラブルな算出リソースについて(スパーク/テンソル・フローを介してなど)プラガブルであり得る。
【0079】
特定の実施例では、ワークフロー・モジュール122によって生成されたワークフローは、ワークフロー又はタスク定義を下位分類及び/又はオーバーライドすることを通して使用するためのパイプラインの複数の実装形態を可能にすることができる。
【0080】
さらなる実施例では、それぞれのワークフローを有し、本明細書で説明されるように生成されたパイプラインは、より大きいパイプラインの一部分であり得、或いは、シリアル化され、ネスト化され、又はさもなければ、それら自体のそれぞれのワークフローを各々有する、他のパイプラインと組み合わせられ得る。したがって、特定のパイプラインのワークフローは、より大きいワークフローの応答フローの一部であり得、システム全体の実装のためのさらにより大きいフレキシビリティを可能にする。一実例では、1つのワークフローの発生した入力を他のワークフローの完遂した出力にマッピングすることによって、2つのワークフローが組み合わせられ得る。
【0081】
本発明は、いくつかの特定の実施例に関して説明されたが、それらの様々な変更形態が、本明細書に添付された特許請求の範囲において概説される本発明の趣旨及び範囲から逸脱することなく当業者に明らかであろう。上記で具陳されたすべての参照の全開示が、参照により本明細書に組み込まれる。
図1
図2
図3
図4
図5
図6
図7