インテル® Arc™ GPU で TensorFlow* Stable Diffusion を実行する

マシンラーニング

この記事は、The Parallel Universe Magazine 51 号に掲載されている「Run TensorFlow* Stable Diffusion on Intel® Arc™ GPUs」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


parallel_v51_07

インテルは、ハイパフォーマンス GPU の「インテル® Arc™ A770」を含む、新しいインテル® Arc™ A シリーズ・グラフィックス・ハードウェアを発表しました。A770 は、ゲーム、デジタルコンテンツ制作、ストリーミングに優れていますが、PC 上でディープラーニング (DL) ワークロードを実行することも可能です。

TensorFlow* (TF) は、確立された DL フレームワークです。インテルは、TF が GPU やその他のオフロードデバイスを含むさまざまなアクセラレーターをターゲットにできるように、Google* とプラグイン・インターフェイス (英語) を設計しました。TensorFlow* 向けインテル® エクステンション (英語) は、ネイティブ Linux* と Windows* Subsystem for Linux* 2 (WSL2) の両方で動作するインテル® Arc™ A シリーズ GPU の実験的サポートを含む、インテル® GPU 上で TF DL ワークロードを実行できるようにするプラグインです。ネイティブ Windows* 上での実行には、TensorFlow* DirectML プラグイン (英語) を使用できます。

WSL2 上の Ubuntu* 20.04 に TensorFlow* 向けインテル® エクステンションをインストールするのは簡単です。Windows* と WSL2 にドライバー、ランタイムパッケージ、TF、拡張機能をセットアップする手順を説明します。インテル® Arc™ A770 GPU でテキストから画像生成するため、Jupyter* Notebook で TF を使用して人気のある KerasCV* Stable Diffusion 機能を簡単に実行する方法を紹介します。

WSL2 での Ubuntu* 20.04 のセットアップ

本記事では、第 12 世代インテル® Core™ i9-12900 プロセッサー (開発コード名 Alder Lake) 搭載の PC とインテル® Arc™ A770 ディスクリート・グラフィックス・カード 16GB を使用しています。前提条件として、Windows* 11 に WSL2 と Ubuntu* 20.04 コンテナがインストールされている必要があります。WSL2 を使用して Ubuntu* 20.04 コンテナをセットアップする手順は、こちらを参照してください。WSL2 は、Windows* ホストで GPU にアクセスするため、DirectX* を含む特別な Linux* カーネルビルドを使用します。これにより、汎用の GPU 計算機能を Windows* と Linux* で共有できます。GPU は Windows* ホストで管理されるため、GPU ドライバーは Windows* にインストールする必要があります。GPU 用の低レベルドライバーをインストールするには、インテル® Arc™ グラフィックス Windows* DCH ドライバーの標準インストーラーを使用する必要があります。ここでは、自己インストール型の実行ファイルを使用して、最新のドライバー (v31.0.101.3490) がインストールされました。

Ubuntu* Linux* でのインテル® グラフィックス計算ランタイムと oneAPI パッケージのセットアップ

Windows* にドライバーをインストールし、WSL2 上の Ubuntu* 20.04 コンテナを起動したら、次のステップでは apt-get コマンドを使用していくつかの Ubuntu*/Debian* パッケージをインストールします。まず、apt システムにインテル® グラフィックス・パッケージの専用リポジトリーを追加する必要があります。

$ sudo apt-get install -y gpg-agent wget
$ wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | \
     sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
$ echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg]
     https://repositories.intel.com/graphics/ubuntu focal main' | \
     sudo tee /etc/apt/sources.list.d/intel.gpu.focal.list
$ sudo apt-get update

リポジトリーが登録されると、以下のコマンドを使用して、インテルが提供するランタイムパッケージをインストールできます。

$ sudo apt-get install \
       intel-opencl-icd=22.28.23726.1+i419~u20.04 \
       intel-level-zero-gpu=1.3.23726.1+i419~u20.04 \
       level-zero=1.8.1+i419~u20.04

これにより、上記のパッケージと暗黙の依存関係が Ubuntu* 20.04 (WSL2 で実行) にインストールされます。

TensorFlow* 向けインテル® エクステンションはインテル® oneAPI ツールキットを使用してビルドされています。そのため、いくつかの oneAPI ランタイム・ライブラリーもインストールする必要があります。

まず、インテルの oneAPI リポジトリーを apt システムに登録します。

$ wget -O- \
   https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | \
   sudo gpg --dearmor --output /usr/share/keyrings/oneapi-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] \
     https://apt.repos.intel.com/oneapi all main" | \
     sudo tee /etc/apt/sources.list.d/oneAPI.list
$ sudo apt-get update

次に、DPC++ と oneMKL ランタイムパッケージをインストールします。

$ sudo apt-get install intel-oneapi-runtime-dpcpp-cpp intel-oneapi-runtime-mkl

(この記事でインストールしたバージョンは、intel oneapi runtime dpcpp cpp=2022.2.1 16953 と intel oneapi runtime mkl=2022.2.1 16993です。) これは、TensorFlow* 向けインテル® エクステンションを実行するためのライブラリーのみをインストールし、oneAPI の完全な開発パッケージ (より大規模なもの) は含まれません。oneAPI の開発パッケージ全体をインストールする場合は、oneAPI のインストール・ドキュメント (英語) を参照してください。

Python* 仮想環境の作成

TF を GPU で使用する場合は、Miniconda* を推奨します。Linux* 用の conda 環境を作成する完全なドキュメントは、こちら (英語) を参照してください。最初のステップとして、Ubuntu* 20.04 に Miniconda* をダウンロードしてインストールします。

$ curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
     -o Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh

次に、TF と TensorFlow* 向けインテル® エクステンションを新しい環境にインストールし、pip を最新バージョンに更新します。

$ conda create --name keras-cv python=3.9
$ conda deactivate
$ conda activate keras-cv
(keras-cv)$ pip install --upgrade pip

これで、TF (v2.10.0) と TensorFlow* 向けインテル® エクステンション (v1.0.0) をインストールできるようになりました。

(keras-cv)$ pip install tensorflow==2.10.0
(keras-cv)$ pip install --upgrade intel-extension-for-tensorflow[gpu]

パッケージ名の最後にある [gpu] は、拡張機能の GPU バックエンドを選択するように指定するものです。

タイトルとURLをコピーしました