ペパ研 研究会 運用技術

情報処理学会第42回インターネットと運用技術研究会で2件の発表をしました

ペパ研 研究会 運用技術

チーフエンジニア兼主席研究員のまつもとりー(@matsumotory) です。2018年6月28日から2日間に渡って開催された、第42回インターネットと運用技術研究会(IOT42)で、ペパボ研究所から2件の発表を行いましたので、論文(研究会予稿)とスライドと共にそれぞれの発表者が紹介します。


HTTPリクエスト単位でインスタンスの再配置が可能な低コストで高速なスケジューリング手法

我々は、アクセス数や負荷に応じて反応的かつ高速にリソースをインスタンスを再割当てすることで、サービス利用者や事業者に手間を強いることなく突発的なアクセス集中に耐えうるFastContainerアーキテクチャをこれまで提案してきました。 一方、可用性の面では、依然として単一のインスタンスの場合、そのインスタンスが収容されている物理サーバが正常に稼働していることが前提であり、収容サーバが停止すると、手動によるインスタンスの再配置が必要でした。

障害時にHTTPタイムアウトを生じさせない程度の可用性を担保するには、従来手法と同様にインスタンスを複数の収容サーバに起動できるようにしておく必要があり、利用者にとっては利用コストの増加に繋がっていました。 また、新たなインスタンスを新規で再配置する場合は、インスタンス起動時のWebサーバプロセスの起動時間がオーバーヘッドとなってレスポンスが一時的に遅くなり、ユーザ体験を損なう課題もありました。

プロセスの起動時間を高速化するために、CRIUと呼ばれるLinuxプロセスのCheckpoint/Restore技術によってプロセスをイメージ化することにより、高速にプロセスの状態を復帰させる手法があります。 しかし、Webサーバが起動してからイメージ化すると、アドレスやポートの衝突、起動後のサーバプロセスの状態やコンテンツの状態等を保持してしまうため、実用上扱いにくくなります。 一方で、各種Webサーバの起動処理時に、socket()システムコールを実行する直前でプロセスをイメージ化する場合、各種サーバソフトウェアの初期化処理にサーバソフトウェアに依存した拡張実装をそれぞれ追加する必要があり汎用性が低くなる課題がありました。

本研究では、HTTPリクエスト処理時において、単一のインスタンスであっても、収容サーバの状態に応じて、自動的にインスタンスを別の収容サーバに再配置し、サービスを継続させる、HTTPリクエスト単位でのインスタンスのスケジューリング手法を提案しました。

提案手法では、FastContainerの状態変化の高速性に基づいて、インスタンスが頻繁に収容サーバを変更されてもサービスに影響がないことを利用しています。 それによって、プロキシサーバから収容サーバに1個のICMPパケットで応答速度を計測し、少ないパケット数と短いタイムアウトで収容サーバの反応時間を計測できるようになります。 そのことで、HTTPリクエスト単位でのインスタンススケジューリングを実現しました。

さらに、高速にインスタンスを再配置するために、Webサーバソフトウェア自体を拡張することなくWebサーバプロセス起動時に実行されるシステムコールを監視して、起動完了する直前のシステムコール実行前の段階でプロセスイメージを作成しておくことにより、高速にWebサーバプロセスをそのイメージから起動させることができます。

実験から、WordPressのような一般的なWebアプリケーションが起動しているインスタンスにおいて、複数のホストOSに複数のインスタンスを配置して可用性を担保することなく、単一のインスタンスという少ないリソースで、CRIUによるイメージ化がない場合は、1.5秒から2秒程度の再配置処理により、HTTPエラーを発生させることなく可用性を担保することができました。 また、Checkpoint/Restore昨日を活用することにより、数百msecで再配置できる見込みが実験から示すことができました。 このようなリソース使用量の削減により、サービス利用者は可用性の担保のために、複数の収容サーバに横断的に複数のインスタンスを配置する必要がなくなり、サービス利用料を削減できます。

今後の課題として、コンテナ起動時間の高速化手法をシステムに実装して評価を行うことや、負荷やレスポンスタイムに応じたHTTPリクエスト単位でのコンテナスケジューリング手法の実現を検討しています。

研究会予稿

スライド


ペパボ研究所 研究員/プリンシパルエンジニアの三宅(@monochromegane)です。 第42回インターネットと運用技術研究会(IOT42)で発表した、精度と速度を両立した分散可能な近似近傍探索エンジンについて紹介します。

Sanny: 大規模ECサイトのための精度と速度を両立した分散可能な近似近傍探索エンジン

ECサイトの情報過多問題を解決するため、商品の自動提案は必須機能となっています。 商品の自動提案は商品同士の類似性を機械的に比較できるよう、商品の特徴を多次元の実数ベクトルとして表現した特徴量が用いられます。 しかしながら、商品提案機能における近傍集合の探索において、精度と速度の両立の観点から、正確ではあるがデータ数と次元数に比例して計算量が増加する線形探索の利用は現実的ではありません。 そこで、精度を犠牲にして近似解を用いることで計算量の増加に対処する近似近傍探索の手法が提案されていますが、各手法の想定するデータ数や次元数を超えた大規模かつ高次元ベクトルな集合に対しては、精度と探索速度の両立が困難になっていきます。

そこで本研究では、大規模ECサイトで商品を提案することを想定して、精度と速度を両立した分散可能な近似近傍探索エンジンSannyを提案しました。 Sannyは、検索質問データ(クエリ)に対する高次元ベクトル集合の近傍探索結果の上位集合が、クエリと高次元ベクトル集合を任意の次元数で等分した部分ベクトル単位で近傍探索した結果と類似しやすいことに着目して、 提案すべき商品の近傍探索を部分ベクトル単位での探索に分解することで分散処理可能にし、その探索結果の和集合である近傍候補から再度近傍探索を行うことにより、全体として高速に近似近傍探索を行います。

実験から、前提とする特性を持つ深層畳み込みニューラルネットワークから得られる高次元密ベクトル集合データに対し、従来の近似近傍探索手法と比較して精度並びに速度の改善を確認することができました。

今後について、提案手法では部分ベクトル集合の分割に直積量子化に倣った単純な等分を行なっていますが、データの偏りを考慮した、より効果的で少ない次元数での分割の可能性も検討していきます。 また、分散処理可能な特性を活かした拡張性ある構成としてネットワークをまたぐ大規模な近似近傍探索エンジンとしての実装と評価も進めていきたいと思います。

研究会予稿

スライド


まとめ

第42回インターネットと運用技術研究会(IOT42)では、幅広い研究テーマに沿ってペパボ研究所から2つの発表を行いました。今後も、第43回インターネットと運用技術研究会(IOT43)が長崎県で開催されますので、エンジニアの皆様もぜひご参加ください。


【PR】パートナー積極採用中!

ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。