分散学習ワークロードを想定した分散キャッシュシステムの開発【2018年度インターン】
自己紹介
PFN の杉原と申します。弊社のスーパーコンピュータ MN-2、MN-3 を運用するインフラ領域で主にストレージを担当しています。
私は高専からの三年次編入を経て筑波大学に入学後、筑波大学大学院を経て PFN に入社しました。大学院では並列ファイルシステムに関する研究を行っていて、高性能計算やシステムソフトウェア、分散ファイルシステムに興味があります。
PFN では現在 30 PB を超えるストレージ領域を社内向けに提供しています。増え続ける社内の計算需要とデータ容量需要を支えるため、その規模は年々拡大しています。小規模では問題なく動作するコンピュータシステムも少しずつ規模を大きくすると見える課題があります。ストレージサーバの運用自動化・省力化技術、ストレージサーバの容量効率化手法、レイテンシ削減・帯域幅確保などの性能高速化技術、耐障害性・冗長化技術など、幅広い範囲で貢献ができる仕事です。
インターンで取り組んだこと
インターンでは分散学習ワークロードを想定した分散キャッシュシステムの開発を行い、ファイルシステムからホスト上のメインメモリに学習データを高速に分配する方法についてプロトタイピングを行いました。スーパーコンピュータの広帯域なネットワークを最大限活用するべく、InfiniBand Verbs を直接利用した RDMA ベースのプロトコルを検討し、Python バッファに対するゼロコピーなファイル転送プロトコルの実装に取り組みました。深層学習ワークロードでは学習データをシャッフルするため、時間局所性を利用するキャッシュでは課題があります。ファイルシステムのレイテンシとホスト間のレイテンシが異なることを利用して、ホスト間でデータを非同期かつ小さいレイテンシで交換できるような機構について検討を行いました。
インターン参加のきっかけ
元々 Web バックエンドの開発やデータベースの運用、研究室ではサーバの管理運用に興味があり、アプリケーションそのものを作るよりもアプリケーションを下から支えるコンピュータシステムの方に興味を持っていました。PFN のインターンは深層学習技術の研究開発や応用のイメージがあったのですが、自社でスーパーコンピュータを持っていること、インフラ領域のインターンも募集していることを募集要項で知り、応募に至りました。
インターンに参加して得たもの
インターン期間中は分散キャッシュシステムの設計と実装について考え続ける刺激的で楽しい日々でした。メンターの方との議論やコードレビューを通して実装力がついたと思います。
また、研究の進め方についても多くを勉強させてもらいました。分散キャッシュシステムの設計を考える上では、既存の分散メモリ技術や分散キャッシュ技術、RDMA ベースのプロトコルについてのサーベイや議論を丁寧に行うことができただけでなく、日々の議論を通してリサーチディスカッションの練習にもなりました。中間・最終発表では LT やポスターセッションを通してメンター以外の方々と議論を重ねることができ、アウトプットの練習にもなりました。
こんな方にはPFNインターンをおすすめします!
社内には私のように深層学習畑以外の出身者も多く、インターンでも実に幅広いテーマを扱っていますので、興味のあるテーマがあればぜひ応募を検討してみてください。

