Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ACRiルーム最新情報とAMD GPUサーバーのご紹介

ACRiルーム最新情報とAMD GPUサーバーのご紹介

ACRiルームは2020年7月のオープンから今年で5年目を迎えます。ACRiルームに新たに導入された機材や最近の利用状況についてご紹介します。また、ACRiルームにAMD GPUを導入するにあたって苦労した話、AIモデルの学習から推論までをGPUとAI Engineを使って実行するチュートリアル、生成AIを動かしてみた話をご紹介します。

Jun Ando

July 24, 2024
Tweet

More Decks by Jun Ando

Other Decks in Technology

Transcript

  1. ACRi ルーム ©︎ 2024 Adaptive Computing Research Initiative - ACRi

    4 Alveo / VCK5000 Professors ACRi Founders • Digilent社 Arty A7-35T カード • 1サーバにArtyを15枚接続 • ユーザ毎にVMを割り当て ルーム FPGA Server • CPU: Core i9 (8 core /16 thread) • メモリ: DDR4 128GB (32GB x 4) • ストレージ: SSD M.2 1TB x2 • 開発環境インストール済み Arty A7-35T • 3時間単位で機材を無償で貸出し • リモートからアクセスして利用するスタイル • Forumを通じて大学教員やACRi企業が技術支援を実施 • Xilinxアクセラレータカード • Alveo U50 / U200 / U250 / U280 / VCK5000 Alveo Arty ACRi 参加企業 一般企業 学生 若手技術者 Start-up企業 技術力向上 テスト利用 技術力向上 のため 技術力向上 テスト利用 Instinct • AMD Instinct GPU • MI210 64GB
  2. 稼働中のFPGAボード • Arty A7-35T • LUT : 20.8K • FF

    : 41.6K • Block RAM : 225KB • DDR3 256MB • 80枚 • CMod A7-35T • LUT : 20.8K • FF : 41.6K • Block RAM : 225KB • 10枚 • Nexys A7-100T • LUT : 63.4K • FF : 126.8K • Block RAM : 607KB • DDR2 128MB • 10枚 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 5 画像引用: https://digilent.com/reference/programmable-logic/arty-a7/start https://digilent.com/reference/programmable-logic/cmod-a7/start https://digilent.com/reference/programmable-logic/nexys-a7/start
  3. FPGAボードサーバー • 稼働状況 • 物理サーバー数:10 • VM数:100 ©︎ 2024 Adaptive

    Computing Research Initiative - ACRi 6 画像引用: https://gw.acri.c.titech.ac.jp/wp/manual/gallery ACRiルーム移設前のサーバーの様子
  4. Alveo / Instinct サーバー • Alveoサーバー • Instinctサーバー ©︎ 2024

    Adaptive Computing Research Initiative - ACRi 7 • 共有サーバー • 予約なしでいつでも使えます VCK5000 Versal開発カード Instinct MI210
  5. VCK5000 Versal開発カード • Versal AIコアシリーズ VC1902 • LUT : 900K

    • AI Engine : 400(INT8 MAC 128Tops) • プロセッサがタイル状に配置されたFPGAとの親和性の高い アーキテクチャ • XDNAとも呼ばれ、ラップトップ向けCPUにもNPUとして搭載 • AI Engine • ACRiブログ:AI を加速する AI Engine アーキテクチャ 解説と入門チュートリアル https://www.acri.c.titech.ac.jp/wordpress/archives/13108 • Vitis AI • ACRiルームでVitis AIを利用するチュートリアル https://gw.acri.c.titech.ac.jp/wp/manual/vitis-ai-rocm ©︎ 2024 Adaptive Computing Research Initiative - ACRi 8 AI Engineの構造
  6. AMD Instinct MI210 • スペック概要 ©︎ 2024 Adaptive Computing Research

    Initiative - ACRi 11 大容量のVRAMを積んでいるので 生成AIで遊ぶのに良さそう!
  7. 冷却 • MI210はファン無しなので冷却ファンを作る • ACRiルームのマシンは自作PC • 300Wで動作OKに ©︎ 2024 Adaptive

    Computing Research Initiative - ACRi 13 1. ファンを取り付けるアダプタを印刷 2. ちょうど良いところにあったねじ穴にねじ止め 3. ファンを装着
  8. 補助電源 • MI210の補助電源はATX12V( EPS12V ) • ゲーム用GPUとは異なる • PCIe補助電源を無理に挿すと壊れます •

    マザーボード向けを1本 MI210に • 非推奨 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 14 マザーボード 電源ユニット ATX12V ATX12V MI210 一見PCIe補助電源コネクタに見えるが 微妙にピンの形が違う
  9. インストールの準備が完了 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 15

    自宅での検証の様子。PCケースが小さくて入らなかった
  10. ACRiルームのマシンでトラブル • GPUドライバが立ち上がらない‥ • 原因 • MI210のPCIe BARを物理アドレス空間にマップできていなかった • 64GBメモリをPFとVFのふたつ分だけで128GBの領域が必要

    • Intel 11世代 Core i7では物理アドレス空間が39bit(512GB)で不足 • 検証機のRyzen 9 7950Xは48bitで問題なかった • Intel 12世代(46bit)のマシンに交換してもらい解決 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 16 [ 2.709472] amdgpu 0000:03:00.0: amdgpu: Fatal error during GPU init [ 2.709499] amdgpu: probe of 0000:03:00.0 failed with error -12
  11. ソフトウェア面の準備 • AIを自由に試せるようにしたい • 必要なソフトウェアやAIモデルをインストールできる環境を提供 • Python仮想環境 • venv •

    conda • Docker • Vitis AI • カスタムイメージ • HTTPプロキシの導入 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 17
  12. ACRiルームの仕組み(Alveo系サーバーの場合) ©︎ 2024 Adaptive Computing Research Initiative - ACRi 18

    aservX(物理ホスト) CPU:16 threads Mem:128GB as00X(コンテナ) CPU:8 threads Mem:64GB ファイル サーバー ファイル サーバー /dev/xclmgmt* /dev/dri/renderD* /dev/xfpga/* /dev/xvc_* /scratch /opt/xilinx/platforms /home/$USER /tools NFS NFS Local SSD ssh xrdp 認証 予約 サーバー ログイン サーバー 認証 サーバー Alveo start_container.sh cron 毎分実行 起動/停止/削除 参照 マウント NIS ユーザー 予約 利用
  13. 利用環境内でDockerが使える仕組み • 従来の利用環境はDockerで構築 • Docker内でDockerを動かせるようにするには特権モードが必要 • Rootless Docker in LXD

    • Rootless Dockerはユーザー権限で実行するDocker • ユーザーが自由にコンテナを使用できる • LXDはシステムコンテナ • コンテナ内でsystemdが動き、仮想マシンのように使える • Ansibleでコンテナ内にデスクトップ環境を構築 • rootを含むすべてのUID/GIDがホストで使われていない だろう番号に自動でマッピングされる • ホストのPCIeデバイスをDockerコンテナから 利用できるようにする ©︎ 2024 Adaptive Computing Research Initiative - ACRi 19 ホスト LXD Rootless Docker Vitis AI等 PCIeデバイス 利用環境
  14. 利用環境内でDockerが使える仕組み • Rootless Dockerでユーザー権限でコンテナを使用する • コンテナ内のroot = 利用環境のユーザー • コンテナ内の一般ユーザーには未使用のUID/GIDを割り当てる

    ©︎ 2024 Adaptive Computing Research Initiative - ACRi 21 ホスト LXD Rootless Docker Vitis AI等 利用環境 root root ??? user-a user-a user-b user-b root UID idmap user-c ??? ??? /etc/subuid /etc/subgid ??? ??? group-d GID
  15. コンテナ内でAMD GPUを利用する • ROCm • GPUの利用者はvideo/renderグループに属している必要あり • ホストのGIDをRootless Dockerコンテナまでつなげる ©︎

    2024 Adaptive Computing Research Initiative - ACRi 22 ホスト LXD Rootless Docker Vitis AI等 利用環境 root root ??? user-a user-a user-b user-b root UID idmap user-c ??? ??? /etc/subuid /etc/subgid ??? ??? group-d video video video render render render GID idmap
  16. fserv9 HTTPプロキシの導入 • インターネットアクセス制限を緩和 • 従来ACRiルームからインターネットへのアクセスは禁止 • ホワイトリスト方式のプロキシ、ミラーを導入 • ACRiルームの他のサービスに影響がないよう下り帯域を制限

    ©︎ 2024 Adaptive Computing Research Initiative - ACRi 23 HTTPプロキシ (squid) PyPIミラー (devpi-server) HuggingFaceミラー (olah) Internet .pypi.org .anaconda.org .huggingface.co .onnxruntime.ai .pytorch.org .github.com .docker.io .ubuntu.com .radeon.com など 利用環境
  17. 生成AIを動かしてみる • ROCm Blogs • 週1以上のペースでAIを中心としたGPU活用の記事を配信 • vLLMを動かす記事を試してみた • Rootless

    Dockerを使ってvLLMのDockerイメージの作成、動作に成功 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 24 https://rocm.blogs.amd.com/artificial-intelligence/openllm/README.html
  18. 生成AIを動かしてみる • CyberAgentLM3-22B-Chat • 7/9プレスリリース • 22Bパラメータ(45GB) • MI210なら量子化なしでOK •

    vLLMで16リクエストを同時処理 • 計約160 tokens/sec ©︎ 2024 Adaptive Computing Research Initiative - ACRi 25 FPGAのエクストリームな使い方を聞いてみています
  19. Vitis AIによる画像分類チュートリアル • モデルの学習から推論までを体験 • 学習(GPU) • 量子化(GPU) • コンパイル(CPU)

    • 推論(AI Engine) ©︎ 2024 Adaptive Computing Research Initiative - ACRi 27 ACRiルームホームページのメニューから アクセスできます
  20. 画像分類モデルの学習 • CIFAR-10 • 10クラス画像分類データセット • モデルの学習 • ResNet9 •

    9層の軽量なモデル • PyTorch Lightning • モデルの学習に必要となる一般的なテクニックが実装済み • MI210を使用し15分(200エポック)で精度95% ©︎ 2024 Adaptive Computing Research Initiative - ACRi 28 画像引用: https://www.cs.toronto.edu/~kriz/cifar.html CIFAR-10 画像分類データセット TensorBoardによる学習状況のモニタ
  21. 量子化、コンパイル • GPUで高速に量子化 • Vitis AIのDockerイメージはPythonのバージョンが古い • 必要なツールをソースコードからビルドして使用 • LightningModule内に量子化コードを実装

    • Dockerを利用してコンパイル • コンパイラはバイナリ提供 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 29 コンパイル済みモデルをNetronで確認
  22. 推論 • AI Engineを使用して推論を実行 • Pythonコードから推論を実行 • 前処理、後処理はPyTorchで実行 • データの入力にLightningDataModuleを再利用

    • 推論結果をターミナルにビジュアルで表示 ©︎ 2024 Adaptive Computing Research Initiative - ACRi 30 AI Engineで推論