(57)【要約】【課題】学習済みモデルを用いた解析処理をエッジサーバにて安全に行うこと。【解決手段】本発明にかかる分散システム（１０００）は、バックエンドサービス（３００）と、複数のエッジサーバ（２００）と、を備える。バックエンドサービス（３００）は、学習済みモデルの情報を保管する第１のデータ保管手段（３２０）と、学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割するモデル分割手段（３３０）と、複数の分割解析プログラムを複数のエッジサーバ（２００）に割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成して第１のデータ保管手段（３２０）に格納するプログラム割り振り手段（３４０）と、割り振り情報に基づいて、分割解析プログラム及び対応する転送先情報をエッジサーバ（２００）に配布する第１のエッジ通信手段（３１０）と、を備える。【選択図】図２
2019045970.tif 000002
【特許請求の範囲】
【請求項１】
バックエンドサービスと、複数のエッジサーバと、を備え、
前記バックエンドサービスは、
学習済みモデルの情報を保管する第１のデータ保管手段と、
前記学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割するモデル分割手段と、
前記複数の分割解析プログラムを前記複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成して前記第１のデータ保管手段に格納するプログラム割り振り手段と、
前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布する第１のエッジ通信手段と、を備え、
前記エッジサーバは、
前記バックエンドサービスとの通信を行うバックエンド通信手段と、
前記バックエンド通信手段により受信された前記分割解析プログラム及び前記転送先情報を格納する第２のデータ保管手段と、
実行すべき分割解析プログラムを特定する制御手段と、
前記制御手段により特定された前記分割解析プログラムを用いて演算処理を実行する演算処理手段と、
前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送する第２のエッジ通信手段と、を備える、
分散システム。
【請求項２】
前記複数の分割解析プログラムのうちの最初の分割解析プログラムを実行したエッジサーバの前記第２のエッジ通信手段は、自身のエッジサーバを示す宛先情報をデータ発生源情報として前記演算処理結果とともに次の処理を行うエッジサーバに転送し、
前記複数の分割解析プログラムのうちの最後の分割解析プログラムを実行したエッジサーバの前記第２のエッジ通信手段は、前記データ発生源情報を用いて、前記解析プログラムの最終的な処理結果を、前記最初の分割解析プログラムを実行したエッジサーバに返却する、
請求項１に記載の分散システム。
【請求項３】
前記制御手段は、前記データ発生源情報、前記演算処理結果、及びプログラム種別を転送データに格納し、
前記第２のエッジ通信手段は、前記転送データの送受信を行い、
前記制御手段は、受信された前記転送データに含まれるプログラム種別を用いて、複数種類ある分割解析プログラムの中から実行すべき分割解析プログラムを特定する、
請求項２に記載の分散システム。
【請求項４】
前記制御手段は、前記演算処理を実行する際に用いた前記分割解析プログラムに対応する転送先情報が前記第２のデータ保管手段に格納されている場合に、前記プログラム種別を前記転送データに格納し、前記演算処理を実行する際に用いた前記分割解析プログラムに対応する転送先情報が前記第２のデータ保管手段に格納されていない場合に、前記プログラム種別を前記転送データに格納しない、請求項３に記載の分散システム。
【請求項５】
前記第１のエッジ通信手段は、前記複数の分割解析プログラムのうちの最初の分割解析プログラムとデータ種別との対応情報を、前記エッジサーバにさらに配布し、
前記制御手段は、前記対応情報を用いて、デバイスから受信されたデータのデータ種別に応じて、実行すべき前記最初の分割解析プログラムを特定する、
請求項１から４のいずれか一項に記載の分散システム。
【請求項６】
学習済みモデルの情報を保管するデータ保管手段と、
前記学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割するモデル分割手段と、
前記複数の分割解析プログラムを複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成して前記データ保管手段に格納するプログラム割り振り手段と、
前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布するエッジ通信手段と、を備える、
バックエンドサービス。
【請求項７】
バックエンドサービスとの通信を行うバックエンド通信手段と、
前記バックエンド通信手段により受信された分割解析プログラム及び転送先情報を格納するデータ保管手段と、
実行すべき分割解析プログラムを特定する制御手段と、
前記制御手段により特定された前記分割解析プログラムを用いて演算処理を実行する演算処理手段と、
前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送するエッジ通信手段と、を備える、
エッジサーバ。
【請求項８】
バックエンドサービスと、複数のエッジサーバと、を備える分散システムの方法であって、
前記バックエンドサービスは、
学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割し、
前記複数の分割解析プログラムを前記複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成し、
前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布し、
前記エッジサーバは、
前記分割解析プログラム及び前記転送先情報を前記バックエンドサービスから受信し、
実行すべき分割解析プログラムを特定し、
特定された前記分割解析プログラムを用いて演算処理を実行し、
前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送する、
方法。
【請求項９】
バックエンドサービスの方法であって、
学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割し、
前記複数の分割解析プログラムを複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成し、
前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布する、
方法。
【請求項１０】
エッジサーバの方法であって、
分割解析プログラム及び転送先情報をバックエンドサービスから受信し、
実行すべき分割解析プログラムを特定し、
特定された前記分割解析プログラムを用いて演算処理を実行し、
前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システム、バックエンドサービス、エッジサーバ、及びその方法に関し、特に、学習済みモデルを構成する解析プログラムについての分散システム、バックエンドサービス、エッジサーバ、及びその方法に関する。
【背景技術】
【０００２】
近年、ＩｏＴ（Internet of Things）技術の活用により様々なシステムが構築されている。これらのシステムでは、クラウドコンピューティングを用いて様々なデバイス（スマートフォン、タブレット端末、各種センサ等）のデータを収集・処理しているが、データ通信量の増大、デバイスとの通信遅延の発生等の課題がある。これらの課題の解決手段としてエッジコンピューティングが注目されている。
【０００３】
エッジコンピューティングとは、小規模のエッジサーバをデバイスに近い場所に分散配置し、クラウドで行われていた処理をエッジサーバに分散する技術のことである。エッジコンピューティングにより通信負荷や通信遅延の発生を軽減することができる。
【０００４】
エッジコンピューティングの技術を用いて、デバイスから発生するデータをもとにした機械学習や、その学習結果である学習済みモデルを反映した解析処理を行うことがある。学習済みモデルは、高い価値を持つ秘匿すべき情報である。このため、学習済みモデルをエッジサーバに格納する場合には、エッジサーバの盗難リスクの高さから情報漏えいへの対策が必要となる。エッジサーバで暗号化やアクセス制御等のセキュリティ対策を施していても、エッジサーバ自体が盗難された場合には、時間をかけて解析される虞があり、エッジサーバに格納された学習済みモデルを漏洩から保護することは難しい。このため、エッジサーバが盗難された場合でも有効な対策が求められている。
【０００５】
特許文献１には、ユーザ情報を分割して複数の分割情報を生成し、複数のエッジサーバに分散して記憶する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１６／０４３１２０号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に開示の技術は、ユーザ情報を分割して複数のエッジサーバに分散させる技術であり、学習済みモデルのようなプログラムへの適用はできないという問題があった。この理由としては、プログラムを特別な考慮無く分割してしまうと、もともとのプログラムが持っていた処理が実行不可能になってしまうためである。
【０００８】
本発明は、このような問題点を解決するためになされたものであり、学習済みモデルを用いた解析処理をエッジサーバにて安全に行うことができる分散システム、バックエンドサービス、エッジサーバ、及びその方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様にかかる分散システムは、バックエンドサービスと、複数のエッジサーバと、を備え、前記バックエンドサービスは、学習済みモデルの情報を保管する第１のデータ保管手段と、前記学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割するモデル分割手段と、前記複数の分割解析プログラムを前記複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成して前記第１のデータ保管手段に格納するプログラム割り振り手段と、前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布する第１のエッジ通信手段と、を備え、前記エッジサーバは、前記バックエンドサービスとの通信を行うバックエンド通信手段と、前記バックエンド通信手段により受信された前記分割解析プログラム及び前記転送先情報を格納する第２のデータ保管手段と、実行すべき分割解析プログラムを特定する制御手段と、前記制御手段により特定された前記分割解析プログラムを用いて演算処理を実行する演算処理手段と、前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送する第２のエッジ通信手段と、を備えるものである。
【００１０】
本発明の第２の態様にかかるバックエンドサービスは、学習済みモデルの情報を保管するデータ保管手段と、前記学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割するモデル分割手段と、前記複数の分割解析プログラムを複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成して前記データ保管手段に格納するプログラム割り振り手段と、前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布するエッジ通信手段と、を備えるものである。
【００１１】
本発明の第３の態様にかかるエッジサーバは、バックエンドサービスとの通信を行うバックエンド通信手段と、前記バックエンド通信手段により受信された分割解析プログラム及び転送先情報を格納するデータ保管手段と、実行すべき分割解析プログラムを特定する制御手段と、前記制御手段により特定された前記分割解析プログラムを用いて演算処理を実行する演算処理手段と、前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送するエッジ通信手段と、を備えるものである。
【００１２】
本発明の第４の態様にかかる方法は、バックエンドサービスと、複数のエッジサーバと、を備える分散システムの方法であって、前記バックエンドサービスは、学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割し、前記複数の分割解析プログラムを前記複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成し、前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布し、前記エッジサーバは、前記分割解析プログラム及び前記転送先情報を前記バックエンドサービスから受信し、実行すべき分割解析プログラムを特定し、特定された前記分割解析プログラムを用いて演算処理を実行し、前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送するものである。
【００１３】
本発明の第５の態様にかかる方法は、バックエンドサービスの方法であって、学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割し、前記複数の分割解析プログラムを複数のエッジサーバに割り振り、エッジサーバ、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成し、前記割り振り情報に基づいて、前記分割解析プログラム及び対応する前記転送先情報を前記エッジサーバに配布するものである。
【００１４】
本発明の第６の態様にかかる方法は、エッジサーバの方法であって、分割解析プログラム及び転送先情報をバックエンドサービスから受信し、実行すべき分割解析プログラムを特定し、特定された前記分割解析プログラムを用いて演算処理を実行し、前記転送先情報に含まれる宛先情報を用いて、前記分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送するものである。
【発明の効果】
【００１５】
本発明により、学習済みモデルを用いた解析処理をエッジサーバにて安全に行うことができる分散システム、バックエンドサービス、エッジサーバ、及びその方法を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかる分散システムの構成例を示すブロック図である。
【図２】実施の形態１にかかるバックエンドサービスの構成例を示すブロック図である。
【図３】実施の形態１にかかる学習済みモデルの解析処理の概要を示す図である。
【図４】実施の形態１にかかる割り振り情報の例を示す図である。
【図５】実施の形態１にかかるエッジサーバの構成例を示すブロック図である。
【図６】実施の形態１にかかるバックエンドサービスの処理例を示すフローチャートである。
【図７】実施の形態１にかかるエッジサーバの処理例を示すフローチャートである。
【図８】実施の形態２にかかる分散システムの構成例を示すブロック図である。
【図９】実施の形態２にかかるデバイスと学習済みモデルと分割解析プログラムとの関係の例を示す図である。
【図１０】実施の形態２にかかる割り振り情報の例を示す図である。
【図１１】実施の形態２にかかる転送データの構造例を示す図である。
【図１２】実施の形態２にかかる割り振り情報の例を示す図である。
【図１３】実施の形態２にかかるデバイスから発生されるデータ種別と対応する学習済みモデルの関係の例を示す図である。
【図１４】実施の形態２にかかる割り振り情報の例を示す図である。
【図１５】実施の形態２にかかるエッジサーバにおける分割解析プログラムの実行処理の流れを示すフローチャートである。
【図１６】実施の形態２にかかるエッジサーバにおける分割解析プログラムの実行処理の流れを示すフローチャートである。
【図１７】実施の形態２にかかるエッジサーバにおける分割解析プログラムの実行処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下では、本発明の実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。なお、説明で使用するＭ、Ｎは、正の整数であり、Ｍ＜Ｎとする。
【００１８】
実施の形態１
まず、図１のブロック図を用いて、本発明の実施の形態１にかかる分散システム１０００の構成例について説明する。本実施の形態１にかかる分散システム１０００は、デバイス群１００と、エッジサーバ２００と、バックエンドサービス３００と、を備えている。なお、エッジサーバ２００とバックエンドサービス３００とは、ＷＡＮ（Wide Area Network）やインターネット等のネットワーク１０を介して接続されている。また、デバイス群１００の各デバイスとエッジサーバ２００とは、デバイスに応じた接続方法により、それぞれ接続される。
【００１９】
デバイス群１００は、例えば、スマートフォン、タブレット端末、各種センサ、アクチュエータ等のデバイスを含むデバイス群である。
【００２０】
エッジサーバ２００は、複数台存在する。なお、図１の例では、分散システム１０００が３つのエッジサーバ２００を備える構成を示しているが、分散システム１０００が備えるエッジサーバ２００の数は３つに限らない。また、それぞれのエッジサーバ２００は、デバイス群１００と紐づけられている。エッジサーバ２００は、自身に紐づけられているデバイス群１００と通信を行う。なお、複数のエッジサーバ２００は、ピア・ツー・ピアや、クライアント・サーバ等のネットワーク形態により相互に通信することが可能である。
【００２１】
バックエンドサービス３００は、複数のエッジサーバ２００を管理する。
【００２２】
続いて、図２のブロック図を用いて、本実施の形態１にかかるバックエンドサービス３００の構成例について説明する。本実施の形態１にかかるバックエンドサービス３００は、エッジ通信部３１０と、データ保管部３２０と、モデル分割部３３０と、プログラム割り振り部３４０と、を備えている。
【００２３】
データ保管部３２０は、エッジサーバ２００とデバイス群１００の紐づけ情報、学習済みモデルの情報、等を保管するための機能・装置である。なお、学習済みモデルは、バックエンドサービス３００における機械学習の成果物として生成される。学習済みモデルは、特定のデータを入力として機能するものであり、そのデータの発生源であるデバイスと紐づけることができる。あるデバイスに紐づけられた学習済みモデルは複数種類存在する可能性もある。なお、エッジサーバ２００が接続しているデバイス群１００の情報は、データ保管部３２０にて管理情報として保管されている。このため、バックエンドサービス３００にてエッジサーバ２００とデバイス群１００との紐づけが可能である。
【００２４】
モデル分割部３３０は、データ保管部３２０に保管されている学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割する機能・装置である。なお、複数の分割解析プログラムは、例えば、解析プログラムをステップごとに分割したものである。モデル分割部３３０は、複数の分割解析プログラムをデータ保管部３２０に保管する。
【００２５】
ここで、図３を用いて、分割解析プログラムについて説明する。図３は、学習済みモデルの解析処理の概要を示す図である。なお、解析プログラムにおいて、Ｐ（１）は、複数の分割解析プログラムのうちの最初の分割解析プログラムであり、Ｐ（Ｎ）は、複数の分割解析プログラムのうちの最後の分割解析プログラムである。また、元データは、デバイス群１００のデバイスからエッジサーバ２００へ受信されるデータである。
【００２６】
学習済みモデルの解析処理では、元データから抽出される情報を学習済みモデルの入力とし、解析プログラムを用いた中間処理を行った結果として、元データの特徴を表す出力が得られる。例えば、人物画像データをもとに、画像に映っている人物が女性であるか男性であるかを判断するような学習済みモデルの場合、元データ、入力、出力は、下記表１のようになる。
【表１】
2019045970.tif 000003
【００２７】
入力から出力を得るための中間処理は、多段的に重み付け係数を用いた演算を実行する処理としてとらえることができる。また、重み付け係数を用いた演算処理や、元データから入力を抽出する処理は、それぞれ独立した分割解析プログラムにより実現することができる。元データから入力を抽出する分割解析プログラムをＰ（１）、Ｎ−１回演算処理を行う場合の中間処理用の分割解析プログラムをＰ（２）〜Ｐ（Ｎ）とすると、元データにＰ（１）〜Ｐ（Ｎ）の分割解析プログラムを実行することにより、最終成果物として特徴量（＝出力）を得ることができる。なお、Ｐ（Ｍ）の演算処理結果がＰ（Ｍ＋１）の入力となり、最後にＰ（Ｎ）の結果として特徴量を表す情報が出力される。
【００２８】
なお、分割解析プログラムは、それぞれ独立した個別のプログラムである。また、それぞれのエッジサーバ２００が有する分割解析プログラム間の関連を示す情報は、「次に演算処理を行うべき分割解析プログラムがどれか」という点、及び「次に演算処理を行うべき分割解析プログラムを持つエッジサーバの宛先情報」のみである。このため、仮に攻撃者が１つのエッジサーバ２００を盗難したとしても、そのエッジサーバ２００が有する情報からでは、次に演算処理を行うべき分割解析プログラムについての情報以外の情報を知ることはできない。このため、攻撃者は、学習済みモデルを構成する解析プログラムの全体像を把握することはできない。
【００２９】
図２に戻り説明を続ける。プログラム割り振り部３４０は、複数の分割解析プログラムを複数のエッジサーバ２００に割り振る機能・装置である。プログラム割り振り部３４０は、複数の分割解析プログラムを複数のエッジサーバ２００に割り振る。また、プログラム割り振り部３４０は、エッジサーバ２００、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成してデータ保管部３２０に格納する。
【００３０】
ここで、図４を用いて、本実施の形態１にかかる割り振り情報について説明する。図４は、本実施の形態１にかかる割り振り情報の例を示す図である。なお、図４は、複数のエッジサーバ２００として、エッジサーバＡ、エッジサーバＢ、エッジサーバＣが存在する場合の例である。また、解析プログラムがＰ（１）〜Ｐ（３）の３つの分割解析プログラムに分割された場合の例である。
【００３１】
エッジサーバＡには、分割解析プログラムＰ（１）が割り振られ、転送先情報Ｄ（２）が対応付けられている。なお、転送先情報Ｄ（２）は、Ｐ（１）の次の分割解析プログラムであるＰ（２）を持つエッジサーバの宛先情報と、実行すべき分割解析プログラムがＰ（２）であることを示す情報とを含む情報である。
【００３２】
エッジサーバＢには、分割解析プログラムＰ（２）が割り振られ、転送先情報Ｄ（３）が対応付けられている。エッジサーバＣには、分割解析プログラムＰ（３）が割り振られている。なお、Ｐ（３）は解析プログラムの最後の処理であるため、転送先情報は存在しない。
【００３３】
図２に戻り説明を続ける。エッジ通信部３１０は、エッジサーバ２００との通信を行うための機能・装置である。エッジ通信部３１０は、分割解析プログラムをエッジサーバ２００に送信することや、エッジサーバ２００からデータを受信すること等を行う。
【００３４】
具体的には、エッジ通信部３１０は、割り振り情報に基づいて、分割解析プログラム及び対応する転送先情報をエッジサーバ２００に配布する。すなわち、図４の例では、エッジ通信部３１０は、分割解析プログラムＰ（１）及び転送先情報Ｄ（２）をエッジサーバＡに配布する。また、エッジ通信部３１０は、分割解析プログラムＰ（２）及び転送先情報Ｄ（３）をエッジサーバＢに配布する。さらに、エッジ通信部３１０は、分割解析プログラムＰ（３）をエッジサーバＣに配布する。
【００３５】
続いて、図５のブロック図を用いて、本実施の形態１にかかるエッジサーバ２００の構成例について説明する。本実施の形態１にかかるエッジサーバ２００は、制御部２１０と、バックエンド通信部２２０と、エッジ通信部２３０と、デバイス通信部２４０と、演算処理部２５０と、データ保管部２６０と、を備えている。
【００３６】
データ保管部２６０は、バックエンドサービス３００から受信された分割解析プログラムやデバイス情報等のエッジサーバ管理用のデータを保管するための機能・装置である。
【００３７】
バックエンド通信部２２０は、バックエンドサービス３００との通信を行うための機能・装置である。バックエンド通信部２２０は、バックエンドサービス３００から分割解析プログラム及び転送先情報を受信し、受信された分割解析プログラム及び転送先情報をデータ保管部２６０へ格納する。
【００３８】
デバイス通信部２４０は、デバイス群１００と通信を行うための機能・装置である。デバイス通信部２４０は、デバイス群１００のデバイスから発生されるデータ（元データ）の受信や、デバイスへの操作指示等を行う。
【００３９】
制御部２１０は、エッジサーバ２００における各機能・装置の動作を制御する。例えば、制御部２１０は、実行すべき分割解析プログラムを特定する。例えば、データ保管部２６０に分割解析プログラムＰ（１）が格納されており、デバイス通信部２４０により分割解析プログラムＰ（１）に対応する元データを受信した場合、制御部２１０は、実行すべき分割解析プログラムとして分割解析プログラムＰ（１）を特定する。また、データ保管部２６０に分割解析プログラムＰ（２）が格納されており、他のエッジサーバ２００から分割解析プログラムＰ（１）の演算処理結果を受信した場合、制御部２１０は、実行すべき分割解析プログラムとして分割解析プログラムＰ（２）を特定する。
【００４０】
演算処理部２５０は、デバイスから受信されたデータや他のエッジサーバ２００から受信された演算処理結果に対して、対応する分割解析プログラムを用いて演算処理を行うための機能・装置である。演算処理部２５０は、制御部２１０により特定された分割解析プログラムを用いて演算処理を実行する。
【００４１】
エッジ通信部２３０は、エッジサーバ２００間の通信を行うための機能・装置である。エッジ通信部２３０は、分割解析プログラムの演算処理結果等を送受信する。例えば、エッジ通信部２３０は、転送先情報に含まれる宛先情報を用いて、分割解析プログラムの演算処理結果を次の処理を行うエッジサーバ２００に転送する。
【００４２】
なお、エッジ通信部２３０は、演算処理部２５０により、複数の分割解析プログラムのうちの最初の分割解析プログラムが実行された場合には、自身のエッジサーバ２００を示す宛先情報をデータ発生源情報として演算処理結果とともに次の処理を行うエッジサーバ２００に転送する。なお、複数の分割解析プログラムのうちの最初の分割解析プログラムを実行するエッジサーバ２００のことをデータ発生源のエッジサーバとも呼ぶ。
【００４３】
また、エッジ通信部２３０は、演算処理部２５０により、複数の分割解析プログラムのうちの最後の分割解析プログラムが実行された場合には、データ発生源情報を用いて、解析プログラムの最終的な処理結果を、最初の分割解析プログラムを実行したエッジサーバ２００（すなわち、データ発生源のエッジサーバ）に返却する。
【００４４】
続いて、図６のフローチャートを用いて、本実施の形態１にかかるバックエンドサービス３００の処理例について説明する。
【００４５】
まず、バックエンドサービス３００は、モデル分割部３３０により、学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割する（ステップＳ１０１）。
【００４６】
次に、バックエンドサービス３００は、プログラム割り振り部３４０により、複数の分割解析プログラムを複数のエッジサーバ２００に割り振り、エッジサーバ２００、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成する（ステップＳ１０２）。
【００４７】
次に、バックエンドサービス３００は、エッジ通信部３１０により、割り振り情報に基づいて、分割解析プログラム及び対応する転送先情報をエッジサーバ２００に配布する（ステップＳ１０３）。
【００４８】
続いて、図７のフローチャートを用いて、本実施の形態１にかかるエッジサーバ２００の処理例について説明する。
【００４９】
まず、エッジサーバ２００は、バックエンド通信部２２０により、分割解析プログラム及び転送先情報をバックエンドサービス３００から受信する（ステップＳ２０１）。
【００５０】
次に、エッジサーバ２００は、制御部２１０により、実行すべき分割解析プログラムを特定する（ステップＳ２０２）。
【００５１】
次に、エッジサーバ２００は、演算処理部２５０により、特定された分割解析プログラムを用いて演算処理を実行する（ステップＳ２０３）。
【００５２】
次に、エッジサーバ２００は、ステップＳ２０３にて実行された演算処理が、複数の分割解析プログラムのうちの最初の分割解析プログラムを用いて実行されたか否かを判断する（ステップＳ２０４）。
【００５３】
複数の分割解析プログラムのうちの最初の分割解析プログラムを用いて実行されたと判断した場合（ステップＳ２０４にてＹＥＳ）、エッジサーバ２００は、自身を示す宛先情報をデータ発生源情報とする（ステップＳ２０５）。そして、エッジサーバ２００は、エッジ通信部２３０により、転送先情報に含まれる宛先情報を用いて、データ発生源情報と演算処理結果を次の処理を行うエッジサーバ２００に転送する（ステップＳ２０６）。
【００５４】
他方、複数の分割解析プログラムのうちの最初の分割解析プログラムを用いて実行されたものではないと判断した場合（ステップＳ２０４にてＮＯ）、エッジサーバ２００は、ステップＳ２０３にて実行された演算処理が、複数の分割解析プログラムのうちの最後の分割解析プログラムを用いて実行されたか否かを判断する（ステップＳ２０７）。
【００５５】
複数の分割解析プログラムのうちの最後の分割解析プログラムを用いて実行されたものではないと判断した場合（ステップＳ２０７にてＮＯ）、エッジサーバ２００は、エッジ通信部２３０により、転送先情報に含まれる宛先情報を用いて、データ発生源情報と演算処理結果を次の処理を行うエッジサーバ２００に転送する（ステップＳ２０８）。
【００５６】
他方、複数の分割解析プログラムのうちの最後の分割解析プログラムを用いて実行されたと判断した場合（ステップＳ２０７にてＹＥＳ）、エッジサーバ２００は、エッジ通信部２３０により、データ発生源情報を用いて、解析プログラムの最終的な処理結果を最初の分割解析プログラムを実行したエッジサーバ（すなわち、データ発生源のエッジサーバ）に返却する（ステップＳ２０９）。
【００５７】
以上のように、本発明の実施の形態１にかかるバックエンドサービス３００は、学習済みモデルの情報を保管するデータ保管部３２０を備える構成としている。また、バックエンドサービス３００は、学習済みモデルを構成する解析プログラムを複数の分割解析プログラムに分割するモデル分割部３３０を備える構成としている。また、バックエンドサービス３００は、複数の分割解析プログラムを複数のエッジサーバ２００に割り振り、エッジサーバ２００、分割解析プログラム、及び転送先情報を対応付けた割り振り情報を生成してデータ保管部３２０に格納するプログラム割り振り部３４０を備える構成としている。さらに、バックエンドサービス３００は、割り振り情報に基づいて、分割解析プログラム及び対応する転送先情報をエッジサーバ２００に配布するエッジ通信部３１０を備える構成としている。これにより、本実施の形態１にかかるバックエンドサービス３００では、エッジサーバ２００に配布する分割解析プログラム間の関連を示す情報を、転送先情報のみとすることができる。すなわち、本実施の形態１にかかるバックエンドサービス３００では、学習済みモデルを用いた解析処理をエッジサーバにて安全に行うことができるバックエンドサービスを実現することができる。
【００５８】
また、本実施の形態１にかかるエッジサーバ２００は、バックエンドサービス３００との通信を行うバックエンド通信部２２０を備える構成としている。また、エッジサーバ２００は、バックエンド通信部２２０により受信された分割解析プログラム及び転送先情報を格納するデータ保管部２６０を備える構成としている。また、エッジサーバ２００は、実行すべき分割解析プログラムを特定する制御部２１０を備える構成としている。また、エッジサーバ２００は、制御部２１０により特定された分割解析プログラムを用いて演算処理を実行する演算処理部２５０を備える構成としている。さらに、エッジサーバ２００は、転送先情報に含まれる宛先情報を用いて、分割解析プログラムの演算処理結果を次の処理を行うエッジサーバに転送するエッジ通信部２３０を備える構成としている。これにより、本実施の形態１にかかるエッジサーバ２００を、攻撃者により盗難されたとしても、攻撃者は、データ保管部２６０に保存されている情報を読み取った場合に、転送先情報以外に分割解析プログラム間の関連を示す情報を得ることはできない。このため、学習済みモデルを取得するためには、他の複数のエッジサーバ２００が持つ情報が必要となるため、学習済みモデルの全体像把握を困難にすることができる。すなわち、本実施の形態１にかかるエッジサーバ２００では、学習済みモデルを用いた解析処理をエッジサーバにて安全に行うことができるエッジサーバを実現することができる。
【００５９】
また、本実施の形態１にかかる分散システム１０００は、上述したバックエンドサービス３００及びエッジサーバ２００を備える構成としている。これにより、本実施の形態１にかかる分散システム１０００は、学習済みモデルを用いた解析処理をエッジサーバにて安全に行うことができる分散システムを実現することができる。
【００６０】
さらに、本実施の形態１にかかる分散システム１０００では、複数の分割解析プログラムのうちの最初の分割解析プログラムを実行したエッジサーバ２００のエッジ通信部２３０は、自身のエッジサーバ２００を示す宛先情報をデータ発生源情報として演算処理結果とともに次の処理を行うエッジサーバ２００に転送する構成としている。また、分散システム１０００では、複数の分割解析プログラムのうちの最後の分割解析プログラムを実行したエッジサーバ２００のエッジ通信部２３０は、データ発生源情報を用いて、解析プログラムの最終的な処理結果を、最初の分割解析プログラムを実行したエッジサーバ２００に返却する構成としている。これにより、本実施の形態１にかかる分散システム１０００では、データ発生源のエッジサーバが解析プログラムの最終的な処理結果を取得することができる。このため、データ発生源のエッジサーバが、解析プログラムの最終的な処理結果を用いて、デバイスやバックエンドサービスに対するフィードバック等のアクションを行うことができる。
【００６１】
実施の形態２
続いて、図８のブロック図を用いて、本発明の実施の形態２にかかる分散システム２０００の構成例について説明する。図８の例では、本実施の形態２にかかる分散システム２０００は、エッジサーバ５００Ａと、エッジサーバ５００Ｂと、エッジサーバ５００Ｃと、エッジサーバ５００Ｄと、バックエンドサービス６００と、を備えている。なお、エッジサーバ５００Ａ〜５００Ｄとバックエンドサービス６００とは、ＷＡＮやインターネット等のネットワーク１０を介して接続されている。なお、エッジサーバ５００Ａ〜５００Ｄを総称してエッジサーバ５００と呼ぶ。なお、図８の例では、分散システム２０００が４つのエッジサーバ５００を備える構成を示しているが、分散システム２０００が備えるエッジサーバ５００の数は４つに限らない。
【００６２】
図８の例では、エッジサーバ５００Ａは、デバイス４００Ｘ＿Ａ及びデバイス４００Ｙ＿Ａと接続している。また、エッジサーバ５００Ｂは、デバイス４００Ｘ＿Ｂ及びデバイス４００Ｚ＿Ｂと接続している。また、エッジサーバ５００Ｃは、デバイス４００Ｙ＿Ｃ及びデバイス４００Ｚ＿Ｃと接続している。さらに、エッジサーバ５００Ｄは、デバイス４００Ｚ＿Ｄと接続している。なお、デバイス４００Ｘ＿Ａとデバイス４００Ｘ＿Ｂとは、同じ種類のデバイスであり、デバイス４００Ｘ＿Ａとデバイス４００Ｘ＿Ｂとを総称してデバイス４００Ｘと呼ぶ。また、デバイス４００Ｙ＿Ａとデバイス４００Ｙ＿Ｃとは、同じ種類のデバイスであり、デバイス４００Ｙ＿Ａとデバイス４００Ｙ＿Ｃとを総称してデバイス４００Ｙと呼ぶ。さらに、デバイス４００Ｚ＿Ｂとデバイス４００Ｚ＿Ｃとデバイス４００Ｚ＿Ｄとは、同じ種類のデバイスであり、デバイス４００Ｚ＿Ｂ〜４００Ｚ＿Ｄを総称してデバイス４００Ｚと呼ぶ。なお、デバイス４００Ｘ〜４００Ｚを総称してデバイス４００と呼ぶ。なお、それぞれのエッジサーバ５００に接続されるデバイス４００の数は、図８に示す数に限らない。
【００６３】
バックエンドサービス６００は、エッジ通信部６１０と、データ保管部６２０と、モデル分割部６３０と、プログラム割り振り部６４０と、を備えている。なお、バックエンドサービス６００の構成は、実施の形態１にかかるバックエンドサービス３００の構成と同様であり、図示を省略する。
【００６４】
エッジサーバ５００は、制御部５１０と、バックエンド通信部５２０と、エッジ通信部５３０と、デバイス通信部５４０と、演算処理部５５０と、データ保管部２６０と、を備えている。なお、エッジサーバ５００の構成は、実施の形態１にかかるエッジサーバ２００の構成と同様であり、図示を省略する。
【００６５】
続いて、図９を用いて、本実施の形態２にかかるデバイス４００と学習済みモデルと分割解析プログラムとの関係の例について説明する。図９の例では、デバイス４００Ｘ、デバイス４００Ｙ、デバイス４００Ｚの３種類のデバイス４００が存在し、それぞれに紐づけられた学習済みモデルを有している。デバイス４００Ｘ、デバイス４００Ｙ、デバイス４００Ｚは、温度計や監視カメラ等、それぞれが何らかのデバイス４００の種類を表している。デバイス４００は種類ごとに複数の個体が存在する可能性がある。図８の例では、デバイス４００Ｘが２つ、デバイス４００Ｙが２つ、デバイス４００Ｚが３つ存在する。同じ種類のデバイスからは同じ種類のデータ（元データ）が発生するものとする。
【００６６】
デバイス４００Ｘから発生する元データを入力とする学習済みモデルには、モデルＸ−１とモデルＸ−２がある。また、モデルＸ−１の解析プログラムをＰＸ−１とする。また、モデルＸ−２の解析プログラムをＰＸ−２とする。また、デバイス４００Ｙから発生する元データを入力とする学習済みモデルには、モデルＹ−１とモデルＹ−２がある。また、モデルＹ−１の解析プログラムをＰＹ−１とする。また、モデルＹ−２の解析プログラムをＰＹ−２とする。さらに、デバイス４００Ｚから発生する元データを入力とする学習済みモデルは、モデルＺ−１である。また、モデルＺ−１の解析プログラムをＰＺ−１とする。
【００６７】
モデル分割部６３０は、解析プログラムＰＸ−１を、分割解析プログラムＰＸ−１（１）、ＰＸ−１（２）、ＰＸ−１（３）に分割する。また、モデル分割部６３０は、解析プログラムＰＸ−２を、分割解析プログラムＰＸ−２（１）、ＰＸ−２（２）、ＰＸ−２（３）、ＰＸ−２（４）に分割する。モデル分割部６３０は、解析プログラムＰＹ−１、ＰＹ−２、ＰＺ−１についても図９に示すように、同様に分割する。なお、簡略化のために分割解析プログラムの数（分割数）を３〜４にする例を示しているが、より多くの分割解析プログラムに分割してもよい。
【００６８】
プログラム割り振り部６４０は、エッジサーバ５００に紐づけられたデバイス４００の情報等に基づいて、エッジサーバ５００への分割解析プログラムの割り振りを行う。例えば、プログラム割り振り部６４０は、以下に示すルール１〜４に基づいて分割解析プログラムの割り振りを行う。
【００６９】
ルール１は、学習済みモデルの連続した分割解析プログラムＰ（Ｍ）、Ｐ（Ｍ＋１）を同じエッジサーバ５００に極力割り振らないことである。連続した分割解析プログラムを同一のエッジサーバ５００で保持していると、当該エッジサーバ５００を盗難された場合に、学習済みモデルについて多くの情報を得られる恐れがある。ルール１によりこの恐れを解消することができる。また、Ｐ（２）とＰ（４）のように連続していない分割解析プログラムからでは、分割解析プログラム間の関連を知る手段がないため、同じ学習済みモデルに関する分割解析プログラムと判断することができず、安全性が保たれる。なお、すべてのエッジサーバ５００が同じデバイス４００を持つ場合等、例外的にＰ（１）、Ｐ（２）を同じエッジサーバ５００に割り振る可能性もある。しかしその場合であっても、そのエッジサーバ５００からＰ（３）以降の情報を取得することはできないため、大きな問題とはならない。
【００７０】
ルール２は、元データから入力を抽出する分割解析プログラムであるＰ（１）を、学習済みモデルに対応するデバイス４００を持つすべてのエッジサーバ５００に割り振ることである。例えば、ＰＸ−１（１）は、学習済みモデルＸ−１に対応するデバイス４００Ｘを持つエッジサーバ５００Ａ及びエッジサーバ５００Ｂに割り振る。なお、ルール２により、元データをエッジサーバ５００間で転送することによる通信負荷の増大を避けることができる。
【００７１】
ルール３は、Ｐ（１）以外の分割解析プログラム（＝中間処理用の分割解析プログラム）を、複数のエッジサーバ５００に重複しないように割り振ることである。ルール３により、次の分割解析プログラムを実行するエッジサーバ５００を一意に決定することができる。
【００７２】
ルール４は、ルール１〜３に反しない範囲で、それぞれのエッジサーバ５００に割り振られた分割解析プログラムの数が偏らないようにすることである。
【００７３】
モデルＸ−１の解析プログラムの割り振りをルール１〜４の通りに行うと、割り振り情報は、図１０のようになる。モデルＸ−１と紐づけられたデバイス４００Ｘを持つエッジサーバ５００は、エッジサーバ５００Ａとエッジサーバ５００Ｂである。このため、プログラム割り振り部６４０は、エッジサーバ５００Ａ及びエッジサーバ５００Ｂに、ＰＸ−１（１）を割り振る。
【００７４】
プログラム割り振り部６４０は、残りのＰＸ−１（２）、ＰＸ−１（３）を偏らないようにエッジサーバ５００Ｃとエッジサーバ５００Ｄに一つずつ割り振る。
【００７５】
ＰＸ−１（１）の実行後に、ＰＸ−１（２）を持つエッジサーバ５００Ｃへ演算処理結果を転送するために転送先情報が必要となる。このため、プログラム割り振り部６４０は、ＰＸ−１（２）を持つエッジサーバ５００Ｃの宛先情報を含む転送先情報ＤＸ−１（２）を、エッジサーバ５００Ａ及びエッジサーバ５００Ｂに持たせている。同様に、プログラム割り振り部６４０は、ＰＸ−１（３）を持つエッジサーバ５００Ｄの宛先情報を含む転送先情報ＤＸ−１（３）をエッジサーバ５００Ｃに持たせている。なお、ＰＸ−１（３）は、モデルＸ−１の最後の処理であるため、転送先情報は存在しない。
【００７６】
ＰＸ−１（３）の演算処理結果として学習済みモデルの出力が得られた後は、その出力を用いてデバイス４００Ｘやバックエンドサービス６００に対して何らかのフィードバックを行うことが想定される。このため、ＰＸ−１（３）の演算処理結果、すなわち解析プログラムＰＸ−１の最終的な処理結果は、データ発生源のエッジサーバに転送される。すなわち、解析プログラムＰＸ−１の最終的な処理結果は、ＰＸ−１（１）を持つエッジサーバ５００Ａ及びエッジサーバ５００Ｂに転送される。
【００７７】
エッジサーバ５００間で送受信される転送データは、図１１のような構造を持つ。すなわち、転送データには、データ発生源情報と、プログラム種別と、演算処理結果と、が含まれる。
【００７８】
エッジサーバ５００は、次に実行すべき分割解析プログラムＰ（Ｍ）の情報を、転送先情報Ｄ（Ｍ）から抽出し、プログラム種別として転送データに格納する。これにより、転送データを受信したエッジサーバ５００では、プログラム種別を参照することにより、複数種類ある分割解析プログラムの中から実行すべき分割解析プログラムが何かを判断することができる。
【００７９】
初めにデバイス４００から発生した元データを受け取ってＰ（１）の演算処理を行ったエッジサーバ５００は、自身の宛先を示す宛先情報をデータ発生源情報として転送データに格納する。これにより、データ発生源情報は、それ以降の処理を行うエッジサーバ５００に転送されていく。
【００８０】
それぞれのエッジサーバ５００は、分割解析プログラムの演算処理結果を転送データに格納する。また、それぞれのエッジサーバ５００は、転送先情報から抽出したプログラム種別を転送データに格納する。
【００８１】
モデルＸ−２の解析プログラムの割り振りを追加すると、割り振り情報は、図１２のようになる。図１２の例では、同じモデルＸ−２に対応する分割解析プログラムＰＸ−２（１）とＰＸ−２（４）がエッジサーバ５００Ａに割り振られている。しかし、ＰＸ−２（１）とＰＸ−２（４）は、連続した分割解析プログラムではないため、互いに同じ学習済みモデルに関する分割解析プログラムであることは判定できなくなっている。
【００８２】
また、図１２の例では、モデルＸ−１の最初の分割解析プログラムＰＸ−１（１）とモデルＸ−２の最初の分割解析プログラムＰＸ−２（１）を、エッジサーバ５００Ａ及びエッジサーバ５００Ｂのそれぞれが有している。この場合、制御部５１０は、データ発生源のデバイス４００と、データの種別等から実行すべき分割解析プログラムを決定する。また、一つのデータに対して複数の分割解析プログラム（例えば、ＰＸ−１（１）とＰＸ−２（１））を実行する可能性もある。例えば、デバイス４００Ｘが、３種類の異なるデータＸ−ａ、Ｘ−ｂ、Ｘ−ｃを発生することがあり、それぞれのデータ種別に対応する学習済みモデルが図１３のようになっていたとする。この例においては、デバイス４００Ｘを持つエッジサーバ５００が、Ｘ−ａのデータを受け取った場合、ＰＸ−１（１）を実行するようにすればよい。同様に、Ｘ−ｂのデータを受け取った場合には、ＰＸ−２（１）を実行し、Ｘ−ｃのデータを受け取った場合には、ＰＸ−１（１）とＰＸ−２（１）の両方を実行する。このような制御を行うためには、バックエンドサービス６００が、最初の分割解析プログラムであるＰ（１）とデバイス４００・データ種別との対応情報を、分割解析プログラムＰ（１）とともにエッジサーバ５００に配布しておけばよい。
【００８３】
デバイス４００Ｘ、４００Ｙ、４００Ｚに関する分割解析プログラムの割り振りをすべて行うと、割り振り情報は、図１４のようになる。
【００８４】
続いて、図１５〜図１７のフローチャートを用いて、エッジサーバ５００における分割解析プログラムの実行処理の流れについて説明する。
【００８５】
いずれかのデバイス４００からデータが発生すると、当該デバイス４００に接続されたエッジサーバ５００は、デバイス通信部５４０により、そのデータをデバイス４００から受信する（ステップＳ３０１）。
【００８６】
次に、エッジサーバ５００は、制御部５１０により、受信されたデータのデータ種別に応じて使用する分割解析プログラムを決定する（ステップＳ３０２）。
【００８７】
次に、エッジサーバ５００は、制御部５１０により、データを演算処理部５５０に渡す（ステップＳ３０３）。
【００８８】
次に、エッジサーバ５００は、演算処理部５５０により、受け取ったデータに対して、決定された分割解析プログラムを使用して演算処理を行う（ステップＳ３０４）。
【００８９】
次に、エッジサーバ５００は、制御部５１０により、演算処理結果を次のエッジサーバ５００に渡す転送データに格納する（ステップＳ３０５）。
【００９０】
次に、エッジサーバ５００は、制御部５１０により、ステップＳ３０４にて使用された分割解析プログラムに対応する転送先情報が存在するか否かを判断する（ステップＳ３０６）。具体的には、制御部５１０は、ステップＳ３０４にて使用された分割解析プログラムに対応する転送先情報がデータ保管部５６０に格納されているか否かを判断する。
【００９１】
対応する転送先情報が存在する場合（ステップＳ３０６にてＹＥＳ）、エッジサーバ５００は、制御部５１０により、プログラム種別を転送データに格納する（ステップＳ３０７）。
【００９２】
次に、エッジサーバ５００は、制御部５１０により、自身がデータ発生源のエッジサーバであるか否かを判断する（ステップＳ３０８）。
【００９３】
自身がデータ発生源のエッジサーバである場合（ステップＳ３０８にてＹＥＳ）、エッジサーバ５００は、制御部５１０により、自身を示す宛先情報をデータ発生源情報として転送データに格納する（ステップＳ３０９）。他方、自身がデータ発生源のエッジサーバではない場合（ステップＳ３０８にてＮＯ）、ステップＳ３０９をスキップしてステップＳ３１０に進む。
【００９４】
次に、エッジサーバ５００は、制御部５１０により、ステップＳ３０４にて使用された分割解析プログラムに対応する転送先情報から宛先情報を読み出し、転送データとともにエッジ通信部５３０に渡す（ステップＳ３１０）。
【００９５】
次に、エッジサーバ５００は、エッジ通信部５３０により、宛先情報にしたがって転送データを次のエッジサーバ５００に転送する（ステップＳ３１１）。
【００９６】
ステップＳ３１１にて転送された転送データを、次のエッジサーバ５００が、エッジ通信部５３０により受信する（ステップＳ３１２）。
【００９７】
次のエッジサーバ５００は、制御部５１０により、受信された転送データから演算処理結果を入力データ（すなわち、ステップＳ３０４にて用いるデータ）として取り出す（ステップＳ３１３）。また、次のエッジサーバ５００は、制御部５１０により、受信された転送データに含まれるプログラム種別を読み取り、当該プログラム種別に応じて使用する分割解析プログラムを決定する（ステップＳ３１４）。そして、次のエッジサーバ５００は、ステップＳ３１４の後に、ステップＳ３０３へ進む。以降、分割解析プログラムＰ（１）〜Ｐ（Ｎ）の処理がすべて完了するまでステップＳ３０３〜ステップＳ３１４を繰り返す。
【００９８】
なお、最後の分割解析プログラムであるＰ（Ｎ）の処理では、ステップＳ３０４にて使用された分割解析プログラムに対応する転送先情報が存在しない。このため、ステップＳ３０６にて、対応する転送先情報が存在しないと判断し（ステップＳ３０６にてＮＯ）、エッジサーバ５００は、制御部５１０により、自身がデータ発生源のエッジサーバであるか否かを判断する（ステップＳ３１５）。
【００９９】
自身がデータ発生源のエッジサーバではない場合（ステップＳ３１５にてＮＯ）、エッジサーバ５００は、制御部５１０により、データ発生源情報と転送データをエッジ通信部５３０に渡す（ステップＳ３１６）。
【０１００】
次に、エッジサーバ５００は、エッジ通信部５３０により、データ発生源情報にしたがって転送データをデータ発生源のエッジサーバ５００に転送する（ステップＳ３１７）。これにより、エッジサーバ５００は、データ発生源のエッジサーバ５００に出力を返却することができる。
【０１０１】
ステップＳ３１７にて転送された転送データを、データ発生源のエッジサーバ５００は、エッジ通信部５３０により受信する（ステップＳ３１８）。
【０１０２】
データ発生源のエッジサーバ５００は、制御部５１０により、受信された転送データから演算処理結果を取り出す（ステップＳ３１９）。なお、ここで取り出す演算処理結果は、学習モデルを用いた解析プログラムの最終的な処理結果である。
【０１０３】
また、データ発生源のエッジサーバ５００は、制御部５１０により、受信された転送データ内にプログラム種別が含まれていないことを判定し、解析処理の終了を判断する（ステップＳ３２０）。
【０１０４】
そして、データ発生源のエッジサーバ５００は、制御部５１０により、解析プログラムの最終的な処理結果をもとに、デバイス４００・バックエンドサービス６００へのフィードバック等の次のアクションを決定する（ステップＳ３２１）。
【０１０５】
ステップＳ３１５にて自身がデータ発生源のエッジサーバであると判断された場合（ステップＳ３１５にてＹＥＳ）、ステップＳ３１６〜ステップＳ３２０がスキップされ、ステップＳ３２１が実行される。
【０１０６】
以上のように、本発明の実施の形態２にかかる分散システム２０００では、エッジサーバ５００は、制御部５１０により、データ発生源情報、演算処理結果、及びプログラム種別を転送データに格納する構成としている。また、分散システム２０００では、エッジサーバ５００は、エッジ通信部５３０により、転送データの送受信を行う構成としている。さらに、分散システム２０００では、エッジサーバ５００は、制御部５１０により、受信された転送データに含まれるプログラム種別を用いて、複数種類ある分割解析プログラムの中から実行すべき分割解析プログラムを特定する構成としている。これにより、本実施の形態２にかかる分散システム２０００では、学習済みモデルが複数種類存在する場合であっても、エッジサーバ５００は、実行すべき分割解析プログラムを特定することができる。
【０１０７】
また、本実施の形態２にかかる分散システム２０００では、エッジサーバ５００は、制御部５１０により、演算処理を実行する際に用いた分割解析プログラムに対応する転送先情報がデータ保管部５６０に格納されている場合に、プログラム種別を転送データに格納する構成としている。また、分散システム２０００では、エッジサーバ５００は、演算処理を実行する際に用いた分割解析プログラムに対応する転送先情報がデータ保管部５６０に格納されていない場合に、プログラム種別を転送データに格納しない構成としている。なお、演算処理を実行する際に用いた分割解析プログラムに対応する転送先情報がデータ保管部５６０に格納されていない状況は、当該分割解析プログラムが、複数の分割解析プログラムのうちの最後の分割解析プログラムである場合に生じる。このため、本実施の形態２にかかる分散システム２０００では、エッジサーバ５００は、受信された転送データにプログラム種別が含まれていないことを判定することにより、最後の分割解析プログラムまでの処理が完了していることを判定することができる。
【０１０８】
さらに、本実施の形態２にかかる分散システム２０００では、バックエンドサービス６００は、エッジ通信部６１０により、複数の分割解析プログラムのうちの最初の分割解析プログラムとデータ種別との対応情報を、エッジサーバ５００にさらに配布する構成としている。また、分散システム２０００では、エッジサーバ５００は、制御部５１０により、最初の分割解析プログラムとデータ種別との対応情報を用いて、デバイス４００から受信されたデータのデータ種別に応じて、実行すべき最初の分割解析プログラムを特定する構成としている。これにより、本実施の形態２にかかる分散システム２０００では、エッジサーバ５００は、デバイス４００から受信されるデータのデータ種別が複数種類存在する場合であっても、デバイス４００から受信されたデータに対して実行すべき最初の分割解析プログラムを特定することができる。
【０１０９】
なお、上述した実施の形態１及び２では、分割解析プログラムを一つずつエッジサーバに割り振っていたが、これに限らない。例えば、分割解析プログラムをある単位でグループ化し、グループごとにエッジサーバに割り振るようにしてもよい。
【０１１０】
また、上述した実施の形態１及び２では、エッジサーバ全体でデータ転送用のネットワークを構築する構成としていたが、これに限らない。例えば、ネットワークへの通信負荷軽減のため、比較的近隣に配置されるエッジサーバ同士でＬＡＮ（Local Area Network）を構築し、そのＬＡＮ内で分割解析プログラムを分散するようにしてもよい。
【０１１１】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１１２】
２００、５００    エッジサーバ
２１０、５１０    制御部（制御手段）
２２０、５２０    バックエンド通信部（バックエンド通信手段）
２３０、５３０    エッジ通信部（第２のエッジ通信手段）
２４０、５４０    デバイス通信部（デバイス通信手段）
２５０、５５０    演算処理部（演算処理手段）
２６０、５６０    データ保管部（第２のデータ保管手段）
３００、６００    バックエンドサービス
３１０、６１０    エッジ通信部（第１のエッジ通信手段）
３２０、６２０    データ保管部（第１のデータ保管手段）
３３０、６３０    モデル分割部（モデル分割手段）
３４０、６４０    プログラム割り振り部（プログラム割り振り手段）
４００    デバイス
１０００、２０００    分散システム
【図１】
2019045970.tif 000004
【図２】
2019045970.tif 000005
【図３】
2019045970.tif 000006
【図４】
2019045970.tif 000007
【図５】
2019045970.tif 000008
【図６】
2019045970.tif 000009
【図７】
2019045970.tif 000010
【図８】
2019045970.tif 000011
【図９】
2019045970.tif 000012
【図１０】
2019045970.tif 000013
【図１１】
2019045970.tif 000014
【図１２】
2019045970.tif 000015
【図１３】
2019045970.tif 000016
【図１４】
2019045970.tif 000017
【図１５】
2019045970.tif 000018
【図１６】
2019045970.tif 000019
【図１７】
2019045970.tif 000020