(57)【要約】  フレキシブル・パイプライン生成のためのシステム及び方法。本方法は、２つ又はそれ以上のタスクを生成することであって、２つ又はそれ以上のタスクが、パイプラインの少なくとも一部分を定義する、生成することと、２つ又はそれ以上のタスクについての関連付けを定義するための再構成可能なワークフローを生成することであって、ワークフローが、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることと、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることとを含む、生成することと、２つ又はそれ以上のタスクの実行の順序のためにワークフローを使用して、パイプラインを実行することとを含む。
2021508903.tif 000002
【特許請求の範囲】
【請求項１】
フレキシブル・パイプライン生成のための方法であって、前記方法が、少なくとも１つの処理ユニット上で実行され、前記方法は、
２つ又はそれ以上のタスクを生成することであって、前記２つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義する、生成することと、
各タスクについて、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信することと、
前記２つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成することであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、生成することと、
前記２つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行することと
含む、方法。
【請求項２】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、マッピングされていない入力を有する各タスクについて、他のタスクのどの出力が、前記それぞれのタスクの前記機能性についての入力として受信されるために依存されるかを決定することを含む、請求項１に記載の方法。
【請求項３】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、マッピングされていない出力を有する各タスクについて、他のタスクのどの入力が、前記他のタスクの前記機能性についての出力として与えられるために依存されるかを決定することを含む、請求項１に記載の方法。
【請求項４】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングされた前記少なくとも１つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項１に記載の方法。
【請求項５】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングされた前記少なくとも１つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項１に記載の方法。
【請求項６】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの出力が、前記他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、請求項１に記載の方法。
【請求項７】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、請求項１に記載の方法。
【請求項８】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが出力表明子を含む、マッピングすることを含む、請求項１に記載の方法。
【請求項９】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが入力表明子を含む、マッピングすることを含む、請求項１に記載の方法。
【請求項１０】
修正を受信することであって、前記修正が、前記タスクのうちの少なくとも１つについての修正された機能性、前記タスクのうちの少なくとも１つについての修正された入力、前記タスクのうちの少なくとも１つについての修正された出力、前記タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含む、受信することと、
前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成することであって、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、再構成することと、
前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行することと
をさらに含む、請求項１に記載の方法。
【請求項１１】
フレキシブル・パイプライン生成のためのシステムであって、前記システムが、少なくとも１つの処理ユニットとデータ・ストレージとを備え、前記少なくとも１つの処理ユニットは、前記データ・ストレージと通信しており、
２つ又はそれ以上のタスクを生成するためのタスク・モジュールであって、前記２つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義し、各タスクについて、前記タスク・モジュールが、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信する、タスク・モジュールと、
前記２つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成するためのワークフロー・モジュールであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、ワークフロー・モジュールと、
前記２つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行するための実行モジュールと
を実行するように構成された、システム。
【請求項１２】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、マッピングされていない入力を有する各タスクについて、他のタスクのどの出力が、前記それぞれのタスクの前記機能性についての入力として受信されるために依存されるかを決定することを含む、請求項１１に記載のシステム。
【請求項１３】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、マッピングされていない出力を有する各タスクについて、他のタスクのどの入力が、前記他のタスクの前記機能性についての出力として与えられるために依存されるかを決定することを含む、請求項１１に記載のシステム。
【請求項１４】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングされた前記少なくとも１つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項１１に記載のシステム。
【請求項１５】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングされた前記少なくとも１つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項１１に記載のシステム。
【請求項１６】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの出力が、前記他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、請求項１１に記載のシステム。
【請求項１７】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、請求項１１に記載のシステム。
【請求項１８】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが出力表明子を含む、マッピングすることを含む、請求項１１に記載のシステム。
【請求項１９】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが入力表明子を含む、マッピングすることを含む、請求項１１に記載のシステム。
【請求項２０】
前記タスク・モジュールがさらに、修正を受信し、前記修正が、前記タスクのうちの少なくとも１つについての修正された機能性、前記タスクのうちの少なくとも１つについての修正された入力、前記タスクのうちの少なくとも１つについての修正された出力、前記タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含み、
前記ワークフロー・モジュールが、前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成し、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含み、
前記実行モジュールがさらに、前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行する、
請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
以下は、一般に、データ処理に関し、より詳細には、フレキシブル・パイプライン生成のための方法及びシステムに関する。
【背景技術】
【０００２】
いくつかの実世界の問題を解決するために、データ科学、特に、機械学習技法が使用され得る。したがって、これらの問題は大幅に変動することがあるが、データ科学手法のうちの１つから結果を生成するための技術プロセスは、概して、同様の手法、構造、又はパターンの形態をとることができる。いくつかの状況では、異なるデータ科学モデル又は機械学習モデルは異なり得るが、全体的構造において共通性があり得る。
【０００３】
大きいデータセットに対処するとき、リアル・タイムでエンド・ツー・エンドで処理することは、しばしば困難である。この場合、異なる段階が、データ処理パイプラインにコンパイルされ得る。それにより、データ処理パイプラインは、概して、システムがどのように動作するかに、論理構造を与えることを意味する。しかしながら、従来のパイプライン実装形態は、それらの接続及び構造において融通のきかないことがあり、並びに他の望ましくない態様を有し得る。
【０００４】
したがって、本発明の目的は、上記の欠点が取り除かれ又は緩和され、望ましい属性の達成が実現される、方法及びシステムを提供することである。
【発明の概要】
【０００５】
一態様では、フレキシブル・パイプライン生成のための方法が提供され、本方法は、少なくとも１つの処理ユニット上で実行され、本方法は、２つ又はそれ以上のタスクを生成することであって、２つ又はそれ以上のタスクが、パイプラインの少なくとも一部分を定義する、生成することと、各タスクについて、それぞれのタスクについての機能性を受信し、それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信することと、２つ又はそれ以上のタスクについての関連付けを定義するための再構成可能なワークフローを生成することであって、ワークフローが、発生した入力と完遂した出力とを有し、ワークフローを生成することが、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることと、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることとを含む、生成することと、２つ又はそれ以上のタスクの実行の順序のためにワークフローを使用して、パイプラインを実行することと含む。
【０００６】
特定の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、マッピングされていない入力を有するタスクの各々について、他のタスクのどの出力が、それぞれのタスクの機能性についての入力として受信されるために依存されるかを決定することを含む。
【０００７】
別の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、マッピングされていない出力を有するタスクの各々について、他のタスクのどの入力が、そのような他のタスクの機能性についての出力として与えられるために依存されるかを決定することを含む。
【０００８】
また別の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、タスクのうちの少なくとも１つの出力を完遂した出力にマッピングされた少なくとも１つのタスクの入力とマッピングすることであって、そのような入力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた出力を有するタスクの入力が、そのようなタスクの機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの入力を、それぞれのタスクが依存するタスクの出力にマッピングすることと、そのような依存がない場合、マッピングされていない入力をもつ少なくとも１つのタスクについて、少なくとも１つのタスクの入力を発生した入力とマッピングすることを実施することとを含む。
【０００９】
また別の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、タスクのうちの少なくとも１つの入力を発生した入力にマッピングされた少なくとも１つのタスクの出力とマッピングすることであって、そのような出力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた入力を有するタスクの出力が、そのようなタスクの機能性について他のタスクの入力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの出力を、それぞれのタスクが依存するタスクの入力にマッピングすることと、そのような依存がない場合、マッピングされていない出力をもつ少なくとも１つのタスクについて、少なくとも１つのタスクの出力を完遂した出力とマッピングすることを実施することとを含む。
【００１０】
また別の場合には、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることは、タスクのうちの少なくとも１つの出力が、他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、そのようなタスクの出力を完遂した出力にマッピングすることとを含む。
【００１１】
また別の場合には、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることは、タスクのうちの少なくとも１つの入力が、他のタスクのうちの少なくとも１つへの出力として依存されないかどうかを決定することと、そのようなタスクの入力を発生した入力にマッピングすることとを含む。
【００１２】
また別の場合には、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることは、出力表明子を含むタスクのうちの少なくとも１つの出力を完遂した出力にマッピングすることを含む。
【００１３】
また別の場合には、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることは、入力表明子を含むタスクのうちの少なくとも１つの入力を発生した入力にマッピングすることを含む。
【００１４】
また別の場合には、本方法は、修正を受信することであって、修正が、タスクのうちの少なくとも１つについての修正された機能性、タスクのうちの少なくとも１つについての修正された入力、タスクのうちの少なくとも１つについての修正された出力、タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含む、受信することと、修正をもつタスクについての関連付けを再定義することによるワークフローを再構成することであって、ワークフローを再構成することが、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることと、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることとを含む、再構成することと、タスクの実行の順序のために、再構成されたワークフローを使用して、パイプラインを実行することとをさらに含む。
【００１５】
別の態様では、フレキシブル・パイプライン生成のためのシステムが提供され、本システムは、少なくとも１つの処理ユニットとデータ・ストレージとを備え、少なくとも１つの処理ユニットは、データ・ストレージと通信しており、２つ又はそれ以上のタスクを生成するためのタスク・モジュールであって、２つ又はそれ以上のタスクが、パイプラインの少なくとも一部分を定義し、各タスクについて、タスク・モジュールが、それぞれのタスクについての機能性を受信し、それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信する、タスク・モジュールと、２つ又はそれ以上のタスクについての関連付けを定義するための再構成可能なワークフローを生成するためのワークフロー・モジュールであって、ワークフローが、発生した入力と完遂した出力とを有し、ワークフローを生成することが、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることと、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることとを含む、ワークフロー・モジュールと、２つ又はそれ以上のタスクの実行の順序のためにワークフローを使用して、パイプラインを実行するための実行モジュールとを実行するように構成される。
【００１６】
特定の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、マッピングされていない入力を有するタスクの各々について、他のタスクのどの出力が、それぞれのタスクの機能性についての入力として受信されるために依存されるかを決定することを含む。
【００１７】
別の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、マッピングされていない出力を有するタスクの各々について、他のタスクのどの入力が、そのような他のタスクの機能性についての出力として与えられるために依存されるかを決定することを含む。
【００１８】
また別の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、タスクのうちの少なくとも１つの出力を完遂した出力にマッピングされた少なくとも１つのタスクの入力とマッピングすることであって、そのような入力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた出力を有するタスクの入力が、そのようなタスクの機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの入力を、それぞれのタスクが依存するタスクの出力にマッピングすることと、そのような依存がない場合、マッピングされていない入力をもつ少なくとも１つのタスクについて、少なくとも１つのタスクの入力を発生した入力とマッピングすることを実施することとを含む。
【００１９】
また別の場合には、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることは、タスクのうちの少なくとも１つの入力を発生した入力にマッピングされた少なくとも１つのタスクの出力とマッピングすることであって、そのような出力が、それぞれのタスクの機能性について依存される、マッピングすることと、マッピングされた入力を有するタスクの出力が、そのようなタスクの機能性について他のタスクの入力に依存するかどうかを反復的に決定することと、そのような依存がある場合、それぞれのタスクの出力を、それぞれのタスクが依存するタスクの入力にマッピングすることと、そのような依存がない場合、マッピングされていない出力をもつ少なくとも１つのタスクについて、少なくとも１つのタスクの出力を完遂した出力とマッピングすることを実施することとを含む。
【００２０】
また別の場合には、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることは、タスクのうちの少なくとも１つの出力が、他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、そのようなタスクの出力を完遂した出力にマッピングすることとを含む。
【００２１】
また別の場合には、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることは、タスクのうちの少なくとも１つの入力が、他のタスクのうちの少なくとも１つへの出力として依存されないかどうかを決定することと、そのようなタスクの入力を発生した入力にマッピングすることとを含む。
【００２２】
また別の場合には、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることは、出力表明子を含むタスクのうちの少なくとも１つの出力を完遂した出力にマッピングすることを含む。
【００２３】
また別の場合には、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることは、入力表明子を含むタスクのうちの少なくとも１つの入力を発生した入力にマッピングすることを含む。
【００２４】
また別の場合には、タスク・モジュールがさらに、修正を受信し、修正が、タスクのうちの少なくとも１つについての修正された機能性、タスクのうちの少なくとも１つについての修正された入力、タスクのうちの少なくとも１つについての修正された出力、タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含み、ワークフロー・モジュールが、修正をもつタスクについての関連付けを再定義することによってワークフローを再構成し、ワークフローを再構成することが、タスクのうちの少なくとも１つの出力を完遂した出力とマッピングすることと、タスクのうちの少なくとも１つの入力を他のタスクのうちの少なくとも１つの出力とマッピングすることと、タスクのうちの少なくとも１つの入力を発生した入力とマッピングすることとを含み、実行モジュールがさらに、タスクの実行の順序のために、再構成されたワークフローを使用して、パイプラインを実行する。
【００２５】
これら及び他の実施例は、本明細書で企図及び説明される。上記の概要は、以下の発明を実施するための形態を理解する際に熟練した読者を支援するために、システム及び方法の代表的態様を提示することが諒解されよう。
【００２６】
本発明の特徴は、添付の図面に対して参照が行われる以下の発明を実施するための形態においてより明らかになろう。
【図面の簡単な説明】
【００２７】
【図１】一実施例による、フレキシブル・パイプライン生成のためのシステムの概略図である。
【図２】図１のシステムと例示的な動作環境とを示す、概略図である。
【図３】一実施例による、フレキシブル・パイプライン生成のための方法のフローチャートである。
【図４】図１のシステムの例示的な実装形態の図である。
【図５】異なる構成を有する図４の例示的な実装形態の図である。
【図６】図１のシステムの例示的な実装形態の図である。
【図７】パイプラインの概略の実例を示す図である。
【発明を実施するための形態】
【００２８】
次に、図を参照しながら実施例が説明される。説明の簡潔及び明快のために、適切であると見なされた場合、対応する又は類似する要素を示すために参照番号が図の間で繰り返され得る。さらに、本明細書で説明される実施例の完全な理解を与えるために多数の具体的な詳細が記載される。ただし、本明細書で説明される実施例はこれらの具体的な詳細なしに実施され得ることを当業者は理解されよう。他の事例では、本明細書で説明される実施例を不明瞭にしないように、よく知られている方法、手順及び構成要素は詳細に説明されていない。また、説明は、本明細書で説明される実施例の範囲を限定するものと見なされるべきではない。
【００２９】
本明細書全体にわたって使用される様々な用語は、コンテキストが別段に示さない限り、以下のように読まれ、理解され得、すなわち、全体を通して使用される「又は」は、「及び／又は」と書かれたかのように包含的であり、全体を通して使用される単数の冠詞及び代名詞は、それらの複数形を含み、その逆も同様であり、同様に、性別を表す代名詞は、その逆の性別を表す代名詞を含み、その結果、代名詞は、本明細書で説明されるいかなるものをも、単一の性別による使用、実装、実施などに限定するものとして理解されるべきではなく、「例示的な（ｅｘｅｍｐｌａｒｙ）」は、「例示的な（ｉｌｌｕｓｔｒａｔｉｖｅ）」又は「例示する（ｅｘｅｍｐｌｉｆｙｉｎｇ）」と理解されるべきであり、必ずしも他の実施例よりも「好ましい」と理解されるべきであるとは限らない。用語についてのさらなる定義が本明細書に提示され、これらは、本明細書を読むことから理解されるように、それらの用語の前の事例及び後続の事例に適用され得る。
【００３０】
命令を実行する、本明細書で例示されるモジュール、ユニット、構成要素、サーバ、コンピュータ、端末、エンジン又はデバイスは、記憶媒体などのコンピュータ可読媒体、コンピュータ記憶媒体、又は、例えば磁気ディスク、光ディスク、又はテープなどのデータ・ストレージ・デバイス（リムーバブル及び／又は非リムーバブル）を含むか又はそれへのアクセスを有し得る。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、又は他のデータなど、情報の記憶のための任意の方法又は技術において実装される揮発性及び不揮発性のリムーバブル及び非リムーバブル媒体を含み得る。コンピュータ記憶媒体の実例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）又は他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気ストレージ・デバイス、或いは、所望の情報を記憶するために使用され得、アプリケーション、モジュール、又はその両方によってアクセスされ得る任意の他の媒体を含む。そのようなコンピュータ記憶媒体は、デバイスの一部であるか或いはそれにアクセス可能又は接続可能であり得る。さらに、コンテキストが別段に明らかに示さない限り、本明細書で提示されるプロセッサ又はコントローラは、単数のプロセッサとして又は複数のプロセッサとして実装され得る。複数のプロセッサが配列されるか又は分散され得、本明細書で言及される処理機能は、単一のプロセッサが例示されることがあっても、１つのプロセッサによって実行されるか又は複数のプロセッサによって実行され得る。本明細書で説明される方法、アプリケーション又はモジュールは、コンピュータ可読／実行可能命令を使用して実装され得、それらの命令は、そのようなコンピュータ可読媒体によって記憶され又は場合によっては保持され、１つ又は複数のプロセッサによって実行され得る。
【００３１】
以下の説明では、「ユーザ」、「開発者」、及び「管理者」という用語が、互換的に使用され得ることを理解されたい。
【００３２】
以下は、一般に、データ処理に関し、より詳細には、フレキシブル・パイプライン生成のための方法及びシステムに関する。
【００３３】
本明細書で説明されるように、大きいデータセットに対処するとき、リアル・タイムでエンド・ツー・エンドに処理することは、しばしば困難である。この場合、異なる段階が、データ処理パイプラインにコンパイルされ得る。それにより、データ処理パイプラインは、概して、機械学習技法を採用するシステムの動作に、構造を与えることを意味する。
【００３４】
機械学習を採用するシステムの場合、一般的なパイプラインは、様々な段階又は構成要素、例えば、生データを収集するためのデータ収集段階、生データの変換を実施するための変換段階、機械学習モデルをトレーニングするために、変換されたデータを機械学習モデルに供給するためのトレーニング段階、トレーニングされたモデルを実際のテスト・データに適用するための適用段階、及び様々なモデル・パラメータについてのスコアを作り出すための出力段階を含むことができる。いくつかの場合には、出力データのユーザ固有の操作を可能にするための操作段階もあり得る。ソリューションのタイプに応じて、いくつかのパイプラインが変動し得、段階の間に異なる段階及び異なる分岐を有することを含む。
【００３５】
一般に、パイプラインの独立した構成要素の各々が、パイプラインの各単一の実装形態において実行される。本明細書で説明される実施例では、例えば、機械学習ベース・システムに関する技術的問題を解決するために、フレキシブルであるように、個々の構成要素の各々を実装し、それらを互いに結びつけるための、バッチ・データ処理システムが与えられる。
【００３６】
特定の場合、バッチ・データ処理は、パイプラインを介して、例えば「Ｌｕｉｇｉ」と呼ばれるＰｙｔｈｏｎ（商標）モジュールを介して実装され得る。そのようなモジュールを使用することは、システムが、大きいマルチステップ・データ処理タスクを、特定の相互依存をもつより小さいサブタスクのグラフに分解することを可能にする。したがって、特に、依存解消をハンドリングすること、ワークフロー管理、可視化、失敗をハンドリングすること、コマンド・ライン統合によって、システムがバッチ・ジョブの複雑なパイプラインを構築することを可能にする。Ｌｕｉｇｉは、特定の構成要素の、「タスク」への定義を可能にする。Ｌｕｉｇｉは、モジュラーであり、タスク間の依存の作成を可能にする。システムは、ユーザから所望の出力を受信し、システムは、Ｌｕｉｇｉを介して、所望の出力を達成するために実行されるべき必要とされるタスク又はジョブをスケジュールする。
【００３７】
例えばＬｕｉｇｉを用いてパイプラインを構築するとき、各タスクが、概して、定義されるべきである。各タスクの定義は、各タスクの機能と、そのような機能を達成するために何が必要とされるかとを定義することを伴う。したがって、各タスクについての依存、各タスクがどの他のタスクに依存するかは、概して、各タスクの定義にハードコーディングされるべきである。一実例として、「タスクＡ」の機能が定義され得、そのような機能が別のタスク「タスクＢ」に依存することが、定義され得る。この実例では、Ｌｕｉｇｉを採用するシステムは、ラン・タイムにおいて、タスクＢへのタスクＡの依存により、タスクＢがすでに完了した場合のみタスクＡが実行されることになることを、識別することになる。この場合、依存は、タスクＡの入力のうちの少なくとも１つが、タスクＢの出力の少なくとも１つに関する値があることに依存することを意味すると理解される。したがって、タスクＡが実行されるたびに、システムは、タスクＢがすでに完了したかどうかを照会し、したがって、タスクＢが完了するまでタスクＡを実行しないことになる。
【００３８】
Ｌｕｉｇｉ及び同様のモジュールのハードコーディングされた依存は、新しいタスクの挿入又は依存の変更など、パイプラインを変更することが、影響を受けたタスクを再定義することを必要とするので、コストがかかり、時間がかかり、不都合であり得ることを意味する。一実例として、機械学習モデルのトレーニング中、異なるタイプの入力されたデータを用いた実験が望まれる場合、各実験について１つ又は複数のタスクについてのコードを変更しなければならないことは、非常に非効率的であろう。
【００３９】
本明細書で説明される一実施例では、出願人は、フレキシブル・パイプラインを生成するために、タスクの機能性をそれの依存から分離することの実質的な利点を認識した。
【００４０】
次に図１を参照すると、一実施例による、フレキシブル・パイプライン生成のためのシステム１００が示されている。本実施例では、システム１００は、クライアント側デバイス（図２における２６）上で実行され、インターネット（図２における２４）など、ネットワークを介してサーバ（図２における３２）に位置するコンテンツにアクセスする。さらなる実施例では、システム１００は、任意の他のコンピューティング・デバイス、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、タブレット・コンピュータ、ポイントオブセール（「ＰｏＳ：ｐｏｉｎｔ−ｏｆ−ｓａｌｅ」）デバイス、サーバ、スマートウォッチ、（１つ又は複数の）分散型又はクラウド・コンピューティング・デバイスなどの上で実行され得る。
【００４１】
いくつかの実施例では、システム１００の構成要素は、単一のコンピュータ・システムによって記憶され、その上で実行される。他の実施例では、システム１００の構成要素は、ローカルに又は遠隔で分散され得る、２つ又はそれ以上のコンピュータ・システムの間で分散される。
【００４２】
図１は、システム１００の実施例の様々な物理及び論理構成要素を示す。示されているように、システム１００は、（１つ又は複数のプロセッサを備える）中央処理ユニット（「ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ」）１０２と、ランダム・アクセス・メモリ（「ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ ｍｅｍｏｒｙ」）１０４と、入力インターフェース１０６と、出力インターフェース１０８と、ネットワーク・インターフェース１１０と、不揮発性ストレージ１１２と、ＣＰＵ１０２が他の構成要素と通信することを可能にするローカル・バス１１４とを含む、いくつかの物理及び論理構成要素を有する。ＣＰＵ１０２は、オペレーティング・システムと、以下でより詳細に説明される、様々なモジュールとを実行する。ＲＡＭ１０４は、相対的にレスポンシブな揮発性ストレージをＣＰＵ１０２に与える。入力インターフェース１０６は、管理者又はユーザが入力デバイス、例えばキーボード及びマウスを介して入力を与えることを可能にする。出力インターフェース１０８は、出力デバイス、例えば、ディスプレイ及び／又はスピーカーに情報を出力する。ネットワーク・インターフェース１１０は、一般的なクラウドベース・アクセス・モデルのためになど、システム１００から遠隔に位置する他のコンピューティング・デバイス及びサーバなど、他のシステムとの通信を可能にする。不揮発性ストレージ１１２は、オペレーティング・システム及びモジュールを実装するためのコンピュータ実行可能命令を含む、オペレーティング・システム及びプログラム、並びにこれらのサービスによって使用されるデータを記憶する。以下で説明される追加の記憶されるデータは、データベース１１６に記憶され得る。システム１００の動作中、オペレーティング・システム、モジュール、及び関係データは、実行を可能にするために、不揮発性ストレージ１１２から取り出され、ＲＡＭ１０４中に配置され得る。
【００４３】
一実施例では、ＣＰＵ１０２は、タスク・モジュール１２０と、ワークフロー・モジュール１２２と、実行モジュール１２４とを実行するように構成可能である。本明細書で説明されるように、パイプラインの一部として、システム１００は、１つ又は複数のタスクに組み込まれた機械学習モデル及び／又は統計モデルを使用することができる。１つ又は複数のモデルは、補間モデル（例えば、ランダム・フォレスト）、外挿モデル（例えば、線形回帰）、深層学習モデル（例えば、人工ニューラル・ネットワーク）、そのようなモデルのアンサンブルなどを含むことができる。
【００４４】
本明細書で言及される、タスクは、任意の実行可能サブルーチン又は動作、例えば、データ収集動作、データ変換動作、機械学習モデル・トレーニング動作、重み付け動作、スコアリング動作、出力操作動作などを含むことができる。
【００４５】
図３は、一実施例による、フレキシブル・パイプライン生成のための方法３００のためのフローチャートを示す。
【００４６】
ブロック３０２において、タスク・モジュール１２０は、パイプラインを集合的に構成する、２つ又はそれ以上のタスクを生成する。２つ又はそれ以上のタスクは、パイプラインのビルディング・ブロックを形成する。ブロック３０４において、各タスクについて、タスク・モジュール１２０は、そのそれぞれのタスクの機能性を定義するラン・コマンドを実施する。ブロック３０６において、各タスクについて、タスク・モジュール１２０はまた、そのそれぞれのタスクの機能性を実現するために、少なくとも１つの入力と少なくとも１つの出力とを定義する。一実施例では、説明されるように、少なくとも１つの入力と少なくとも１つの出力との定義は、ユーザ又は開発者によって定義される。一実例として、タスクを定義することは、以下のように実装され得る。
【数１】
2021508903.tif 000003
【００４７】
上記の実施例では、ｔｒａｎｓａｃｔｉｏｎ＿ｄａｔａ関数は、関数を実装するための英数字ストリング又は整数、並びに他の関数に与えるための英数字ストリング又は整数（例えば、ｏｒｄｅｒ＿ｃｏｕｎｔ＿ｍｏｄｅｌ関数に与えるための整数）を取り出すための構造の期待される値を（例えば、カンマ区切り値（ＣＳＶ：ｃｏｍｍａ−ｓｅｐａｒａｔｅｄ  ｖａｌｕｅｓ）ファイルへの経路を介して）有する。ｏｒｄｅｒ＿ｃｏｕｎｔ＿ｍｏｄｅｌ関数は、「ｍｏｄｅｌ．ｆｉｔ（ｆｅａｔｕｒｅ＿ｖｅｃｔｏｒ）」方法を実装する、選ばれたモデル・オブジェクトへの経路を含むことができる。
【００４８】
ブロック３０８において、ワークフロー・モジュール１２２は、タスクに関連する論理構成要素を自動的に定義するためのワークフロー・フレームワークを生成する。ワークフローは、タスク間の論理関係のセットである。いくつかの場合には、ワークフローは、「依存ツリー」と呼ばれることがある。一実施例では、ワークフロー・フレームワークは、完遂した出力と発生した入力とを含む。
【００４９】
ブロック３１０において、ワークフロー・モジュール１２２は、他のタスクの入力を照会し、どのタスク出力からのデータが他のタスクのうちの１つへの入力として依存されないかを決定することによって、１つ又は複数のタスク出力を完遂した出力にマッピングする。一実施例では、ワークフロー・モジュール１２２は、それぞれのタスクの定義内で定義された又はそれぞれのタスクの出力を用いて定義された、所定の出力表明子について照会することによって、１つ又は複数のタスク出力を完遂した出力にマッピングすることができる。特定の場合には、出力表明子は、完遂した出力に何がマッピングされることを望まれるかを表明するために、ユーザ又は開発者によって定義され得る。完遂した出力にマッピングされた出力をもつ１つ又は複数のタスクは、本明細書では「第１のアップストリーム・タスク」と呼ばれる。ブロック３１２において、ワークフロー・モジュール１２２は、１つ又は複数のタスク出力を第１のアップストリーム・タスクの入力にマッピングし、そのような１つ又は複数のタスクは本明細書では「第２のアップストリーム・タスク」と呼ばれる。第２のアップストリーム・タスクの出力は、第１のアップストリーム・タスクが機能するために、どのタスク出力からのデータが第１のアップストリーム・タスクへの入力として依存されるかを決定することによって、第１のアップストリーム・タスクの入力にマッピングされる。
【００５０】
ブロック３１４において、ワークフロー・モジュール１２２は、機能するために、第２のアップストリーム・タスクの入力が他のタスクの出力からのデータに依存するかどうかを決定する。ブロック３１４における決定が肯定である場合、ワークフロー・モジュール１２２は、１つ又は複数のタスク出力を第２のアップストリーム・タスクの入力にマッピングすることによってブロック３１２を繰り返し、そのような１つ又は複数のタスクは本明細書では「第３のアップストリーム・タスク」と呼ばれる。現在のアップストリーム・レベルにおけるタスクの入力の、（「第ｎのアップストリーム・タスク（’ｎ’  ｕｐｓｔｒｅａｍ  ｔａｓｋｓ）」と呼ばれる）連続するアップストリーム・タスクの出力へのそのようなマッピングは、ブロック３１４における決定が否定になるまで、ワークフロー・モジュール１２２によって繰り返される。
【００５１】
ブロック３１６において、ブロック３１４における決定が否定である場合、ワークフロー・モジュール１２２は、他のタスクの出力にマッピングされていないタスクの入力を発生した入力にマッピングする。一実施例では、ワークフロー・モジュール１２２は、それぞれのタスクの定義内で定義された又はそれぞれのタスクの入力を用いて定義された、所定の入力表明子について照会することによって、１つ又は複数のタスク入力を発生した入力にマッピングすることができる。特定の場合には、表明子は、発生した入力に何がマッピングされることを望まれるかを表明するために、ユーザ又は開発者によって定義され得る。
【００５２】
ブロック３１８において、実行モジュール１２４が、パイプライン中のタスクを実行する。実行モジュール１２４は、タスクを実行するための順序を決定するために、ワークフロー・モジュール１２２によって生成されたワークフローと相談する。
【００５３】
一実施例では、ワークフロー・モジュール１２２は、入力インターフェース１０６を介して与えられたユーザ又は開発者入力に基づいてどのタスク出力がどのタスク入力に依存するかを決定する。
【００５４】
有利に、システム１００は、パイプラインの構成及び最終的な機能性に関してフレキシビリティを与えるために、Ｌｕｉｇｉにおいて必要とされることとは対照的に、タスクの定義からの依存の分離を可能にする。このようにして、ワークフローは、パイプラインの実装形態に関して、例えばユーザ又は開発者によって、再定義可能である。さらに、有利に、上記は、個々のタスクの各々が再使用可能であることを可能にする。このようにして、ユーザ又は開発者は、既存のタスクのいずれにおいても入力及び／又は出力定義を変更する必要がない。ユーザ又は開発者は、既存のワークフローを変更することをも必要とされない。いくつかの場合には、本明細書で説明されるように、システム１００は、関係するワークフロー構成要素をオーバーライドすることができる既存のワークフローの下位分類が定義されるように、再定義されたタスクとともに上記の手法を再び実行することができる。
【００５５】
さらなる実施例では、ワークフロー・モジュール１２２は、発生した入力から開始してパイプラインを構築し、ダウンストリーム・タスクをマッピングすることによって、方法３００を逆に実行することができる。例えば、他のタスクの出力に依存しない入力をもつ（「第１のダウンストリーム・タスク」と呼ばれる）タスクを、発生した入力にマッピングすること。次いで、第１のダウンストリーム・タスクの出力を、第１のダウンストリーム・タスクの出力に依存する（「第２のダウンストリーム・タスク」と呼ばれる）他のタスクの入力にマッピングすることなど。出力の、ダウンストリーム・タスクの入力へのこのマッピングは、特定のタスクの出力が他のタスクの入力によって依存されなくなり、それにより、そのような出力が完遂した出力にマッピングされ得るまで続けられ得る。
【００５６】
本明細書で与えられる実例では、予測は、履歴データを使用してある対象についての推定される将来の値を取得するプロセスを意味すると理解される。たいていの場合、予測は、１つ又は複数の予測を生成するための履歴データのセットがあることに基づいている。これらの場合、機械学習技法は、それらのモデルをトレーニングし、したがって合理的に正確な予想を作り出すために、極めて多くの履歴データに依拠することができる。
【００５７】
本明細書で説明される実施例の例示的な実装形態では、ユーザは、以下を定義することができる。
【数２】
2021508903.tif 000004
【００５８】
上記は、２つの論理構成要素（ｐｒｏｄｕｃｅｒ＿ｃｏｍｐｏｎｅｎｔ、ｃｏｎｓｕｍｅｒ＿ｃｏｍｐｏｎｅｎｔ）を定義し、前者の出力を後者の入力にマッピングする、最小ワークフローのための本明細書で説明される実施例の一実例である。それは、それぞれＰｒｏｄｕｃｅｒＴａｓｋＡ及びＣｏｎｓｕｍｅｒＴａｓｋであるように、それらの構成要素の実装形態をも定義する。
【００５９】
上記は、本明細書で説明される実施例を使用して生成されるので、ユーザが、例えば、ＰｒｏｄｕｃｅｒＴａｓｋＡを何らかの他の論理と置き換えて、新しいワークフローを作ることを希望する場合、ユーザはただ、新しいタスクを書く必要がある。新しいタスクは単に、新しいタスクの出力が消費者構成要素によって期待される構造に適合することを確実にし、元のワークフローを拡張／下位分類する新しいワークフローにおけるその構成要素定義をオーバーライドするための、新しい論理を必要とする。一実例として、以下の通りである。
【数３】
2021508903.tif 000005
【００６０】
図４は、本明細書で説明される実施例の別の例示的な実装形態を示す。この実例では、パイプライン４００が、機械学習モデルを使用して、製品の販売の増加又は減少を予測することなど、製品の販売促進の結果を予測することを対象とする。パイプライン４００は、発生した入力４２０と、完遂した出力４２２と、タスク・モジュール１２０によって生成された５つの別個のタスクとを含む。パイプラインの第１の場合、５つのタスクは、製品の前の購入のデータベースからデータを取り出す機能性を有する第１のタスク４０２と、入力データを用いて機械学習モデルをトレーニングする機能性を有する第２のタスク４０４と、ポイントオブサービス・コンソールからテスト・データを取り出す機能性を有する第３のタスク４０６と、予測に到達するためにテスト・データをスコアリングする機能性を有する第４のタスク４０８と、出力（予測）を公開及び操作する機能性を有する第５のタスク４１０とである。
【００６１】
この実例では、パイプライン４００は、ワークフロー・モジュール１２２によって生成されたワークフロー４３０をも含む。第１の場合、ワークフロー・モジュール１２２は、第５のタスク４１０の出力に依存する入力を有する他のタスクがないと決定することによって、第５のタスク４１０を完遂した出力４２２にマッピングする。ワークフロー・モジュール１２２は、次いで、第５のタスク４１０の入力が第４のタスク４０８の出力に依存するので、第４のタスク４０８の出力を第５のタスク４１０の入力にマッピングする。ワークフロー・モジュール１２２は、次いで、第４のタスク４０８の入力が第２のタスク４０４の出力と第３のタスク４０６の出力からのデータに依存するので、両方のタスクの出力をこの入力にマッピングする。ワークフロー・モジュール１２２は、次いで、第１のタスク４０２の出力を第２のタスク４０４の出力にマッピングする。ワークフロー・モジュール１２２は、次いで、第１のタスク４０２と第３のタスク４０６との入力が他のタスクの出力に依存しないので、両方のそれらのタスクの入力を発生した入力４２０にマッピングする。ワークフロー・モジュール１２２によって生成されたワークフロー４３０と相談して、実行モジュール１２４は、各々のタスクを適切な順序で実行することができる。したがって、システム１００は、生成されたパイプライン４００に従って、データベースから顧客データを取り出し、そのようなデータを使用して、機械学習モデルをトレーニングすることができ、トレーニングされた機械学習モデルは、顧客データを使用して販売促進結果を予測することが可能である。トレーニングされた機械学習モデルを使用して、入力されたテスト・データ（及びテスト・パラメータ）は、その特定の入力されたデータについての予測に到達するためにスコアリングされ得る。スコアリングされたデータ（予測）は、公開され（例えば、ＪａｖａＳｃｒｉｐｔオブジェクト表記法（ＪＳＯＮ：ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）又はカンマ区切り値（ＣＳＶ）フォーマットで、出力インターフェース１０８を介してスクリーン上に表示されるか、又はネットワーク・インターフェース１１０上で送られる）、いくつかの場合には、入力インターフェース１０６を介してユーザによって操作され得る。その出力が、パイプライン４００の完遂した出力４２２を形成することができる。
【００６２】
図５は、図４の例示的な実装形態の例示的な適応を示す。この場合、ユーザは、異なるデータセットを取り出し、そのデータを使用して、異なる機械学習モデルをトレーニングすることによって、実験することを決めた。この実例では、タスク・モジュール１２０は、オンライン販売データベースからトレーニング・データを取り出す機能性をもつ第６のタスク４１２を生成する。タスク・モジュール１２０は、オンライン販売データを用いて新しい機械学習モデルをトレーニングするための第７のタスク４１４をも生成する。したがって、ワークフロー・モジュール１２２は、上記で説明された手法を使用して、ワークフロー４３０を再生成するが、この場合、ワークフロー・モジュール１２２は、第７のタスク４１４の出力と第３のタスク４０６の出力とを、第４のタスク４０８の入力にマッピングする。ワークフロー・モジュール１２２はまた、第５のタスク４１２の出力を第６のタスク４１４の入力にマッピングし、次いで、第５のタスク４１２の入力を発生した入力４２０にマッピングする。次いで、ワークフロー・モジュール１２２によって生成された補正されたワークフロー４３０と再び相談して、実行モジュール１２４は、補正されたパイプライン４００中のタスクから各々を適切な順序で実行することができる。
【００６３】
図６は、システム１００の例示的な実装形態６００の図を示す。この実例では、そこは、ワークフロー実行サーバと統合するための、及び、例えばユーザによるワークフローの構成、提出、及び監視を可能にするためのユーザ・インターフェース６０２を含む。そこは、ジョブ構成の集中型モジュラー管理のためのサービスである、構成ＡＰＩ６０４をも含む。そこは、「プラガブル（ｐｌｕｇｇａｂｌｅ）」並列化及び／又は分散処理のためのスパーク・クラスタ６１４をも含む。そこは、各々が１つ又は複数のプロセッサと、データ・ストレージ・メモリと、ロード・バランサ６１６とを備える、１つ又は複数のサーバを備えるサーバ・クラスタ６０６をも含む。このようにして、サーバ・クラスタ６０６は、ワークフローのための分散型実行環境であり得る。サーバ・クラスタ６０６は、ジョブ、ワーカーなどに関するサーバ状態を維持するためのデータベース６０８を含む。サーバ・クラスタ６０６は、複数のワーカーの間で作業を同期させるための、及びワークフローを実行するための監視インターフェースを与えるための、スケジューラ６１０をも含む。サーバ・クラスタ６０６は、それぞれのワークフローを実行するための複数の（「ソース」とも呼ばれる）ワーカー６１２をも含む。この例示的な実装形態６００では、有利に、ジョブ又はワークフローのリソース要件をそれのパラメータ（及び履歴実行）から学習し、リソース使用率、時間又はコストを最適化するやり方でワーカー・ノードにジョブを割り当てる能力を有することによる、インテリジェント・ロード・バランシングがあり得る。この例示的な実装形態６００では、また有利に、各関係する構成要素が、明確に定義されたインターフェースを通してシステム１００と対話することができるので、プラガビリティ（ｐｌｕｇｇａｂｉｌｉｔｙ）があり得る。これは、使用されるリソースのインスタンスを容易に切り替えることを可能にする。スパーク・クラスタの場合、例えば、システム１００の同じ展開が、スパークのローカル・インスタンス、ローカル・クラスタ、又は管理されたクラウド・サービスをそれのセットアップの変更なしで使用することができる。
【００６４】
本明細書で説明される実施例の例示として、図７は、本明細書で説明される実施例において、この場合、トランザクション特徴（履歴）に基づいてインベントリ中の（１つ又は複数の）特定の製品の販売の予想を生成するために、使用され得る例示的なパイプラインと例示的な関連するタスクとを示す。この実例において説明されるタスクは、本明細書で説明されるフレキシブル・パイプライン生成に関して説明されるように、フレキシブルに生成及びルーティングされ得ることを理解されたい。依存において非線形性があり得るように、タスクが必ずしも連続的であるとは限らないことを理解されたい。
【００６５】
この実例では、パイプライン７００は、最初に、トランザクション特徴７０２、インベントリ特徴７０４、及び結合特徴７０６のタスクを含む、トレーニング特徴を生成すること７０１を伴う。この実例では、トランザクション特徴タスク７０２は、機能として、データベースからトランザクション・データを抽出することと、トランザクション・データからの特定の特徴を変換及び抽出することと、トランザクション特徴セットを、例えばカンマ区切り値（ＣＳＶ）ファイル中に、保存することとを含む。トランザクション特徴タスク７０２は、ワークフロー・モジュール１２２によって、発生した入力７３０にマッピングされ、ここで、トランザクション特徴タスク７０２は入力ＣＳＶファイルを受信する。トランザクション特徴タスク７０２は、修正されたＣＳＶファイル又は修正されたＣＳＶファイルへの経路を出力することをさらに含む。
【００６６】
この実例では、インベントリ特徴タスク７０４は、機能として、データベースからインベントリ・データを抽出することと、インベントリ・データからの特定の特徴を変換及び抽出することと、インベントリ特徴セットを、例えばカンマ区切り値（ＣＳＶ）ファイル中に、保存することとを含む。インベントリ特徴タスク７０４は、ワークフロー・モジュール１２２によって、発生した入力７３０にマッピングされ、ここで、インベントリ特徴タスク７０４は入力ＣＳＶファイルを受信する。インベントリ特徴タスク７０４は、第２の修正されたＣＳＶファイル又は第２の修正されたＣＳＶファイルへの経路を出力することをさらに含む。
【００６７】
この実例では、結合特徴タスク７０６が機能するために、ワークフロー・モジュール１２２は、結合特徴タスク７０６の入力を、（関連するＣＳＶファイル中で）トランザクション特徴を受信するためにトランザクション特徴タスク７０２の出力にマッピングし、（関連するＣＳＶファイル中で）インベントリ特徴を受信するためにインベントリ特徴タスク７０４の出力にマッピングする。結合特徴タスク７０６は、機能として、インベントリ及びトランザクション特徴セットをロードすることと、インデックス列上でインベントリ特徴セットとトランザクション特徴セットとを結合することと、可能な場合、失われたレコードを挿入することと、結合された特徴セットを、例えばカンマ区切り値（ＣＳＶ）ファイル中に、保存することとをさらに含む。結合特徴タスク７０６は、後続の修正されたＣＳＶファイル又は後続の修正されたＣＳＶファイルへの経路を出力することをさらに含む。
【００６８】
この実例では、パイプライン７００は、次に、平均価格モデルをトレーニングするタスク７０８とユニット予想モデルをトレーニングするタスク７１０とを含む、モデルのトレーニング７０７を伴う。
【００６９】
この実例では、平均価格モデル・タスク７０８が機能するために、ワークフロー・モジュール１２２は、（関連する後続の修正されたＣＳＶファイル中で）平均価格モデル・タスク７０８の入力を結合特徴タスク７０６の出力にマッピングする。平均価格モデル・タスク７０８は、機能として、結合された特徴データセットをロードし、（列などの）関係する情報を抽出することと、ランダム・フォレスト回帰モデルをトレーニングすることと、メタデータとともに平均価格モデルをデータ・ストレージに保存することとをさらに含む。平均価格モデル・タスク７０８は、保存する平均価格モデル・ファイル又は保存する平均価格モデルへの経路を出力することをさらに含む。
【００７０】
この実例では、ユニット予想モデル・トレーニング・タスク７１０が機能するために、ワークフロー・モジュール１２２は、（関連する後続の修正されたＣＳＶファイル中で）ユニット予想モデル・トレーニング・タスク７１０の入力を結合特徴タスク７０６の出力にマッピングする。ユニット予想モデル・トレーニング・タスク７１０は、機能として、結合された特徴データセットをロードし、（列などの）関係する情報を抽出することと、アンサンブル・モデルをトレーニングすることと、関連するメタデータとともにユニット予想モデルをデータ・ストレージに保存することとをさらに含む。ユニット予想モデル・トレーニング・タスク７１０は、ユニット予想モデル・ファイル又はユニット予想モデルへの経路を出力することをさらに含む。
【００７１】
この実例では、パイプライン７００は、次に、スコアリング特徴を生成するタスク７１２と予想を生成するタスク７１４とを含む、トレーニングされたモデルを使用して予測すること７１１を伴う。
【００７２】
この実例では、スコアリング特徴を生成するタスク７１２が機能するために、ワークフロー・モジュール１２２は、スコアリング特徴を生成するタスク７１２の入力を発生した入力７３０にマッピングし、ここで、スコアリング特徴を生成するタスク７１２は入力ＣＳＶファイルを受信する。スコアリング特徴を生成するタスク７１２は、機能として、データベースから将来のインベントリ・データを抽出することと、インベントリ・データからスコアリング特徴を変換及び抽出することと、スコアリング特徴セットを、例えばカンマ区切り値（ＣＳＶ）ファイル中に、保存することとを含む。スコアリング特徴タスク７０４は、スコアリング特徴ＣＳＶファイル又はスコアリング特徴ＣＳＶファイルへの経路を出力することをさらに含む。
【００７３】
この実例では、予想を生成するタスク７１４が機能するために、ワークフロー・モジュール１２２は、予想を生成するタスク７１４の入力を（保存する平均価格モデル・ファイル中の）平均価格モデル・タスク７０８の出力と、（ユニット予想モデル・ファイル中の）ユニット予想モデル・トレーニング・タスク７１０の出力と、（スコアリング特徴ＣＳＶファイル中の）スコアリング特徴を生成するタスク７１２の出力とにマッピングする。予想を生成するタスク７１４は、機能として、スコアリング特徴セットをロードすることと、平均価格モデルをロードすることと、ユニット予想モデルをロードすることと、モデルをスコアリング特徴データセットに適用することと、予想を生成することと、予想を、例えばカンマ区切り値（ＣＳＶ）ファイル中に、保存することとを含む。予想を生成するタスク７１４は、予想ＣＳＶファイル中の予想又は予想ＣＳＶファイルへの経路を出力することをさらに含む。
【００７４】
この実例では、パイプライン７００は、次に、報告生成のタスク７１６と予想配信のタスク７１８とを含む、配信及び／又は報告７１５を伴う。この実例では、報告生成タスク７１６が機能するために、ワークフロー・モジュール１２２は、（予想ＣＳＶファイル中で）報告生成タスク７１６の入力を予想を生成するタスク７１４の出力にマッピングする。報告生成タスク７１６は、機能として、予測データをロードすることと、異常報告を生成することと、相関報告を生成することと、異常報告及び相関報告をデータ・ストレージに保存することとをさらに含む。スコアリング特徴タスク７０４は、異常報告及び／又は相関報告を完遂した出力７４０に出力することをさらに含み、例えば、パイプライン中の他のタスクが報告生成タスク７１６の出力に依存しないので、スコアリング特徴タスク７０４は、ワークフロー・モジュール１２２によって、完遂した出力７４０にマッピングされる。
【００７５】
この実例では、予想配信タスク７１８が機能するために、ワークフロー・モジュール１２２は、（予想ＣＳＶファイル中で）予想配信タスク７１８の入力を予想を生成するタスク７１４の出力にマッピングする。予想配信タスク７１８は、機能として、予想ファイルをロードすることと、ファイル・ホスティング・サービス又はプロトコルに接続することと、予想ファイルをファイル・ホスティング・サービス又はサーバにアップロードすることと、成功フラグ・ファイルをデータ・ストレージに保存することとをさらに含む。予想配信タスク７１８は、成功フラグ・ファイル又は成功フラグ・ファイルへの経路を完遂した出力７４０に出力することをさらに含み、例えば、パイプライン中の他のタスクが予想配信タスク７１８の出力に依存しないので、予想配信タスク７１８は、ワークフロー・モジュール１２２によって、完遂した出力７４０にマッピングされる。
【００７６】
有利に、本明細書で説明される実施例は、上記で例示されたように、当技術分野において特徴的な問題の一実例である、タスクのハードコーディングされた依存を変更する必要なしに、パイプラインを容易に及び効率的に補正する能力を可能にする。このようにして、タスクが、依存を定義しなくてはならないことから分離されるので、タスク定義は、任意のパイプラインにおける再展開のためにコンテナ化される。これは、パイプラインのフレキシブル構成を与えることによって、開発の速度を実質的に上げることができ、パイプラインの異なる態様について実験又は機械学習モデル微調整が望まれる研究プロセスを大幅に改善することができる。さらに、これは、パイプラインが、例えば、異なる対象及びデータセットとともに使用するために、極めてカスタマイズ可能であることを可能にすることができる。
【００７７】
有利に、本明細書で説明される実施例では、１つ又は複数の他のタスクを再定義する必要があれば、個々のタスクが、変更されるか又は置換され得、これは、パイプラインの容易な再使用、パイプラインの容易なスケーラビリティ、開発における実質的な時間節約、及びパイプライン全体を再生成する必要がないことについての計算量的節約を可能にする。有利に、本明細書で説明される実施例は、システムの破損に対する何らかの保護をも与え、パイプライン中の実際のタスクを再定義する必要がなく、むしろワークフローの調節のみを必要とすることにより、あまり経験をもたない管理者又は開発者が変更を行うことを可能にする。
【００７８】
したがって、本明細書で説明される実施例は、パイプライン・フレキシビリティがないことによる当技術分野における特徴的な技術的問題に技術的ソリューションを与える。本明細書で説明される実施例は、様々なプラットフォーム上で迅速に展開可能であり得、フォールト・トレラントであり得る、コンテナ化されフレキシブルなソリューションを与えることができる。本明細書で説明される実施例は、様々なパイプライン構成において機械学習を使用することを通して、インテリジェント・ロード・バランシングをも可能にすることができる。本明細書で説明される実施例はまた、独立してスケーラブルな算出リソースについて（スパーク／テンソル・フローを介してなど）プラガブルであり得る。
【００７９】
特定の実施例では、ワークフロー・モジュール１２２によって生成されたワークフローは、ワークフロー又はタスク定義を下位分類及び／又はオーバーライドすることを通して使用するためのパイプラインの複数の実装形態を可能にすることができる。
【００８０】
さらなる実施例では、それぞれのワークフローを有し、本明細書で説明されるように生成されたパイプラインは、より大きいパイプラインの一部分であり得、或いは、シリアル化され、ネスト化され、又はさもなければ、それら自体のそれぞれのワークフローを各々有する、他のパイプラインと組み合わせられ得る。したがって、特定のパイプラインのワークフローは、より大きいワークフローの応答フローの一部であり得、システム全体の実装のためのさらにより大きいフレキシビリティを可能にする。一実例では、１つのワークフローの発生した入力を他のワークフローの完遂した出力にマッピングすることによって、２つのワークフローが組み合わせられ得る。
【００８１】
本発明は、いくつかの特定の実施例に関して説明されたが、それらの様々な変更形態が、本明細書に添付された特許請求の範囲において概説される本発明の趣旨及び範囲から逸脱することなく当業者に明らかであろう。上記で具陳されたすべての参照の全開示が、参照により本明細書に組み込まれる。
【図１】
2021508903.tif 000006
【図２】
2021508903.tif 000007
【図３】
2021508903.tif 000008
【図４】
2021508903.tif 000009
【図５】
2021508903.tif 000010
【図６】
2021508903.tif 000011
【図７】
2021508903.tif 000012
【手続補正書】
【提出日】令和2年11月13日(2020.11.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
この実例では、パイプライン４００は、ワークフロー・モジュール１２２によって生成されたワークフロー４３０をも含む。第１の場合、ワークフロー・モジュール１２２は、第５のタスク４１０の出力に依存する入力を有する他のタスクがないと決定することによって、第５のタスク４１０を完遂した出力４２２にマッピングする。ワークフロー・モジュール１２２は、次いで、第５のタスク４１０の入力が第４のタスク４０８の出力に依存するので、第４のタスク４０８の出力を第５のタスク４１０の入力にマッピングする。ワークフロー・モジュール１２２は、次いで、第４のタスク４０８の入力が第２のタスク４０４の出力と第３のタスク４０６の出力からのデータに依存するので、両方のタスクの出力をこの入力にマッピングする。ワークフロー・モジュール１２２は、次いで、第１のタスク４０２の出力を第２のタスク４０４の入力にマッピングする。ワークフロー・モジュール１２２は、次いで、第１のタスク４０２と第３のタスク４０６との入力が他のタスクの出力に依存しないので、両方のそれらのタスクの入力を発生した入力４２０にマッピングする。ワークフロー・モジュール１２２によって生成されたワークフロー４３０と相談して、実行モジュール１２４は、各々のタスクを適切な順序で実行することができる。したがって、システム１００は、生成されたパイプライン４００に従って、データベースから顧客データを取り出し、そのようなデータを使用して、機械学習モデルをトレーニングすることができ、トレーニングされた機械学習モデルは、顧客データを使用して販売促進結果を予測することが可能である。トレーニングされた機械学習モデルを使用して、入力されたテスト・データ（及びテスト・パラメータ）は、その特定の入力されたデータについての予測に到達するためにスコアリングされ得る。スコアリングされたデータ（予測）は、公開され（例えば、ＪａｖａＳｃｒｉｐｔオブジェクト表記法（ＪＳＯＮ：ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）又はカンマ区切り値（ＣＳＶ）フォーマットで、出力インターフェース１０８を介してスクリーン上に表示されるか、又はネットワーク・インターフェース１１０上で送られる）、いくつかの場合には、入力インターフェース１０６を介してユーザによって操作され得る。その出力が、パイプライン４００の完遂した出力４２２を形成することができる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
図５は、図４の例示的な実装形態の例示的な適応を示す。この場合、ユーザは、異なるデータセットを取り出し、そのデータを使用して、異なる機械学習モデルをトレーニングすることによって、実験することを決めた。この実例では、タスク・モジュール１２０は、オンライン販売データベースからトレーニング・データを取り出す機能性をもつ第６のタスク４１２を生成する。タスク・モジュール１２０は、オンライン販売データを用いて新しい機械学習モデルをトレーニングするための第７のタスク４１４をも生成する。したがって、ワークフロー・モジュール１２２は、上記で説明された手法を使用して、ワークフロー４３０を再生成するが、この場合、ワークフロー・モジュール１２２は、第７のタスク４１４の出力と第３のタスク４０６の出力とを、第４のタスク４０８の入力にマッピングする。ワークフロー・モジュール１２２はまた、第６のタスク４１２の出力を第７のタスク４１４の入力にマッピングし、次いで、第６のタスク４１２の入力を発生した入力４２０にマッピングする。次いで、ワークフロー・モジュール１２２によって生成された補正されたワークフロー４３０と再び相談して、実行モジュール１２４は、補正されたパイプライン４００中のタスクから各々を適切な順序で実行することができる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００７２
【補正方法】変更
【補正の内容】
【００７２】
この実例では、スコアリング特徴を生成するタスク７１２が機能するために、ワークフロー・モジュール１２２は、スコアリング特徴を生成するタスク７１２の入力を発生した入力７３０にマッピングし、ここで、スコアリング特徴を生成するタスク７１２は入力ＣＳＶファイルを受信する。スコアリング特徴を生成するタスク７１２は、機能として、データベースから将来のインベントリ・データを抽出することと、インベントリ・データからスコアリング特徴を変換及び抽出することと、スコアリング特徴セットを、例えばカンマ区切り値（ＣＳＶ）ファイル中に、保存することとを含む。スコアリング特徴を生成するタスク７１２は、スコアリング特徴ＣＳＶファイル又はスコアリング特徴ＣＳＶファイルへの経路を出力することをさらに含む。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７４
【補正方法】変更
【補正の内容】
【００７４】
この実例では、パイプライン７００は、次に、報告生成のタスク７１６と予想配信のタスク７１８とを含む、配信及び／又は報告７１５を伴う。この実例では、報告生成タスク７１６が機能するために、ワークフロー・モジュール１２２は、（予想ＣＳＶファイル中で）報告生成タスク７１６の入力を予想を生成するタスク７１４の出力にマッピングする。報告生成タスク７１６は、機能として、予測データをロードすることと、異常報告を生成することと、相関報告を生成することと、異常報告及び相関報告をデータ・ストレージに保存することとをさらに含む。報告生成タスク７１６は、異常報告及び／又は相関報告を完遂した出力７４０に出力することをさらに含み、例えば、パイプライン中の他のタスクが報告生成タスク７１６の出力に依存しないので、スコアリング特徴タスク７０４は、ワークフロー・モジュール１２２によって、完遂した出力７４０にマッピングされる。
【手続補正５】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フレキシブル・パイプライン生成のための方法であって、前記方法が、少なくとも１つの処理ユニット上で実行され、前記方法は、
２つ又はそれ以上のタスクを生成することであって、前記２つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義する、生成することと、
各タスクについて、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信することと、
前記２つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成することであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を他のタスクのうちの少なくとも１つの前記出力とマッピングすることであって、マッピングされていない入力を有する各タスクについて、他のタスクのどの出力が、前記それぞれのタスクの前記機能性についての入力として受信されるために依存されるかを決定する、前記マッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、生成することと、
前記２つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行することと
含む、方法。
【請求項２】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、マッピングされていない出力を有する各タスクについて、他のタスクのどの入力が、前記他のタスクの前記機能性についての出力として与えられるために依存されるかを決定することを含む、請求項１に記載の方法。
【請求項３】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングされた前記少なくとも１つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項１に記載の方法。
【請求項４】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングされた前記少なくとも１つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項１に記載の方法。
【請求項５】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの出力が、前記他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、請求項１に記載の方法。
【請求項６】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、請求項１に記載の方法。
【請求項７】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが出力表明子を含む、マッピングすることを含む、請求項１に記載の方法。
【請求項８】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが入力表明子を含む、マッピングすることを含む、請求項１に記載の方法。
【請求項９】
修正を受信することであって、前記修正が、前記タスクのうちの少なくとも１つについての修正された機能性、前記タスクのうちの少なくとも１つについての修正された入力、前記タスクのうちの少なくとも１つについての修正された出力、前記タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含む、受信することと、
前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成することであって、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、再構成することと、
前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行することと
をさらに含む、請求項１に記載の方法。
【請求項１０】
フレキシブル・パイプライン生成のためのシステムであって、前記システムが、少なくとも１つの処理ユニットとデータ・ストレージとを備え、前記少なくとも１つの処理ユニットは、前記データ・ストレージと通信しており、
２つ又はそれ以上のタスクを生成するためのタスク・モジュールであって、前記２つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義し、各タスクについて、前記タスク・モジュールが、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信する、タスク・モジュールと、
前記２つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成するためのワークフロー・モジュールであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を他のタスクのうちの少なくとも１つの前記出力とマッピングすることであって、マッピングされていない入力を有する各タスクについて、他のタスクのどの出力が、前記それぞれのタスクの前記機能性についての入力として受信されるために依存されるかを決定する、前記マッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、ワークフロー・モジュールと、
前記２つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行するための実行モジュールと
を実行するように構成された、システム。
【請求項１１】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、マッピングされていない出力を有する各タスクについて、他のタスクのどの入力が、前記他のタスクの前記機能性についての出力として与えられるために依存されるかを決定することを含む、請求項１０に記載のシステム。
【請求項１２】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングされた前記少なくとも１つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項１０に記載のシステム。
【請求項１３】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングされた前記少なくとも１つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項１０に記載のシステム。
【請求項１４】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの出力が、前記他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、請求項１０に記載のシステム。
【請求項１５】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、請求項１０に記載のシステム。
【請求項１６】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが出力表明子を含む、マッピングすることを含む、請求項１０に記載のシステム。
【請求項１７】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが入力表明子を含む、マッピングすることを含む、請求項１０に記載のシステム。
【請求項１８】
前記タスク・モジュールがさらに、修正を受信し、前記修正が、前記タスクのうちの少なくとも１つについての修正された機能性、前記タスクのうちの少なくとも１つについての修正された入力、前記タスクのうちの少なくとも１つについての修正された出力、前記タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含み、
前記ワークフロー・モジュールが、前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成し、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含み、
前記実行モジュールがさらに、前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行する、
請求項１０に記載のシステム。
【手続補正書】
【提出日】令和2年12月25日(2020.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フレキシブル・パイプライン生成のための方法であって、前記方法が、少なくとも１つの処理ユニット上で実行され、前記方法は、
２つ又はそれ以上のタスクを生成することであって、前記２つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義する、生成することと、
各タスクについて、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信することと、
前記２つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成することであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を他のタスクのうちの少なくとも１つの前記出力とマッピングすることであって、
１）マッピングされていない入力を有する各タスクについて、他のタスクのどの出力が、前記それぞれのタスクの前記機能性についての入力として受信されるために依存されるかを決定するか、又は
２）マッピングされていない出力を有する各タスクについて、他のタスクのどの入力が、前記他のタスクの前記機能性についての出力として与えられるために依存されるかを決定する、
前記マッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、生成することと、
前記２つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行することと
含む、方法。
【請求項２】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングされた前記少なくとも１つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項１に記載の方法。
【請求項３】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングされた前記少なくとも１つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項１に記載の方法。
【請求項４】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの出力が、前記他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、請求項１に記載の方法。
【請求項５】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、請求項１に記載の方法。
【請求項６】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが出力表明子を含む、マッピングすることを含む、請求項１に記載の方法。
【請求項７】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが入力表明子を含む、マッピングすることを含む、請求項１に記載の方法。
【請求項８】
修正を受信することであって、前記修正が、前記タスクのうちの少なくとも１つについての修正された機能性、前記タスクのうちの少なくとも１つについての修正された入力、前記タスクのうちの少なくとも１つについての修正された出力、前記タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含む、受信することと、
前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成することであって、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、再構成することと、
前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行することと
をさらに含む、請求項１に記載の方法。
【請求項９】
フレキシブル・パイプライン生成のためのシステムであって、前記システムが、少なくとも１つの処理ユニットとデータ・ストレージとを備え、前記少なくとも１つの処理ユニットは、前記データ・ストレージと通信しており、
２つ又はそれ以上のタスクを生成するためのタスク・モジュールであって、前記２つ又はそれ以上のタスクが、前記パイプラインの少なくとも一部分を定義し、各タスクについて、前記タスク・モジュールが、前記それぞれのタスクについての機能性を受信し、前記それぞれのタスクに関連付けられた少なくとも１つの入力と少なくとも１つの出力とを受信する、タスク・モジュールと、
前記２つ又はそれ以上のタスクについての関連付けを定義するためのワークフローを生成するためのワークフロー・モジュールであって、前記ワークフローが、発生した入力と完遂した出力とを有し、前記ワークフローを前記生成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を他のタスクのうちの少なくとも１つの前記出力とマッピングすることであって、
１）マッピングされていない入力を有する各タスクについて、他のタスクのどの出力が、前記それぞれのタスクの前記機能性についての入力として受信されるために依存されるかを決定するか、又は
２）マッピングされていない出力を有する各タスクについて、他のタスクのどの入力が、前記他のタスクの前記機能性についての出力として与えられるために依存されるかを決定する、
前記マッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含む、ワークフロー・モジュールと、
前記２つ又はそれ以上のタスクの実行の順序のために前記ワークフローを使用して、前記パイプラインを実行するための実行モジュールと
を実行するように構成された、システム。
【請求項１０】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングされた前記少なくとも１つのタスクの前記入力とマッピングすることであって、前記入力が、前記それぞれのタスクの前記機能性について依存される、マッピングすることと、
マッピングされた出力を有するタスクの入力が、前記タスクの前記機能性について他のタスクの出力に依存するかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記入力を、前記それぞれのタスクが依存する前記他のタスクの前記出力にマッピングすることと、前記依存がない場合、マッピングされていない入力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記入力を前記発生した入力と前記マッピングすることを実施することと
を含む、請求項９に記載のシステム。
【請求項１１】
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力と前記マッピングすることは、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングされた前記少なくとも１つのタスクの前記出力とマッピングすることであって、前記出力が、前記それぞれのタスクの前記機能性についての入力として依存される、マッピングすることと、
マッピングされた入力を有するタスクの出力が、他のタスクの前記機能性についての前記他のタスクの入力として与えられるために依存されるかどうかを反復的に決定することと、前記依存がある場合、前記それぞれのタスクの前記出力を、前記それぞれのタスクが依存する前記他のタスクの前記入力にマッピングすることと、前記依存がない場合、マッピングされていない出力をもつ前記少なくとも１つのタスクについて、前記少なくとも１つのタスクの前記出力を前記完遂した出力と前記マッピングすることを実施することと
を含む、請求項９に記載のシステム。
【請求項１２】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの出力が、前記他のタスクのうちの少なくとも１つへの入力として依存されないかどうかを決定することと、前記タスクの前記出力を前記完遂した出力にマッピングすることとを含む、請求項９に記載のシステム。
【請求項１３】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの入力が、他のタスクの出力に依存しないかどうかを決定することと、前記タスクの前記入力を前記発生した入力にマッピングすることとを含む、請求項９に記載のシステム。
【請求項１４】
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力にマッピングすることであって、前記タスクが出力表明子を含む、マッピングすることを含む、請求項９に記載のシステム。
【請求項１５】
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力と前記マッピングすることは、前記タスクのうちの少なくとも１つの前記入力を前記発生した入力にマッピングすることであって、前記タスクが入力表明子を含む、マッピングすることを含む、請求項９に記載のシステム。
【請求項１６】
前記タスク・モジュールがさらに、修正を受信し、前記修正が、前記タスクのうちの少なくとも１つについての修正された機能性、前記タスクのうちの少なくとも１つについての修正された入力、前記タスクのうちの少なくとも１つについての修正された出力、前記タスクのうちの少なくとも１つの除去、機能性と入力と出力とを含む新しいタスクの追加のうちの少なくとも１つを含み、
前記ワークフロー・モジュールが、前記タスクについての関連付けを再定義することによる前記修正を含む前記ワークフローを再構成し、前記ワークフローを再構成することが、
前記タスクのうちの少なくとも１つの前記出力を前記完遂した出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記他のタスクのうちの少なくとも１つの前記出力とマッピングすることと、
前記タスクのうちの少なくとも１つの前記入力を前記発生した入力とマッピングすることと
を含み、
前記実行モジュールがさらに、前記タスクの実行の順序のために、前記再構成されたワークフローを使用して、前記パイプラインを実行する、
請求項９に記載のシステム。
【国際調査報告】
2021508903.tif 000013
2021508903.tif 000014