Job Description
本ポジションでは、PFNが開発するアクセラレータであるMN-Coreシリーズを、PyTorchなどの上位フレームワークと効率的に統合し、PFN社内クラスタやPFCP等の実サービスで運用するためのランタイムソフトウェアの開発・維持を担うソフトウェアエンジニアを募集します。以下に本ポジションで想定される主な業務の例を示します。各エンジニアのスキルや得意な領域を活かして複数人で全体を担当します。また、ここで挙げた業務以外にも、他チームとの協力や事業拡大に伴い、幅広い業務を担当していただく可能性があります。
業務内容例
- PFNが開発するMN-Coreアクセラレータを最適に動作させるためのソフトウェア開発業務に従事していただきます
- PyTorchなどの上位フレームワークで記述されたコード及びMN-Core向けコンパイラの出力を基に、実デバイスへの命令/データ供給などを最適化するデータ/命令供給用コンポーネントの開発
- 複数デバイスを用いた分散学習/推論機能に必要な集団通信の開発及び上位フレームワークとの統合
- アクセラレータシステムにおけるホストサイドのパフォーマンス解析/最適化
- カーネルからユーザ空間までの複数レイヤにまたがる不具合の解析/対応
- MN-Coreのパフォーマンスを最大限に引き出すため、オーバーヘッドを最小化しつつ、実サービス提供に必要な信頼性やセキュリティ要件を満たすソフトウェア開発に設計から携わっていただきます
- 上記に加え、本ポジションでは以下の周辺レイヤとも関わる可能性があります
- 次世代MN-Core設計に対するランタイムレイヤからのレビュー及びフィードバック
- MN-CoreをKubernetesクラスタで運用するために必要な、Device PluginやモニタリングシステムなどのKubernetesコンポーネントの開発
- MN-Core向けデバイスドライバの設計・開発
本ポジションの魅力
- MN-Coreが動作する際に必要なすべての要素を触ることができます。計算機を動作させることに面白さを感じる人にとって、最高の題材です
Qualifications
- C言語によるソフトウェア開発経験
- Pythonによるソフトウェア開発経験
- GitおよびGitHubを利用したソフトウェア開発経験
- Linuxホストシステムについての基礎的な理解
- コンテナ仮想化およびVM仮想化についての基礎的な理解
- 大学学部レベルのコンピュータサイエンスについての基礎的な理解
- ビジネスレベルの日本語能力
- 平易な英語で書かれた技術資料を読み書きする能力
- 機械学習・深層学習ワークロードの最適化に関する知見
- PyTorchなど主要なフレームワークにおけるランタイム最適化に関する知見
Preferred Qualifications
- 機械学習・深層学習ワークロードの最適化に関する実務経験
- PyTorchなど主要なフレームワークにおけるランタイムの開発・改良に関連する実務経験
- アクセラレータシステム(GPUなど)の利用及び性能プロファイリングの経験
- InfiniBand や RoCE などの RDMA を使ったソフトウェアの開発経験
- ユーザースペースI/Oなどを活用した低オーバヘッドなAPIの設計・実装経験
- SSE/AVX などの拡張命令を用いたプログラムの実装経験
- Linuxシステムソフトウェアやドライバ開発の実装経験
- Go言語によるソフトウェア開発経験
- Kubernetesクラスタの利用/構築/運用などの経験
- カンファレンスや勉強会等での発表経験
- 多人数のチームでのソフトウェア開発経験・OSSコミュニティでのソフトウェア開発経験
- その他、各種コンポーネント・レイヤを横断したトラブルシュートやバグ解析・修正の経験
Portrait of a person
- 様々な分野への関心、新たな技術領域の知見獲得の意欲のある方
- 同職種・他職種に関わらずリスペクトして一緒に楽しく働ける方
- 強みを活かして、チームメンバと助け合える方
- 誰の持ち物かに関わらず自分事として捉え課題解決を推進できる方
- 様々な専門性を持つ人がいる環境で新しいことを吸収し、楽しめる方