筆者は現在勤務先の研究所で次世代スーパーコンピュータ向けソフトウェアの開発に関わっています。主にAI向けOSS、TensorFlow, PyTorchのArmアーキテクチャプロセッサ向け移植やLLMの性能測定、改修などに取り組んでいます。よって、その業務内容と関連して今後(または現在進行形で)トライしたいことを記載しようと思います。
トライしたいことは、大きく挙げると以下の3点です。
- OSSへのコントリビューション
- OSSのソースコード理解
- DeepXDE, DeepSpeedへの挑戦
OSSへのコントリビューション
業務でTensorFlowやPyTorchなどのOSSを利用しており、バグ修正によるコントリビューションなども行っています。今後も継続してOSSへのコントリビューション(バグ修正、ドキュメント整備等)を継続していきたいです。IssueをSubmitしてもすぐに修正されないということが頻繁に発生します。そういった時に修正コードをCommit出来る様に技術力の強化や内部構造の理解にも努めたいと思います。
OSSのソースコード理解
上記のOSSへのコントリビューションを継続していくために、各OSSの内部構造の理解は不可欠だと感じています。幸い今の職場にTensorFlowの内部構造を長らく勉強されていた方がおられるので、その方から頂いたアドバイスや共有頂いた知見をもとにTensorFlow, PyTorch, Jaxの内部構造を解読していきたいと思っています。
DeepSpeed, Horovodへの挑戦
昨今のLLMは一台のマシン(サーバー)上に載せたGPUで動かすにはあまりにもモデルのデータサイズが大き過ぎます。この肥大化を続けるLLMの実行に有効な手立てとしてモデルを圧縮させるという手も有りますが、いっそのことモデルを複数台のマシン上に分割して乗せた上で実行する、いわゆる分散実行という手法が有ります。それを実現するOSSとしてDeep SpeedとHorovodが有ります。Horovodは老舗でUberによって開発(現在はLFの所属)されました。Deep SpeedはMicrosoftによって開発され、昨今急激に成長しています。但し、PyTorchのみに対応しているため、TensorFlowを分散実行するためにはHorovod一択となります。これらのOSSをLLMのフレームワークに取り込んで複数台のサーバー上で実行出来る様に改良できればと思っています。
DeepXDEへの挑戦
微分方程式を解くためのDeep Learningフレームワークが開発されました。それが、DeepXDEです。微分方程式は一部を除いて直接的に手計算で解くことは困難です。そんな微分方程式をNeural Networkの力を借りて解こうというコンセプトの様です。まだまだ登場したばかりで、ソースコードも熟れてはいないようです。コミットのチャンスも多々有りそうです。
2024/6/23追記:Amazonギフト券抽選に当選しました
この記事はFindy主催の記事投稿キャンペーンで投稿したのですが、そのキャンペーンは抽選で500人にAmazonギフト券が当たるというものでした。どうやら筆者はその抽選に当選したみたいで、ギフト券を頂きました。