さくらの研究者が挑む量子コンピュータ・アニーリングマシンの世界 〜「さくらの夕べ 研究所ナイト」レポート(後編)〜

1月16日(木)に、さくらインターネット福岡オフィスにて「さくらの夕べ 研究所ナイト」が行われました。イベント内容は、さくらインターネット研究所のメンバーによる発表と、他社の研究所で活動されている方々とのパネルディスカッションです。先日公開しましたレポート前編に続き、こちらの記事ではさくらインターネット研究所の鶴田博文による発表「さくらインターネット研究所で研究に再挑戦した 私の半年間の取り組み」をレポートします。

材料工学の研究→消防士→ITエンジニア→再び研究者へ

はじめに鶴田の自己紹介がありました。経歴をまとめたスライドを引用しますが、ちょっとユニークなのは、大学を出てからいったん消防士になり、それからIT業界に飛び込んできたことです。そして、2019年8月にさくらインターネット研究所に加入したことで、大学時代以来6年ぶりに研究に再挑戦することになりました。

鶴田の経歴 (出典)

鶴田が現在取り組んでいる研究テーマは以下の2つです。

  1. ユーザに変更を要求せずにシステム変化に追従可能なSSHプロキシサーバ
  2. 量子コンピュータ・アニーリングマシンを用いた研究

以下、それぞれについて解説します。

ユーザに変更を要求せずにシステム変化に追従可能なSSHプロキシサーバ

これは鶴田が前職時代に研究を始めたものです。サーバ管理作業において広く利用されているSSHは、利用するサーバのIPアドレスまたはホスト名を指定して接続します。例えば以下のようなコマンドを入力します。

% ssh username@<サーバのIPアドレスまたはホスト名>

しかし、現代のWebサービスにおいては、状況に応じてシステム構成を柔軟に変更する必要があります。そうすると管理者が接続すべきサーバのIPアドレスやホスト名も頻繁に変わる可能性があり、管理者にとってはそれに追従するのが煩雑になります。

この点に着目して鶴田が研究開発したのが、sshrという名のSSHプロキシサーバです。概念図のスライドを下に示しますが、動作の概略は以下の通りです。

  1. SSHクライアントと接続先サーバ群の間にsshrを設置する
  2. ユーザは下記のコマンドにてsshrに接続する
    % ssh username@<sshrが稼働するホスト名かIPアドレス>
    
  3. sshrに組み込まれたフック関数により、usernameに対して指定された接続先サーバを割り出し、そのサーバにSSHで接続する

sshrの概念図 (出典)

フック関数は管理者が自由にプログラミングできるので、システム構成の変更に対してもフック関数を更新するだけで追従することができ、ユーザが使用するクライアントツールを制限/変更する必要がありません。

sshrはOSSとして公開されていますので、使ってみたい方はGitHubのページをご覧ください。また、鶴田は2019年12月に行われた第12回インターネットと運用技術シンポジウム(IOTS2019)でもsshrについて発表しました。そのときの発表資料も公開されていますので、sshrについてさらにくわしく知りたい方はそちらをご覧になるとよいでしょう。

今後の目標としては、現在のsshrはユーザ名に対して1つのサーバにしかSSH接続できませんが、これを複数のサーバから接続先を指定して接続できるようにすることや、候補となるサーバもゾーンやタグなどによる絞り込み、あるいはサーバの負荷や障害などの状況によるフィルタリングを行い、クライアントが逐一指定しなくても目的のサーバを検索して接続できる仕組みを研究開発したいとのことです。

量子コンピュータ・アニーリングマシンを用いた研究

鶴田が取り組んでいるもう1つの研究テーマが、量子コンピュータやアニーリングマシンに関するものです。量子コンピュータとは、量子力学の原理に基づいた新しいコンピュータの概念です。従来のコンピュータ(ノイマン型)との大きな違いは情報の表し方です。従来の情報の基本単位はビットであり、その値は0か1のどちらかですが、量子コンピュータにおける情報の基本単位は量子ビットと呼ばれ、その値は0と1だけでなく、0と1の重ね合わせ状態をもとることができます。より具体的には、下のスライドの右下にあるブロッホ球という球面上の点として表されます。

量子コンピュータとは (出典)

量子コンピュータの分類には、量子ゲート方式や量子アニーリング方式などがあります。量子ゲート方式は汎用的な計算機の上位互換を目指すもので、年々、量子ビット数を増やしたものが開発されていますが、現時点ではまだ実用的な問題を解くレベルには至っていません。一方、量子アニーリング方式は、組合せ最適化問題を解くことに特化したものです。組合せ最適化問題は多数ありますが、一例としてナップサック問題を紹介します。

ナップサック問題
耐荷重Nkgのナップサックと、各々に重さと価格が設定されたM種類の品物がある。ここで、ナップサックの耐荷重を超えない範囲で合計価格を最大にするように品物を収容したい。それを実現する品物の組み合わせを求める問題。

組合せ最適化問題はいずれも、問題の大きさ(ナップサック問題では品物の数)が大きくなると組み合わせの数が爆発的に増え、解を計算するのに膨大な時間がかかってしまいます。そこで、このような問題に対しては、比較的短時間で近似解を求めることができるメタヒューリスティックと呼ばれる手法が用いられます。量子アニーリングはメタヒューリスティックなアルゴリズムの1つであり、組合せ最適化問題への適用が期待されています。

ITインフラの分野においても、例えば複数の物理サーバに対して多数の仮想マシンやコンテナをどのように配置すればもっとも利用効率が良くなるか、という問題はナップサック問題に帰着します。他にも地理的に分散した多数のコンピューティングリソースにジョブをどう割り当てるかなど、多くの組合せ最適化問題が存在します。

ITインフラにおけるナップサック問題の例 (出典)

鶴田は今後の展望として、クラウドコンピューティングやエッジ・フォグコンピューティングの分野において自分が解きたい組合せ最適化問題を定義し、問題の定式化や各種解法の適用と評価を進めていきたいと述べました。

おわりに

鶴田は研究所に入ってまだ半年ですが、すでに学会での発表も経験し、意欲的に研究に取り組んでいる様子がうかがえました。本記事では割愛しましたが、研究所の日常についての話もあり、「自律・分散・協調」という、インターネットの基本精神を体現するかのような研究所のスタイルはとても興味深いものでした。

鶴田の発表資料も公開されていますので、さらにくわしく知りたい方はそちらをご覧ください。

また、さくらインターネット研究所もブログを開設しています。学会発表などの報告だけでなく、各メンバーの技術的関心事に基づく記事も多数ありますので、よろしければこちらもぜひご覧ください。
https://research.sakura.ad.jp/

それではまた、次回のイベントでお会いしましょう!