ROCmビルドで消耗しないための方法
AMD GPUでニューラルネットワーク用のROCm(Radeon Open Compute)スタックをデプロイしようとしたことがある人なら、それが有多么是一场冒险か分かるでしょう。たいていの場合、大規模なバイナリパッケージをインストールしてシステムの半分以上の依存関係を引っ張ってくるか、すべてをソースからコンパイルしようとして、適切なライブラリバージョンを見つけるのに終わりがないかのどちらかになります。
最近、AMDチームのリポジトリ「TheRock」を見つけました。HIPとROCmのビルドおよびデプロイプロセスを人間に優しいものにする試みです。このプロジェクトは現在早期プレビューのステータスですが、AMDハードウェアで最新のPyTorchやJAX機能を使いたい人にとって、公式ディストリビューションのリリースを待つ必要がないライフラインになりそうです。
この「石」の中身
TheRock(The HIP Environment and ROCm Kit)は、轻量化されたビルドプラットフォームです。本質的には、必要なROCmコンポーネントを取得し、パッチを当てて、单一のまとまったユニットにビルドできる大規模なCMakeプロジェクトです。
ここでの主な価値はコードそのものにはない,而是インフラにあります。AMDの人たちがリリースしたツールは、あらゆる点から判断すると、日常的なビルドに使っているもののようです。
現在このプロジェクトが提供するもの:
- ROCmとPyTorchのナイトリービルド。昨日masterにマージされた修正が必要なら、これが道筋です。
- ROCm用にソースからPyTorchとJAXをビルドするサポート。
- クロスプラットフォーム互換性。さまざまなLinuxディストリビューションで動作し、驚くべきことにWindows 11でもネイティブに動作します。
- 细粒度のカスタマイズ。不要なもの(デバッガーや特定の通信ライブラリなど)を取り除き、タスクに必要なものだけをビルドできます。
実際の動作
このプロジェクトは環境準備にPythonスクリプトを使い、実際のビルドにはCMakeを使います。興味深い詳細として、DVC(Data Version Control)が重いバイナリデータ(コンパイルされたMIOpenカーネルなど)の管理に使われています。これにより、すべてを最初から再ビルドする必要がないので、コンパイル時間が大幅に節約されます。
Ubuntu 24.04で始めるには、プロセスは次のようになります:
その後、CMakeのマジックが始まります。GPUアーキテクチャはフラグで指定できます。「頭」が哪一个かわからない場合は、リポジトリ内に正しいターゲットを提案してくれるスクリプトがあります。
ビルドの柔軟性
TheRockはモジュラーフラグシステムを実装しています。クラスターでの分散トレーニングをしていないなら、RCCLなどの通信ライブラリは不要でしょう。シンプルにオフにできます:
コンポーネントのリストは印象的です:コンパイラやランタイムから、ビデオ処理ライブラリ(rocDecode、rocJPEG)、プロファイリングツールまで。ROCjitsuによるエミュレーションサポートもあり、手元にないGPU用のコードを書く必要がある場合に便利です。
ccacheでプロセスを高速化
LLVMや重いMLライブラリのビルドには時間がかかります。TheRockの開発者たちはこれを理解しており、ccache設定用のスクリプトを追加しています。さらに、AMDGPU用コードのコンパイルの特殊性(フラグ)も考慮しており、これが通常のccacheを不安定にさせることがあります。
Linuxでは、单一のコマンドで有効になります:
その後、重复ビルドがずっと速くなります。
誰が恩恵を受けるか
TheRockが非常に有用的だと感じる3つの主なシナリオがあります:
- 研究者とMLエンジニア:安定したDockerイメージにまだ含まれていない新しいROCm機能をサポートする最新のPyTorchを実行する必要がある場合。
- ライブラリ開発者:HIPの上で何かを書いているなら、すべてのデバッグツール(ROCgdb、rocprofv3)を備えた便利なサンドボックスが提供されます。
- Windowsユーザー:WindowsでのROCmサポートはまだLinuxに追いついている最中で、VS 2022経由の明確なビルドガイドがあることは大きな利点です。
TheRockプロジェクトは「ただの別のインストーラー」ではなく、プロフェッショナルなワークベンチのようなものです。是的、CMakeの仕組みとシステムに必要な依存関係についての理解が必要です。しかし、その見返りとして、ROCmスタックへの完全なコントロールが得られます。
システム内のパッケージ競合との戦いや、マシンラーニングタスクでRadeonから最大の性能を引き出したいことに厌倦しているなら、このリポジトリを覗いてみてください。ただし、プロジェクトは早期アクセス段階であることを忘れないでください—バグの可能性はありますが、コミュニティとAMDの開発者はかなりアクティブです。
ナイトリービルドの状況とドキュメントは、 関連プロジェクト