この記事は、The Parallel Universe Magazine 54 号に掲載されている「Transfer Learning with TensorFlow* on Intel® Arc™ GPUs」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
転移学習は、新しいデータセットで事前トレーニング済みモデルの使用を可能にするディープラーニング (DL) 手法です。モデルの重みで学習した特徴が適切に適用されるように、新しいデータはオリジナルのデータに十分に類似している必要があります。この場合、モデルを完全にトレーニングする場合と比較して、新しいデータセットを使用してトレーニングする時間を大幅に短縮できます。これは、レイヤーの大部分で事前トレーニング済みの静的重みを残し、最後のモデルレイヤーを新しいデータセットでトレーニングされた新しい Dense レイヤーに置き換える、「ヘッドレスモデル」を使用しているためです。
インテル® Arc™ A シリーズ・ディスクリート GPU は、PC 上で DL ワークロードを迅速に実行する簡単な方法を提供し、TensorFlow* モデルと PyTorch* モデルの両方で動作します。この記事では、インテル® Arc™ GPU 上で TensorFlow 向けインテル® エクステンション (ITEX) (英語) を実行し、Windows* 上で事前に構築された ITEX Docker* イメージを使用してセットアップを簡素化します。この例では、ImageNet データセットで事前トレーニング済みの、TensorFlow* Hub の EfficientNetB0 モデルを使用します。新しいデータセットは、TensorFlow* Datasets にある「Stanford Dogs」です。これには ImageNet で提供されているものより正確な犬種のラベルが付けられた犬の画像が含まれています。Stanford Dogs 向けに DL ネットワークを調整するため、インテル® Arc™ A770 GPU を使用して迅速にトレーニングされる新しい Dense レイヤーを追加します。次に、完全にトレーニングした EfficientNetB0 と比較して、転移学習がどのくらい高速化されたかを確認します。
セットアップ
以前の記事、「インテル® Arc™ GPU で TensorFlow* Stable Diffusion を実行する」では、Windows* Subsystem for Linux* 2 (WSL2) で実行する Ubuntu* コンテナをセットアップして Windows* ホスト上のインテル® Arc™ GPU にアクセスする方法を説明しました。この例では、WSL2 と Docker*、および事前に構築された ITEX Docker* イメージを使用して、ITEX プラグインのインストールを簡素化する方法を紹介します。この記事では、16GB のインテル® Arc™ A770 ディスクリート GPU カードを装着した第 13 世代インテル® Core™ i9 プロセッサー・ベースの PC を使用しました。Windows* 11 上の Docker* コンテナで実行する ITEX を使用します。
準備
まず、Windows* 11 に WSL2 と Ubuntu* 22.04 コンテナがインストールされている必要があります。インストール方法は、こちらを参照してください。Docker* Desktop on Windows* は、Docker* イメージをダウンロードし、WSL2 サブシステムを使用して Docker* コンテナを実行する簡単な方法を提供します。ITEX が設定済みのイメージを使用しますが、最初に Docker* を Windows* にインストールする必要があります。Docker* Desktop for Windows* を使用するか (インストール手順 (英語))、WSL2 内で実行している Linux* に Docker* をインストールします (インストール例 (英語))。
Docker* コンテナで Jupyter Notebook* を実行する
この例では、Ubuntu* (WSL2 内で実行) から Docker* を実行します。最初に、Ubuntu* WSL2 コンテナを起動します。Unix* シェルプロンプトから、ITEX 向けに事前に構築された Docker* イメージをプルします。
$ docker pull intel/intel-extension-for-tensorflow:xpu
ITEX Docker* イメージがダウンロードされていることを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE intel/intel-extension-for-tensorflow xpu 2fc4b6a6fad7 8 days ago 7.42GB
次に、docker run コマンドを使用して、intel/intel-extension-for-tensorflow:xpu イメージでコンテナを開始します。
$ docker run -ti -p 9999:9999 --device /dev/dxg --mount type=bind,src=/usr/lib/wsl,dst=/usr/lib/wsl -e LD_LIBRARY_PATH=/usr/lib/wsl/lib intel/intel-extension-for-tensorflow:xpu
docker run コマンドのオプションは次のとおりです。
- -p 9999:9999 は、Jupyter Notebook* を Windows* のブラウザーで使用できるように、Docker* コンテナ経由で標準ポートを渡します。
- –device /dev/dxg は、インテル® Arc™ A770 GPU にアクセスできるように、DirectX* ドライバーを Docker* コンテナに渡します。
- –mount type=bind,src=/usr/lib/wsl,dst=/usr/lib/wsl -e LD_LIBRARY_PATH=/usr/lib/wsl/lib は、WSL2 の共有ライブラリー・ディレクトリーを Docker* コンテナに渡します。
Docker* Desktop for Windows* を使用している場合は、PowerShell* またはコマンドプロンプトで上記の Docker* コマンドを直接実行できます。
ITEX Docker* コンテナを実行したら、Jupyter Notebook* を含むいくつかのパッケージを pip でインストールします。
root:/# pip install jupyter ‘ipywidgets>=7.6.5’ ‘matplotlib>=3.3.4’ scipy ‘tensorflow_hub>=0.12.0’ ‘tensorflow-datasets>=4.4.0’
Jupyter Notebook* を開始します。
root:/# jupyter notebook --allow-root --ip 0.0.0.0 --port 9999
上記の Jupyter Notebook* コマンドを実行した後、Microsoft Edge* ブラウザーを使用して Jupyter Notebook *サーバーに接続します。Microsoft Edge* ブラウザーで、Jupyter* の出力でリストされた、次のような URL を開きます。
http://127.0.0.1:8888/?token=...