(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-19
(45)【発行日】2022-08-29
(54)【発明の名称】データ処理装置、方法、コンピュータプログラム、及び、記録媒体
(51)【国際特許分類】
G06F 9/48 20060101AFI20220822BHJP
G06F 9/54 20060101ALI20220822BHJP
G06F 9/50 20060101ALI20220822BHJP
G06F 9/455 20060101ALI20220822BHJP
G06Q 50/04 20120101ALI20220822BHJP
G06Q 50/08 20120101ALI20220822BHJP
【FI】
G06F9/48 370
G06F9/54 D
G06F9/54 A
G06F9/50 150E
G06F9/455 150
G06Q50/04
G06Q50/08
(21)【出願番号】P 2020083614
(22)【出願日】2020-05-12
【審査請求日】2022-04-28
【早期審査対象出願】
(73)【特許権者】
【識別番号】319000436
【氏名又は名称】ラトナ株式会社
(74)【代理人】
【識別番号】100185878
【氏名又は名称】植田 晋一
(72)【発明者】
【氏名】高橋 智
(72)【発明者】
【氏名】北山 直樹
(72)【発明者】
【氏名】村山 大貴
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2020-71689(JP,A)
【文献】特開2012-150621(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 9/54
G06F 9/50
G06F 9/455
G06Q 50/04
G06Q 50/08
(57)【特許請求の範囲】
【請求項1】
入力データに対して複数のプロセスを連続的に適用して出力データを生成するデータ処理装置であって、
前記複数のプロセスのうちの一のプロセスである第1のプロセスは、第1の記憶領域に記憶されたデータに対して第1の処理を行った第1の処理済データと、前記第1のプロセスの後続の第2のプロセスを示す後続プロセス情報と、を含むデータファイルを生成し、
前記データファイルの前記後続プロセス情報に示された前記第2のプロセスは、少なくとも、前記第1の処理済データに対して第2の処理を行って第2の処理済データを生成
し、
前記データ処理装置は、さらに、前記第1のプロセスの処理終了後に、前記第2のプロセスに対して実行指令を送信する仲介部を備え、
前記仲介部は、
前記第1のプロセスにより前記データファイルが記憶されるデータファイル領域を定期的に監視し、
前記データファイル領域に前記データファイルが記憶されたことを検出すると、前記データファイルをデータベースに記憶するとともに、前記データファイルの前記後続プロセス情報に示される前記第2のプロセスに対して実行指令を送信する、データ処理装置。
【請求項2】
請求項1に記載のデータ処理装置において、
前記第2のプロセスは、前記実行指令を受信した後に、前記データファイル領域に記憶されている前記第1の処理済データに応じて、前記第2の処理を行う、データ処理装置。
【請求項3】
請求項1
または2に記載のデータ処理装置において、
前記複数のプロセスはコンテナ化され、当該コンテナ化されたプロセスを動作させるハードウェアリソースはオーケストレーションツールにより管理される、データ処理装置。
【請求項4】
請求項
3に記載のデータ処理装置において、
前記第1のプロセスは、前記第2のプロセスとの間に確立されるコンテナ間通信によって、後続の前記第2のプロセスの処理を開始させる、データ処理装置。
【請求項5】
請求項
4に記載のデータ処理装置であって、
前記コンテナ間通信は、リモートプロシジャーコールフレームワークを用いた通信である、データ処理装置。
【請求項6】
請求項2から
5のいずれか1項に記載のデータ処理装置において、
前記第1のプロセスは、前記第1の処理済データに応じて、複数の前記プロセスの中から後続の前記第2のプロセスを選択する、データ処理装置。
【請求項7】
請求項
1から6のいずれか1項に記載のデータ処理装置であって
前記データファイル領域は、前記第1のプロセスと論理的に紐づけられた領域に構成される、データ処理装置。
【請求項8】
請求項
1から7のいずれか1項に記載のデータ処理装置であって
さらに、前記複数のプロセスからアクセスできる汎用データベースを備え、
前記仲介部は、前記データファイルを前記汎用データベースに記憶する、データ処理装置。
【請求項9】
請求項1から8のいずれか1項に記載のデータ処理装置であって、
前記入力データは、前記複数のプロセスにおいて分割されて、後続の前記プロセスに提供される、データ処理装置。
【請求項10】
請求項1から9のいずれか1項に記載のデータ処理装置であって、
前記連続的に適用される複数のプロセスのうち、処理順が早い前記プロセスは、該処理順が遅い前記プロセスと比較すると、実行頻度が高い、データ処理装置。
【請求項11】
請求項1から10のいずれか1項に記載のデータ処理装置であって、
前記連続的に適用される複数のプロセスは、機械学習に基づく推論処理を含む、データ処理装置。
【請求項12】
入力データに対して複数のプロセスを連続的に適用して出力データを生成するデータ処理装置であって、前記複数のプロセスのうちの一のプロセスである第1のプロセスと、前記複数のプロセスのうちの他のプロセスであって前記第1のプロセスの後続の第
2のプロセスと
、前記第1のプロセスの処理終了後に、前記第2のプロセスに対して実行指令を送信する仲介部とを備えるデータ処理装置の制御方法であって、
前記第1のプロセスは、第1の記憶領域に記憶されたデータに対して第1の処理を行った第1の処理済データと、前記第1のプロセスの後続の第2のプロセスを示す後続プロセス情報と、を含むデータファイルを生成し、
前記第2のプロセスは、少なくとも、前記第1の処理済データに対して第2の処理を行って第2の処理済データを生成
し、
前記仲介部は、
前記第1のプロセスにより前記データファイルが記憶されるデータファイル領域を定期的に監視し、
前記データファイル領域に前記データファイルが記憶されたことを検出すると、前記データファイルをデータベースに記憶するとともに、前記データファイルの前記後続プロセス情報に示される前記第2のプロセスに対して実行指令を送信する、データ処理装置の制御方法。
【請求項13】
請求項12に記載のデータ処理装置の制御方法において、
前記第2のプロセスは、前記実行指令を受信した後に、前記データファイル領域に記憶されている前記第1の処理済データに応じて、前記第2の処理を行う、データ処理装置の制御方法。
【請求項14】
入力データに対して複数のプロセスを連続的に適用して出力データを生成するデータ処理装置であって、前記データ処理装置は、前記複数のプロセスのうちの一のプロセスである第1のプロセスと、前記複数のプロセスのうちの他のプロセスであって前記第1のプロセスの後続の第
2のプロセスと
、前記第1のプロセスの処理終了後に、前記第2のプロセスに対して実行指令を送信する仲介部とを備えるデータ処理装置の制御に用いられるコンピュータプログラムであって、
前記コンピュータプログラムは、
前記第1のプロセスに対して、第1の記憶領域に記憶されたデータに対して第1の処理を行った第1の処理済データと、前記第1のプロセスの後続の第2のプロセスを示す後続プロセス情報と、を含むデータファイルを生成させ、
前記第2のプロセスに対して、少なくとも、前記第1の処理済データに対して第2の処理を行って第2の処理済データを生成させ
、
前記仲介部に対して、
前記第1のプロセスにより前記データファイルが記憶されるデータファイル領域を定期的に監視させ、
前記データファイル領域に前記データファイルが記憶されたことを検出すると、前記データファイルをデータベースに記憶するとともに、前記データファイルの前記後続プロセス情報に示される前記第2のプロセスに対して実行指令を送信させる、プログラム。
【請求項15】
請求項14に記載のデータ処理装置の制御に用いられるコンピュータプログラムにおいて、
前記第2のプロセスに対して、前記実行指令を受信した後に、前記データファイル領域に記憶されている前記第1の処理済データに応じて、前記第2の処理を行わせる、データ処理装置の制御に用いられるコンピュータプログラム。
【請求項16】
入力データに対して複数のプロセスを連続的に適用して出力データを生成するデータ処理装置であって、前記データ処理装置は、前記複数のプロセスのうちの一のプロセスである第1のプロセスと、前記複数のプロセスのうちの他のプロセスであって前記第1のプロセスの後続の第
2のプロセスと
、前記第1のプロセスの処理終了後に、前記第2のプロセスに対して実行指令を送信する仲介部とを備えるデータ処理装置の制御に用いられるコンピュータプログラムを格納した記録媒体であって、
前記コンピュータプログラムは、
前記第1のプロセスに対して、第1の記憶領域に記憶されたデータに対して第1の処理を行った第1の処理済データと、前記第1のプロセスの後続の第2のプロセスを示す後続プロセス情報と、を含むデータファイルを生成させ、
前記第2のプロセスに対して、少なくとも、前記第1の処理済データに対して第2の処理を行って第2の処理済データを生成させ
、
前記仲介部に対して、
前記第1のプロセスにより前記データファイルが記憶されるデータファイル領域を定期的に監視させ、
前記データファイル領域に前記データファイルが記憶されたことを検出すると、前記データファイルをデータベースに記憶するとともに、前記データファイルの前記後続プロセス情報に示される前記第2のプロセスに対して実行指令を送信させる、プログラムを格納した記録媒体。
【請求項17】
請求項16に記載のデータ処理装置に用いられるコンピュータプログラムを格納した記録媒体において、
前記第2のプロセスに対して、前記実行指令を受信した後に、前記データファイル領域に記憶されている前記第1の処理済データに応じて、前記第2の処理を行わせる、プログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、データ処理装置の制御方法、データ処理装置の制御に用いるコンピュータプログラム、及び、その記録媒体に関する。
【背景技術】
【0002】
製造、建設及び販売などの現場においては、取得されたデータを逐次解析することで、製造物の良否判定、設備の診断、及び、販売員へのフィードバックなどが行われている。近年、各種センサの精度向上や価格低下に伴って取得されるデータが増大しており、大量なデータを逐次処理する必要性が増大している。
【0003】
このような大量のデータに対して連続的に処理を行うデータ処理装置の一例が、特許文献1に開示されている。特許文献1には、入力画像データに対して所定のフィルタ処理を行った後、フィルタ処理されたデータに対して予め設定された解析処理を行う解析処理装置が開示されている。
【0004】
また、近年、システム開発の負担を軽減するために、一つのシステムを互いに独立な小単位のコンポーネントの集合として設計するマイクロサービスアーキテクチャが注目を集めつつある。マイクロサービスアーキテクチャによれば、処理速度の向上や各コンポーネント単位での変更の容易化等のメリットが得られる。なお、マイクロサービスアーキテクチャは、例えばkubernates等のコンテナオーケストレーション技術を利用して実装されることがある。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に開示された解析処理装置は、所望の解析処理を行うための専用システムとして設計されている。そのため、システム構成に変更等がある場合、例えば、各処理の順序の変更や処理の追加や削除等がある場合には、対応が困難であったり、その変更の工数が大きくなったりするおそれがある。
【0007】
本発明は上述の課題を解決するためになされたものであり、その目的は、装置内のシステム構成の変更等にも柔軟に対応可能なデータ処理装置を提供することにある。
【課題を解決するための手段】
【0008】
上述の課題は、以下の構成を有するデータ処理装置等により解決することができる。
【0009】
すなわち、本発明の一態様に係るデータ処理装置は、入力データに対して複数のプロセスを連続的に適用して出力データを生成する。データ処理装置においては、複数のプロセスのうちの一のプロセスである第1のプロセスは、第1の記憶領域に記憶されたデータに対して第1の処理を行った第1の処理済データと、第1のプロセスの後続の第2のプロセスを示す後続プロセス情報と、を含むデータファイルを生成し、データファイルの後続プロセス情報に示された第2のプロセスは、少なくとも、第1の処理済データに対して第2の処理を行って第2の処理済データを生成する。
【発明の効果】
【0010】
本発明の一態様によれば、第1のプロセスは、第1の処理済データと後続プロセス情報とを示すデータファイルを作成する。そして、データファイルに基づいて、後続プロセス情報に示された第2のプロセスが、第1の処理済データを入力として処理を行う。これにより、第1のプロセスから第2のプロセスに第1の処理済データが提供される。
【0011】
このように、第1の処理済データと後続プロセス情報とが含まれるデータファイルが生成され、このデータファイルに基づいて後続の第2のプロセスに第1の処理済データが送信されることにより、プロセス間の処理結果の送信を柔軟に行えるようになる。従って、各プロセスの処理の順序の変更、追加や削除等がある場合のように、プロセスの処理順が動的に変更される場合などであっても、システムに大きな変更を加える必要がない。このようにして、処理装置内のシステム構成の変更等にも柔軟に対応することができる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、本実施形態のデータ処理装置を含むデータ処理システムのブロック図である。
【
図2】
図2は、データ処理システムの概略構成図である。
【
図3】
図3は、MEC装置のハードウェア構成図である。
【
図4】
図4は、一般的なプログラム構成を示す図である。
【
図5】
図5は、本実施形態のプログラム構成を示す図である。
【
図6】
図6は、複数のマイクロサービスの処理の説明図である。
【
図7】
図7は、
図7は、第1マイクロサービスから第2マイクロサービスへの処理済データの送信処理を示すフロー図である。
【
図8】
図8は、送信データ領域の一例を示す図である。
【
図9】
図9は、情報処理装置における処理の一例を示す概念図である。
【
図10】
図10は、比較例の情報処理装置における処理を示す概念図である。
【
図11】
図11は、送信データ領域の他の一例を示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の実施形態について説明する。
【0014】
図1は、本実施形態のデータ処理装置を備えるデータ処理システムの構成を示すブロック図である。
【0015】
データ処理システム10は、一例として、工場や建設現場などのローカル環境において、製造工程や建設工程などの各工程の監視、及び、各工程に用いられる作業機器を制御するシステムである。データ処理システム10においては、LAN11を介して、MEC(Mobile Edge Computing)装置12が、ロボットアーム13、第1カメラ14、及び、第2カメラ15と接続されておいる。また、ロボットアーム13は角度センサ16を備えており、MEC装置12は、ロボットアーム13経由で角度センサ16のセンサ情報を取得する。
【0016】
MEC装置12は、データ処理装置の一例であって、ローカル環境において、製造工程で用いられるロボットアーム13の制御及び管理を行う。詳細には、MEC装置12は、センサにより取得されるセンサ情報を用いて、すなわち、第1カメラ14、第2カメラ15により撮影された動画や、角度センサ16により取得される角度情報等を用いて、ロボットアーム13により製造される製造物の良否を判定しながら、ロボットアーム13を制御する。
【0017】
データ処理システム10は、WAN(Wide Area Network)20に接続され、WAN20を介してターミナル21及び、データストレージ22と通信可能に構成されている。このように、データ処理システム10は、WAN20を介して接続されるターミナル21及び、データストレージ22と一体となって、監視システム100を構成する。なお、このようなローカル環境に閉じない監視システム100が、データ処理システムと称されることもある。
【0018】
ターミナル21は、表示部を備える機器であって、例えば、パーソナルコンピュータである。ターミナル21は、データ処理システム10において第1カメラ14、第2カメラ15、及び、角度センサ16により取得されるセンサ情報、並びに、それらのセンサ情報の解析結果を表示する。
【0019】
データストレージ22は、データ処理システム10において取得されたセンサ情報を蓄積するとともに、MEC装置12の制御や機械学習に用いられるプログラムを格納する。そのため、MEC装置12は、システム構築時や更新時において、データストレージ22からプログラムのイメージファイルを取得する。
【0020】
データ処理システム10によって取得されたセンサ情報等は、一旦、MEC装置12内に記憶され、バッチ処理により数時間~数日の所定の周期でデータストレージ22にアップロードされる。そして、データストレージ22においてアップロードされたセンサ情報を用いて機械学習が行われ、機械学習を経た学習済モデルがMEC装置12へとダウンロードされることで、データ処理システム10の更新が行われる。
【0021】
なお、後述のようにMEC12はオーケストレーションツール43を備えるため、MEC装置12は、システム構築時や更新時において、データストレージ22からプログラムのイメージファイルを取得(デプロイ)する。また、学習済モデル等の更新頻度の高いプログラムは、オーケストレーションツール43の提供する機能を用いてMEC装置12に定期的にデプロイすることで、その更新を容易に行うことができる。
【0022】
図2は、データ処理システム10の概略構成図である。
【0023】
この図によれば、ベルトコンベア17上に複数の製品18が配置されており、ベルトコンベア17により搬送される製品18に対してロボットアーム13が所定の工程における作業を行う。MEC装置12は、有線LANを介して接続されたロボットアーム13を制御する。また、MEC装置12は、ロボットアーム13を介して角度センサ16からセンサ情報を取得するとともに、無線LANを介して第1カメラ14、及び、第2カメラ15から撮影データを取得する。
【0024】
MEC装置12は、第1カメラ14及び第2カメラ15により異なる角度から撮影された撮影データを用いて、ロボットアーム13による作業後の製品18の良否を判定する。また、MEC装置12は、角度センサ16により取得される角度データを用いて、ロボットアーム13の作業の適否を判断する。このように、MEC装置12は、撮影データ及び角度データ等のセンサ情報を用いて、ロボットアーム13による作業を管理することができる。
【0025】
図3は、MEC装置12のハードウェア構成図である。
【0026】
MEC装置12は、全体を制御するCPU(Central Processing Unit)及びGPU(Graphics Processing Unit)により構成される制御部31と、ROM(Read Only Memory)、RAM(Random Access Memory)、及び/又はハードディスク等により構成され、プログラムや各種のデータ等を記憶する記憶部32と、外部機器とのデータの入出力を行う入出力ポート33と、LAN11等を介して通信を行う通信部34と、ディスプレイ、LED、又はスピーカ等からなりデータに応じた表示を行う表示部35と、キーボード等の外部からの入力を受け付ける入力部36と、を備える。制御部31、記憶部32、入出力ポート33、通信部34、表示部35、及び、入力部36は、バス接続により互いに通信可能に構成されている。
【0027】
記憶部32にはプログラムが記憶されており、記憶されたプログラムが所定の動作をすることにより、入力されたデータに対して所定の処理を行うシステムを構成するMEC装置12が構成される。また、通信部34は、有線及び無線を介して、LAN接続及びシリアル通信等が可能に構成されており、ロボットアーム13、第1カメラ14、及び、第2カメラ15との間の通信に用いられる。
【0028】
図4、5は、MEC装置12のソフトウェア構成図である。本実施形態においては、コンテナ技術によりそれぞれのアプリケーションがコンテナ化されるとともに、オーケストレーションツールによりハードウェアリソースの管理がされている。
図4には、このような構成における一般的なプログラム構成が示されている。
図5には、本実施形態の具体的なプログラム構成が示されている。なお、これらのソフトウェア構成は、MEC装置12の記憶部32にプログラムが記憶されることで、実現されている。
【0029】
図4に示されるように、MEC装置12には、オペレーションシステム(OS)41がインストールされている。さらに、OS41には、コンテナ環境の構築及びコンテナ環境におけるアプリケーションの実行を行うコンテナエンジン42、及び、コンテナ環境のハードウェアリソースを管理するオーケストレーションツール43が設けられている。
【0030】
コンテナエンジン42は、ハードウェアリソース等を仮想化することで論理的なコンテナ領域を形成する。そして、アプリケーションは、コンテナ環境での動作に用いるライブラリと一体的に構成されている。その結果、コンテナ化されたアプリケーションは、コンテナ領域で動作する。
【0031】
なお、このようなアプリケーションとライブラリとを一体的に構成することを、コンテナ化と称されることがある。また、コンテナ化されたアプリケーションは、単にコンテナと称されることもある。このように、コンテナエンジン42を導入することでコンテナ環境が構築され、アプリケーションをコンテナ化することで、コンテナ環境においてコンテナの実行が可能となる。
【0032】
オーケストレーションツール43は、コンテナエンジン42によって仮想化されたハードウェアリソースを管理(オーケストレーション)する。
【0033】
詳細には、オーケストレーションツール43は、コンテナ化されたアプリケーションが実行される環境として、クラスタ44と称される論理領域を構築する。クラスタ44には、クラスタ44の全体を管理するマスタ45と、アプリケーションの実行環境であるノード46とが設けられる。マスタ45は、コンテナ47の実行環境であるノード46のハードウェアリソースの管理を行う。
【0034】
ノード46においては、アプリケーションがライブラリと一体となって構成されるコンテナ47が設けられ、1以上のコンテナ47(
図4においては2つのコンテナ47)が、ポッド48という単位で管理されている。なお、ポッド48は、1または2以上のコンテナ47により構成される。ポッド48は、ノード46内においてポッド管理ブロック49によって管理される。なお、ポッド管理ブロック49は、マスタ45からの指示に従って、ノード46におけるリソース管理を行う。
【0035】
このように、コンテナエンジン42及びオーケストレーションツール43が導入された環境においては、コンテナ化されたアプリケーションはポッド48の単位で管理される。そして、ポッド48は、クラスタ44内のノード46において実行される。なお、コンテナ化されていないアプリケーション(
図4において不図示)は、クラスタ44のリソースを用いずに動作されてもよい。このようなコンテナ化されていないアプリケーションは、クラスタ44内のポッド48と双方向に通信することができる。
【0036】
本実施形態においては、クラスタ44内に1つのノード46が設けられる例について説明したが、これに限らない。クラスタ44内に複数のノード46が設けられてもよい。また、本実施形態においては、1つのMEC装置12のハードウェアリソースを用いてクラスタ44が構成される例について示したが、これに限らない。2以上の異なるデバイスのハードウェアリソースを用いてクラスタ44が構成されてもよい。オーケストレーションツール43は、1以上のハードウェアのリソースを用いて1以上のクラスタ44を構成することができる。
【0037】
図5は、本実施形態におけるソフトウェア構成の詳細を示す図である。
【0038】
この図においては、ノード46内に、所定の機能を有するポッド48として、データスタック51、フロントエンド52、及び、マイクロサービス53が設けられている。データスタック51、フロントエンド52、及び、マイクロサービス53は、コンテナ化されており、クラスタ44内のノード46において動作する。
【0039】
また、機械学習に関するプログラムは、クラスタ44の外に設けられる。詳細には、ニューラルネットワークライブラリ54は、コンテナ化されずにOS41上に配置されて、コンテナ化されたデータスタック51、フロントエンド52、及び、マイクロサービス53と相互に通信することができる。
【0040】
以下では、データスタック51、フロントエンド52、及び、マイクロサービス53、並びに、ニューラルネットワークライブラリ54の詳細な構成について説明する。
【0041】
データスタック51は、データベースに関連する汎用アプリケーションである。データスタック51は、一例としては、ドキュメント指向で構成されたNoSQLデータベースプログラムとして分類されうる。また、データスタック51は、スキーマを有するJSON形式のデータを取り扱ってもよい。データスタック51により、データエンジニアリング、データ準備、及び、エッジでのAI環境のコアとなるデータスタックを提供することができる。データスタック51の一例としては、MongoDBなどが挙げられる。
【0042】
フロントエンド52は、ユーザインターフェースに特化した汎用アプリケーションである。フロントエンド52は、記録が必要かつ短時間で変化するようなデータの取得に適したライブラリを用いて、単一ページやモバイルアプリケーションの開発に適した形式での表示を行う。これにより、MEC装置12に関すユーザインターフェースやダッシュボードについての開発負荷を低減するとともに、プログラムの自由度を高めることができる。フロントエンド52の一例としては、Reactなどが挙げられる。
【0043】
マイクロサービス53は、第1カメラ14、第2カメラ15、及び、角度センサ16などのセンサにより取得されるセンサ情報に対して、所定の処理を行うアプリケーションである。MEC装置12においては、マイクロサービス53は複数設けられており、連続して複数のマイクロサービス53が処理を行う。具体的には、ある工程のマイクロサービス53により行われる画像解析、物体検知等の種々の処理結果に対して、次工程のマイクロサービス53がさらなる処理を行う。なお、これらの複数のマイクロサービス53による処理順は一定ではなく処理結果に応じて動的に決定されうる。
【0044】
ニューラルネットワークライブラリ54は、複数の層により構成されたニューラルネットワーク等の種々のアルゴリズムを備えるライブラリである。ニューラルネットワークライブラリ54は、入力データに対して推論処理を行うことで出力を行う。PyTorch、TensorFlowは、ニューラルネットワークライブラリ54の一例である。なお、マイクロサービス53は、ニューラルネットワークライブラリ54へアクセスすることにより、その処理の中に機械学習処理や学習済モデル等を利用した推論処理を組み込むことができる。
【0045】
図6は、複数のマイクロサービス53の処理の説明図である。上述のように、MEC装置12においては、複数のマイクロサービス53が連続して処理を行っている。この図の例においては、連続的に処理を行う複数のマイクロサービス53のうちの3つのマイクロサービス53が示されている。
【0046】
この図においては、第1マイクロサービス531の処理結果に応じて、第2マイクロサービス532、又は、第3マイクロサービス533が処理を行うものとする。さらに、第1マイクロサービス531から後続のマイクロサービス53への処理済データの提供を仲介するサービスブローカ61が設けられている。以下の例においては、サービスブローカ61は、コンテナ化されたマイクロサービス53の1つとして示すが、コンテナ化されないアプリケーションであってもよい。
【0047】
この例においては、第1マイクロサービス531は、定められた処理を終えると、当該処理の後続のマイクロサービス53を示す情報や、その後続のマイクロサービス53へと送信する処理済データ等を記録するデータファイルを自身の送信データ領域721に記録する。そして、この例においては、第1マイクロサービス531は、送信データ領域72に記憶されたデータファイルに含まれる処理済データを、後続の第2マイクロサービス532の受信データ領域712へと送信する。なお、後続のマイクロサービス53が第3マイクロサービス533である場合には、第1マイクロサービス531は、送信データ領域72に記憶されたデータファイルに含まれる処理済データを、後続の第3マイクロサービス533の受信データ領域713へと送信する。
【0048】
同時に、サービスブローカ61は、各マイクロサービス53においてデータファイルが記録される送信データ領域72を周期的に監視しており、第1マイクロサービス531がデータファイルを送信データ領域72に記録したことを確認すると、そのデータファイルを取得して、MEC装置12内のデータベースへと記録する。そして、サービスブローカ61は、データファイルの後続マイクロサービスに示された後続の第2マイクロサービス532に対して、処理の実行指令を送信する。
【0049】
第2マイクロサービス532は、第1マイクロサービス531からの処理済データ、及び、サービスブローカ61からの実行指令を受信すると、第1マイクロサービス531の処理済データに対して所定の第2処理を行う。そして、後続のマイクロサービス53に対して、自身の処理済データを送信する。なお、本実施形態においては、第1マイクロサービス531の処理において、入力されたデータの分割処理が行われており、後続のマイクロサービス53の処理時間の短縮化を図ることができる。なお、データの分割処理は、第1マイクロサービス531の前後の工程の他のマイクロサービス53によって行われてもよい。
【0050】
このように、マイクロサービス53は、それぞれ、自身と対応付けられた記憶領域に、処理済データの送受信に用いられる受信データ領域71、及び、送信データ領域72を備える。受信データ領域71には、前工程のマイクロサービス53から受信する処理済データが記憶され、送信データ領域72には、処理済データ及び後続マイクロサービス情報を示すデータファイルが記憶される。データファイルに記録された処理済データは、後続のマイクロサービス53へ送信される。受信データ領域71、及び、送信データ領域72に記憶されたデータは、短期的に保存され、任意のタイミングで消去される。
【0051】
送信データ領域72に記憶されるデータファイルには、自工程の処理済データ、及び、後続のマイクロサービス53を示す後続マイクロサービス情報以外に、他の情報が含まれていてもよい。そのため、図示されるように、受信データ領域71は、送信データ領域72よりもデータ長が短くなる傾向にある。これは、送信データ領域72には、処理済データに加えて、後続マイクロサービス情報及び他の情報が記憶されるためである。また、このようなデータファイルには、カンバン生産方式に用いられるような自工程のアウトプットと後続工程とが示されることとなる。
【0052】
一例として、受信データ領域71、及び、送信データ領域72は、マイクロサービス53と対応付けられた記憶領域として、マイクロサービス53が実行されるコンテナ領域に設けられる。
【0053】
また、サービスブローカ61は、各マイクロサービス53の送信データ領域72に記録されるデータファイルを取得して、MEC装置12内のデータベースへと記録する。データファイルが記録されるデータベースは、データスタック51により構成されており、MEC装置12内のマイクロサービス53による処理結果の全てを記録することができる。データベースに記録されたデータファイルは、バッチ処理により数時間~数日の所定の周期でデータストレージ22にアップロードされた後に、機械学習等に用いられる。
【0054】
図示されるように、第1マイクロサービス531は、そのコンテナ実行環境と対応付けられた領域内に受信データ領域711、及び、送信データ領域721を備える。同様に、第2マイクロサービス532は、受信データ領域712、及び、送信データ領域722を備え、第3マイクロサービス533は、受信データ領域713、及び、送信データ領域723を備える。これらの、受信データ領域71及び送信データ領域72は、サービスブローカ61によってデータファイルが記録されるデータベースとは、異なる領域に設けられる。
【0055】
以下では、この図に示されるような、第1マイクロサービス531の送信データ領域721に記憶されたデータファイルのうちの処理済みデータを、次工程の第2マイクロサービス532へと送信し、第2マイクロサービス532が受信データ領域712へと記録する処理の詳細について説明する。同時に、サービスブローカ61は、第1マイクロサービス531のデータファイルを取得してデータベースに記録するとともに、後続の第2マイクロサービス532へと実行指令を送信する。なお、第1マイクロサービス531においては、前工程のマイクロサービス53から受信した前工程の処理済データが受信データ領域711に記憶され、その記憶された処理済データに対して第1マイクロサービス531が第1の処理を行ったものとする。
【0056】
図7は、第1マイクロサービス531から第2マイクロサービス532への処理済データの提供を示すフロー図である。以下、このフロー図に示されるそれぞれの処理について説明する。
【0057】
なお、この図においては、サービスブローカ61、第1マイクロサービス531、及び、第2マイクロサービス532のそれぞれの処理が時系列に示されている。なお、後続のマイクロサービス53は、参考のために記載されており、この図においては処理を行っていない。これらの処理は互いに連携しており、実線又は点線の矢印でその連携が示されている。
【0058】
まず、サービスブローカ61の処理について説明する。
【0059】
ステップS701において、サービスブローカ61は、周期的に、各マイクロサービス53の送信データ領域72へアクセスする。これらの送信データ領域72はリスト化されてMEC装置12内に保持されており、サービスブローカ61は、このリストを参照することにより、各マイクロサービス53の送信データ領域72にアクセスすることができる。
【0060】
ステップS702において、サービスブローカ61は、ステップS701においてアクセスした複数の送信データ領域72のうち、いずれかの送信データ領域72にデータファイルが記録されているか否かを判定する。送信データ領域72のいずれかにデータファイルが記憶されている場合には(S702:YES)、サービスブローカ61は、次にステップS703の処理を行う。送信データ領域72のいずれにもデータファイルが記憶されていない場合には(S702:NO)、サービスブローカ61は、次にステップS701の処理を再度行う。
【0061】
ステップS703において、サービスブローカ61は、ステップS702においてデータファイルが記憶されていると判定された第1マイクロサービス531の送信データ領域721から、記憶されているデータファイルを取得する。
【0062】
なお、サービスブローカ61は、送信データ領域721のアドレスを予め取得しており、直接そのアドレスにアクセスして、データファイルを取得する。なお、別の形態として、サービスブローカ61は、第1マイクロサービス531に対して送信データ領域72のデータの有無を問い合わせ、第1マイクロサービス531からの応答により、送信データ領域721に記憶されたデータファイルの有無やその内容を確認してもよい。
【0063】
ステップS704において、サービスブローカ61は、ステップS703において取得したデータファイルに含まれる後続マイクロサービス情報を参照する。これにより、サービスブローカ61は、第1マイクロサービス531の後続のマイクロサービス53として、第2マイクロサービス532を特定することができる。
【0064】
ステップS705において、サービスブローカ61は、ステップS703において取得したデータファイルの後続マイクロサービス情報に示される第2マイクロサービス532に対して、通信経路の確率を要求する。
【0065】
ステップS706において、サービスブローカ61は、ステップS705で確立した通信経路を介して、後続の第2マイクロサービス532に対して実行指令を送信する。
【0066】
なお、ここで確立される通信経路においては、gRPCのような、リモートプロシジャーコールフレームワーク(Remote Procedure Call Framework)を活用した通信が行われており、従来のHTTPベースの通信等と比較すると通信速度が速いという特徴がある。また、このような通信経路を確立して簡易な通信を行うことは、サイドカー通信と称されることがある。
【0067】
ステップS707において、サービスブローカ61は、ステップS703において取得したデータファイルを、MEC装置12内のデータベースに記録する。このようにしてデータベースには、MEC装置12内のマイクロサービス53により生成されるデータファイルの全てが記録されることとなる。そのため、MEC装置12内の処理結果の解析が容易になる。
【0068】
このようなステップS701~707の処理を終えると、サービスブローカ61は再びステップS701の処理を行う。
【0069】
次に、第1マイクロサービス531の処理について説明する。
【0070】
ステップS711において、第1マイクロサービス531は、サービスブローカ61から処理の実行指令を受信しているか否かを判定する。実行指令を受信している場合には(S711:YES)、第1マイクロサービス531は、次にステップS712の処理を行う。実行指令を受信していない場合には(S712:NO)、第1マイクロサービス531は、次にステップS711の処理を再度行う。
【0071】
ステップS712において、第1マイクロサービス531は、前工程のマイクロサービス53から既に処理済データを受信しており、受信データ領域711にその処理済データが記憶されているか否かを判定する。受信データ領域711に処理済データが記憶されている場合には(S712:YES)、第1マイクロサービス531は、次にステップS713の処理を行う。受信データ領域711に処理済データが記憶されていない場合には(S712:NO)、第1マイクロサービス531は、次にステップS711の処理を再度行う。
【0072】
ステップS713において、第1マイクロサービス531は、受信データ領域712に記憶されている処理済データに対して、所定の第1の処理を行う。この第1の処理には、処理済データの分割処理が含まれていてもよい。また、第1の処理において、ニューラルネットワークライブラリ54を用いた推論処理等が行われてもよい。
【0073】
ステップS714において、第1マイクロサービス531は、ステップS713の第1の処理のアウトプットとして処理済データを生成し、後続のマイクロサービス53を決定する。本例においては、次に、第2マイクロサービス532が処理を行うものとする。そして、第1マイクロサービス531は、処理済データ及び後続マイクロサービス情報を含むデータファイルを生成し、送信データ領域721に記憶する。なお、送信データ領域721に記憶されたデータファイルは、サービスブローカ61によるステップS701、S702の処理において参照されて、その有無が確認される。
【0074】
ステップS715において、第1マイクロサービス531は、後続の第2マイクロサービス532との間で通信経路を確立する。
【0075】
ステップS716において、第1マイクロサービス531は、自身の第1の処理を終えたため、ステップS715で確立した通信経路を介して、後続の第2マイクロサービス532に対して処理済データを送信する。なお、ここで確立される通信方式は、サービスブローカ61のステップS705の処理と同様に、gRPCを用いたものとなる。
【0076】
このようなステップS711~716の処理を終えると、第1マイクロサービス531は再びステップS711の処理を行う。
【0077】
次に、第2マイクロサービス532の処理について説明する。
【0078】
図中には、第2マイクロサービス532の処理としてステップS721~S726の処理が示されている。これらの処理は、第1マイクロサービス531により行われるステップS711~S716と同等のため、詳細な説明の一部を省略し、簡略化して説明する。
【0079】
ステップS721において、第2マイクロサービス532は、サービスブローカ61から処理の実行指令を受信しているか否かを判定する。この図の例においては、サービスブローカ61のステップS705の処理において、第1マイクロサービス531の生成したデータファイルの後続マイクロサービスに第2マイクロサービス532が示されており、第2マイクロサービス532が実行指令を受信しているものとする。
【0080】
ステップS722において、第2マイクロサービス532は、前工程の第1マイクロサービス531から処理済データを受信しているか否かを判定する。この図においては、前工程の第1マイクロサービス531のステップS716の処理によって、処理済データが送信されており、受信データ領域712に記録されているものとする。
【0081】
ステップS723において、第2マイクロサービス532は、受信データ領域712に記憶されている処理済データに対して、所定の第2の処理を行う。
【0082】
ステップS724において、第2マイクロサービス532は、処理済データ及び後続マイクロサービス情報を含むデータファイルを生成し、送信データ領域722に記憶する。送信データ領域722に記憶されたデータファイルは、サービスブローカ61によるステップS701、S702の処理において参照されて、その有無が確認される。
【0083】
ステップS725において、第2マイクロサービス532は、後続のマイクロサービス53との間で通信経路を確立する。
【0084】
ステップS726において、第2マイクロサービス532は、自身の第2の処理を終えたため、後続のマイクロサービス53に対して処理済データを送信する。
【0085】
このようなステップS721~726の処理を終えると、第2マイクロサービス532は再びステップS721の処理を行う。
【0086】
このように、第1マイクロサービス531は、自身の処理結果に基づいて、次に処理を行うマイクロサービス53を定める。そのため、処理済データの提供先は、第2マイクロサービス532に限らず、例えば、第3マイクロサービス533であってもよい。本実施形態においては、処理済データと後続マイクロサービス情報とを含むデータファイルが生成され、処理済データが、後続の第2マイクロサービス532へと送信される。
【0087】
サービスブローカ61は、各マイクロサービス53の送信データ領域72を参照し、データファイルを取得して、データファイルをデータベースへと記録する。同時に、サービスブローカ61は、データファイルの後続マイクロサービス情報に基づいて、後続の第2マイクロサービス532に対して、実行指令を送信する。
【0088】
第2マイクロサービス532は、サービスブローカ61からの実行指令、及び、第1マイクロサービス531からの処理済データを受信すると、第2の処理を行う。このように、処理済データの送信先が動的に決定される場合でも、サービスブローカ61は、データファイルを取得するとともに、後続の第2マイクロサービス532へ実行指令を送信する。
【0089】
また、オーケストレーションツール43が動作する環境においては、マイクロサービス53の起動頻度を設定できる。このように連続的に処理が行われる複数のマイクロサービス53においては、処理順の早い工程のマイクロサービス53は、処理順の遅い工程のマイクロサービス53よりも、起動頻度が高く設定されることが好ましい。これは、処理順の早いマイクロサービス53は、センサデータなどの具体的なデータを扱っており負荷が高いのに対し、処理順の遅いマイクロサービス53は、複数の処理を経た抽象度の高いデータを扱ており負荷が低い傾向となるため、起動頻度を減らしても処理が遅延するおそれが少ない。このようにマイクロサービス53の起動頻度を設定することで、全体として遅延なく複数のマイクロサービス53の処理を連続的に行うことができる。
【0090】
図8は、送信データ領域72の一例を示す図である。この図によれば、送信データ領域72は、図示されたように複数のデータを格納可能に構成されている。この図には、第1マイクロサービス531の送信データ領域721の一例が示されているものする。
【0091】
送信データ領域72は、処理済データが記憶される「メタデータ」の欄、及び、後続マイクロサービス情報が示される「次マイクロサービス」の欄以外に、複数の欄が設けられている。「メタデータ」及び「次マイクロサービス」以外の欄の情報は、サービスブローカ61等によるエラー検出や、バッチ処理で行われる機械学習などのために参照されており、その結果、システムの堅牢性の向上が図られている。以下では、送信データ領域72の各パラメータについて詳細に説明する。
【0092】
「前マイクロサービス」の欄には、第1マイクロサービス531への入力データを生成したマイクロサービス53が示されている。すなわち、「前マイクロサービス」の欄には、第1マイクロサービス531の前工程の処理を行うマイクロサービス53が示されている。
【0093】
「前マイクロサービスディレクトリ」の欄には、「前マイクロサービス」の欄に記載された、前工程のマイクロサービス53のプログラムが格納されているディレクトリが示されている。このように前工程のマイクロサービス53の存在するディレクトリを記憶することで、エラー発生時等において前工程のマイクロサービス53へのアクセスが容易となる。
【0094】
「処理コード」の欄には、処理コード1~3の3つの処理コードが示されている。ここで、処理コードは、マイクロサービス53において処理毎に付与される複数の桁数(例えば、30~80桁)の乱数のコードである。そのため、処理コードは、マイクロサービス53による特定の時刻における処理と対応付けられており、それぞれにおいて異なるコードとなる。
【0095】
「処理コード1」の欄には、第1マイクロサービス531の直前のマイクロサービス53による処理と対応するコードが示され、「処理コード2」には、第1マイクロサービス531の2つ前のマイクロサービス53による処理と対応するコードが示され、「処理コード3」には、第1マイクロサービス531の3つ前のマイクロサービス53による処理と対応するコードが示されている。
【0096】
このような処理コード1~3を持ち、これらの処理コード1~3が順に後続のマイクロサービス53へと提供されることにより、第1マイクロサービス531の前の複数の工程の処理履歴を記録することができる。ここで、第1マイクロサービス531が処理済データの送信が完了し、サービスブローカ61により送信データ領域72のデータファイルが参照された後であっても、送信データ領域72の消去が完了していない場合がある。このような場合においてサービスブローカ61が送信データ領域72に再びアクセスしてしまうと、誤って取得済のデータファイルを再取得してしまうおそれがある。そこで、サービスブローカ61は、取得したデータファイルの処理コード1~3を記録しており、データファイルを取得する毎に処理コード1~3を参照することで、すでにそのデータファイルが取得済であるか否かを判定できる。このようにして、誤ってデータファイルを再取得することを抑制できる。
【0097】
「入力ファイル名」の欄には、第1マイクロサービス531の前工程のマイクロサービス53の送信データ領域72に記憶された入力ファイル名が記憶されている。「入力ファイル名」に示されるファイルは、第1マイクロサービス531の処理の入力となる。なお、「入力ファイル名」の欄には、ファイルディレクトリ構造を含む形式で記録される。
【0098】
「出力ファイル名」の欄は、第1マイクロサービス531の送信データ領域72に記憶されているデータファイル名を記憶する領域である。データファイル名は、ファイルディレクトリ構造を含む形式で記録される。
【0099】
「次マイクロサービス」の欄は、後続マイクロサービス情報を示すものであり、「次マイクロサービス名」と「次マイクロサービスディレクトリ」との欄を有する。「次マイクロサービス名」の欄には、第1マイクロサービス531の後続の第2マイクロサービス532が示されており、「次マイクロサービスディレクトリ」の欄には、第2マイクロサービス532のプログラムが格納されているディレクトリが示されている。
【0100】
「開始時刻」の欄には、第1マイクロサービス531の処理の開始時間が示されている。
【0101】
「終了時刻」の欄には、第1マイクロサービス531の処理の終了時間、すなわち、送信データ領域72が生成された時刻が示されている。
【0102】
「メタデータ」の欄には、第1マイクロサービス531による処理済データが示されている。すなわち、第1マイクロサービス531は自身が処理をした結果に応じた出力を、「メタデータ」の欄に記憶する。「メタデータ」の欄は、「キー」の欄と「バリュー」の欄とを有している。この例においては、ロボットアーム13に関する情報が記憶されているものとる。
【0103】
「キー」の欄には、データファイルの対象となる処理の種類等の概要が示されており、ロボットアーム13の作業種類はその一例である。この「キー」欄の情報により、記録されたデータファイルにより構成されるログデータの中から、必要な情報へのアクセスが容易となる。
【0104】
「バリュー」の欄には、具体的な処理済データを示す情報が示されている。なお、「バリュー」欄に含まれる項目は、マイクロサービス53による処理に応じて含まれる欄(項目)が異なる。
【0105】
この例においては、「バリュー」の欄において、「コマンド」、「リザルト」、「経過時間」、「モニタデバイスタイプ」、及び、「モデル」の欄が含まれる。「コマンド」の欄には、ロボットアーム13による実行処理が示される。「リザルト」の欄にはロボットアーム13による所定の処理の実行結果が示される。「経過時間」には、ロボットアーム13の処理開始からの経過時間が示される。「モニタデバイスタイプ」の欄には、ロボットアーム13のメーカー名が示される。「モデル名」の欄には、ロボットアーム13のモデル名が示されているものとする。
【0106】
このように、送信データ領域721に記憶されるデータファイルのうち、「バリュー」の欄に示される情報は、第1マイクロサービス531による処理済データである。また、「次マイクロサービス欄」には後続のマイクロサービス53として、第2マイクロサービス532が示されている。そのため、サービスブローカ61は、データファイルを参照することで、
図7に示されるように、ステップS704の処理において、「次マイクロサービス欄」に示された後続工程の第2マイクロサービス532を特定し、ステップS707の処理において、「メタデータ」を含むデータファイルをデータベースへと記録することができる。
【0107】
図9は、MEC装置12における処理の一例を示す概念図である。MEC装置12においては、マイクロサービス53の処理順が動的に変化する例を示すものである。この図においては、MEC装置12における複数の入力を示す入力層が図左側に、複数の出力を示す出力層が図右側に示されている。MEC12においては、入力層からの入力に応じて、複数のマイクロサービス53が順次処理を行い、出力層へ処理結果を出力する。
【0108】
入力層においては、センサ入力部14A、15A、及び、16Aが設けられている。センサ入力部14A、及び、センサ入力部15Aは、第1カメラ14、及び、第2カメラ15から撮影されたビデオデータの入力を受け付ける。センサ入力部16Aは、角度センサ16からロボットアーム13のアーム部の角度情報を受け付ける。
【0109】
出力層においては、データベース51A、第1ユーザインターフェース52A、及び、第2ユーザインターフェース52Bが設けられている。データベース51Aは、複数のマイクロサービス53を経た処理情報を記憶する。第1ユーザインターフェース52Aは、処理情報のうちの画像に関する表示を行い、第2ユーザインターフェース52Bは、処理情報のうちのエラー原因に関するパラメータの表示を行う。なお、データベース51Aの動作には、
図5に示されたデータスタック51が用いられ、第1ユーザインターフェース52A、及び、第2ユーザインターフェース52Bの動作には、フロントエンド52が用いられる。
【0110】
マイクロサービス53Aは、リアルタイムビデオストリーミング(Real Time Video Streaming)の機能を備え、センサ入力部14Aから入力される第1カメラ14のビデオデータを取得すると、後工程での精度向上のための補正を行い、補正後のビデオデータを生成する。マイクロサービス53Aは、処理済データを、マイクロサービス53D、及び/または、53Eへ送信する。
【0111】
マイクロサービス53Bは、マイクロサービス53Aとは異なるリアルタイムビデオストリーミングの機能を備え、センサ入力部14A、15Aから入力されるビデオデータを取得すると、そのビデオデータ中において製造される製品18の良否を判定し、エラーが発生している場合にはビデオデータ中におけるエラー発生時間を検出する。マイクロサービス53Bは、処理済データを、マイクロサービス53D、及び/または、53Eへ送信する。
【0112】
マイクロサービス53Cは、OPC-UA(Open Platform Communications-Unified Architecture)形式へのデータ変換を行うサービス(Decode Data to OPC-UA)である。マイクロサービス53Cは、入力層のセンサ入力部14A、15A、及び、16Aから入力されるセンサデータをOPC-UA形式に変換する。なお、OPC-UA形式とは、エッジシステムにおいて規格化されたデータフォーマットである。マイクロサービス53Cは、処理済データを、マイクロサービス53Eへ送信する。
【0113】
マイクロサービス53Dは、時系列での画像解析(Analyze Picture by Time)を行う。詳細には、マイクロサービス53Dは、マイクロサービス53Aから入力される補正後のビデオデータのうち、マイクロサービス53Bにより求められたエラー発生時間における画像を解析し、エラー原因が人的作業か製造装置かを判定する。マイクロサービス53Dは、処理済データを、マイクロサービス53F、及び/または、53Gへ送信する。
【0114】
マイクロサービス53E、データベースへのデータの挿入(Data Insert to DB)を行う。マイクロサービス53Eは、マイクロサービス53A、53Bから入力される複数の画像データ、及び、マイクロサービス53Cから入力されるOPC-UA形式のデータを、保存する記録形式に変換した後に、データベース51Aへと送信する。
【0115】
マイクロサービス53Fは、人物検出(Object Detection (Human) from Image)を行う。マイクロサービス53Fへは、マイクロサービス53Dによってエラー原因が人的作業であると判定された場合に、その判定結果が入力される。そして、マイクロサービス53Fは、人的作業に関する判定結果についてさらなるエラー解析を行い、その解析結果を第1ユーザインターフェース52Aへと出力する。
【0116】
マイクロサービス53Gは、製造装置検出(Object Detection (Machine) from Image)を行う。マイクロサービス53Gへは、マイクロサービス53Dによってエラー原因が製造装置であると判定された場合に、その判定結果が入力される。そして、マイクロサービス53Gは、製造装置に関する判定結果についてさらなるエラー解析を行い、その解析結果を第1ユーザインターフェース52A、及び/または、第2ユーザインターフェース52Bへと出力する。
【0117】
マイクロサービス53Hは、リアルタイムのUIの表示(Display Real Time UI)を行う。マイクロサービス53Hは、マイクロサービス53Eから入力されるOPC-UA形式のデータのうち表示する項目を選択して、第2ユーザインターフェース52Bへと出力する。
【0118】
このように、マイクロサービス53A~53Hは、処理結果に応じて後続のマイクロサービス53が定まる。例えば、マイクロサービス53Dは、画像データの解析結果に応じて、そのエラー要因が人的作業か製造装置かを判定し、さらに詳細な解析を行うための後続工程のマイクロサービス53F又は53Gを選択する。このような場合であっても、サービスブローカ61は、マイクロサービス53Dの作成したデータファイル取得して、データファイルをデータベースに記録し、さらに、後続マイクロサービス情報の示すマイクロサービス53F又は53Gへと実行指令を送信することができる。
【0119】
図10は、複数のマイクロサービス53が順次処理を行うMEC装置12の比較例を示す概念図である。この例においては、マイクロサービス53により生成されるデータファイルのデータベースへの記録は、サービスブローカ61によって行われず、プラットフォームにより提供されるログ取得機能が用いられるものとする。
【0120】
本実施形態のように、MEC装置12がオーケストレーションツール43を備える場合には、プラットフォームにより提供されるログ取得機能において、マイクロサービス53の実行環境と関連付けられた領域外、すなわち、クラスタ44以外へのメモリアクセスが発生してしまうことがある。さらに、プラットフォームにより提供されるログ取得機能を用いるためには、特定のヘッダ/フッタ情報を含める必要があるので、処理負荷が増大してしまう。
【0121】
そこで、本実施形態のようにサービスブローカ61を設けることで、マイクロサービス53が生成したデータファイルをデータベースへ記録する時に、マイクロサービス53と関連付けられた領域外へアクセスが抑制される。また、ヘッダ/フッタ情報について、所定の規格に沿ったものではなく、
図8に示されるように必要な情報のみが含まれるので、不要な情報は省略できる。その結果、本実施形態においては、
図10の比較例よりも、マイクロサービス53が生成したデータファイルをデータベースへ記録する処理負荷を低減することができるので、処理を簡略化できる。
【0122】
本実施形態のMEC装置12によれば、以下の効果を得ることができる。
【0123】
本実施形態のMEC装置12によれば、第1のプロセスである第1マイクロサービス531は、受信データ領域(第1のデータ領域)711に記憶された前工程の処理済データに対して第1の処理を行って処理済データ(第1の処理済データ)を生成するとともに、後続の第2のプロセスである第2マイクロサービス532を決定する。そして、第1マイクロサービス531は、処理済データと後続の第2マイクロサービス532を示すデータファイルを生成し、送信データ領域721に記憶する。そして、データファイルにおいて後続プロセスとして示された第2のプロセスは、データファイルに示された処理済データに対して第2の処理を行って、自身の処理済データ(第2の処理済データ)を生成する。
【0124】
このように、処理を行ったマイクロサービス53が、後続のマイクロサービス53への処理済データの送信を、処理済データと後続プロセス情報とを含むデータファイルを介して行うことにより、マイクロサービス53と関連付けられた領域へのアクセスが簡略されるので負荷を低減できる。さらに、データファイルには後続プロセス情報が含まれているため、後続のマイクロサービス53を柔軟に決定できるようになる。従って、各マイクロサービス53の順序の変更や処理の追加や削除等がある場合や、処理順が動的に決定される場合などであっても、柔軟に処理順を定めることができる。
【0125】
本実施形態のMEC装置12においては、コンテナエンジン42が導入されたコンテナ環境においてマイクロサービス53がコンテナ化されとともに、コンテナ環境のハードウェアリソースがオーケストレーションツール43により管理されている。
【0126】
詳細には、本実施形態においては、送信データ領域721に示されるファイルデータを用いて、第1マイクロサービス531から第2マイクロサービス532への処理済データの送信が行われるため、後続のマイクロサービス53が動的に決定される場合であっても、その処理経路を柔軟に設定することができる。その結果、後続のマイクロサービス53への処理済データの送信が頻繁に行われる場合であっても、処理負荷を低減することができる。
【0127】
本実施形態のMEC装置12においては、
図7に示されるように、第1マイクロサービス531が処理を終えるタイミングで、第2マイクロサービス532に対して処理済データを送信する(S716)。この処理済データの送信の前段においては、第1マイクロサービス531と第2マイクロサービス532との間に独自の通信経路が確立される(S715)。このように、マイクロサービス53間において独自の通信経路が確立されることにより、プラットフォームが提供する通信機能を用いる場合と比較すると、処理負荷を低減することができる。
【0128】
本実施形態のMEC装置12においては、第1マイクロサービス531と第2マイクロサービス532との間において、リモートプロシジャーコールフレームワークを用いた通信が行われる。リモートプロシジャーコールフレームワークを用いた通信においては、プログラムから別のアドレス空間にあるサブルーチンや手続きを実行することが可能となる。そのため、異なるポッド48である一方のマイクロサービス53から多方のマイクロサービス53への処理の実行が、明示的な処理規定をすることなく簡単な設定のみで行うことができる。そのため、マイクロサービス53間の通信処理を高速化及び簡略化することで、MEC装置12の全体の処理の高速化を図ることができる。
【0129】
本実施形態のMEC装置12においては、第1マイクロサービス531は、自身の処理結果に応じて、後続のマイクロサービス53を選択する。例えば、
図9の例においては、マイクロサービス53Dは、ビデオデータのエラー発生時間を解析し、その発生時間のビデオデータを用いてエラー原因が人的作業か製造装置かを判定する。そしで、マイクロサービス53Dは、さらに詳細な解析を行うために、後続の処理を行うマイクロサービス53F又は53Gを選択する。
【0130】
処理済データの提供に用いられるデータファイルに、後続マイクロサービス情報が含まれている。そのため、動的に後続のマイクロサービス53が決定される場合であっても、処理済データの送信処理に変更を加えること必要がない。その結果、マイクロサービス53の処理順序の変更や処理の追加や削除等がある場合や、処理順が動的に決定される場合などであっても、柔軟に定められた順でマイクロサービス53の処理を実行できる。
【0131】
本実施形態のMEC装置12においては、後続工程の第2マイクロサービス532へ実行指令を送信する仲介部であるサービスブローカ61を備える、サービスブローカ61は、マイクロサービス53がデータファイルを記録する送信データ領域72を定期的に監視する。そして、サービスブローカ61は、送信データ領域72にデータファイルが記録されたことを検出すると、データファイルを取得してデータベースに記録するとともに、データファイルの後続マイクロサービス情報に示された後続の第2マイクロサービス532に対して実行指令を送信する。
【0132】
このように、サービスブローカ61が主体となって、各マイクロサービス53が生成するデータファイルをデータベースへと記録することにより、プラットフォームが提供するログ取得機能を用いる場合と比較すると、クラスタ44外へのデータアクセスが抑制されるので、処理負荷を低減することができる。また、後続のマイクロサービス53への実行指令の送信に特化するサービスブローカ61を設けることで、データファイルのデータベースへの記録が確実に行われた後に、後続のマイクロサービス53を起動できるので、システムの保守性の向上を図ることができる。
【0133】
本実施形態のMEC装置12においては、第1マイクロサービス531は処理済データ及び後続マイクロサービス情報を含むファイルデータを、自身が動作するコンテナ領域と関連付けられた領域に記憶する。一方で、MEC装置12においては、データスタック51を用いて構成され、複数のマイクロサービス53からアクセス可能な記憶領域である汎用データベースを備える。
【0134】
ここで、第1マイクロサービス531は、自身の動作するコンテナ領域と関連付けられた領域に、送信データ領域721を備える。これに対して、サービスブローカ61は、汎用データベースに、取得したデータファイルを記録する。
【0135】
このように、コンテナ領域と関連付けられた領域に記録されるデータファイルを、汎用的なデータベースへと記録することに特化したサービスブローカ61を設けることで、データファイルの記録を確実に行うことができる。また、ログとしてのデータファイルの記録が行われた後に、後続のマイクロサービス53が実行されることになるので、マイクロサービス53の起動順序を保障することができる。
【0136】
本実施形態のMEC装置12においては、第1マイクロサービス531の処理対象となる受信データ領域711に記憶されるデータは、第1の処理において分割されている。このようにすることで、後続のマイクロサービス53がサイズの小さなデータを扱うこととなるので、処理時間を短縮化できる。
【0137】
これにより、ある特定のマイクロサービス53において負荷が高く律速要素となるような場合には、そのマイクロサービス53を複数化することにより、律速要素の解消を図ることができる。すなわち、複数のマイクロサービス53間において負荷のバランスをとる場合には、負荷の高いマイクロサービス53のみの動作頻度を高めればよいため、処理負荷の調整を行いやすくなる。その結果、MEC装置12の安定的な動作を得ることができる。
【0138】
本実施形態のMEC装置12においては、連続的に適用される複数のマイクロサービス53のうち、処理順の早いマイクロサービス53は、処理順の遅いマイクロサービス53よりも、起動頻度が高くなるように設定されている。ここで、処理順の早いマイクロサービス53は、センサデータなどの具体的なデータを扱っているため処理時間が長くなりやすくなるのに対し、処理順の遅いマイクロサービス53は、複数の処理を経た抽象度の高いデータを扱うことになるため、処理時間は比較的短い。その結果、処理順の遅いマイクロサービス53の起動頻度を減らしても処理が遅延するおそれが少ない。このように、処理頻度を設定することで、全体として遅延なく連続的にマイクロサービス53は処理を行うことができる。
【0139】
本実施形態のMEC装置12においては、各マイクロサービス53は、ニューラルネットワークライブラリ54を用いて、機械学習又は学習済モデルに関する処理を行う。一般に、機械学習又は学習済モデルに関する処理を伴う場合には、処理済データが大きくなる傾向がある。
【0140】
本実施形態においては、後続のマイクロサービス53は、前工程のマイクロサービス53からの処理済データ、及び、サービスブローカ61からの起動指令の受信後に、所定の処理を開始する。これにより、後続のマイクロサービス53は、処理済データに加えて起動指令を受信した後に動作を行うことになるので、確実な動作が保障されやすくなる。その結果、機械学習又は学習済モデル等のような処理時間が長くなるような処理が含まれるMEC装置12を遅延なく安定的に動作さることができる。
【0141】
また、サービスブローカ61によりMEC装置12内のマイクロサービス53の生成するデータファイルの全てが、データベースへと格納される。そして、データベースに格納されたデータファイルは、バッチ処理によりクラウド上のデータストレージ22へと送信される。そして、データストレージ22において機械学習が行われることで、学習済モデルの機能が向上する。本実施形態のMEC装置12においては、学習済モデルの更新がオーケストレーションツール43の提供するデプロイ機能によって行われることとなる。その結果、学習済モデルの更新をデプロイにより逐次行うことができるので、ロボットアーム13の制御における精度の向上を図ることができる。
(変形例)
【0142】
図11は、送信データ領域72の他の例を示す図である。この図の例においては、
図9に示された送信データ領域72と比較すると、メタデータに含まれるデータに差異がある。
【0143】
この図の例においては、メタデータには、格納ディレクトリ1、2が含まれている。格納ディレクトリ1、2には、比較的大きなデータの格納場所が示されている。例えば、マイクロサービス53が、ビデオデータから複数の静止画データを抜き出す処理である場合には、抜き出した静止画データの格納場所が格納ディレクトリに示される。このようにすることで、送信データ領域72に記憶されるファイルデータの大きさを抑制しながら、比較的大容量のデータを後続のマイクロサービス53へ提供することができる。
【0144】
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一部を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
【符号の説明】
【0145】
10 データ処理システム
12 MEC
13 ロボットアーム
14 第1カメラ
15 第2カメラ
16 ジャイロセンサ
42 コンテナエンジン
43 オーケストレーションツール
47 コンテナ
48 ポッド
53 マイクロサービス
61 サービスブローカ