(57)【要約】コンピューティング・タスクの協調処理のためのプラットフォームのための方法、システム、及び媒体。この方法は、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアント・アプリケーション(334)をクライアント装置(106〜114)に送信することを含む。プログラムコードが実行されると、クライアント装置は、対話型アプリケーションのためのユーザ・インターフェースを生成し、生成されたユーザ・インターフェースを使用して、クライアント装置のユーザからの入力を要求し、要求された入力を受信し、クライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理し、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信する。この方法は、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを受信して処理し、コンピューティング・タスクを処理することをさらに含む。
2020522364.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・タスクを処理する方法であって、
対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアントアプリケーション(334)を複数のクライアント装置(106〜114)に送信し、
前記プログラムコードは、複数のクライアント装置のうちの１つ又は複数のプロセッサ(310)によって実行されると、１つ又は複数のクライアント装置に、対話型アプリケーションのためのユーザ・インターフェースを生成させ、対話型アプリケーションのために生成されたユーザ・インターフェースを使用して、１つ又は複数のクライアント装置のユーザからの入力を要求させ、要求された入力を受信させ、１つ又は複数のクライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理させ、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる、
受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連する前記データを受信して処理して、コンピューティング・タスクを処理する、
方法。
【請求項２】
前記対話型アプリケーションはビデオゲームであり、前記機械学習アプリケーションの処理に使用される要求され且つ受信された入力は、ビデオゲームのゲームプレイ中に要求され且つ受信される、請求項１に記載の方法。
【請求項３】
前記複数のクライアント装置はボランティア・コンピューティング・グリッドを形成し、機械学習アプリケーションの少なくとも一部の処理は、前記ボランティア・コンピューティング・グリッド内のクライアント装置のうちの少なくとも１つによって受信された受信入力に少なくとも部分的に基づいて実行される、請求項１に記載の方法。
【請求項４】
前記１つのクライアント装置が前記１つ又は複数のクライアント・アプリケーションを実行しているときに、前記複数のクライアント装置のうちの１つに少なくとも助成されたメディアコンテンツを提供することを可能にすることをさらに含む、請求項１に記載の方法。
【請求項５】
前記複数のクライアント装置を介して完了のためのタスクをブロックチェーンに追加することを、さらに含み、
前記タスクは、前記１つ又は複数のクライアント装置のユーザからの入力を完了するために必要とし、
前記結果に関連する前記データを受信し且つ処理することは、１つ又は複数のクライアント装置からタスクの完了としてブロックチェーンにポストされるレコードを受信し、タスクに関連する基準に基づいて受信したレコードを検証し、検証されたレコードをブロックチェーンに追加することをさらに含む、
請求項１記載の方法。
【請求項６】
コンピューティング・タスクを処理するためのシステム(100)であって、
通信インターフェース(220)と、前記通信インターフェースに動作可能に接続されたプロセッサ(210)とを含み、
前記通信インターフェース(220)が、
対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアントアプリケーション(334)を複数のクライアント装置(106〜114)に送信し、
前記プログラムコードは、複数のクライアント装置のうちの１つ又は複数のプロセッサ(310)によって実行されると、１つ又は複数のクライアント装置に、対話型アプリケーションのためのユーザ・インターフェースを生成させ、対話型アプリケーションのために生成されたユーザ・インターフェースを使用して、１つ又は複数のクライアント装置のユーザからの入力を要求させ、要求された入力を受信させ、１つ又は複数のクライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理させ、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させて、
受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連する前記データを受信するように構成され、
前記プロセッサ(210)が、
受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連する前記データを処理して、コンピューティング・タスクを処理するように構成される、
システム
【請求項７】
前記対話型アプリケーションはビデオゲームであり、機械学習アプリケーションの処理に使用される要求され且つ受信された入力は、ビデオゲームのゲームプレイ中に要求され且つ受信される、請求項６に記載のシステム。
【請求項８】
前記複数のクライアント装置はボランティア・コンピューティング・グリッドを形成し、機械学習アプリケーションの少なくとも一部の処理は、前記ボランティア・コンピューティング・グリッド内のクライアント装置のうちの少なくとも１つによって受信された受信入力に少なくとも部分的に基づいて実行される、請求項６に記載のシステム。
【請求項９】
前記プロセッサは、前記１つのクライアント装置が前記１つ又は複数のクライアント・アプリケーションを実行しているときに、前記複数のクライアント装置のうちの１つに少なくとも補助されたメディアコンテンツが提供されることを可能にするようにさらに構成される、請求項６に記載のシステム。
【請求項１０】
前記プロセッサは、複数のクライアント装置を介して完了のためのタスクをブロックチェーンに追加するようにさらに構成され、タスクは完了するために１つ又は複数のクライアント装置のユーザからの入力を必要とし、
前記通信インターフェースは、結果に関連するデータにおいて、タスクの完了としてブロックチェーンにポストされるレコードを１つ又は複数のクライアント装置から受信するように構成され、
前記プロセッサは、タスクに関連する基準に基づいて受信されたレコードを検証し、検証されたレコードをブロックチェーンに追加するようにさらに構成される、
請求項６に記載のシステム。
【請求項１１】
対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコード(334)を含む非一時的なコンピュータ可読媒体であって、
前記プログラムコードは、電子デバイス(300)のプロセッサによって実行されると、電子デバイスに、対話型アプリケーションのためのユーザ・インターフェースを生成させ、対話型アプリケーションのために生成されたユーザ・インターフェースを使用して電子デバイスのユーザからの入力を要求させ、要求された入力を受信させ、電子デバイスのコンピューティング・リソースを使用して機械学習アプリケーションの少なくとも一部を処理させ、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる、
コンピュータ可読媒体。
【請求項１２】
前記対話型アプリケーションはビデオゲームであり、前記機械学習アプリケーションの処理に使用される要求され且つ受信された入力は、ビデオゲームのゲームプレイ中に要求され且つ受信される、請求項１１に記載のコンピュータ可読媒体。
【請求項１３】
前記電子デバイスは、ボランティア・コンピューティング・グリッドを形成する複数のクライアント装置のうちの１つであり、前記機械学習アプリケーションの少なくとも一部の処理は、前記ボランティア・コンピューティング・グリッド内のクライアント装置のうちの少なくとも１つによって受信された受信入力に少なくとも部分的に基づいて実行される、請求項１１に記載のコンピュータ可読媒体。
【請求項１４】
前記コンピュータ可読媒体は、前記電子デバイスの前記プロセッサによって実行されると、前記電子デバイスが前記対話型アプリケーション又は前記機械学習アプリケーションのうちの少なくとも１つに関連する前記プログラムコードを処理しているときに、前記電子デバイスに、少なくとも助成されたメディアコンテンツを受信させるプログラムコードをさらに備える、請求項１１に記載のコンピュータ可読媒体。
【請求項１５】
前記電子デバイスの前記プロセッサによって実行されると、前記電子デバイスに、ブロックチェーンから完了のためのタスクであって完了のために電子デバイスのユーザからの入力を必要とするタスクを受信させ、電子デバイスのユーザからの入力を要求させ、受信することを含むタスクを実行させ、結果に関連するデータにおいてタスクの完了としてブロックチェーンにポストされるレコードを送信させる、プログラムコードをさらに含む、請求項１１に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願及び優先権の主張への相互参照
本出願は、２０１７年６月５日に出願された米国仮特許出願第６２／５１５，３９８号の優先権を主張する。上記特許文献の内容は、参照により本明細書に組み込まれる。
【０００２】
本開示は一般に、ボランティア・グリッド・コンピューティング・システムに関する。より具体的には、本開示はコンピューティング・タスクの協調処理のためのプラットフォームに関する。
【背景技術】
【０００３】
大規模なデータセットのクラウドベースの計算処理及びデータ処理に対する需要が高まるにつれて、コンピュータ・リソースに対する需要も高まる。グリッド・コンピューティング又は分散コンピューティングは、大きなデータセットを処理するために使用することができる膨大なコンピューティング・パワーを生成するためのソリューションである。グリッド・コンピューティング又は分散コンピューティングは、複数のロケーション（すなわち、異なる遠隔に位置するコンピューティング装置）からのコンピュータ・リソースの集合を利用して、関連するタスクを実行するコンピューティングの一種である。ボランティア・コンピューティングは、コンピュータの所有者又はユーザが自分のコンピューティング・リソースを１つ又は複数のプロジェクトに寄付するグリッド・コンピューティングの一種である。多くのボランティア・コンピューティング・システムは、ボランティアのコンピュータ上のクライアント・プログラムがタスクを要求し処理し、そうでなければコンピュータはアイドル状態になる、プル・ベースのシステムを使用する。
【０００４】
ボランティア・コンピューティングは、マイクロサービスを使用したり、プロジェクトをワークユニットと呼ばれる小さなチャンクに分割する並列問題を解決して、ボランティア・クライアントを実行しているマシンに配布するための効果的なツールである。データ処理には複数のクライアントが使用されるため、通常、プロセスから最大限の価値を引き出すには、データとアルゴリズムを簡単に並列化できる必要がある。ボランティア・コンピューティング・システムのリソースは、オンサイトの専用リソースを購入して保守したり、クラウドベースのデータ処理サービスを調達したりする場合に比べて、データ処理のコストを大幅に削減できる。
【発明の概要】
【０００５】
本開示の実施形態は、コンピューティング・タスクの協調処理のためのプラットフォームを提供する。
【０００６】
一実施形態では、コンピューティング・タスクを処理するための方法が提供される。この方法は、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアント・アプリケーションを複数のクライアント装置に送信することを含む。プログラムコードは、複数のクライアント装置のうちの１つ又は複数のプロセッサによって実行されると、１つ又は複数のクライアント装置に、対話型アプリケーション用のユーザ・インターフェースを生成させ、生成された対話型アプリケーション用のユーザ・インターフェースを使用して、１つ又は複数のクライアント装置のユーザからの入力を要求させ、要求された入力を受信させ、１つ又は複数のクライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理させ、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる。この方法は、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連する前記データを受信して処理して、コンピューティング・タスクを処理することをさらに含む。
【０００７】
別の実施形態では、コンピューティング・タスクを処理するためのシステムが提供される。システムは、通信インターフェースと、通信インターフェースに動作可能に接続されたプロセッサとを含む。通信インターフェースは、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアント・アプリケーションを複数のクライアント装置に送信するように構成される。プログラムコードは、複数のクライアント装置のうちの１つ又は複数のプロセッサによって実行されると、１つ又は複数のクライアント装置に、対話型アプリケーションのためのユーザ・インターフェースを生成させ、生成された対話型アプリケーションのためのユーザ・インターフェースを使用して、１つ又は複数のクライアント装置のユーザからの入力を要求させ、要求された入力を受信させ、１つ又は複数のクライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理させ、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる。通信インターフェースは、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連する前記データを受信するようにさらに構成される。プロセッサは、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連する前記データを処理して、コンピューティング・タスクを処理するように構成される。
【０００８】
別の実施形態では、非一時的なコンピュータ可読媒体が提供される。非一時的なコンピュータ可読媒体は、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む。プログラムコードは電子デバイスのプロセッサによって実行されると、電子デバイスに、対話型アプリケーションのためのユーザ・インターフェースを生成させ、生成された対話型アプリケーションのためのユーザ・インターフェースを使用して、電子デバイスのユーザからの入力を要求させ、要求された入力を受信させ、電子デバイスのコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理させ、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる。
【０００９】
他の技術的特徴は、以下の図面、説明、及び特許請求の範囲から当業者には容易に明らかであろう。
【図面の簡単な説明】
【００１０】
本開示及びその利点をより完全に理解するために、以下の説明を添付の図面と併せて参照する。添付の図面では、同様の参照番号は同様の部分を表す：
【００１１】
図１は、本開示の様々な実施形態が実装され得る例示的なネットワーク化されたシステムを示す；
【００１２】
図２は、本開示の様々な実施形態が実装され得るサーバの一例を示す；
【００１３】
図３は、本開示の様々な実施形態が実装され得るクライアント装置の一例を示す；
【００１４】
図４は、本開示の様々な実施形態による、コンピューティング・タスクの協調処理のためのプラットフォームを提供するためのプロセスのフローチャートを示す。  
【００１５】
図５は、本開示の様々な実施形態による、ボランティア・コンピューティング・グリッドに参加するためのプロセスのフローチャートを示す。
【発明を実施するための形態】
【００１６】
詳細な説明
以下で論じる図１〜図５、及び本特許文献における本開示の原理を説明するために使用される様々な実施形態は、例示のためだけのものであり、本開示の範囲を限定するものと決して解釈されるべきではない。当業者は、本開示の原理が任意の適切に構成されたシステム又はデバイスにおいて実装され得ることを理解するのであろう。
【００１７】
本開示の実施形態は、それらの証明された価値にもかかわらず、ボランティア・コンピューティング・グリッドが信頼性の低さを含み、アクティブ状態なままのユーザ基盤に依存しているために、技術的問題を有していることを認識する。本開示の実施形態は、ユーザが自分の処理能力を共有するようにいかにインセンティブを与えるかが、ボランティア・コンピューティング・グリッドの主要な課題であることを認識する。本開示の実施形態は、ビデオゲームのような対話型アプリケーションを提供して、大規模な科学的問題又はコンピューティング問題に対する、コンピューティング・デバイス及び問題解決スキルの両方について、大勢の視聴者と関わる。
【００１８】
本開示の実施形態は、ボランティア・コンピューティング・グリッド内のデバイスによるコンピューティング・リソースの寄付が、ボランティア・コンピューティング・グリッドが利用可能なコンピューティング・タスク処理の完全なポテンシャルを利用していないという技術的問題をさらに認識する。本開示の実施形態は、機械学習アプリケーション用のデータを生成するための対話型アプリケーションを提供し、利用する。これらの対話型アプリケーションは、ユーザに対しては直接的に、又はコミュニティの個人又は組織あるいはコミュニティ全体に対しては間接的に、フィードバック、報酬、アクセス、メディアコンテンツ、又はエンターテイメントを介した入力又は対話へのインセンティブをユーザ又はコミュニティに与える。例えば、これらの対話型アプリケーションには、ビデオゲーム、メディアアプリケーション、又はユーザ入力や対話を奨励または利用するその他のアプリケーションが含まれる。本明細書で使用されるように、機械学習は、入力を使用してモデルを構築して、タスクの処理を反復的かつ漸進的に改善するための統計的技法の使用である。本明細書で使用されるように、例示的な機械学習アプリケーションには、データ科学、分析、人工知能（ＡＩ）、及びデータマイニング・アプリケーションが含まれるが、これらには限定されない。例えば、ビデオゲームは、ディープ・ニューラル・ネットワークなどの機械学習アルゴリズムのトレーニングデータを生成するために適用され、教師付き学習などの決定を評価するために適用され、ソリューションに突然変異を与えるために適用され、及び/又は人間の直感によって提供または支援されるその他の付加的なヒューリスティック・プロセスのために適用される。本開示の実施形態は、また、ユーザがビデオゲームをプレイしている間、又はアイドル時間中に、コンピューティング・リソース（例えば、処理能力、記憶能力、及びネットワーク接続）を利用することにより、ビデオゲームを利用してボランティア・コンピューティングを行う機会を提供する。例えば、コンピューティング・リソースは、バックグラウンドで実行されているアプリケーションで利用されてユーザに更新を提供したり、コミュニティ等への接続を維持したりする。そして、アイドル状態のコンピューティング・リソースを利用している間はすべて、利用され得る。ボランティア・コンピューティングは、分散コンピューティング環境に参加している多数のゲームデバイスを介して、利用可能な大量のコンピューティング・パワーにより、大規模な処理とアルゴリズム速度の向上を提供する。
【００１９】
したがって、本開示の実施形態は、コンピューティング・タスクの協調処理のためのプラットフォームを介して技術的ソリューションを提供する。様々な実施形態は、機械学習アプリケーションのための魅力的なエンターテイメントに統合されたボランティア・グリッド・コンピューティングを利用することによって、人間の知覚及び構造化されていない問題解決スキルを生のコンピューティング・パワーと組み合わせるクラウド・コンピューティング・プラットフォームを提供する。ウェブブラウザ、ゲーム、又はアプリケーションを実行する任意のＷｉ-Ｆｉ対応デバイスは、分散コンピューティング環境の一部になる。本開示の実施形態は、また、プログラマ、研究者、及び開発者が接続されたデバイスを利用してデータを分類、検証、検索、および処理するのを支援するための汎用インターフェースを提供する。
【００２０】
本開示の実施形態は、また、ビデオゲームなどの対話型エンターテイメントを利用して、人々を関与させてオンラインに保ち、コンピューティング・リソースを利用する時間を増やして、アイドル状態及びアクティブ状態のコンピューティング時間の両方を活用する。対話型エンターテイメントは、コンテンツに積極的に関与する人を含む。その結果、本開示の実施形態は、クラウドソーシング技術を利用して機械学習を改善する機会を提供する。本開示の実施形態は、従来型のクラウド・コンピューティングに関連するインフラストラクチャや費用なしで、マシンと人間とが対話してソリューションをより速く見つける新しいタイプのクラウド・ネットワークを可能にする。本開示の実施形態は、また、ゲームコミュニティなどの大規模なオンラインコミュニティに対し、より良い世界を創造するのに役立つ重要な問題を処理するのを支援するために、すでにエンターテイメントに費やしている時間を使用するようにモチベーションを与え、権限を与えることを提供する。
【００２１】
図１は、本開示の様々な実施形態が実装され得る、例示的なネットワーク化されたシステム１００を示す。図１に示されるネットワーク化されたシステム１００の実施形態は、単に例示のためのものである。本開示の範囲から逸脱することなく、ネットワーク化されたシステム１００の他の実施形態を使用することができる。
【００２２】
図１に示すように、システム１００は、システム１００内の種々の構成要素間の通信を容易にするネットワーク１０１を含む。例えば、ネットワーク１０１は、ネットワークアドレス間でインターネットプロトコル（ＩＰ）パケット又は他の情報を通信する。ネットワーク１０１は、１つ又は複数のローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、仮想プライベート・ネットワーク（ＶＰＮ）、インターネットなどのグローバル・ネットワークの全部又は一部、又は１つ又は複数の位置にある、１つ又は複数の任意の他の通信システムを含むことができる。
【００２３】
ネットワーク１０１は、種々のサーバ１０２〜１０４と、種々のクライアント装置１０６〜１１４との間の通信を容易にする。サーバ１０２〜１０４の各々は、１つ又は複数のクライアント装置１０６〜１１４のためにソフトウェアを含むコンピューティング・サービスを提供することができる、任意の適切な電子コンピューティング装置又は処理装置とすることができる。サーバ１０２〜１０４の各々は例えば、１つ又は複数の処理装置、命令及びデータを記憶する１つ又は複数のメモリ、及びネットワーク１０１を介した通信を容易にする１つ又は複数のネットワーク・インターフェースを含むことができる。例えば、以下でより詳細に説明するように、サーバ１０２は、クライアント装置１０６〜１１４を使用してボランティア・グリッド・コンピューティングを調整することによって、グリッド・コンピューティングを使用する協調コンピューティング、研究、又は開発のためのプラットフォームを提供又は管理することができる。サーバ１０３は、以下でより詳細に説明するように、クラウドソーシング技術を利用して機械学習アルゴリズムを改善するソフトウェア又はゲーム開発に分類されたサーバとすることができる。サーバ１０４は、研究者、開発者、又はプラットフォームを使用して処理される必要があるプロジェクト又はタスクを有する他のグリッド・コンピューティングの消費者に関連付けられたサーバとすることができる。
【００２４】
各クライアント装置１０６〜１１４は、ネットワーク１０１を介して少なくとも１つのサーバ又は他のコンピューティング装置と対話する、任意の適切な電子コンピューティング装置又は処理装置を表す。この例では、クライアント装置１０６〜１１４は、デスクトップ・コンピュータ１０６、携帯電話又はスマートフォン１０８、タブレット・コンピュータ１１０、ラップトップ・コンピュータ１１２、ビデオゲーム・コンソール１１４、セットトップ・ボックス及び／又はテレビ等を含む。しかしながら、ネットワーク化されたシステム１００では、任意の他の又は追加のクライアント装置を使用することができる。例えば、システム１００のクライアント装置１０６〜１１４の１つとして、任意のインターネット又はネットワークに接続可能な装置、又はＩｏＴ(Internet of Things)装置（例えば、Smart TV、冷蔵庫、Raspberry PIなど）を使用することができる。以下で説明するように、様々な実施形態では、クライアント装置１０６〜１１４は、サーバ１０２の調整の下で参加して、コンピューティング・タスクの協調処理のためのプラットフォームを提供するためのボランティア・コンピューティング・グリッドを（おそらく、他のコンピューティング装置と共に）形成する。例えば、本明細書で説明するように、クライアント装置１０６〜１１４は、コンピューティング・グリッドの個々のセルであると考えることができる。さらに、個々のセルは、集中型サーバの有無にかかわらず、例えば、ピアツーピア、アドホック、及び／又はメッシュベースのネットワークを使用して、互いに又はサーバと直接的又は間接的に通信することができる。
【００２５】
様々な実施形態では、クライアント装置１０６〜１１４に関連するサーバ（例えば、サーバ１０２）は、コンピュータ・タスクを処理するためのコンピューティング・グリッドを形成する。様々な実施形態では、サーバ１０２は、コンピューティング・グリッドのタスク及びセルの、調整、提供、及び追跡のためのカスタムコードを管理する。他の実施形態では、サーバ１０２が、コンピューティング・グリッド内のセルを接続する仮想プライベート・ネットワーク（ＶＰＵ）を管理する。これらの実施形態では、市販のソフトウェアをコンピューティング・グリッドによって実行して、コンピューティング・タスクを実行することができる。
【００２６】
図１はネットワーク化されたシステム１００の一例を示しているが、図１には様々な変更を加えることができる。例えば、システム１００は任意の適切な構成で任意の数の各構成要素を含むことができ、サーバ１０２〜１０４及びクライアント装置１０６〜１１４のそれぞれは、システム１００の一部である任意の数のサーバ及び／又はクライアント装置を表すことができる。一般に、コンピューティング及び通信システムは多種多様な構成になり、図１は、本開示の範囲を任意の特定の構成に限定しない。図１はこの特許文献に開示されている様々な特徴を使用することができる１つの動作環境を示しているが、これらの特徴は任意の他の適切なシステムで使用することができる。
【００２７】
図２及び図３は、本開示の様々な実施形態による、ネットワーク化されたシステムにおける例示的なコンピューティング装置を示す。特に、図２がサーバ２００の一例を示し、図３はクライアント装置３００の一例を示す。この具体的な例では、サーバ２００が図１のサーバ１０２〜１０４のうちの任意の１つを表し、クライアント装置３００は図１のクライアント装置１０６〜１１４のうちの１つ又は複数を表すことができる。
【００２８】
図２に示すように、サーバ２００は、バスシステム２０５を含む。バスシステム２０５は、プロセッサ（複数可）２１０、記憶装置２１５、通信インターフェース（又は回路）２２０、及び入出力（Ｉ／Ｏ）ユニット２２５の間の通信をサポートする。プロセッサ２１０は、メモリ２３０にロードされ得る命令を実行する。プロセッサ２１０は、任意の適切な数及びタイプのプロセッサ又は他のデバイスを任意の適切な構成で含むことができる。プロセッサ２１０のタイプの例には、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、フィールド・プログラマブル・ゲート・アレイ、特定用途向け集積回路、及びディスクリート回路が含まれる。
【００２９】
メモリ２３０及び永続的なストレージ２３５は、記憶装置２１５の例である。記憶装置２１５は、情報（データ、プログラムコード、及び／又は他の適切な情報など）を一時的又は永続的に記憶し、検索を容易にすることができる任意の構造（複数可）を表す。メモリ２３０は、ランダム・アクセス・メモリ、又は任意の他の適切な揮発性又は不揮発性の記憶装置を表すことができる。永続的なストレージ２３５は、読み出し専用メモリ、ハードドライブ、フラッシュメモリ、又は光ディスクなど、データの長期記憶をサポートする１つ又は複数の構成要素又はデバイスを含むことができる。例えば、永続的なストレージ２３５は、データの１つ又は複数のデータベース、ボランティア・コンピューティング・グリッド内のセル用のクライアント・アプリケーション、ボランティア・コンピューティング・グリッド内のセルへのディスパッチを待つタスク、及び／又はボランティア・コンピューティング・グリッドからの処理結果などを記憶することができる。
【００３０】
通信インターフェース２２０は、他のシステム又はデバイスとの通信をサポートする。例えば、通信インターフェース２２０は、ネットワーク１０１を介した通信を容易にするネットワーク・インターフェース・カード又は無線トランシーバを含むことができる。通信インターフェース２２０は、任意の適切な物理的又は無線の通信リンクを介した通信をサポートすることができる。Ｉ／Ｏユニット２２５は、データの入出力を可能にする。例えば、Ｉ／Ｏユニット２２５は、キーボード、マウス、キーパッド、タッチスクリーン、又は他の適切な入力デバイスを介したユーザ入力のための接続を提供し得る。Ｉ／Ｏユニット２２５は、ディスプレイ、プリンタ、又は他の適切な出力デバイスに出力を送信することもできる。
【００３１】
図２はサーバ２００の一例を示しているが、図２には様々な変更を加えることができる。例えば、図２の様々な構成要素は、組み合わせるか、さらに細分するか、又は省略することができ、特定のニーズに応じて付加的な構成要素を追加することができる。特定の例として、１つのシステムとして図示されているが、サーバ２００は、遠隔に配置することができる複数のサーバシステムを含むことができる。別の例では、異なるサーバシステムが、本開示の様々な実施形態によるコンピューティング・タスクの協調処理用のプラットフォームを提供するために、処理リソース、ストレージ・リソース、及び／又は通信リソースの一部又は全部を提供することができる。別の例では、サーバ２００は、ボランティア・コンピューティング・グリッドの一部であってもよい。例えば、ボランティア・コンピューティング・グリッド内の１つ又は複数のコンピューティング装置は、本明細書で説明するように、サーバ２００の処理を個別に又は共同で実行するためのソフトウェアを含むことができる。
【００３２】
図３は、本開示の実施形態によるクライアント装置３００の一例を示す。図３に示すクライアント装置３００の実施形態は、例示のためだけのものであり、図１のクライアント装置１０６〜１１４は、同じ構成又は同様の構成を有することができる。しかしながら、クライアント装置は多種多様な構成で提供され、図３は、本開示の範囲を電子デバイスの任意の特定の実装に限定しない。図３に示すように、クライアント装置３００は、通信インターフェース（又は回路）３０５、プロセッサ（複数可）３１０、入出力（Ｉ／Ｏ）インターフェース３１５、入力３２５、ディスプレイ３２０、及びメモリ３３０を含む。メモリ３３０は、オペレーティング・システム（ＯＳ）３３２、及び１つ又は複数のクライアント・アプリケーション（複数可）３３４を含む。
【００３３】
通信インターフェース（又は回路）３０５は、他のシステム又はデバイスとの通信をサポートする。例えば、通信インターフェース３０５は、ネットワーク１０１を介した通信を容易にするネットワーク・インターフェース・カード又は無線トランシーバを含むことができる。通信インターフェース３０５は、任意の適切な物理的又は無線の通信リンク（複数可）を介した通信をサポートすることができる。無線通信を利用する実施形態では、通信インターフェース３０５は、様々な無線通信プロトコル（例えば、Bluetooth（登録商標）、Wi-Fi、セルラ、ＬＴＥ通信プロトコルなど）を使用して、１つ又は複数のアンテナを介して着信ＲＦ信号を受信することができる。
【００３４】
プロセッサ（複数可）３１０は、１つ又は複数のプロセッサ又は他の処理装置を含むことができ、クライアント装置３００の動作全体を制御するために、メモリ３３０に格納されたＯＳ３３２を実行することができる。プロセッサ（複数可）３１０はまた、例えば、処理タスク又はコンピューティング・タスク、通信タスク又はネットワークタスク、及びボランティア・コンピューティング・グリッドの一部としてのストレージタスクなどのコンピューティング・タスクを実行するための、１つ又は複数のクライアント・アプリケーション用のプログラムコードなど、メモリ３３０に常駐するクライアント・アプリケーション３３４を実行することができる。クライアント・アプリケーション（複数可）３３４は、以下でより詳細に説明するように、機械学習アプリケーション、又はビデオゲームなどの対話型アプリケーション、又はユーザ入力を促すアプリケーションのための、プログラムコードを含むことができる。プロセッサ（複数可）３１０、通信インターフェース３０５、及び／又はメモリ３３０は、クライアント装置３００のコンピューティング・リソースを構成する。プロセッサ３１０は、任意の適切な数及びタイプのプロセッサ又は他のデバイスを、任意の適切な構成で含むことができる。プロセッサ（複数可）３１０のタイプの例には、マイクロプロセッサ、マイクロコントローラ、グラフィック処理ユニット（ＧＰＵ）、デジタル信号プロセッサ、フィールド・プログラマブル・ゲート・アレイ、特定用途向け集積回路、及びディスクリート回路が含まれる。
【００３５】
プロセッサ（複数可）３１０は、実行中のプロセスの必要に応じて、メモリ３３０にデータを移動させたり、メモリ３３０からデータを移動させたりすることができる。プロセッサ（複数可）３１０はまた、Ｉ／Ｏインターフェース３１５に結合される。Ｉ／Ｏインターフェース３１５は、ラップトップ・コンピュータ及びハンドヘルド・コンピュータなどの他のデバイスに接続する能力をクライアント装置３００に提供する。Ｉ／Ｏインターフェース３１５は、アクセサリとプロセッサ（複数可）３１０との間の通信経路を提供する。
【００３６】
プロセッサ３１０は、入力３２５及びディスプレイ３２０にも結合される。クライアント装置３００のオペレータは、入力３２５を使用して、データ及びインプットをクライアント装置３００に入力することができる。例えば、入力３２５は、タッチスクリーン、ボタン、キーボード、トラックボール、マウス、スタイラス、電子ペン、ビデオゲーム・コントローラ等であってもよい。ディスプレイ３２０は、液晶ディスプレイ、ＬＥＤディスプレイ、又はウェブサイトなどからテキスト及び／又は少なくとも限定されたグラフィックスをレンダリングすることができる他のディスプレイであってもよい。メモリ３３０は、プロセッサ（複数可）３１０に結合される。メモリ３３０の一部は、ランダムアクセスメモリ（ＲＡＭ）を含むことができ、メモリ３３０の別の部分は、フラッシュメモリ又は他の読み出し専用メモリ（ＲＯＭ）を含むことができる。
【００３７】
図３はクライアント装置３００の一例を示しているが、図３には様々な変更を加えることができる。例えば、図３の様々な構成要素を組み合わせるか、さらに細分するか、又は省略することができ、特定のニーズに応じて付加的な構成要素を追加することができる。特定の例として、プロセッサ（複数可）３１０は、１つ又は複数の中央処理装置（ＣＰＵ）及び１つ又は複数のグラフィックス処理装置（ＧＰＵ）などの、複数のプロセッサに分割することができる。別の例では、ディスプレイ３２０は、例えば、ビデオゲーム・コンソール又はデスクトップ・コンピュータ等で、クライアント装置３００の一部に外部接続されてもよいし、又は接続されなくてもよい。
【００３８】
本開示の実施形態は、コンピューティング・リソースの消費者、プログラマ、研究者、及び開発者を、ボランティア・グリッド・コンピューティング・ネットワークのメンバーに結びつけ、コンピューティング・タスクを実行するためのコラボレーションを可能にするプラットフォームを提供する。本開示の実施形態は、その参加及び頻度が、信頼性のある効果的なボランティア・グリッド・コンピューティング・ネットワークにとっての課題であることを認識する。したがって、本開示の実施形態は、ボランティア・グリッド・コンピューティング・ネットワークのメンバーにインセンティブ及び関与を提供して、ネットワークサイズ、可用性、及び信頼性を改善する。本開示の実施形態は、さらに、クラウドソースの研究又は市民科学の使用と、機械学習アプリケーションをすべて単一のプラットフォーム内で処理するための計算リソースの統合とを介したコラボレーションのためのインターフェースを提供する。
【００３９】
様々な実施形態では、サーバ２００に関連するクライアント装置３００は、ゲームベースのボランティア・グリッド・コンピューティング・システムを形成する。一例では、コンピューティング・システムは、開発者がボランティア・コンピューティングを既存のゲームクライアントに容易に統合できるようにするプラグインなどのクライアント・アプリケーション又はその一部を使用して有効になる。ゲーム起動時に、クライアント・アプリケーション（例えば、ビデオゲーム・クライアントに関連するダイナミック・リンク・ライブラリ（ＤＬＬ））のマネージャは、ワークユニット（ＷＵ）の収集、ＷＵの処理、記憶、及びＷＵ処理結果のサーバ２００への返送を含む分散コンピューティング・タスクを管理するクライアント装置３００上の別個のスレッド（複数可）を起動する。クライアント装置３００上のスレッドは、サーバ２００にプル要求（複数可）を発行する。サーバ２００は、サーバ２００を介して処理されている問題（複数可）に関連するデータのチャンク（例えば、ＷＵ）を、クライアント装置３００に提供する。サーバ２００は、また、データを分析するために使用されるアルゴリズムを提供することができる。データとアルゴリズムがクライアント装置３００にダウンロードされた後で、スレッドはゲームと並行して実行され、データを分析することができる。
【００４０】
この別個のスレッドのアプローチは、多くのゲーム、特にリソース集約的ではないゲームで機能する。しかしながら、幾つかのゲームは、クライアント装置３００においてかなりのコンピューティング・リソースを必要とし、これは、ゲーム性能及びユーザ経験に影響を与えるボランティア・コンピューティング・スレッドにつながり得る。この問題を低減するために、クライアント・アプリケーションのマネージャは、クライアント装置３００内で実行されるボランティア・コンピューティングのための優先度の低いスレッド（複数可）を動的に作成し、必要に応じてゲームがリソースを要求できるようにするが、ゲームがより低い処理リソースを必要とする時間（例えば、スタート画面中、メニュー中、ゲームが一時停止されているとき、ゲーム内のロビーでマッチメイキングを待っている間など）も活用することを可能にする。
【００４１】
他の例では、クライアント装置３００が、クライアント装置３００上で常に実行されているスタンドアローンの起動アプリケーションを有することができる。起動アプリケーションは、ゲームプログラムなどの別個のクライアント・アプリケーション（複数可）３３４を起動するために使用することができる。次いで、ゲームプログラムは、起動アプリケーションに接続する。次いで、起動アプリケーションは、システム１００に接続する。言い換えれば、クライアント・アプリケーション（複数可）３３４又はクライアント・アプリケーション（複数可）をシステム１００に接続するゲームのマネージャは、クライアント・アプリケーション（複数可）３３４に統合されなくてもよい。例えば、ゲームプログラムは、クライアント装置３００上の別のアプリケーションで実行されるマネージャに接続することができる。このように、１つの起動アプリケーションはクライアント装置３００上に存在するが、マネージャをすべてのアプリケーションに個別に埋め込むのではなく、システム１００内の多くの異なるアプリケーションに接続し、通信し、関与することができる。
【００４２】
さらに、いくつかの実施形態では、コンピューティング・システム・プラグインは、ゲームクライアントがボランティア・コンピューティング・プロセスとインターフェースで接続するためのフック又はタイを含む。このインターフェースは、ボランティア・コンピューティング問題へのユーザ寄与などのデータへのアクセスを可能にすると共に、コンピューティング・リソースの消費者、開発者、又は研究者に対し、動的な人間コンピューティング又は市民科学の機会を利用する能力を提供する。本明細書で説明するように、様々な実施形態は、ユーザの貢献、クレジットの形態又は結果に基づいて動的に生成されたコンテンツの形態におけるより大きなゲームプレイ値、又はプレーヤがプレイを続け、自分のコンピューティング・リソース及び／又は市民科学的な貢献を共有し続けるための他のモチベーションに関するユーザフィードバックを可能にし、及び／又はユーザフィードバックを要求することによって、ボランティア・コンピューティング・プロセスにさらなる改善を提供する。一例では、このデータ共有により、ユーザは自分のスコアを他人のスコアと比較し、研究の進捗状況とそれに対する自分の相対的な貢献度を視覚化することができる。
【００４３】
いくつかの実施形態では、ゲームクライアントに関連するＤＬＬを介してボランティア・コンピューティング・スレッドを実行する利点が提供されるが、これはスレッドベースのアプローチが、さもなければ利用できないビデオゲーム・コンソールの処理能力へのアクセスを可能にするからである。他の実施形態では、クライアント装置上で実行される専用のボランティア・コンピューティング・アプリケーションが、実行時にデバイスごとにより多くの計算能力を提供し、市場の膨大な数のゲーマーを利用し、多数の付加的な計算能力のリソースを提供することができる。
【００４４】
いくつかの実施形態では、専用のボランティア・コンピューティング・システム及びビデオゲームベースのボランティア・コンピューティング・システムは、共通のプラットフォームを共有することができ、それによって、いずれかの形態のボランティア・コンピューティングの貢献に対する報酬を、ビデオゲーム内を含む任意のタイプの利益のために利用することができる。以下でより詳細に説明するように、ボランティア・コンピューティングの管理は、サーバ１０２などの中央サーバを使用して実行される。これは、ウェブサイトやコンパニオン・アプリケーションなどのサポート要素をボランティア・コンピューティングに統合するための、開発者向けのインターフェースも提供する。次いで、開発者は、これらの補足サービスを使用してボランティア・コンピューティングの能力を高めたり、及び／又は、ユーザがボランティア・コンピューティング・データとインターフェースで接続することを可能にするオプションをユーザに提供できる。
【００４５】
図４は、本開示の種々の実施形態による、コンピューティング・タスクの協調処理のためのプラットフォームを提供するためのプロセスを示す。例えば、図４に示すプロセスは、図２のサーバ２００によって実施されるものとして説明される。このプロセスは、図１のサーバ１０２〜１０４のいずれによっても実施することができる。
【００４６】
プロセスは、サーバ２００が、コンピューティング・リソース（資源）の消費者のためのインターフェースを、コンピューティング・グリッドに提供することから始まる（ステップ４０５）。例えば、ステップ４０５において、サーバ２００は、例えば、データプロセッサ、データベース、ネットワーク、プログラマ、研究者、及び／又は開発者などのコンピューティング・リソースの消費者のためのコンピュータシステムに、ネットワークを介して接続して、コンピューティング・リソースを必要とするプロジェクト又はタスクを受信することができる。多くのコンピューティング、研究、又は開発プロジェクトは、より高速なソリューション、又はソリューションに対するさらなる検証及び改善を提供するために、増加した量のコンピューティング・リソースから著しく恩恵を得ることができる。このステップの一部として、サーバ２００又はおそらくゲーム開発者に関連付けられたサーバ（例えば、サーバ１０３）は、インターフェースを介して１つ又は複数のゲームを提供し、問題に対するソリューションを提供することができる。例えば、特定のタスクのゲーム化は、ユーザの関与を促進し、利用可能なコンピューティング・リソースの量を増加させる。いくつかの実施形態では、このビデオゲーム（又は１セットの複数のゲーム）は、実行されるタスク又は研究のタイプには無関係である。様々な実施形態において、ビデオゲームは、人間の脳の能力を活用して三次元パターンマッチング及び空間的推論を実行し、通常のブルートフォース機械学習アルゴリズムよりも迅速に問題を解決するのを助けるように開発される。
【００４７】
次に、サーバ２００は、１つ又は複数のクライアント・アプリケーションを提供する（ステップ４１０）。例えば、ステップ４１０において、サーバ２００は、クライアント装置がボランティア・コンピューティング・グリッドの参加者となるように、クライアント装置（例えば、クライアント装置１０６〜１１４など）にソフトウェアを提供することができる。クライアント・アプリケーションは、少なくとも、クライアント装置がプロジェクト又はコンピューティング・タスクを要求し、受信する機能、及びプロジェクトの結果を報告する機能を提供する。例えば、クライアント・アプリケーションは、コンピューティング・タスクを要求する機械学習アプリケーションに関連するプログラムコード、機械学習アルゴリズムの少なくとも一部を処理するためのプログラムコード、又は、ユーザからの入力を利用するタスク用の対話型アプリケーションに関連するプログラムコードを含むことができる。
【００４８】
１つ又は複数のクライアント装置に１つ又は複数のクライアント・アプリケーションを提供する際に、異なるクライアント装置に対して提供される１つ又は複数のクライアント・アプリケーション内のプログラムコードは、異なるものとすることができる。例えば、対話型アプリケーションを介してユーザ入力を要求するためのプログラムコードは、（例えば、より多くのユーザが対話する可能性が高い又は統計的に判断されるゲームデバイスやパーソナル電子デバイスなど、デバイスのタイプに基づいて）一部のクライアント装置に送信されてもよい。一方、機械学習アプリケーションを処理するためのプログラムコードは、他のデバイス（例えば、より多くの処理能力又は記憶能力を有すると判断されたデバイスや、従来のサーバを実行する電子デバイス等のより頻繁にオン状態又はアイドル状態である可能性が高い又は統計的に判断されるデバイスなど、コンピューティング・リソースの可用性が高いデバイス）に送信されてもよい。
【００４９】
ステップ４２０に関してより詳細に説明されるように、クライアント・アプリケーションは、また、クライアント装置による参加を追跡し、評価し、奨励するための基準を含むことができる。このステップの一部として、サーバ２００は、また、クライアント装置のユーザが、プレイして、又は、参加を促すために対話して、及び／又は、協力して本明細書で説明する問題を解決するために、ユーザ入力を必要とする１つ又は複数のゲーム又はプログラムなどの対話型アプリケーションをクライアント装置のユーザに提供することができる。
【００５０】
いくつかの実施形態では、このステップの一部として、アプリケーションプロバイダは、ゲーム内、ビデオ内、音楽内、又はウェブサイト広告などの広告内で動作することができる。例えば、従来の広告に加えて、又は従来の広告の代わりに、エンドユーザは、クライアント装置３００のコンピューティング・リソースを広告に寄付するか、又はクライアント装置３００のコンピューティング・リソースを広告に利用させることによって、エンドユーザが視聴しているコンテンツに対し、寄付又は「支払い」をすることができる。いくつかの実施形態では、これらの広告は、バックグラウンドを実行することができ、又は、ユーザからの対話性及び／又はユーザへの割り込みを、ほとんど又は全く伴わずに表示することができる。他の実施形態では、これらの広告はインタラクティブであり、人間の直感に基づくパターンマッチング又は他の市民科学フィードバックを要求することができる。例えば、広告は、コンピュータと人間を識別するための(CAPTCHA)、完全に自動化されたパブリック・チューリング・テスト(public Turing test)などの対話型のボット検出技法から得られたユーザ入力結果を利用して、例えば、トレーニングデータを生成するためのパターンマッチングを支援する。
【００５１】
その後、サーバ２００は、コンピューティング・タスクをディスパッチして、管理する（ステップ４１５）。コンピューティング・タスクは、コンピューティング装置の処理リソース、コンピューティング・リソース、ストレージ・リソース、又はネットワーク・リソースなどのコンピューティング・リソースを利用するタスクである。例えば、このステップの一部として、コンピューティング・タスクは、例えば、対話型アプリケーションの一部として提示されるコンピューティング・タスク、マッチングタスク、又はパターン識別タスクなど、ユーザからの入力を必要とする１つ又は複数のタスクを含むことができる。コンピューティング・タスクは、また、機械学習アルゴリズムの処理用など、機械学習アプリケーションに関連するタスクを含むことができる。例えば、コンピューティング・タスクは、ボランティア・コンピューティング・グリッド上で実行されるクライアント・アプリケーションを介して提供される同じプラットフォーム内ですべて実行されるユーザ支援トレーニングデータを使用した機械学習アプリケーションを繰り返し更新するなど、ユーザから受け取った入力に基づいて機械学習アルゴリズムの少なくとも一部を反復的に処理することを含むことができる。いくつかの実施形態では、機械学習アルゴリズムの処理で使用されるユーザ入力が、例えば、ビデオゲームのゲームプレイ中に、対話型アプリケーションを介して要求され、受信される。さらに、ユーザ入力は、入力に基づいて機械学習アルゴリズムを処理するクライアント装置とは異なるクライアント装置から受信されてもよい。
【００５２】
ステップ４１５の一部として、サーバ２００は、ボランティア・コンピューティング・グリッドのメンバーである１つ又は複数のクライアント装置から要求を受信することができる。要求は単に、クライアント装置のリソースが利用可能であることを示すものであってもよい。例えば、クライアント装置はアイドル状態になり、その結果、プロセッサリソースが自由になることがある。別の例では、クライアント装置がネットワーク接続されているため、ストレージ・リソースをグリッドに提供することの一部として、データの読み取り及び書き込みに利用可能であってもよい。いくつかの実施形態では、ステップ４１０において、タスクが、例えば、ゲームの一部としてクライアント・アプリケーションと共に既に提供されていてもよい。いくつかの実施形態では、サーバ２００は、並行して実行可能なタスクと、結果検証のために冗長なタスクとを提供することにより、タスクを管理する。
【００５３】
いくつかの実施形態では、サーバ２００は、ブロックチェーン技術を使用してコンピューティング・タスクをディスパッチし、管理することができる。ブロックチェーンは、暗号化を使用してリンクされ、保護されているレコード又はブロックのリストである。例えば、レコード又はブロックは、トランザクションデータ又はプログラムを含むことができる。これらの実施形態では、サーバ２００は、完了されるべき様々なコンピューティング・タスクのレコードを、ブロックチェーンに追加することができる。クライアント装置（例えば、クライアント装置１０６〜１１４）は、これらのコンピューティング・タスクを、ブロックチェーンから受信又はプルすることができる。これらのコンピューティング・タスクには、ユーザ入力又は人間の直感を必要とするタスクなどのユーザタスクが含まれる。サーバ２００（及び／又は、これらの実施形態では、ブロックチェーン技術において「マイナー」と呼ばれる他のコンピューティング装置）は、コンピューティング・タスクの結果を検証しようと試みることによって、コンピューティング・タスクを管理する。例えば、サーバ２００（又は、マイナーのグループ）は、ブロックチェーンに追加される新しいレコードの形態で結果を受信し、タスクに関連する基準に基づいてレコードを検証する。例えば、タスクに関連する基準は、実行される処理、タイミング、量、及び／又はタスク実行の結果の品質を含む。サーバ２００（又は、マイナーのグループ）は、タスクの完了のためのデータを示す又はそのデータを含むレコードに基づいて、そのレコードを検証してもよい。さらに、サーバ２００（又は、マイナーのグループ）は、タイミング又は結果の品質に基づいてレコードを検証してもよい。例えば、最初に実行するもの、特定の時間の前に終了したもの、又はタスクを実行する他の装置の結果と一定のレベルで一致する結果を、検証することができる。受信したレコードに対する一定のレベルの一致に基づいて、サーバ２００（又は、マイナーのグループ）は、次に、そのレコードをブロックチェーンに追加する。追加の一部として、レコードは、レコードが受信されたクライアント装置に、例えば、暗号通貨の形式など、何らかの形式の価値を伝達することができる。
【００５４】
様々な実施形態では、サーバ２００は、ローカルプロセス及びクライアント装置間のアクセスを調整するマネージャノード又はマスターノードである。これらの例では、クライアント装置は、様々なクライアント装置を単一のネットワークとしてサーバ２００に提示するダイナミック・ドメインネーム・サーバ（ＤＮＳ）システムを介してアクセス可能である。また、全体を通して説明したように、グリッド・コンピューティング・システムを介して提供されるコンピューティング・リソースは、処理リソースに限定されない。様々な実施形態において、サーバ２００は、グリッド・コンピューティング・システムのクライアント装置を介して、分散ファイル・システムを実装する。例えば、サーバ２００は、ファイルを所定のサイズ（たとえば、１６ＭＢ、３２ＭＢ、又は６４ＭＢ）のチャンクに分割し、冗長性のために複製することができるチャンクをデバイス全体に分配し、アクセスするアプリケーションに共有スペースを単一のフォルダとして提示する。
【００５５】
次に、サーバ２００は、参加インセンティブを提供する（ステップ４２０）。例えば、ステップ４２０において、サーバ２００は、参加を奨励するための任意のタイプのインセンティブを提供することができる。インセンティブには、その貢献が重要なプロジェクトに資金を提供しているという情報、デジタル通貨、及びメディアコンテンツ、例えば、文学、画像、音楽、ビデオ、ビデオゲーム用の仮想オブジェクト、ビデオゲーム等が含まれるが、これらに限定されない。一例では、サーバ２００は、参加の量及び／又は実行されたタスクの品質を追跡し、比例デジタル通貨、メディアコンテンツ、又はビデオゲーム用の仮想オブジェクトを提供することができる。例えば、参加は、継続時間、１秒当たりの浮動小数点演算（ＦＬＯＰＳ）（又は、より一般的にはギガ-ＦＬＯＰＳ（ＧＦＬＯＰＳ））、記憶時間量などのメトリックを介して追跡することができる。サーバ２００は、例えば、より高度なソリューションをもたらすゲームプレイ中に達成されたスコアに基づいて、質的な参加を格付けすることもできる。このステップの一部として、サーバ２００は、クライアント装置のユーザのアカウントにデジタル通貨（例えば、ビットコイン、ドル等）を入金し、ユーザのゲームプレイ体験を改善する追加の又はより良い仮想オブジェクトをビデオゲームに提供し、継続的なゲームプレイを可能にし、又は追加のビデオゲームのダウンロード／オンラインプレイを可能にすることができる。
【００５６】
様々な実施形態では、サーバ２００は、メディアコンテンツを使用して参加を促す。例えば、音楽又はビデオなどの有料ストリーミングサービスを使用する一環として、ユーザがある程度のコンピューティング・リソースをグリッドに提供する場合、ストリーミングサービスの費用は補助されるか、又はカバーされる。音楽やビデオなどのほとんどのストリーミングサービスは、主に、デバイスのバッファリング及びネットワーク・リソースを使用する。例えば、オンライン・ビデオ・チャネルの視聴中又は音楽のストリーミング中に、デバイスは、ボランティア・コンピューティング・グリッドによる使用に利用可能な、未使用の処理リソース及び／又は長期的なストレージ・リソースを有する可能性が高い。補助された又は無料のストリーミング・コンテンツへの参加を奨励し、コンテンツへの参加中にエンドユーザを楽しませることによって、本開示の実施形態は、ボランティア・コンピューティング・グリッドのサイズ及び可用性を増大させることができる。様々な実施形態では、インセンティブがエンドユーザレベル又はコンテンツ・プロバイダレベルで提供されてもよい。例えば、オンライン・ビデオゲーム・プロバイダ又はメディア・コンテンツ・プロバイダは、エンドユーザのデバイスがボランティア・コンピューティング・グリッドの一部となることを可能にするために、ステップ４００において提供されるクライアント・アプリケーションの少なくとも一部を、それらのコンテンツプレーヤ又はビデオゲームに含めることで補償され得る。次いで、これらのゲーム／メディアプロバイダは、エンドユーザのデバイスがボランティア・コンピューティング・グリッドに参加する結果として、エンドユーザに低コストのコンテンツ及びゲームを提供することができる。
【００５７】
その後、サーバ２００は、タスクの結果を受信する（ステップ４２５）。例えば、ステップ４２５において、サーバ２００は、コンピューティング・タスクが完了したとき、及び／又はネットワーク・リソースが利用可能になったときに、クライアント装置からＷＵの結果を受信することができる。このステップの一部として、サーバ２００は、コンピューティング・タスクの結果の処理及び検証を実行することができる。例えば、特定のメトリック又はスコアを達成した結果のみが、研究者又は開発者による使用のためにフィルタリングされ得る。別の例では、サーバ２００は、特定の数の冗長なタスクの結果を比較して、特定のクライアント装置からの結果が信頼できるかどうかを検証することができる。
【００５８】
次に、サーバ２００は、タスクの結果を返す（ステップ４３０）。例えば、ステップ４３０で、サーバ２００は、ステップ４０５でデータに提供されたものと同じインターフェースを使用して、結果をコンピューティング・リソースの消費者（例えば、サーバ１０４）に提供して、研究者及び／又は開発者の問題を解決したり、又はソリューションを検証することができる。このようにして、本開示の実施形態は、グリッド・コンピューティングを使用した共同の研究開発のためのプラットフォームを実装し、提供する。
【００５９】
図５は、本開示の様々な実施形態による、ボランティア・コンピューティング・グリッドに参加するためのプロセスを示す。例えば、図５に図示するプロセスは、図３のクライアント装置３００によって実施されるものとして説明される。このプロセスは、図１のクライアント装置１０６〜１１４のいずれによっても実施することができる。
【００６０】
プロセスは、クライアント装置３００が、１つ又は複数のクライアント・アプリケーションを受信することから始まる（ステップ５０５）。例えば、いくつかの実施形態では、ステップ５０５において、クライアント装置３００は、ボランティア・コンピューティング・グリッドに参加するための専用アプリケーションを受信することができる。クライアント装置３００はまた、ビデオゲームなどの対話型アプリケーション、または、ゲームプレイ又はメディアストリーミング中のボランティア・コンピューティング・グリッド参加用のプラグイン又は他のコンポーネント内に含まれるメディアストリーミング・アプリケーションを受信することができる。クライアント・アプリケーションは、クライアント装置３００による処理のための機械学習アプリケーション用のプログラムコードを含むことができる。
【００６１】
次に、クライアント装置３００は、タスクを受信し、処理する（ステップ５１０）。例えば、ステップ５１０において、クライアント装置３００は、受信したアプリケーションがクライアント装置３００上で実行されるときに、コンピューティング・タスクを要求することができる。いくつかの実施形態では、タスクは、機械学習アプリケーションのために研究されているより大きな問題の一部であり、及び／又は、例えば上述したゲーム対話を介した市民科学コラボレーションの機会を含むことができる。次いで、クライアント装置３００は、例えば、検証と、研究者及び／又は開発者への提供とのために、タスクの結果をサーバ２００に返す（ステップ５１５）。
【００６２】
様々な実施形態では、ステップ５１０の一部として又はステップ５１０について、クライアント装置３００は、対話型アプリケーション用のプログラムコードを実行して、ユーザからの入力を要求及び受信するためのユーザ・インターフェースを生成する。例えば、対話型アプリケーションは、画像又は一連の画像中のオブジェクト（複数可）を識別するためにユーザ入力を要求するプログラムであってもよく、又は、市民科学入力を提供するためにユーザ入力を要求するゲームであってもよい。クライアント装置３００は、受信したコンピューティング・タスクの結果としてユーザ入力を受信して処理する。
【００６３】
追加的または代替的に、クライアント装置３００は、機械学習アプリケーション用のプログラムコードを処理することができる。例えば、クライアント装置３００は、例えば、機械学習アルゴリズムを繰り返し処理し、処理結果を記憶し、及び／又は機械学習アルゴリズム処理結果を検証することによって、コンピューティング・リソースを機械学習アプリケーションに更に提供することができる。別の例では、クライアント装置３００は、機械学習アプリケーションに関連して、クライアント装置３００又はコンピューティング・グリッド内の他のクライアント装置（複数可）によって受信されたユーザ入力の結果を繰り返し受信し処理して、機械学習アルゴリズムを反復的に改善することができる。例えば、クライアント装置３００は、対話型アプリケーションからのパターン認識入力又はトレーニングデータ入力を利用して、ボランティア・コンピューティング・グリッドによって実行されるタスクの一部として、単一のプラットフォーム内のすべての機械学習アプリケーションを改善することができる。いくつかの実施形態では、クライアント装置３００によって実行されるタスクは、コンピューティング・グリッド内の別のクライアント装置から受信することができる。例えば、クライアント装置３００によって実行される機械学習タスク（複数可）は、機械学習アルゴリズムを文字通り改善するためにユーザ入力結果を提供する他のクライアント装置（複数可）から受信されてもよく、その逆も同様である。別の例では、クライアント装置３００によって実行される対話型アプリケーションタスク（複数可）は、機械学習アルゴリズムの文字通りの改善において、クライアント装置３００から受信したユーザ入力結果を処理している他のクライアント装置（複数可）から受信されてもよく、その逆もまた同様である。
【００６４】
様々な実施形態では、ステップ５１０及び５１５の一部として、又はステップ５１０及び５１５について、クライアント装置３００は、ブロックチェーンから計算のためのタスクを受信し（例えば、上述のように）、タスクを実行し、タスクの完了としてブロックチェーンにポストされるレコードを、結果についてのデータとして送信することができる。例えば、これらの実施形態では、実行されるタスクは、コンピューティング・タスク又はパターンマッチングタスクなど、ユーザからの入力を必要とするタスクを含み、ブロックチェーンの一部である。次いで、クライアント装置３００は、電子デバイスのユーザからの入力を要求及び受信することを含むタスクを実行し、タスクの完了を示すために必要なデータを生成することができる。例えば、このデータは、生成されたトレーニングデータ又はパターン認識を示すデータを含むことができる。次いで、クライアント装置３００は、データ又は提案されたブロックチェーンのレコードをサーバ１０２（例えば、マイナー）に送信して、ブロックチェーンにポストし、タスクの完了のために独立して検証されたクレジットを受信する。
【００６５】
その後、クライアント装置３００は、参加インセンティブを提供する（ステップ５２０）。例えば、ステップ５２０において、クライアント装置３００は、エンドユーザに対して、ボランティア・コンピューティングへの参加を奨励するインセンティブを提供することができる。インセンティブの量及び／又は質は、提供されるボランティア・コンピューティングの貢献の量及び／又は質に基づくことができる。インセンティブ及び金額は、タスク完了時にクライアント装置において自律的に、又はタスクの結果の報告及び検証後にサーバ２００を介して決定され得る。参加インセンティブは、例えば、デジタル通貨、暗号通貨、メディアコンテンツ、ビデオゲーム用の仮想オブジェクト、ビデオゲーム等のような、アプリケーションに関連するか否かにかかわらず、任意の有価アイテムとすることができる。いくつかの実施形態では、インセンティブが開発者レベルで適用されてもよく、それによって、エンドユーザは補助された又は無料のメディアコンテンツ、ゲーム、ゲーム内のレベル、ゲーム内の仮想オブジェクトなどによってインセンティブを得ることができる。したがって、クライアント装置による実際のタスク完了の前、最中、又は後に、エンドユーザのインセンティブを提供することができる。
【００６６】
図４及び図５はそれぞれ、グリッド・コンピューティングを使用し、ボランティア・コンピューティング・グリッドに参加する共同の研究開発のためのプラットフォームを提供するためのプロセスの例を示すが、様々な変更を図４及び図５に行うことができる。例えば、一連のステップとして示されているが、各図の様々なステップは、オーバーラップするか、並列に起こるか、異なる順序で起こるか、又は複数回起こることができる。別の例では、ステップは省略されてもよく、又は他のステップと置き換えられてもよい。
【００６７】
本特許文書全体を通して使用される特定の単語及び語句の定義を記載することが有利であり得る。用語「結合する(couple)」及びその派生語は、２つ以上の要素が互いに物理的に接触しているか否かにかかわらず、それらの要素間の任意の直接的又は間接的な通信を指す。用語「送信」、「受信」、及び「通信」、ならびにそれらの派生語は、直接通信及び間接通信の両方を包含する。用語「含む(include)」及び「含む(comprise)」、ならびにそれらの派生語は、限定されない包含を意味する。「又は」という用語は包括的であり、及び／又はを意味する。「関連する(associated with)」という語句、ならびにその派生語句は、含む(include)、〜に含まれる(be included within)、〜と相互接続する(interconnect with)、含む(containe)、〜に含まれる (be contained within)、〜と接続する(connect to or with)、〜と結合する(couple to or with)、〜と通信可能である(be communicable with)、〜と協働する(cooperate with)、差し挟む(interleave)、並べる(juxtapose)、〜に最も近い(be proximate to)、〜に決まっている(be bound to or with)、有する(have)、〜という性質を有する(have a property of)、〜と関係を有する(have a relationship to or with)等を意味する。「そのよう(such as)」という語句は、用語の間で使用される場合、後に列挙される用語が先に列挙される用語の例であり、限定ではないことを意味する。「のうちの少なくとも１つ(at least one of)」という語句は、アイテムのリストと共に使用される場合、リストされたアイテムのうちの１つ又は複数の様々な組合せが使用され得ることを意味し、リスト内の１つのアイテムのみが必要とされ得る。例えば、「Ａ、Ｂ、及びＣのうちの少なくとも１つ」は、以下の組み合わせのいずれかを含む。Ａ、Ｂ、Ｃ、Ａ及びＢ、Ａ及びＣ、Ｂ及びＣ、ならびにＡ及びＢ及びＣ。
【００６８】
さらに、本明細書で説明される様々な機能は、１つ又は複数のコンピュータプログラムによって実装又はサポートされることができ、その各々は、コンピュータ可読プログラムコードから形成され、コンピュータ可読媒体で実施される。「アプリケーション」及び「プログラム」という用語は、１つ又は複数のコンピュータプログラム、ソフトウェアコンポーネント、命令セット、プロシージャ、関数、オブジェクト、クラス、インスタンス、関連データ、又は適切なコンピュータ可読プログラムコードでの実装に適合されたそれらの一部分を指す。「コンピュータ可読プログラムコード」という語句は、ソースコード、オブジェクトコード、及び実行可能コードを含む任意のタイプのコンピュータコードを含む。「コンピュータ可読媒体」という語句は、読取り専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、ハード・ディスク・ドライブ、コンパクト・ディスク（ＣＤ）、デジタル・ビデオ・ディスク（ＤＶＤ）、又は任意の他のタイプのメモリなど、コンピュータによってアクセスすることができる任意のタイプの媒体を含む。「非一時的である」コンピュータ可読媒体は、一時的な電気信号又は他の信号を伝送する有線、無線、光、又は他の通信リンクを除外する。非一時的なコンピュータ可読媒体は書き換え可能な光ディスク又は消去可能なメモリデバイスのような、データを永久的に記憶することができる媒体と、データを記憶し、後に上書きすることができる媒体とを含む。
【００６９】
他の特定の語句の定義は、本特許文書全体を通して提供される。当業者はほとんどではないにしても多くの場合、そのような定義はそのような定義された単語及び句の以前の使用ならびに将来の使用に適用されることを理解すべきである。
【００７０】
本開示は例示的な実施形態を用いて説明されてきたが、当業者には様々な変更及び修正が示唆され得る。本開示は、添付の特許請求の範囲内にあるような変更及び修正を包含することが意図される。
【００７１】
一実施形態は、コンピューティング・タスクを処理するための方法を提供する。この方法は、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアント・アプリケーションを複数のクライアント装置に送信することを含む。プログラムコードは複数のクライアント装置のうちの１つ又は複数のプロセッサによって実行されると、１つ又は複数のクライアント装置に、対話型アプリケーションのためのユーザ・インターフェースを生成させ、生成された対話型アプリケーションのためのユーザ・インターフェースを使用して、１つ又は複数のクライアント装置のユーザからの入力を要求し、要求された入力を受信し、１つ又は複数のクライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理し、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる。この方法はさらに、受信された入力の結果と、コンピューティング・タスクを処理するための機械学習アプリケーションの少なくとも一部の処理とに関連するデータを受信し、処理することを含む。
【００７２】
別の実施形態は、コンピューティング・タスクを処理するためのシステムを提供する。システムは、通信インターフェースと、通信インターフェースに動作可能に接続されたプロセッサとを含む。通信インターフェースは、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む１つ又は複数のクライアント・アプリケーションを複数のクライアント装置に送信するように構成される。プログラムコードは複数のクライアント・装置のうちの１つ又は複数のプロセッサによって実行されると、１つ又は複数のクライアント・装置に、対話型アプリケーションのためのユーザ・インターフェースを生成させ、生成された対話型アプリケーションのためのユーザ・インターフェースを使用して、１つ又は複数のクライアント装置のユーザからの入力を要求し、要求された入力を受信し、１つ又は複数のクライアント装置のコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理し、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる。通信インターフェースは、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを受信するようにさらに構成される。プロセッサはコンピューティング・タスクを処理するために、受信された入力の結果と、機械学習アプリケーションの少なくとも一部の処理とに関連するデータを処理するように構成される。
【００７３】
別の実施形態は、非一時的なコンピュータ可読媒体を提供する。非一時的なコンピュータ可読媒体は、対話型アプリケーション及び機械学習アプリケーションに関連するプログラムコードを含む。プログラムコードは、電子デバイスのプロセッサによって実行されると、電子デバイスに、対話型アプリケーションのためのユーザ・インターフェースを生成させ、生成された対話型アプリケーションのためのユーザ・インターフェースを使用して、電子デバイスのユーザからの入力を要求し、要求された入力を受信し、電子デバイスのコンピューティング・リソースを使用して、機械学習アプリケーションの少なくとも一部を処理し、受信された入力の結果及び機械学習アプリケーションの少なくとも一部の処理に関連するデータを送信させる。
【００７４】
上記の例及び実施形態のいずれにおいても、複数のクライアント装置は、ボランティア・コンピューティング・グリッドを形成し、機械学習アプリケーションの少なくとも一部の処理は、ボランティア・コンピューティング・グリッド内のクライアント装置のうちの少なくとも１つによって受信された受信入力に少なくとも部分的に基づいて実行される。
【００７５】
上記の例及び実施形態のいずれにおいても、１つ又は複数のクライアント装置のそれぞれから受信された結果に関連するデータに基づいて参加インセンティブを提供することが含まれ得る。
【００７６】
上記の例及び実施形態のいずれにおいても、１つのクライアント装置が１つ又は複数のクライアント・アプリケーションを実行しているときに、複数のクライアント装置のうちの１つに少なくとも補助されたメディアコンテンツが提供されることを可能にすることが含まれ得る。
【００７７】
上記の例及び実施形態のいずれにおいても、複数のクライアント装置を介した完了のためのタスクをブロックチェーンに追加し、完了のために１つ又は複数のクライアント装置のユーザからの入力を必要とするタスクを含めることができる。結果に関連するデータを受信し、処理することは、１つ又は複数のクライアント装置から、タスクの完了としてブロックチェーンにポストされるレコードを受信することと、タスクに関連する基準に基づいて受信したレコードを検証することと、検証されたレコードをブロックチェーンに追加することとを含む。
【００７８】
上記の例及び実施形態のいずれかでは、受信したレコードを検証することはタスクに関連する基準に基づいて、レコードがタスクの完了を示すかどうかを判定することと、タスクの完了を示すレコードに応答してレコードを検証することとを含む。
【００７９】
上記の例及び実施形態のいずれにおいても、システムはクライアント装置のうちの１つであってもよく、方法はクライアント装置のうちの１つによって実行されてもよい。
【００８０】
上記の例及び実施形態のいずれにおいても、電子デバイスは、ボランティア・コンピューティング・グリッドを形成する複数のクライアント装置のうちの１つであり、機械学習アプリケーションの少なくとも一部の処理は、ボランティア・コンピューティング・グリッド内のクライアント装置のうちの少なくとも１つによって受信された受信入力に少なくとも部分的に基づいて実行される。
【００８１】
上記の例及び実施形態のいずれにおいても、電子デバイスは、結果に関連するデータに基づいて参加インセンティブを受信する。
【００８２】
上記の例及び実施形態のいずれにおいても、電子デバイスは、電子デバイスが対話型アプリケーション又は機械学習アプリケーションのうちの少なくとも１つに関連するプログラムコードを処理しているときに、少なくとも補助されたメディアコンテンツを受信する。
【００８３】
上記の例及び実施形態のいずれにおいても、電子デバイスは、完了のために電子デバイスのユーザからの入力を必要とする完了のためのタスクをブロックチェーンから受信し、電子デバイスのユーザからの入力を要求及び受信することを含むタスクを実行し、結果に関連するデータにおいて、タスクの完了としてブロックチェーンにポストされるレコードを送信する。
【００８４】
本出願における説明のいずれも、任意の特定の要素、ステップ、又は機能が、特許請求の範囲に含まれなければならない本質的な要素であることを暗示するものとして解釈されるべきではない。特許された主題の範囲は、特許請求の範囲によってのみ定義される。さらに、特許請求の範囲のいずれも、「のための手段(means for)」という正確な単語の後にパーティクルが続かない限り、35 U.S.C§112(f)を呼び出すようには意図されていない。
【図１】
2020522364.tif 000003
【図２】
2020522364.tif 000004
【図３】
2020522364.tif 000005
【図４】
2020522364.tif 000006
【図５】
2020522364.tif 000007
【国際調査報告】
2020522364.tif 000008