PyTorch はついに Google Cloud TPU を使用できるようになりました。これにより推論パフォーマンスが 4 倍向上します。これをどのように活用できるでしょうか?

PyTorch はついに Google Cloud TPU を使用できるようになりました。これにより推論パフォーマンスが 4 倍向上します。これをどのように活用できるでしょうか?

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

Facebook は PyTorch 開発者会議で PyTorch 1.3 を正式にリリースし、Colab でも呼び出せる Google Cloud TPU の完全なサポートを発表しました。

機械学習開発者はこれまでも Colab で PyTorch を使用できましたが、クラウド TPU をサポートするのは今回が初めてです。これは、高価な GPU を購入する必要がなく、クラウドで独自のモデルをトレーニングできることも意味します。

Google Cloud Platform の新規ユーザーの場合は、300 ドル分の無料クレジットを獲得できます。

現在、PyTorch は Github でサンプル コードを公式に提供しており、Google Cloud TPU を使用してモデルを無料でトレーニングし、Colab で推論を実行する方法を説明しています。

ResNet-50のトレーニング

PyTorch は、クラウド TPU デバイス上で ResNet-50 モデルをトレーニングするケースを初めて導入しました。 Cloud TPU を使用して他の画像分類モデルをトレーニングする場合も、操作は同様です。

トレーニングの前に、コンソールに移動して、VM の名前とリージョンを指定して新しい VM インスタンスを作成する必要があります。

実際のデータで Resnet50 をトレーニングする場合は、CPU の数が最も多いマシンタイプを選択する必要があります。最良の結果を得るには、 n1-highmem-96マシン タイプを選択してください。

次に、Debian GNU/Linux 9 Stretch + PyTorch/XLA ブート ディスクを選択します。実際の ImageNet データを使用してトレーニングする予定の場合は、少なくとも 300 GB のディスク容量が必要になります。トレーニングに偽のデータを使用する場合、デフォルトのディスク サイズは 20 GB のみです。

TPUの作成

  1. コンソールに移動して TPU を作成します。
  2. 「名前」に、TPU ポッドの名前を指定します。
  3. [ゾーン] で、Cloud TPU のゾーンを指定します。その際、前に作成した VM と同じゾーンであることを確認します。
  4. 「TPU タイプ」で TPU タイプを選択します。最良の結果を得るには、 v3-8 TPU (8 v3) を選択します。
  5. 「TPU ソフトウェア バージョン」で、最新の安定バージョンを選択します。
  6. デフォルトのネットワークを使用します。
  7. IP アドレスの範囲を設定します (例: 10.240.0.0)。

fake_data は仮想マシンに自動的にインストールされ、必要な時間とリソースが少なくなるため、最初の実行時にはトレーニングに偽のデータを使用することをお勧めします。トレーニングには conda または Docker を使用できます。

fake_data でのテストに成功したら、ImageNet などの実際のデータでのトレーニングを開始できます。

conda を使用したトレーニング:

  1. # VM の名前とゾーンを入力します。
  2. $ gcloud beta compute ssh "your-VM-name" --zone "your-zone"
  3. (vm)$ export TPU_IP_ADDRESS=IPアドレス
  4. (vm)$ エクスポート XRT_TPU_CONFIG= "tpu_worker;0;$TPU_IP_ADDRESS:8470"  
  5. (vm)$ ulimit -n 10240  
  6. (vm)$ conda をアクティブ化 torch-xla- 0.5  
  7. (torch-xla- 0.5 )$ python /usr/share/torch-xla- 0.5 /pytorch/xla/test/test_train_imagenet.py --datadir=~/imagenet --model=resnet50 --num_epochs= 90 --num_workers= 64 --batch_size= 128 --log_steps= 200  

Docker を使用したトレーニング:

  1. # VM の名前とゾーンを入力します。
  2. $ gcloud beta compute ssh "your-VM-name" --zone "your-zone"
  3. (vm)$ export TPU_IP_ADDRESS=IPアドレス
  4. (vm)$ docker run --shm-size 128G -v ~/imagenet:/tmp/imagenet -e XRT_TPU_CONFIG= "tpu_worker;0;$TPU_IP_ADDRESS:8470" gcr.io/tpu-pytorch/xla:r0. 5 python3 pytorch/xla/test/test_train_imagenet.py --model=resnet50 --num_epochs= 90 --num_workers= 64 --log_steps= 200 --datadir=/tmp/imagenet

