(57)【要約】【課題】帯域を有効活用でき、トピックアドレスに対応する送信先を動的且つ効率的に設定可能なパケットスイッチ装置を提供すること。【解決手段】接続される複数の計算装置の間で行われるメッセージ交換に用いられるパケットスイッチ装置であって、計算装置との間でメッセージの送受信を行うメッセージ送受信部と、メッセージを転送する計算装置を決定するための転送表を記憶した転送表記憶部と、メッセージに含まれるトピックアドレスに基づいて転送表を参照することでメッセージを転送する計算装置を決定して転送処理を行う転送処理部と、計算装置における計算処理でいずれの情報を利用したかの利用状況を表した参照処理情報を計算装置から受信する参照処理情報受信部と、受信した参照処理情報に基づいて転送表の適合性を計算する転送表適合性計算部と、計算した転送表の適合性に基づいて転送表を更新する転送表更新部とを備えている。【選択図】図１
2018121156.tif 000002
【特許請求の範囲】
【請求項１】
接続される複数の計算装置の間で行われるメッセージ交換に用いられるパケットスイッチ装置であって、
前記計算装置との間でメッセージの送受信を行うメッセージ送受信部と、
前記メッセージを転送する計算装置を決定するための転送表を記憶した転送表記憶部と、
前記メッセージに含まれるトピックアドレスに基づいて前記転送表を参照することでメッセージを転送する計算装置を決定して転送処理を行う転送処理部と、
前記計算装置における計算処理でいずれの情報を利用したかの利用状況を表した参照処理情報を前記計算装置から受信する参照処理情報受信部と、
受信した前記参照処理情報に基づいて前記転送表の適合性を計算する転送表適合性計算部と、
計算した転送表の適合性に基づいて前記転送表を更新する転送表更新部と
を備えているパケットスイッチ装置。
【請求項２】
前記参照処理情報は、前記計算装置における計算処理の評価の情報を含み、
前記転送表適合性計算部は、評価の情報を含む参照処理情報に基づいて転送表の適合性を計算するようにした
請求項１記載のパケットスイッチ装置。
【請求項３】
前記転送表適合性計算部は、参照処理情報に基づいてニューラルネットワークによる学習器を学習させて、学習済みの学習器によって転送表の適合性を計算するようにした
請求項１又は２記載のパケットスイッチ装置。
【請求項４】
複数の計算装置と、複数の計算装置が接続されるパケットスイッチ装置とを具備してなり、パケットスイッチ装置を介して複数の計算装置の間でメッセージ交換を行うためのメッセージ交換システムであって、
前記計算装置は、
前記パケットスイッチ装置との間でメッセージの送受信を行うメッセージ送受信部と、
計算処理に利用する情報であって前記メッセージに含まれるトピックアドレスのそれぞれに対応した情報を記憶させた記憶部と、
前記記憶部に記憶された情報の利用状況を参照処理情報として生成する参照処理情報生成部と、
参照処理情報を前記パケットスイッチ装置に送信する参照処理情報送信部
とを備え、
前記パケットスイッチ装置は、
前記計算装置との間でメッセージの送受信を行うメッセージ送受信部と、
前記メッセージを転送する計算装置を決定するための転送表を記憶した転送表記憶部と、
前記メッセージに含まれるトピックアドレスに基づいて前記転送表を参照することでメッセージを転送する計算装置を決定して転送処理を行う転送処理部と、
前記計算装置からの参照処理情報を受信する参照処理情報受信部と、
受信した前記参照処理情報に基づいて前記転送表の適合性を計算する転送表適合性計算部と、
計算した転送表の適合性に基づいて前記転送表を更新する転送表更新部と
を備えているメッセージ交換システム。
【請求項５】
前記参照処理情報は、前記計算装置における計算処理の評価の情報を含み、
前記転送表適合性計算部は、評価の情報を含む参照処理情報に基づいて転送表の適合性を計算するようにした
請求項４記載のメッセージ交換システム。
【請求項６】
前記転送表適合性計算部は、参照処理情報に基づいてニューラルネットワークによる学習器を学習させて、学習済みの学習器によって転送表の適合性を計算するようにした
請求項４又は５記載のメッセージ交換システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、接続された複数の計算装置に対してパケットを振り分けるパケットスイッチ装置及びメッセージ交換システムに関するものである。
【背景技術】
【０００２】
従来、接続された複数の計算装置に対してパケットを振り分けるパケットスイッチ装置が利用されてきた。パケットスイッチ装置は、送出先の計算装置を指定したユニキャストによる送出、接続された全ての計算装置に送出するブロードキャストによる送出、決められたグループの複数の計算装置に対して送出するマルチキャストによる送出が行われていた。
【０００３】
特許文献１には、マルチキャストパケットの振り分け時に出力回線に依存してパケットの転送速度が制限されず、重要なネットワーク制御パケットの廃棄を防止し、複数のマルチキャスト・グループ転送の公平性を保つことが可能になるパケットスイッチ及びそのマルチキャスト転送方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１４７２３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ある計算装置から、多数の仮想的な宛先（以下、トピックアドレスという）に対して送出されたメッセージを、当該メッセージを受信したスイッチに接続されている１つまたは複数の計算装置に向けて送出する場合、トピックアドレスに対応する送信先を動的且つ効率的に設定する単純な方法がなかった。
【０００６】
ブロードキャストにより全ての計算装置に送出する場合、送出すべきでない相手に対して送信してしまうため、帯域が無駄になる課題があった。また、ユニキャストで送信先の数だけ送信する場合は、トピックアドレス毎の宛先管理が分散してしまい煩雑になるだけでなく、複数回送信しなければならないため、送出側の帯域が無駄になる課題があった。そして、Ｌ２／Ｌ３マルチキャストおよびＶＬＡＮドメインを設定した上でデータを送出する場合は、膨大な数のトピックアドレス、例えば216のトピックアドレス、に対応するだけの数を管理することが困難であった。
【０００７】
本発明は、上記問題点に鑑みなされたものであり、帯域を有効活用でき、トピックアドレスに対応する送信先を動的且つ効率的に設定可能なパケットスイッチ装置及びメッセージ交換システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るパケットスイッチ装置は、接続される複数の計算装置の間で行われるメッセージ交換に用いられるパケットスイッチ装置であって、前記計算装置との間でメッセージの送受信を行うメッセージ送受信部と、前記メッセージを転送する計算装置を決定するための転送表を記憶した転送表記憶部と、前記メッセージに含まれるトピックアドレスに基づいて前記転送表を参照することでメッセージを転送する計算装置を決定して転送処理を行う転送処理部と、前記計算装置における計算処理でいずれの情報を利用したかの利用状況を表した参照処理情報を前記計算装置から受信する参照処理情報受信部と、受信した前記参照処理情報に基づいて前記転送表の適合性を計算する転送表適合性計算部と、計算した転送表の適合性に基づいて前記転送表を更新する転送表更新部とを備えていることを特徴とする。
【０００９】
また、本発明に係るパケットスイッチ装置は、前記参照処理情報は、前記計算装置における計算処理の評価の情報を含み、前記転送表適合性計算部は、評価の情報を含む参照処理情報に基づいて転送表の適合性を計算するようにしたことを特徴とする。
【００１０】
また、本発明に係るパケットスイッチ装置は、前記転送表適合性計算部は、参照処理情報に基づいてニューラルネットワークによる学習器を学習させて、学習済みの学習器によって転送表の適合性を計算するようにしたことを特徴とする。
【００１１】
本発明に係るメッセージ交換システムは、複数の計算装置と、複数の計算装置が接続されるパケットスイッチ装置とを具備してなり、パケットスイッチ装置を介して複数の計算装置の間でメッセージ交換を行うためのメッセージ交換システムであって、前記計算装置は、前記パケットスイッチ装置との間でメッセージの送受信を行うメッセージ送受信部と、計算処理に利用する情報であって前記メッセージに含まれるトピックアドレスのそれぞれに対応した情報を記憶させた記憶部と、前記記憶部に記憶された情報の利用状況を参照処理情報として生成する参照処理情報生成部と、参照処理情報を前記パケットスイッチ装置に送信する参照処理情報送信部とを備え、前記パケットスイッチ装置は、前記計算装置との間でメッセージの送受信を行うメッセージ送受信部と、前記メッセージを転送する計算装置を決定するための転送表を記憶した転送表記憶部と、前記メッセージに含まれるトピックアドレスに基づいて前記転送表を参照することでメッセージを転送する計算装置を決定して転送処理を行う転送処理部と、前記計算装置からの参照処理情報を受信する参照処理情報受信部と、受信した前記参照処理情報に基づいて前記転送表の適合性を計算する転送表適合性計算部と、計算した転送表の適合性に基づいて前記転送表を更新する転送表更新部とを備えていることを特徴とする。
【００１２】
また、本発明に係るメッセージ交換システムは、前記参照処理情報は、前記計算装置における計算処理の評価の情報を含み、前記転送表適合性計算部は、評価の情報を含む参照処理情報に基づいて転送表の適合性を計算するようにしたことを特徴とする。
【００１３】
また、本発明に係るメッセージ交換システムは、前記転送表適合性計算部は、参照処理情報に基づいてニューラルネットワークによる学習器を学習させて、学習済みの学習器によって転送表の適合性を計算するようにしたことを特徴とする。
【発明の効果】
【００１４】
本発明に係るパケットスイッチ装置及びメッセージ交換システムによれば、あるトピックアドレスのメッセージを利用する計算装置にのみメッセージを転送し、そのトピックアドレスのメッセージを利用しない計算装置にはメッセージを転送しないようにすることが可能になるため、メッセージの無駄な転送処理を発生させないようにすることができる。また、トピックアドレスに対応する送信先を動的且つ効率的に設定する手法を提供することができる。また、ユニキャストではなくマルチキャストを積極的に利用することにより、スイッチのバックプレーンを効率的に利用することができる。また、ブロードキャストにより計算装置に送出する場合であっても、送出すべきでない相手への送信を低減できる。また、ブロードキャストにより計算装置に送出する場合であっても、帯域を無駄にすることがなくなる。また、従来のＬ２／Ｌ３マルチキャストおよびＶＬＡＮドメインを利用する場合であっても、膨大な数のトピックアドレスを管理する必要性がなくなる。また、同一のハードウェア（特に安価なEthernetハードウェア）であっても、より高性能な分散学習を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係るパケットスイッチ装置１０の構成及び接続される計算装置の構成を表したブロック図である。
【図２】転送表の一例を表した説明図である。
【図３】パケットスイッチ装置１０における転送処理の流れを表したフローチャート図である。
【図４】パケットスイッチ装置１０における転送表の更新処理の流れを表したフローチャート図である。
【発明を実施するための形態】
【００１６】
［発明の実施の形態］
以下、図面を参照しながら、本発明に係るパケットスイッチ装置１０について説明する。図１は、本発明に係るパケットスイッチ装置１０の構成及び接続される計算装置の構成を表したブロック図である。図１の構成は、例えば、計算装置は何らかの応用的な計算を行うが、応用的な計算が単独では性能的・容量的制約から達成が困難であることから並列化を行っており、並列化された複数の計算装置Ｃ１、Ｃ２、…、ＣＶを接続するためにパケットスイッチ装置１０を用いているような場合が想定される。パケットスイッチ装置１０及び接続される複数の計算装置Ｃ１、Ｃ２、…、ＣＶによってメッセージ交換システムが構成される。なお、考えられる構成の例としては、並列化された複数の計算装置Ｃ１、Ｃ２、…、ＣＶが、キーバリューストアとして機能するようにパケットスイッチ装置１０に接続される場合が想定される。また、複数の計算装置Ｃ１、Ｃ２、…、ＣＶをパケットスイッチ装置１０を用いて接続することで、Differentiable Neural Computer（DNC）のようなニューラルネットワークを構築する場合が想定される。
【００１７】
パケットスイッチ装置１０は、メッセージ送受信部１１と、転送処理部１２と、転送表記憶部１３と、参照処理情報受信部１４と、参照処理情報集約部１５と、転送表適合性計算部１６と、転送表更新部１７とを少なくとも備えている。
【００１８】
メッセージ送受信部１１は、接続された複数の計算装置Ｃ１、Ｃ２、…、ＣＶからのメッセージを受信し、また、受信したメッセージを他の計算装置に送信する機能を有する。ここで、本発明におけるメッセージとは、トピックアドレスと呼ばれる計算機に紐付けられないアドレス（番号）と、可変長または固定長のメッセージ本体部分とで構成されたものを意味する。例えばメッセージはKey-value store（KVS）におけるメモリの書き込みメッセージであったり、あるいは計算部にDifferentiable Neural Computer（DNC）のようなニューラルネットワークを具備した場合におけるwrite headからの出力であったりしてもよい。
【００１９】
転送処理部１２は、メッセージ送受信部１１において受信したメッセージの転送先を決定する機能を有する。具体的には、メッセージに含まれるトピックアドレスを用いて後述する転送表を参照して、メッセージを転送する計算装置を決定する。
【００２０】
転送表記憶部１３は、トピックアドレスに基づいて転送すべき計算装置を決定するための情報が記載されたテーブルとしての転送表を記憶する機能を有する。
【００２１】
参照処理情報受信部１４は、計算装置によって生成された参照処理情報を受信する機能を有する。参照処理情報は、計算装置が計算を行う際に各トピックアドレスに対応した情報の利用状況を表した情報であり、接続された各計算装置から送信されてくるものをこの参照処理情報受信部１４で受信する。また、参照処理情報は、各トピックアドレスに対応した情報の利用又は非利用による計算結果の評価を含む場合がある。また、参照処理情報には、計算装置が参照した情報が最新の情報であったか否かを示すフラグ（例えば、ｓｔａｌｅ値）などを含むようにししてもよい。参照した情報が最新の情報であったか否かは計算装置による情報の参照時には分からず事後的に判明することなので、当該フラグも事後的に立てられる。
【００２２】
この参照処理情報受信部１４おいて受信する参照処理情報は、例えば、ログ形式である。ログ形式とは、どのトピックアドレスの情報をいつ参照したかなどのログによって構成される形式である。かかるログ形式は、参照の可否のみで参照処理情報が決定できるため、簡便である。また、参照処理情報は、例えば、ログ形式に加えて、その参照による計算結果の評価値、あるいはニューラルネットワークのバックプロパゲーションで用いる評価値に対するメモリ参照値における微分値(gradient)が含まれるものであってもよい。また、前記多数の参照結果を集約してもよい。例えば、合成微分（Synthetic Gradient）のモデルを計算装置と集約装置で共有し、合成微分のパラメータ更新の形で参照処理情報を伝えることもできる。
【００２３】
参照処理情報集約部１５は、接続された各計算装置から送信されてくる参照処理情報を集約する機能を有する。各計算装置から送信されてくる参照処理情報は、その計算装置が計算処理においてトピックアドレスに対応した情報を参照したか否かの情報であるが、これをパケットスイッチ装置１０に接続された全ての計算装置について集約することで、トピックアドレスに対応した情報がどの計算装置で参照されどの計算装置で参照されなかったかの情報として集約することができる。
【００２４】
転送表適合性計算部１６は、参照処理情報集約部１５で集約した参照処理情報に基づいて、トピックアドレスに対応したメッセージを転送すべきか否かについての転送表の適合性の傾斜を計算する機能を有する。
【００２５】
この転送表適合性計算部１６における適合性の計算は、様々な手法が考えられるが、例えば、集約した参照処理情報に基づいてトピックアドレス毎に計算装置（ノード）による参照回数の情報を抽出し、また、個々のメッセージをどの計算装置に転送したかの情報、現在の転送表の値とトピックアドレス毎の転送回数の情報などを併せて利用して、転送表適合性計算部１６において結果の評価を行う。ここでの評価は、ニューラルネットワークのロス関数のように、パケット転送の目的にあわせて任意に設定することができる。例えば、転送表により転送された情報が参照され、計算装置における計算に用いられた場合には、転送することに対する利得を与え、計算に用いられなかった場合(無駄な転送であった場合)は損失を与える。一方、転送しなかったにも関わらず当該トピックを利用した計算を行い、計算結果が良かった場合には、転送しないことに対する利得を与え、結果が悪かった場合は転送しないことに対する損失を与える。利得／損失は、計算装置からの傾斜（gradient）を伝播させて計算しても良いし、単純なルールベースで計算させても良い。このようにして求めた利得／損失に基づいて、転送表の各項目の適合性の傾斜を求める。
【００２６】
また、この転送表適合性計算部１６における適合性の計算は、ニューラルネットワークによる学習器によって適合性の傾斜を求めるものであってもよい。この場合の学習器は、転送表の内容に基づく転送履歴と実際に計算装置における参照の有無の情報を訓練データのベースとし、これに加えて、上記の参照処理情報に含まれる計算結果の評価の情報を訓練データとして、転送表の各項目の適合性の傾斜を計算し、これを実際の転送履歴と照らし合わせて、パラメータの修正を行って学習を行う。このような学習を予め行うようにしてもよいし、逐次学習を行って学習器の精度を高めていくものであってもよい。
【００２７】
また、この転送表適合性計算部１６における適合性の計算は、予め設定した所定期間ごとに定期的に実行してもよいし、新しいデータが到着するたびにgradientを再計算し、gradientにもとづいた経過時間でリアルタイムに計算しても構わない。転送表がバイナリ値を持つ実施においては、転送表を計算するための評価値を前述のgradientによって制御し、閾値によって転送する、又は転送しないを、切り替えてもよい。
【００２８】
転送表更新部１７は、転送表適合性計算部１６によって計算された適合性の傾斜の情報に基づいて転送表を更新する機能を有する。
【００２９】
計算装置Ｃ１、Ｃ２、…、ＣＶは、それぞれ、計算部２１と、記憶部２２と、参照処理情報生成部２３と、参照処理情報送信部２４と、メッセージ送受信部２５とを少なくとも備えている。
【００３０】
計算部２１は、任意の目的に沿った計算を行い、必要に応じて記憶部２２に記憶された情報を参照して計算を行う機能を有する。
【００３１】
記憶部２２は、計算部２１における計算に必要な情報を記憶する機能を有する。この記憶部２２は、計算部の計算結果に基づいて情報を書き込むことができるだけでなく、トピックアドレスに対応した形で記憶された情報を他の計算装置（他のノード）からのメッセージに応じて書き換えることもできる。
【００３２】
参照処理情報生成部２３は、記憶部２２に記憶された各トピックアドレスに対応した情報のうち計算部２１が計算を行う際にいずれの情報を利用したかの利用状況を表した参照処理情報を生成する機能を有する。また、参照処理情報として、各トピックアドレスに対応した情報の利用又は非利用による計算結果の評価の情報を併せて生成する場合がある。
【００３３】
参照処理情報送信部２４は、参照処理情報生成部２３で生成した参照処理情報をパケットスイッチ装置１０に送信する機能を有する。
【００３４】
メッセージ送受信部２５は、パケットスイッチ装置１０からのメッセージを受信し、また、メッセージをパケットスイッチ装置１０に対して送信する機能を有する。
【００３５】
図２は、転送表の一例を表した説明図である。この図２に示すように、トピックアドレスａ１〜ａｎのそれぞれについて、接続された計算装置Ｃ１〜ＣＶに対してトピックアドレスに対応したメッセージを転送すべきか否かを定めたテーブルとなっている。この図２では、転送する必要がない計算装置には「０」を割り振り、転送する必要がある計算装置には「１」を割り振るようにしている。しかし、必ずしも「０」「１」のバイナリ値で管理する必要はなく、０．０〜１．０の浮動小数点数による確率的値、数ビットで確率を表現した離散的値、などであってもよい。なお、転送表の表示形式が確率的値である場合は、各々の計算装置に対してメッセージが確率的に転送されるようにする手法が考えられる。
【００３６】
次に、本発明に係るパケットスイッチ装置１０における転送処理の流れについて説明する。図３は、パケットスイッチ装置１０における転送処理の流れを表したフローチャート図である。この図３において、転送処理は、パケットスイッチ装置１０に複数の計算装置が接続された状態において、計算装置からのメッセージを受信することによって開始される（ステップＳ１１）。受信したメッセージにはトピックアドレスが含まれているので、そのトピックアドレスを用いて転送表を参照してメッセージを転送する計算装置を決定する（ステップＳ１２）。そして、メッセージの転送先として決定された計算装置に対してメッセージを送信して（ステップＳ１３）、転送処理を終了する。
【００３７】
次に、本発明に係るパケットスイッチ装置１０における転送表の更新処理の流れについて説明する。図４は、パケットスイッチ装置１０における転送表の更新処理の流れを表したフローチャート図である。この図４において、転送表の更新処理は、接続された計算装置からの参照処理情報を受信することによって開始される。複数の計算装置からの参照処理情報を受信してこれを集約する（ステップＳ２１）。集約した参照処理情報に基づいて、転送表の各項目の適合性の傾斜を計算する。（ステップＳ２２）。ここで、転送表の各項目とは、各計算装置に対応した項目のことであり、計算装置ごとに転送の是非の適合性の傾斜を計算する。次に、各項目の適合性の傾斜に基づいて、適合性が向上する方向に転送表を更新する（ステップＳ２３）。最後に、更新した転送表を記憶させて（ステップＳ２４）、転送表の更新処理を終了する。
【００３８】
以上のように、本発明に係るパケットスイッチ装置１０によれば、以下の効果を得ることができる。
（１）あるトピックアドレスのメッセージを利用する計算装置にのみメッセージを転送し、そのトピックアドレスのメッセージを利用しない計算装置にはメッセージを転送しないようにすることが可能になるため、メッセージの無駄な転送処理を発生させないようにすることができる。
（２）トピックアドレスに対応する送信先を動的且つ効率的に設定する手法を提供することができる。
（３）ユニキャストではなくマルチキャストを積極的に利用することにより、スイッチのバックプレーンを効率的に利用することができる。
（４）ブロードキャストにより計算装置に送出する場合であっても、送出すべきでない相手への送信を低減できる。
（５）ブロードキャストにより計算装置に送出する場合であっても、帯域を無駄にすることがなくなる。
（６）従来のＬ２／Ｌ３マルチキャストおよびＶＬＡＮドメインを利用する場合であっても、膨大な数のトピックアドレスを管理する必要性がなくなる。
（７）同一のハードウェア（特に安価なEthernetハードウェア）であっても、より高性能な分散学習を実現することができる。
【００３９】
［適合性の計算の具体例１：KVSの場合］
キーバリューストア（KVS：Key-Value Store）の場合の転送表適合性計算部１６における適合性の計算の具体例について説明する。KVSにおいては、参照処理情報は以下に区分される。
・hit: keyに対して適切なvalueを保持していて、これが問い合わされた場合
・miss: keyに対してvalueを保持していなかった場合
・stale: keyに対して古いvalueを保持していた場合
【００４０】
ここで、参照処理情報の例として以下の表１を示す。
2018121156.tif 000003
ここでは計算装置識別子が１のものを対象としているが、各々の計算装置においてそれぞれ生成され、参照処理集約部で集約される。この表１では、２エントリのみを示しているが、実際には多数のエントリが生成される。なお、staleとhitの判別は、記憶部参照後にKVSの当該キーのマスターとなる計算装置への問い合わせによって行う。
【００４１】
また、この表形式の場合、参照処理情報が巨大になってしまう。その結果記憶装置や通信への負荷になるので、計算装置側ないしはスイッチ装置側で、一定時間毎に参照情報を以下の表２のように集約化できる。ここでも例示のため一部エントリのみを示す。
2018121156.tif 000004
なお、トピックＩＤ＝３の行のように、hit／stale／missが全て０の場合は、参照処理送信部から参照処理受信部への送信を省略してもよい。
【００４２】
参照処理集約部では、各々の計算装置から受信した参照処理情報を保持する。これは前記「集約された参照処理情報」と同等の形式であるが、 各々の計算装置から受信した情報について、最新のものを保持してもよいし、各々の計算装置ID／トピックIDの組に対して、集計してもよいし、何らかの形式で移動平均を取ってもよい。計算量やメモリ消費量が少ない指数移動平均を用いてもよい。
【００４３】
集約した結果（集約参照情報）について、転送表適合性計算部１６は最適化計算を行う。最適化計算の一例として、以下の方針を示す。
・転送表のビット数はなるだけ均一が良い（特定の送信が大幅な帯域を占有しないようにする）。ただし、少ない方向に外れ値が存在することについては問題がない。
・転送表のビット数の総計は少ないほうが良い（送信先は絞ったほうが良い）。
・staleの発生は0に近づけなければならない。
・missの発生もできるだけ下げるが、許容可能。
【００４４】
ここで、以下のような方式により転送表の最適化が可能である。
・それぞれのトピックアドレスのマスターに対する転送表ビットは常に１（制約：以下の操作にかかわらず１）。
・転送表で１となるビット数の閾値を２つ用意する（ｔ１,ｔ２；ｔ１＜ｔ２）。
・集約参照情報を、stale／hit／missの合計順にソートする。
・転送表で１となっているビットの総数が事前に定めた閾値ｔ１をしたまわるまで、合計値の低いものに対応するビットを順に０にする。
・集約参照情報をstale順にソートする。
・転送表で１となっているビットの総数が事前に定めた閾値ｔ２をうわまわるまで、stale数の多いもので、かつ、転送表の対応するビットが０になっているものから順に１にする。
【００４５】
なお、KVSの場合、何らかの形で計算装置毎に関連トピックを集約したほうが良いので、コンテンツのキーからトピックアドレスを生成する際、Locality-Sensitive Hash のようなものを使うと効果的である。
【００４６】
何らかの数値計算による最適化を行う場合は、目的関数を以下のように定める。
loss = Cx + Cs
ここで、Cx は転送表中の１となっているビットの総数であり、Csはstaleとなった総カウント数である。転送表適合性計算部１６若しくは転送表更新部１７は、例えばニューラルネットワークによる学習（具体的には強化学習）等を用いてどのビットを１にしてどのビットを０にすればlossを最小化できるかを学習してもよい。強化学習のとき、ステートは集約参照情報であり、アクションは転送表の更新である。
【００４７】
［適合性の計算の具体例２：DNC拡張の場合］
DNC（Differentiable Neural Computer）の場合の転送表適合性計算部１６における適合性の計算の具体例について説明する。Differentiable Neural Computer [Graves et.al., Hybrid computing using a neural network with dynamic external memory, Nature] のようなニューラルネットワークにおいて、write_headと同様にnetwork_headを用意する。network_headによって書かれたデータは転送表によって他の計算装置に転送される。ニューラルネットワークのトレーニングにおいては、トレーニング結果に対して損失が計算され、損失に対する傾きを計算過程を遡ることで伝播させ、最終的に傾きに沿ってパラメータを更新する（確率的勾配降下法 Stochastic Gradient Decent およびその派生）。ここで、DNCなどで行われているように、記憶部を経由した計算であっても勾配の計算は可能である。ただし、計算装置間が同期していない場合、順方向の計算を行った際の記憶部の状態と、逆方向の計算を行う際の記憶部の状態が一致しない可能性があるため、計算の精度を高めるために記憶部の内容の世代を管理して記録してもよい。さらに、計算装置間の記憶部の間のデータの転写は転送表により行われるため、同様に世代管理された転送表を用意してもよい。
【００４８】
より具体的には、ある計算装置に具備されたニューラルネットワークにより、DNCのwrite key（書き込みを行うコンテントに対応する値）に相当する network write key が生成され、これが何らかの計算（例えば、トピックアドレス毎に事前に定めたランダムなkeyとのコサイン類似度）によりトピックアドレスにマップされ、メッセージID、write vector、erase vector、write strengthなどとともにメッセージ送受信部によりスイッチ装置に送出される。なお、write vector, erase vector, write strengthはDNCと同一であってもよいし、別途ニューラルネットワーク出力を拡張し生成してもよい。スイッチ装置は転送表を参照し、確定的（転送表が０または１の二値である場合）、または確率的（転送表が［０，１］の範囲の確率である場合）に対応する一つまたは複数の計算装置にメッセージを転送する。メッセージを受信した計算装置は、該計算装置に含まれる記憶部を与えられた値に従い更新する。このとき、ニューラルネットワークがトレーニング中であれば、どのIDのメッセージによりどの値をいくつに更新し、どの計算によりどの値が参照され、その結果のロスがどのように計算されたかを、計算過程も含めて参照処理記録として記録する。
【００４９】
このように相互に計算し、メモリを更新することで計算グラフは機器間に分散して構築される。参照処理送信部は定期的にまたは何らかのトリガーによりこれをスイッチ装置に送信し、これを集約する。集約された計算結果から当該トレーニングにおける転送表の各値の傾きを算出できるので、これを算出し、損失の合計値を下げる方向に更新する。
【００５０】
なお、スイッチ装置の参照処理受信部から転送処理更新部までは、例えばSDNコントローラ等の外部装置であってもよい。この場合、スイッチの参照表をOpenFlowなどのインターフェイスにより更新する。
【００５１】
前記実施の形態においては、転送表適合性計算部１６における計算において、あるトピックアドレスに対する転送容量については考慮していなかったが、適合性の計算の際に、あるトピックアドレスに対応する転送先の一覧の合計（パケット転送数の合計）を一定以下に下げる制約を加えるようにしてもよい。これにより、パケットスイッチ装置１０のバックプレーン容量を効率的に利用することを促進することができる。
【００５２】
また、転送表中の列（あるポートに対応するトピックアドレスの一覧）を一定以下に下げる制約を加えてもよい。これにより、特定のポートが多くの転送に占有される現象を抑制でき、スイッチハードウェアのバックプレーン容量を効率的に利用することを促進することができる。
【００５３】
前記実施の形態においては、転送処理のスイッチングを直接転送表により実施し、これを更新する形態であった。一方で、スイッチングハードウェアの制約やプロトコル上の制約のため、実際にニューラルネットワークによる出力のスイッチングができない場合であっても、従来のネットワーク機器を用いてエミュレーションを行うことによって、本発明の効果を実現できる。
【００５４】
具体的には、例えば、レイヤ２／レイヤ３マルチキャストを用いる方法である。スイッチハードウェアは一般に、マルチキャストのスヌーピング処理により、マルチキャストアドレスに対してjoin処理を行っていないインターフェイスへのマルチキャストパケットは送信しないで、join処理を行っているインターフェイスのみにメッセージを送出できる。このとき、マルチキャストアドレスをトピックアドレスとみなして、特定のトピックアドレスへの送出をマルチキャストアドレスへの送出にマッピングできる。このとき、転送表はマルチキャスト転送表であり、転送表更新部はマルチキャストjoin／leaveにより転送表を更新する。なお、実際にIGMPやMLD等のjoinメッセージ送信によりマルチキャスト転送表を更新してもよいし、代替的な手段で更新してもよい。
【００５５】
また、他の具体例としては、VLAN[IEEE802.1q] IDによりトピックアドレスの代替を行う方法である。ただし、この場合には、転送表はスイッチ上の各インターフェイスにおけるVLAN IDフィルタにより実装される。そして、このとき、通常の実装であるインターフェイス上でフィルタされているVLAN ID宛のパケットを受信することができない。VLANフィルタ処理をingress filter（スイッチ宛のパケットフィルタ）とegress filter（スイッチからのパケットフィルタ）に分割し、これらに対して非対称なフィルタリングができれば、任意のインターフェイスにおいて任意のトピックアドレス宛のブロードキャストパケットを受信し、これを転送表の当該トピックアドレスにおいて対応づけられているインターフェイスのみに再送出することで、本発明の転送表およびメッセージ送受信部の効果を実現できる。
【００５６】
なお、スイッチのハードウェアの制約上、転送表の行数（トピックアドレス数）に対応するマルチキャストアドレス、ないしはVLAN IDが利用できない場合は、類似した行についてまとめて、複数の行をまとめて一つのマルチキャストアドレスないしはVLAN IDで取り扱うこともできる。この場合、トピックアドレスとマルチキャストアドレスの対応関係を各計算装置に通知する必要があり、また、まとめた行に関しては不要な転送が発生することになるが、本発明の効果を限定的に実現できる。
【００５７】
前記実施の形態においては、DNCのような単一のニューラルネットワークが単一の計算装置に具備された場合について説明したが、これに限定されるものではなく、現在のクラウドコンピューティングにおける仮想環境のように、複数のサービスが単一の計算装置を共有する場合であっても同様の計算が行える。各仮想計算装置が記憶部を持ち、参照処理情報を生成すればよい。参照処理情報は、KVSの例のような単なる参照情報でもよいし、DNCの例のように計算グラフを構成するものであってもよい。また、複数の冗長なサービスを具有するコンピューティングクラスタであり、冗長である（代替可能な）サービス間のメッセージルーティングにおいてニューラルネットワークを構成することもできる。
【符号の説明】
【００５８】
１０            パケットスイッチ装置
１１            メッセージ送受信部
１２            転送処理部
１３            転送表記憶部
１４            参照処理情報受信部
１５            参照処理情報集約部
１６            転送表適合性計算部
１７            転送表更新部
２１            計算部
２２            記憶部
２３            参照処理情報生成部
２４            参照処理情報送信部
２５            メッセージ送受信部
Ｃ１、Ｃ２、…、ＣＶ        計算装置
【図１】
2018121156.tif 000005
【図２】
2018121156.tif 000006
【図３】
2018121156.tif 000007
【図４】
2018121156.tif 000008