【解決手段】時系列データの非可逆圧縮を機械学習ベースの圧縮伸長器13を用いて行うストレージシステム50が、元データ16(圧縮伸長器に入力される時系列データ)に関し、1種類以上の統計量の各々について、1つ以上のパラメタを基に統計量値を計算し、元データ16に対応した伸長データ17(圧縮伸長器から出力された時系列データ)に関し、上記1種類以上の統計量の各々について、1つ以上のパラメタを基に統計量値を計算する。圧縮伸長器13の機械学習は、元データ16に関し1種類以上の統計量の各々について計算された統計量値と、伸長データ17に関し1種類以上の統計量の各々について計算された統計量値とを基に行われる。
前記プロセッサが、1種類以上の統計量の各々について当該統計量の計算に必要な1つ以上のパラメタの入力を受け付けるインタフェースである第1のインタフェースを提供する
請求項1に記載のストレージシステム。
前記統計量品質は、前記元データに関し前記1種類以上の統計量の各々について計算された統計量値と、前記伸長データに関し前記1種類以上の統計量の各々について計算された統計量値との差に関する1種類以上の値である、
請求項6に記載のストレージシステム。
【発明を実施するための形態】
【0014】
以下の説明では、「インタフェース装置」は、1つ以上のインタフェースデバイスでよい。当該1つ以上のインタフェースデバイスは、下記のうちの少なくとも1つでよい。
・1つ以上のI/O(Input/Output)インタフェースデバイス。I/O(Input/Output)インタフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも1つに対するインタフェースデバイスである。表示用計算機に対するI/Oインタフェースデバイスは、通信インタフェースデバイスでよい。少なくとも1つのI/Oデバイスは、ユーザインタフェースデバイス、例えば、キーボードおよびポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・1つ以上の通信インタフェースデバイス。1つ以上の通信インタフェースデバイスは、1つ以上の同種の通信インタフェースデバイス(例えば1つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インタフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0015】
また、以下の説明では、「メモリ」は、1つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも1つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0016】
また、以下の説明では、「永続記憶装置」は、1つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)である。
【0017】
また、以下の説明では、「記憶装置」は、永続記憶装置のような物理的な記憶装置でもよいし、物理的な記憶装置に関連付けられた論理的な記憶装置でもよい。
【0018】
また、以下の説明では、「プロセッサ」は、1つ以上のプロセッサデバイスである。少なくとも1つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスであるが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも1つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも1つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも1つのプロセッサデバイスは、処理の一部または全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0019】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2つ以上のテーブルに分割されてもよいし、2つ以上のテーブルの全部または一部が1つのテーブルであってもよい。
【0020】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置および/またはインタフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2つ以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2つ以上のプログラムとして実現されてもよい。
【0021】
また、以下の説明では、「ストレージシステム」は、オンプレミス型のストレージシステムでもよいし、クラウド型のストレージシステムでもよいし、エッジシステム(例えば、複数のセンサからデータを収集するシステム)とコアシステム(例えば、複数のセンサから収集されたデータをエッジシステムから受信するシステム)とのうちの一方または全体でもよい。
【0022】
また、以下の説明では、「圧縮伸長器」の一例として、オートエンコーダが採用されるが、オートエンコーダ以外の圧縮伸長器が採用されてもよい。圧縮伸長器の一例は、データモデルでよい。データモデルは、データの生成規則、モデルおよび実行主体のいずれでもよい。例えば、データモデルは、数式処理、波形の形状、確率分布などの規則性を表現したバイナリ列でよい。データモデルは、元データ(圧縮前の時系列データ)を入力とし伸長データ(元データの圧縮後のデータが伸長されたデータ)を出力としてよい。データモデルに、例えば、一般的なニューラルネットワークや、生成モデル(例えば、GMM(Gaussian Mixture Models)、HMM(Hidden Markov Model)、SCFG(Stochastic Context-Free Grammar)、GAN(Generative Adversarial Nets)またはVAE(Variational Auto Encoder))、遺伝的プログラミングなどが用いられてもよい。また、データモデルの情報量削減のためにMimic Model等のモデル圧縮が適用されてもよい。
【0023】
また、以下の説明では、「時系列データ」の一例として、複数の時刻に対応した複数のセンサデータセットを有するセンサデータが採用される。「センサデータセット」は、例えば、センサID、測定値、および、時刻(例えば、測定時刻または付与されたタイムスタンプ)を示す情報を含んだデータセットでよい。「データセット」は、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペアおよびタプルのうちのいずれでもよい。本発明は、センサデータ以外の時系列データにも適用されてよい。たとえば、カメラにより撮影された画像の集合を時系列データとしてみなしてもよい。この場合、時刻あたりのデータは3次元のテンソルとなる。この場合、センサデータセットは、例えば、カメラのID、画像を表す3次元テンソル、および、撮影時刻を示す情報を含んだデータセットとなる。
【0024】
次に、本発明の実施形態を図面に基づいて説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。
【0026】
まず、本発明が適用されるシステム構成について
図1を用いて説明する。
図1は、本発明が適用されるシステム例の概要について示しており、本発明は、
図1を例とするシステムに適用可能なものである。
【0027】
ストレージノード100、センササーバ120、および、管理サーバ130が、スイッチ140に接続される。スイッチ140は、ストレージノード100、センササーバ120および管理サーバ130を相互に接続する。なお、ストレージノード100、センササーバ120および管理サーバ130は、それぞれ独立したコンピュータであってもよいし、同一のコンピュータ上で動作する異なる仮想マシン等の仮想的なコンピュータであってもよいし、それらの組み合わせにより構成されてもよい。また、ストレージノード100、センササーバ120、および、管理サーバ130の各々は、1つである必要はなく、複数あってもよい。また、スイッチ140に代えて、通信ネットワーク(例えば、LAN(Local Area Network)、WAN(Wide Area Network)またはインターネット)が採用されてもよい。
【0028】
センササーバ120は、プロセッサ、メモリおよびインタフェース装置などのハードウェア資源と、センサのドライバなどのソフトウェア資源を備えたコンピュータである。センササーバ120は、1つ、または、複数のセンサ110がそれぞれ生成するデータ(センサデータセット)を集約し、ストレージノード100に送信する。
【0029】
管理サーバ130は、プロセッサ、メモリ、インタフェース装置およびローカル入出力デバイスなどのハードウェア資源と、管理プログラムなどのソフトウェア資源を備えたコンピュータである。管理サーバ130は、管理プログラムによって、ローカル出力デバイス(典型的には表示デバイス)を介して、
図2、および、
図3のような管理画面を表示する。さらに、管理サーバ130は、システムユーザ(例えば管理者)が統計量パラメタ設定画面200(
図2参照)に入力した装置設定を、ストレージノード100からの要求に対して応答する機能を有する。なお、管理サーバ130は、ローカル出力デバイスを備える代わりに、ネットワークにより接続された他のコンピュータへ出力を転送してもよい。また、ローカル入力デバイスを備える代わりに、スイッチ140経由で他のコンピュータから入力を受領してもよい。
【0030】
ストレージノード100は、フロントエンドインタフェース101、プロセッサ102、キャッシュメモリ103、RAM104、バックエンドインタフェース107、および、これらを相互に接続するスイッチ108を備える。フロントエンドインタフェース101およびバックエンドインタフェース107がインタフェース装置の一例である。キャッシュメモリ103およびRAM104が、記憶装置(例えばメモリ)の一例である。
【0031】
フロントエンドインタフェース101は、スイッチ140を介して、ストレージノード100を、センササーバ120と管理サーバ130に通信可能に接続するデバイスである。
【0032】
プロセッサ102は、スイッチ108を介して、RAM104のプログラム領域105に記録された1つ以上のプログラム、および、RAM104の管理領域106に記録された管理情報を基に、ストレージノード100全体を制御する。プロセッサ102は、CPUのような、汎用的な演算処理器のほかに、GPUやFPGAのような、アクセラレータであってもよく、また、それらの組み合わせであってもよい。
【0033】
キャッシュメモリ103は、書き込み対象のデータを、圧縮処理が完了するまで、一時的に保持する記憶装置である。キャッシュメモリ103は、DRAM(Dynamic Random Access Memory)などの揮発性素子で構成されてもよいし、HDDやSSDなどの不揮発性ドライブであってもよい。
【0034】
バックエンドインタフェース107は、ストレージノード100と、HDDやSSDなどの不揮発性ドライブ150を通信可能に接続するデバイスである。
【0035】
以上で説明した、フロントエンドインタフェース101、プロセッサ102、キャッシュメモリ103、RAM104、および、バックエンドインタフェース107は、ASICや、FPGAとして、1つの半導体素子により構成されてもよいし、複数の個別のIC(Integrated Circuit)を相互に接続した構成であってもよい。また、ストレージノード100および管理サーバ130が、ストレージシステムの構成要素であってもよいし、さらに、一つ以上のドライブ150も、ストレージシステムの構成要素であってもよい。
【0037】
図2は、管理サーバ130のローカル出力デバイスに出力される統計量パラメタ設定画面200を表す図である。
【0038】
統計量パラメタ設定画面200は、第1のインタフェース(例えば、第1のUI(User Interface))の一例であり、例えばGUI(Graphical User Interface)である。統計量パラメタ設定画面200は、統計量パラメタ入力フィールド201と、完了ボタン204とを有する。
【0039】
統計量パラメタ入力フィールド201は、ユーザに統計量の種別とパラメタを入力させるためのテーブル形式の領域である。統計量パラメタ入力フィールド201の各行202は、統計量の種類とパラメタとの1つの組合せに対応する。統計量パラメタ入力フィールドの各列203は、統計量の種類やパラメタに対応する。1つの組合せを例に取ると、例えば、下記の通りである。
・「統計量種類」の列203には、“平均”や“分散”などの、統計量の種類が入力される(以下、この段落において、「対象種類」)。
・「センサ」の列203には、対象種類に属する統計量の計算対象とするセンサのIDが入力される。
・「サンプル数」の列203には、対象種類に属する統計量の計算に用いる値のサンプル数が入力される。
・「計算頻度」の列203には、対象種類に属する統計量を計算する時間間隔が入力される。
【0040】
なお、「サンプル数」や「計算頻度」といったパラメタ項目は、一例にすぎず、故に、
図2に例示したパラメタ項目以外のパラメタ項目が追加されてもよいし、例示した少なくとも1つのパラメタ項目が省略されてもよい。また、統計量パラメタ入力フィールド201は、統計量の種類やパラメタを、ユーザにテキスト形式で指定させるインタフェースほか、ドロップダウンリストやラジオボタンなどのインタフェースで実装されてもよい。また、統計量パラメタ設定画面200は、統計量の種類やパラメタを、JSON(JavaScript Object Notation)などのデータ記述言語により、ユーザに指定させてもよい(JavaScriptは登録商標)。
【0041】
完了ボタン204は、ユーザ(例えばシステムユーザ)から統計量パラメタ入力フィールド201への入力の完了の通知を受け付けるためのボタンである。
【0042】
図3は、管理サーバ130のローカル出力デバイスに出力される統計量品質確認画面300を表す図である。
【0043】
統計量品質確認画面300は、第2のインタフェース(例えば、第2のUI)の一例であり、例えばGUI(Graphical User Interface)である。統計量品質確認画面300は、統計量パラメタ入力フィールド201で指定された各統計量について、圧縮により生じる誤差の大きさを、ユーザに表示するための画面である。統計量品質確認画面300は、データID入力フィールド301と、表示ボタン302と、統計量品質フィールド303とを有する。
【0044】
データID入力フィールド301は、統計量の誤差を表示する対象とするデータを指定させるための入力フィールドである。データID入力フィールド301には、センサ110がデータを生成した時刻の区間が指定されてもよいし、センササーバ120がストレージノード100に何度目に送信したデータであるかを表す番号が指定されてもよいし、その他、センサデータ(時系列データの一例)の範囲を特定する任意の情報が指定されてもよい。
【0045】
表示ボタン302は、データID入力フィールド301に入力された情報をユーザに確定させるためのボタンである。表示ボタン302が押下されると、管理サーバ130は、データID入力フィールド301に入力された情報をストレージノード100に送信し、ストレージノード100からの応答が示す値を、統計量品質フィールド303に設定する。
【0046】
統計量品質フィールド303の行304は、統計量の種類とパラメタの組合せに対応し、故に、統計量パラメタ入力フィールド201の行202と一対一で対応する。統計量品質フィールド303の各列305は、データID入力フィールド301に入力された情報から特定されるセンサデータにおける統計量の誤差(例えば、平均2乗誤差や最大誤差といった種々の誤差)に対応する。なお、統計量の指標化は、例に示した平均2乗誤差と最大誤差に限定するものではなく、任意の指標が追加されてもよい。
【0048】
図4は、RAM104の構成を表す図である。
【0049】
RAM104は、プロセッサ102が実行するプログラムを格納するプログラム領域105と、プロセッサ102がプログラムの命令に従って読み書きする管理情報を格納する管理領域106とを含む。
【0050】
プログラム領域105に格納される1つ以上のプログラムは、例えば、初期設定動作プログラム400、統計設定プログラム401、ロス設定プログラム402、データ書き込みプログラム403、データ読み出しプログラム404、統計量品質計算プログラム405、指定統計量計算プログラム406、統計量計算プログラム407、ロス関数プログラム408、データベースプログラム409、および、圧縮伸長プログラム420を含む。
【0051】
初期設定動作プログラム400は、管理情報の初期化を行う。統計設定プログラム401は、指定統計量計算プログラム406の設定を行う。ロス設定プログラム402は、ロス関数プログラム408の設定を行う。
【0052】
データ書き込みプログラム403は、センササーバ120からの要求に応じて、圧縮伸長器の学習、書き込み対象データの圧縮、および、圧縮結果(圧縮後データ)の不揮発性ドライブ150への書き込みを行う。
【0053】
データ読み出しプログラム404は、センササーバ120や管理サーバ130などからの要求に対して、不揮発性ドライブ150から圧縮結果を読み出し、データを伸長し、伸長されたデータを応答する。
【0054】
統計量品質計算プログラム405は、統計量パラメタ設定画面200を介してユーザに指定された統計量について、圧縮伸長処理によりデータに生じる誤差を計算する。
【0055】
指定統計量計算プログラム406は、プログラムに入力として与えられたデータに対し、統計量パラメタ設定画面200を介してユーザに指定された統計量の値を計算するプログラムである。
【0056】
指定統計量計算プログラム406は、統計量パラメタ設定画面200にてユーザに指定された統計量に基づいて、初期設定動作プログラム400が設定する。
【0057】
統計量計算プログラム407は、平均、分散、中央値などの、統計量を計算するプログラムの集合である。これらのプログラムは、引数として、統計量の計算対象となるセンサデータに加え、対象センサ、サンプル数、計算頻度などの、パラメタを受け取る。一般に、センサデータのサイズ(例えば、センサデータを構成するセンサデータセットの数)は、統計量を計算する際のサンプル数よりも大きい。このため、少なくとも1つの統計量計算プログラム407は、センサデータを指定されたサンプル数のウィンドウに区切り、各ウィンドウについて統計量を計算する。このため、1つのセンサデータから複数の統計量の値が計算できる。ゆえに、統計量計算プログラム407の戻り値は、一般に、統計量からなるテンソルとなる。なお、統計量の計算は、時刻の異なるデータの間で行うものに限らない。例えば、時系列データの各時刻におけるデータが画像などのテンソルである場合、同テンソルに対して統計量を計算してもよい。また、各テンソルをより小さなテンソルに分割し、各サブテンソルについて統計量を計算してもよい。
【0058】
ロス関数プログラム408は、指定統計量計算プログラム406で計算される統計量を用いて、ニューラルネットワークの学習に用いるロス関数の値を計算するプログラムである。ロス関数プログラム408は、初期設定動作プログラム400により、初期化時に設定される。
【0059】
データベースプログラム409は、圧縮結果を管理するためのデータベースのソフトウェアのプログラムである。データベースプログラム409には、圧縮結果を複数の不揮発性ドライブ150に分散して書き込む機能や、ストレージノード100が複数存在する場合には複数のストレージノード100間でデータを分散して格納する機能を含んでよい。また、データベースプログラム409は、他のプログラムに対し、データの格納と読み出しを提供するための、機能およびAPI(Application Programming Interface)を提供してよい。
【0060】
圧縮伸長プログラム420は、センサデータの圧縮伸長器を構成するニューラルネットワークを、指定された学習データとロス関数で学習する機能と、学習した圧縮伸長器によりセンサデータを圧縮する機能と、圧縮後のデータからセンサデータを伸長する機能を提供する。圧縮伸長プログラム420が、圧縮伸長器を含んでもよい。
【0061】
管理領域106に格納される管理情報は、例えば、統計量パラメタ管理テーブル410、および、統計量品質管理テーブル411を含む。なお、これらのテーブルは、ハッシュテーブルや2分木など、テーブル以外のデータ構造で実装されてもよい。
【0062】
図5は、統計量パラメタ管理テーブル410を表す図である。
【0063】
統計量パラメタ管理テーブル410は、管理サーバ130を介して、ユーザに設定された統計量のパラメタを保持する。統計量パラメタ管理テーブル410の各行501は、管理サーバ130の統計量パラメタ設定画面200において、ユーザにより指定された各統計量に対応する。統計量パラメタ管理テーブル410の列502には、管理サーバ130の統計量パラメタ設定画面200において、ユーザにより指定された、統計量の種類が格納される。統計量パラメタ管理テーブル410の列503は、管理サーバ130の統計量パラメタ設定画面200において、ユーザにより指定された、統計量のパラメタ(例えば、計算対象とするセンサ、統計量を計算する際のサンプル数、統計量の計算頻度など)に対応する。
【0064】
図6は、統計量品質管理テーブル411を表す図である。
【0065】
統計量品質管理テーブル411は、統計量品質計算プログラムの計算結果を保持するテーブルである。統計量品質管理テーブル411の各行601は、管理サーバ130において、ユーザにより指定された各統計量に対応する。また、統計量品質管理テーブルの各列602は、平均2乗誤差や、最大誤差など、ストレージノード100にプリセットされた、統計量の誤差を測る指標に対応する。指標は平均2乗誤差や最大誤差に限定するものではなく、2つのテンソルを入力として、1つのスカラ値を計算する関数により計算される任意の指標が使われてもよい。
【0066】
(4)ストレージノード100の初期設定動作概要
【0067】
図7は、初期設定処理のフロー図である。
【0068】
初期設定動作プログラム400は、ストレージノード100の初回起動、ユーザによるストレージノード100のリセットボタンの押下、および、管理サーバ130からの指示などを契機として、プロセッサ102により開始される(S700)。
【0069】
S701では、プロセッサ102が、スイッチ108、フロントエンドインタフェース101、および、スイッチ140を介して、管理サーバ130に対し、統計量パラメタ設定画面200をローカル出力デバイスへ表示する処理を指示する。指示を受領すると、管理サーバ130は、統計量パラメタ設定画面200をローカル出力デバイスに出力し、ユーザに統計量の種類とパラメタを入力させる。
【0070】
S702では、プロセッサ102が、スイッチ108、フロントエンドインタフェース101、および、スイッチ140を介して、管理サーバ130に、統計量パラメタ入力フィールド201に入力された値を要求し、応答された値を受領する。管理サーバ130は、ストレージノード100からの要求に対し、完了ボタン204がユーザに押下された後であれば、統計量パラメタ入力フィールド201内のパラメタをストレージノード100に応答する。完了ボタン204がユーザに押下されていない場合、管理サーバ130は、押下まで待機し、押下され次第、統計量パラメタ入力フィールド201内のパラメタをストレージノード100に応答する。なお、S702は、プロセッサ102が管理サーバ130にパラメタを要求するプル型の情報採取を前提としたステップであるが、プル型の情報採取に代えて、管理サーバ130がストレージノード100へ能動的にパラメタを送信するプッシュ型の情報採取が採用されてもよい。その場合、管理サーバ130が送信したパラメタをフロントエンドインタフェース101が受領するまで、プロセッサ102が、待機してよい。
【0071】
S703では、プロセッサ102が、S702にて取得したパラメタを、統計量パラメタ管理テーブル410に格納する。
【0072】
S704では、プロセッサ102が、統計設定プログラム401を呼び出す。
【0073】
S705では、プロセッサ102が、ロス設定プログラム402を呼び出す。
【0074】
S705の後、プロセッサ102は、初期設定動作プログラム400を終了する(S706)。
【0075】
図8は、第1のプログラム設定処理のフロー図である。
【0076】
第1のプログラム設定処理は、統計設定プログラム401により行われる。統計設定プログラム401は、
図7のS704での呼び出しにより、開始される(S800)。
【0077】
S801では、プロセッサ102が、図示しない指定プログラム領域(RAM104における一領域)に、「処理なし(NOP)」を意味するプログラムを書き込むことで、指定プログラム領域を初期化する。
【0078】
S802〜S806は、統計量パラメタ管理テーブル410の行501ごとに実行される。以下、一つの行501を例に取る(
図8の説明において「ループ対象行」と呼ぶ)。
【0079】
S803では、プロセッサ102が、統計量パラメタ管理テーブル410のループ対象行の列502から、統計量の種類を特定する。
【0080】
S804では、プロセッサ102が、統計量パラメタ管理テーブル410のループ対象行の列503から、統計量のパラメタを取得する。
【0081】
S805では、「S803で特定した統計量種類に属する統計量値を計算する統計量計算プログラム407を、S804で取得したパラメタを引数にして呼び出す処理」を、指定プログラム領域におけるプログラム(S801で書き込まれたプログラム)に、プロセッサ102が追記する。
【0082】
S807では、「S805で計算した統計量値群(1つ以上の統計量値)を戻り値として、指定統計量計算プログラム406を終了する処理」を、指定プログラム領域におけるプログラム(S805での追記の後のプログラム)に、プロセッサ102が追記する。
【0083】
S807の後、プロセッサ102は、統計設定プログラム401を終了する(S808)。
【0084】
これにより、指定プログラム領域に指定統計量計算プログラム406が作成されたことになる。
【0085】
図9は、第2のプログラム設定処理のフロー図である。
【0086】
第2のプログラム設定処理は、ロス設定プログラム402により行われる。ロス設定プログラム402は、
図7のS705での呼び出しにより、開始される(S900)。
【0087】
S901では、プロセッサ102が、ロス関数プログラム領域(RAM104における一領域)に、「処理なし(NOP)」を表すプログラムを書き込み、ロス関数プログラム領域を初期化する。
【0088】
S902では、「圧縮伸長器の入力データを引数として、指定統計量計算プログラム406を呼び出す処理」を、ロス関数プログラム領域におけるプログラム(S901で書き込まれたプログラム)に、プロセッサ102が追記する。
【0089】
S903では、「圧縮伸長器の出力データを引数として、指定統計量計算プログラム406を呼び出す処理」を、ロス関数プログラム領域におけるプログラム(S902での追記の後のプログラム)に、プロセッサ102が追記する。
【0090】
S904では、「S902で追記録された処理にて計算される統計量値群である統計量値群Aと、S903で追記された処理にて計算される統計量値群である統計量値群Bとの間の誤差群を構成する1つ以上の誤差の各々を指標化する処理」を、ロス関数プログラム領域におけるプログラム(S903での追記の後のプログラム)に、プロセッサ102が追記する。指標化の方法の例として、統計量値群Aと統計量値群Bの間の平均2乗誤差が挙げられるが、指標化の方法はこれに限定するものではなく、複数の統計量からなる統計量群2組から、スカラ値を計算する関数であれば、どのような方法であってもよい。また、指標化の方法は、ストレージノード100に静的に設定されている必要はなく、管理サーバ130が統計量パラメタ設定画面200を介して、ユーザに指定させてもよい。例えば、統計量パラメタ設定画面200を介して、各統計量nについて、誤差の指標化方法f_nと、その目標値g_nを、ユーザに指定させ、統計量値群Aの統計量値a_nと、統計量値群Bの統計量値b_nに対して、誤差を指定の方法で指標化(f_n(a_n, b_n))し、その値と目標値g_nの最大値max(f_n(a_n, b_n), g_n)を求め、その値の全統計量における和Sum(max(f_n(a_n, b_n), g_n))を最終的な誤差の指標とすることができる。このとき、各統計量の誤差指標f_n(a_n, b_n)を、目標値g_nより小さくするように、圧縮伸長器を学習しても、ロス関数の値は減少しない。ゆえに、圧縮伸長器を構成するニューラルネットワークは、既に誤差指標が目標値を下回る統計量ではなく、他の統計量や、他の時刻における統計量nの誤差の指標化値f_n(a_n, b_n)を改善するように、学習される。これにより、時刻や特徴量による誤差のバラツキを抑制し、ユーザに指定される誤差目標を満たす、時刻と統計量の割合を増加させることができる。なお、各統計量値a_nおよびb_nは、各統計量種類に対応する、時間方向の長さを持つベクトルであってもよいし、また、その時刻ごとの値であってもよい。また、時系列データの各時刻におけるデータが画像などのテンソルである場合、そのテンソルをより小さなテンソルに分解し、その各サブテンソルについて誤差を計算し、目標値との最大値を採ってもよい。たとえば、複数の画像から構成される時系列データについて、各画像をパッチに区切り、そのパッチ毎に、元画像のパッチa_nと、圧縮伸長後の画像のパッチb_nの間の画質(例えば、ピーク信号対雑音比やMulti-scale Structured Similarity)をf_nとすることができる。このとき、上記の方法で定義されるロス関数を用いることで、画像間および画像内のパッチ間で画質が目標値付近で均一化されるように、圧縮伸長器を学習させることができる。
【0091】
また、ロス関数に、誤差を表す項に加え、圧縮率を改善するための項、たとえば、圧縮器の出力値のエントロピーを表す項、を加える場合がある。この場合、誤差の項と圧縮率の項の割合、つまり、圧縮率の項に乗算する係数(以下、圧縮係数)により、圧縮率と誤差のトレードオフを調節することが可能である。一般に、圧縮係数は手動で設定されるが、本発明の一実施形態では、誤差が目標値を下回る統計量が存在する場合に、圧縮係数に小さい値を設定し、その他の場合に、圧縮係数に大きい値を設定するように、圧縮係数を制御する。これにより、誤差が目標を満たすまでは、誤差の最小化を優先した学習がなされる一方、目標達成後は圧縮率の改善を優先した学習となり、誤差と圧縮率のトレードオフにおいて、ユーザにとって最適な圧縮伸長器が得られる。以上によって、ユーザから指定された統計量の誤差が、指定の目標値を下回る範囲内で、圧縮率が最適化されるという効果が得られる。
【0092】
S905では、「S904で追記した処理にて計算した指標を戻り値として、ロス関数プログラム408を終了する処理」を、ロス関数プログラム領域におけるプログラム(S904での追記の後のプログラム)に、プロセッサ102が追記する。
【0093】
S905の後、プロセッサ102は、ロス設定プログラム402を終了する(S906)。
【0094】
これにより、ロス関数プログラム領域にロス関数プログラム408が作成されたことになる。
【0095】
以上、
図9のステップにより設定されるロス関数プログラム408は、圧縮伸長器の入力データと出力データを入力として受け取り、ユーザにより統計量パラメタ設定画面200に入力された統計量について、2つの入力の間の誤差を出力するプログラムとなる。
【0096】
なお、
図9のフロー図では、ユーザに指定された統計量の誤差をロス関数として計算するように、ロス関数プログラム408を設定したが、圧縮後のデータ量や、圧縮伸長器の入力データと出力データの間の平均2乗誤差など、統計量の誤差以外の指標を、統計量の誤差に加算する処理などを、ロス関数プログラム領域にプロセッサ102が追記してもよい。それにより、それらの指標をロス関数に反映させることができる。
【0098】
図10は、データ書き込み処理のフロー図である。
【0099】
データ書き込み処理は、データ書き込みプログラム403により行われる。データ書き込みプログラム403は、センササーバ120からの書き込みデータを、ストレージノード100のフロントエンドインタフェース101が受領することを契機として、プロセッサ102により開始される(S1000)。
【0100】
S1001では、フロントエンドインタフェース101が受領した書き込み対象データを、プロセッサ102が、キャッシュメモリ103に格納する。
【0101】
S1002では、プロセッサ102が、圧縮伸長器を構成するニューラルネットワークを、圧縮伸長プログラム420により学習する。学習データには、S1001にてキャッシュメモリ103内に格納したセンサデータが用いられる。ロス関数の値は、元データ(キャッシュメモリ103内のセンサデータ)と、伸長データ(当該元データを圧縮伸長器の入力としたときに、圧縮伸長器から得られる出力データ)との組を引数として、ロス関数プログラム408を実行することで計算される。ニューラルネットワークの学習アルゴリズムとして、逆誤差伝播法が用いられている場合、ロス関数における勾配の値は、一般に知られる自動微分法にて計算されてもよいし、ロス設定プログラム402において、偏微分の値を計算するプログラムを生成し、それを実行することにより計算されてもよい。また、S1002をスキップし、前回S1002を実行した際に学習された圧縮伸長器を、以降のステップで再利用してもよい。
【0102】
S1003では、圧縮伸長プログラム420が提供する圧縮機能により、S1002にて学習した圧縮伸長器を用いて、S1001にてキャッシュメモリ103内に格納したセンサデータを、プロセッサ102が圧縮する。圧縮後データには、データを伸長するために必要な全ての情報が含まれる。圧縮後データに含まれる情報は、圧縮伸長器の方式により異なるが、例えば、圧縮伸長器がオートエンコーダにより構成される場合、デコーダのパラメタの値と、中間ベクトルの値を、圧縮後データが含む。
【0103】
S1004では、プロセッサ102が、S1003にて得た圧縮後データを引数として、統計量品質計算プログラム405を呼び出す。
【0104】
S1005では、プロセッサ102が、S1003にて得た圧縮後データを、データベースプログラム409が提供するデータベースに登録する。
【0105】
S1006では、プロセッサ102が、統計量品質管理テーブル411から、統計量品質に関する全ての値を取得し、データベースプログラム409が提供するデータベースに登録する。
【0106】
S1006の後、プロセッサ102は、データ書き込みプログラム403を終了する(S1007)。
【0107】
図11は、統計量品質計算処理のフロー図である。
【0108】
統計量品質計算処理は、統計量品質計算プログラム405により行われる。統計量品質計算プログラム405は、
図10のS1004での呼び出しにより、開始される(S1100)。
【0109】
S1101では、プロセッサ102が、圧縮伸長プログラム420が提供する伸長機能を用いて、引数として与えられた圧縮後データから、センサデータを伸長する。センサデータの伸長方法は、圧縮伸長器の方式により異なるが、例えば、圧縮伸長器がオートエンコーダにより構成される場合、圧縮後データに含まれるパラメタの値を設定したデコーダに、圧縮後データに含まれる中間ベクトルの値を入力することにより、センサデータを得る。
【0110】
S1102〜S1111は、統計量パラメタ管理テーブル410の行501ごとに実行される。以下、一つの行501を例に取る(
図11の説明において「ループ対象行」と呼ぶ)。
【0111】
S1103では、プロセッサ102が、統計量パラメタ管理テーブル410のループ対象行の列502から、統計量の種類を特定する。
【0112】
S1104では、プロセッサ102が、統計量パラメタ管理テーブル410のループ対象行の列503から、統計量のパラメタを取得する。
【0113】
S1105では、プロセッサ102が、S1101にて伸長したセンサデータと、S1104にて取得したパラメタを引数に、S1103にて特定した統計量種類に対応する統計量計算プログラム407を呼び出す。
【0114】
S1106では、プロセッサ102が、キャッシュメモリ103内のセンサデータと、S1104にて取得したパラメタとを引数に、S1103にて特定した統計量種類に対応する統計量計算プログラム407を呼び出す。
【0115】
S1107〜S1110は、統計量品質管理テーブル411の列602ごとに実行される。以下、一つ列602を例に取る(
図11の説明において「ループ対象列」と呼ぶ)。
【0116】
S1108では、プロセッサ102が、S1105にて計算した統計量のテンソルと、S1106にて計算した統計量のテンソルとから、ループ対象列の指標に対応する誤差を計算する。例えば、ループ対象列が「平均2乗誤差」を表す列である場合、プロセッサ102は、2つのテンソルの平均2乗誤差を計算する。
【0117】
S1109では、プロセッサ102が、統計量品質管理テーブル411の、ループ対象行に対応する行601の、ループ対象列602に、S1108にて計算した誤差を格納する。
【0118】
S1102〜S1111のループが終了すると、プロセッサ102は、統計量品質計算プログラム405を終了する(S1112)。
【0120】
図12は、データ読み出し処理のフロー図である。
【0121】
データ読み出し処理は、データ読み出しプログラム404により行われる。データ読み出しプログラム404は、フロントエンドインタフェース101が、センササーバ120や管理サーバ130などのコンピュータからのデータ読み出し要求を受領することを契機として、プロセッサ102により開始される(S1200)。なお、データ読み出しの要求元は、センササーバ120と管理サーバ130に限定されるものでなく、スイッチ140を介してストレージノード100と接続された任意のコンピュータでもよい。
【0122】
S1201では、プロセッサ102が、フロントエンドインタフェース101が受領した読み出し要求を解析し、読み出し対象の圧縮後データを、データベースプログラム409が提供するデータベースから取得する。
【0123】
S1202では、プロセッサ102が、圧縮伸長プログラム420が提供する伸長機能を用いて、S1201にて取得した圧縮後データから、センサデータを伸長する。センサデータの伸長方法は、圧縮伸長器の方式により異なるが、例えば、圧縮伸長器がオートエンコーダにより構成される場合、圧縮後データに含まれるパラメタの値を設定したデコーダに、圧縮後データに含まれる中間ベクトルの値を入力することにより、センサデータを得る。
【0124】
S1203では、プロセッサ102が、S1202にて伸長したセンサデータを、フロントエンドインタフェース101を介して、要求元のコンピュータへ応答する。
【0125】
S1203の後、プロセッサ102は、データ読み出しプログラム404を終了する(S1204)。
【0127】
統計量品質確認画面300において、表示ボタン302がユーザによって押下されると、管理サーバ130は、データID入力フィールド301に設定された値とともに、統計量品質の要求を、ストレージノード100に送信する。
【0128】
ストレージノード100のフロントエンドインタフェース101が統計量品質の要求を受領することを契機として、プロセッサ102は、統計量の品質を管理サーバ130に応答するための処理を開始する。
【0129】
まず、プロセッサ102は、フロントエンドインタフェース101が受領したデータIDを取得する。次に、プロセッサ102は、S1006にてデータベースに登録した統計量品質の情報のうち、当該IDに対応する情報を、データベースプログラム409が提供するデータベースから取得する。次に、プロセッサ102は、データベースから取得した統計量品質を、フロントエンドインタフェース101を介して、管理サーバ130に応答する。
【0130】
管理サーバ130は、ストレージノード100からの応答を受領すると、受領した統計量品質の値を、統計量品質確認画面300の、統計量品質フィールド303に表示する。
【0131】
このような統計量品質応答処理は、例えば、データ読み出しプログラム404および統計量品質計算プログラム405のうちの少なくとも1つがプロセッサ102により実行されることで行われてよい。
【0132】
以上、本発明の一実施形態に係るストレージシステムについて説明した。
【0133】
上述の説明を、例えば、
図13を参照して、下記のように総括することができる。
【0134】
ストレージシステム50は、記憶装置59(例えばドライブ150)に接続されたインタフェース装置58(例えばバックエンドインタフェース107)と、時系列データ(例えばセンサデータ)の非可逆圧縮を機械学習ベースの圧縮伸長器13を用いて行い当該非可逆圧縮がされた時系列データである圧縮後データを記憶装置59に格納するプロセッサ52(例えばプロセッサ102)とを有する。圧縮伸長器13への入力は、圧縮前の時系列データである元データ16であり、当該元データ16についての当該圧縮伸長器からの出力は、当該元データ16の圧縮後データが伸長されたデータである伸長データ17である。プロセッサ52が、1種類以上の統計量の各々について当該統計量の計算に必要な1つ以上のパラメタの入力を受け付けるインタフェースである第1のインタフェース55を提供する。1種類以上の統計量の各々について第1のインタフェース55を介して入力された1つ以上のパラメタを基に圧縮伸長器13の機械学習が行われる。機械学習が行われた後の圧縮伸長器13を用いて元データ16の圧縮が行われ元データ16の圧縮後データが記憶装置59に格納される。これにより、第1のインタフェース55を介して指定されたパラメタに基づき計算される統計量の精度である精度要件に影響しない情報(つまり、統計量の計算に必要な情報以外の情報)を、圧縮結果(圧縮後データ)から除外できる。すなわち、第1のインタフェース55を介して指定されたパラメタに基づき学習された圧縮伸長器13による圧縮後のデータには、統計量の精度要件に影響しない情報が含まれない。このため、統計量の同一の精度要件に関し、比較例に比べ、圧縮率が改善する。
【0135】
例えば、センサデータの非可逆圧縮では、そのアプリケーションが必要とする統計量等の情報はデータごとに異なるが、上述のストレージシステム50によれば、ユーザの指定に基づいて、圧縮結果に残す統計量を制御することができる。
【0136】
また、上述のストレージシステム50には、センサデータ以外の時系列データ、例えば、音声データの非可逆圧縮にも適用できる。例えば、第1のインタフェース55は、統計量種類“パワースペクトル”についてパラメタ(周波数:100Hz-200Hz)を受け付けてもよい。
【0137】
プロセッサ52が、1種類以上の統計量の各々について第1のインタフェースを介して入力された1つ以上のパラメタを含む管理情報41(例えば統計量パラメタ管理テーブル410を含む情報)を管理する。これにより、統計量種類ごとに1以上のパラメタの管理が可能である。なお、ストレージシステム50は、例えばメモリ54(例えばRAM104)を有し、メモリ54が、管理情報41を格納してよい。
【0138】
プロセッサ52が、元データ16に関し、1種類以上の統計量の各々について、第1のインタフェース55を介して入力された1つ以上のパラメタを基に統計量値を計算する。プロセッサ52が、当該元データ16に対応した伸長データ17に関し、1種類以上の統計量の各々について、第1のインタフェース55を介して入力された1つ以上のパラメタを基に統計量値を計算する。圧縮伸長器13の機械学習は、元データ16に関し1種類以上の統計量の各々について計算された統計量値と、伸長データ17に関し1種類以上の統計量の各々について計算された統計量値とを基に行われる。このようにして、第1のインタフェース55を介して入力された1つ以上のパラメタを基に圧縮伸長器13の機械学習を行うことができる。
【0139】
圧縮伸長器13の機械学習は、当該圧縮伸長器に設定された目的関数20を基に行われるようになっている。プロセッサ52が、1種類以上の統計量の各々について、元データ16に関し1種類以上の統計量の各々について計算された統計量値と、伸長データ17に関し1種類以上の統計量の各々について計算された統計量値との差に関する1種類以上の値(誤差)を、圧縮伸長器13の目的関数20に設定する。目的関数20の一例として、ロス関数がある。一般的に、ロス関数には、時刻間などで誤差の平均値が用いられる。しかし、時刻間で誤差を均一化する方法は、存在しない。このため、時刻毎に誤差のバラツキが生じる課題がある。また、ロス関数に、誤差を表す項に加え、圧縮率を改善するための項を加える場合がある。この場合、誤差の項と圧縮率の項の割合、つまり、圧縮率の項に乗算する係数(以下、圧縮係数)により、圧縮率と誤差のトレードオフを調節することが可能である。しかし、一般に、圧縮係数と誤差と圧縮率との関係は分からない。そのような関係の調整のために、圧縮係数を変えた多数の圧縮伸長器を学習させなければならず、時間を要する。ストレージシステム50によれば、そのような課題が解決される。すなわち、時刻や統計量間の誤差のバラツキを削減できる。例えば、ユーザから指定された誤差の目標値を受け付けるインタフェース(例えばUI)が提供されてよく、そのようなインタフェースを介して指定された目標値を満たす範囲内で、圧縮率を最適化するように、ロス関数を設定したり、圧縮係数を自動調整することができる。
【0140】
1種類以上の統計量は、平均と分散のうちの少なくとも1つを含んでよい。1種類以上の統計量のうちの少なくとも1種類の統計量について、1つ以上のパラメタは、サンプル数および計算頻度を含んでよい。このようなパラメタを、統計量の計算に必要なパラメタとして指定することがされてよい。
【0141】
プロセッサ102が、元データ16に関し1種類以上の統計量の各々について計算された統計量値と機械学習後の圧縮伸長器の圧縮後データが伸長されたデータ17に関し1種類以上の統計量の各々について計算された統計量値との差に従う統計量品質を表示したインタフェースである第2のインタフェース56を提供してよい。これにより、ユーザは、機械学習後の圧縮伸長器13により圧縮され伸長されたデータ17から得られる統計量の品質を知ることができる。なお、統計量品質は、元データ16に関し1種類以上の統計量の各々について計算された統計量値と、当該元データ16の圧縮後データの伸長データ17に関し1種類以上の統計量の各々について計算された統計量値との差に関する1種類以上の値でよい。
【0142】
統計量種類も、第1のインタフェース55を介して指定されてよい。これにより、統計量の計算に必要な情報をより正確に指定することが可能である。
【0143】
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。