n1-highmem-96 VM で完全な v3-8 TPU を使用してトレーニングする場合、通常、最初のエポックでは約 20 分、後続のエポックでは約 11 分かかります。このモデルは、90 エポック後に約 76% のトップ 1 精度を達成します。

Google Cloud による後続の課金を回避するには、トレーニングが完了したら仮想マシンと TPU を削除することを忘れないでください。

パフォーマンスはGPUの4倍

トレーニングが完了したら、Colab にモデルをインポートできます。

ノートブック ファイルを開き、メニュー バーの[ランタイム] で[ランタイム タイプの変更]を選択し、ハードウェア アクセラレータのタイプを TPU に変更します。

まず次のコード セルを実行して、Colab 上の TPU にアクセスできることを確認します。

  1. インポートOS
  2. assert os.environ['COLAB_TPU_ADDR'], '編集 > ノートブック設定 > ハードウェアアクセラレータから TPU を選択してください'

次に、互換性のある PyTorch/TPU コンポーネントを Colab にインストールします。

  1. DIST_BUCKET = "gs://tpu-pytorch/wheels"  
  2. TORCH_WHEEL = "torch-1.15-cp36-cp36m-linux_x86_64.whl"  
  3. TORCH_XLA_WHEEL = "torch_xla-1.15-cp36-cp36m-linux_x86_64.whl"  
  4. TORCHVISION_WHEEL = "torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl"  
  5. # Colab TPU互換PyTorch/TPUホイールと依存関係をインストールする
  6. !pip アンインストール -y torch torchvision
  7. !gsutil cp "$DIST_BUCKET/$TORCH_WHEEL"
  8. !gsutil cp "$DIST_BUCKET/$TORCH_XLA_WHEEL"
  9. !gsutil cp "$DIST_BUCKET/$TORCHVISION_WHEEL"
  10. !pip で"$TORCH_WHEEL"をインストールします 
  11. !pip で"$TORCH_XLA_WHEEL"をインストールします 
  12. !pip で"$TORCHVISION_WHEEL"をインストールします 
  13. !sudo apt-get libomp5 をインストール

次に、トレーニングするモデルと推論する必要がある画像をインポートできます。

PyTorch で TPU を使用するとパフォーマンスはどの程度向上しますか?公式ではTPUの1/8にあたるv2-8のコアを選択。NVIDIA Tesla K80 GPU使用時と比較すると、実測では推論時間が大幅に短縮され、性能が約4倍向上したという。

GitHub アドレス:

https://github.com/pytorch/xla/tree/master/contrib/colab

<<:  教師なし学習のための最も強力な戦略

>>:  2019 年の Web 開発のトレンド トップ 10

ブログ    
ブログ    

推薦する

2017年中国・米国データサイエンス比較レポート:Pythonが年間平均給与11万ドルで1位

[[208216]] ***ニュースによると、Kaggleは最近、機械学習とデータサイエンスに関する...

ジェネレーティブ AI における BYOK (Bring Your Own Key) は諸刃の剣

カスタマイズ性と制御性を約束するコンセプトであるBring Your Own Key (BYOK)が...

...

...

...

...

オープンソースモデル「幻覚」はより深刻です。これは3段階の幻覚検出キットです

大規模モデルには、幻覚を生成するという致命的な問題が長い間存在していました。データセットの複雑さによ...

自動運転の浮き沈み:バブルが消えた後

[51CTO.comよりオリジナル記事] 静かな2019年を経て、自動運転業界は新年を迎え、徐々に活...

ロボットが倉庫火災を引き起こす:Ocado は 1 億 3,700 万ドルの損失!

今年2月、イングランド南部のオカドの倉庫で大火災が発生し、倉庫は使用不能となり、オンライン小売業者は...

MNISTとCIFAR 10を100%の精度で「解いた」と主張する人もいる

MNIST 認識の精度は 100% に達しましたか?最近、プレプリントプラットフォームarXivに掲...

人工知能はビジネス開発にどのような影響を与えるのでしょうか?

[[403654]]人工知能はイノベーションを推進し、ビジネス開発を変えています。人工知能と機械学...

...

...

顔認識技術の法的ギャップを埋める必要がある

顔認識などの新興技術が普及し、何百万人もの人々の生活に入り込むにつれて、技術の使用をめぐる論争がます...

...