著者は、 Write for DOnations プログラムの一環として、 International MedicalCorpsを選択して寄付を受け取りました。

序章

PyTorch は、ディープラーニングのために Facebook AI Research によって開発されたフレームワークであり、初心者向けのデバッグツールと上級ユーザー向けの高度なカスタマイズの両方を備えており、研究者や実務家がそれを使用しています。 FacebookやTeslaなどの企業。 アプリケーションには、コンピュータービジョン自然言語処理暗号化、およびその他が含まれます。 Introduction to PyTorch などのより高度なDigitalOceanの記事では、PyTorchのしくみと、PyTorchで何を構築できるかについて説明していますが、このチュートリアルでは、PyTorchのインストールに焦点を当てます。

このチュートリアルでは、PyTorchの「CPUサポートのみ」バージョンを3つのステップでインストールします。 このインストールは、PyTorchのインストールと使用を検討しているが、Nvidiaグラフィックカードを持っていない人に最適です。 特に、virtualenvを使用してPython仮想環境にPyTorchをインストールします。 このアプローチにより、PyTorchのインストールが分離され、プロジェクトごとに異なるPyTorchバージョンをインストールできるようになります。 インストールが完了したら、短いPyTorchプログラムを実行してインストールを検証し、PyTorchを使用してイメージの分類を実行します。

このチュートリアルに従うために、実践的なディープラーニングやPyTorchの経験は必要ありませんが、機械学習の用語やテンソルなどの概念にある程度精通していることを前提としています。 これらの概念の詳細については、機械学習の概要をご覧ください。

前提条件

このチュートリアルを完了するには、少なくとも1GBのRAMを備えたPython3のローカル開発環境が必要です。 Python 3のローカルプログラミング環境をインストールしてセットアップする方法に従って、Pythonとプログラミング環境の基本事項をセットアップできます。

ステップ1—PyTorchをインストールする

このプロジェクトのワークスペースを作成し、必要な依存関係をインストールしましょう。 ワークスペースをpytorchと呼びます。

  1. mkdir ~/pytorch

すべてのアセットを保持するディレクトリを作成します。

  1. mkdir ~/pytorch/assets

pytorchディレクトリに移動します。

  1. cd ~/pytorch

次に、プロジェクトの新しい仮想環境を作成します。

  1. python3 -m venv pytorch

環境をアクティブ化します。

  1. source pytorch/bin/activate

次に、PyTorchをインストールします。 macOSでは、次のコマンドを使用してPyTorchをインストールします。

  1. pip install torch torchvision

LinuxおよびWindowsでは、CPUのみのビルドに次のコマンドを使用します。

  1. pip install torch==1.7.1+cpu torchvision==0.8.2+cpu -f https://download.pytorch.org/whl/torch_stable.html

デフォルトでtorchvisionも含まれていることに注意してください。 このサブライブラリには、コンピュータビジョンに固有のユーティリティがいくつか含まれています。これらのユーティリティは、このチュートリアルの後半で使用します。 次に、PyTorchのインストールを確認する出力を受け取ります。

Output
Collecting torch Downloading torch-1.7.1-cp38-none-macosx_10_9_x86_64.whl (108.9 MB) |████████████████████████████████| 108.9 MB 8.3 MB/s . . . Successfully installed pillow-8.1.0 torch-1.7.1 torchvision-0.8.2

注:仮想環境をいつでも非アクティブ化する場合、コマンドは次のとおりです。

  1. deactivate

後で環境を再アクティブ化するには、プロジェクトディレクトリに移動し、source pytorch/bin/activateを実行します。

これで、PyTorchがインストールされたので、PyTorchのインストールが機能することを確認します。

ステップ2—インストールの検証

PyTorchのインストールを検証するために、root以外のユーザーとしてPyTorchで小さなプログラムを実行します。 Pythonファイルを作成するのではなく、Pythonのインタラクティブコンソールを使用してこのプログラムを作成します。

プログラムを作成するには、次のコマンドを使用してPythonインタープリターを起動します。

  1. python3

ターミナルに次のプロンプトが表示されます。

これはPythonインタープリターのプロンプトであり、Pythonステートメントの入力を開始する準備ができていることを示しています。

まず、この行を入力してPyTorchパッケージをインポートします。 コード行を入力した後、ENTERを押します。

  1. import torch

ゼロのベクトルを定義します。 今のところ、 vector は数字の集まり、具体的には数字のリストと考えてください。 詳細:ベクトルは空間内の「矢印」であり、方向(矢印が指す場所)と大きさ(矢印の長さ)の両方を示します。 次に、Tensor()で3つの数値のリストを使用してベクトルを作成します。 これは3次元ベクトルであり、3次元空間の矢印です。

次のPythonを実行します。

  1. torch.Tensor([0, 0, 0])

次の出力が表示されます。

Output
tensor([0., 0., 0.])

これは、PyTorchのインストールが成功したことを示しています。 CTRL+Dを押して、Pythonインタラクティブコンソールを終了します。 次に、PyTorchを使用して画像分類子を作成します。

ステップ3—画像分類にPyTorchを使用する

PyTorchのインストールを検証したので、画像分類子を設定します。

画像分類器は、画像を入力として受け入れ、予測されたクラス(CatDogなど)を出力します。 画像分類子は、ディープラーニングフレームワークで同等の従来の「HelloWorld」です。 慣例に加えて、画像分類から始める大きな理由がいくつかあります。 まず、多くの画像分類器は、大規模なGPUリソースを必要とせずに、コモディティCPUで予測を生成できます。 次に、予測されたクラスに基づいて、画像分類子が機能している(または機能していない)ことを簡単に知ることができます。 これは、たとえばテキストを生成する他のニューラルネットワークには当てはまりません。

このチュートリアルでは、すでにトレーニングされている画像分類器を使用します。 これらを事前トレーニング済み画像分類器と呼びます。 特に、画像分類子を使用して画像のクラスを予測します。 予測は、推論とも呼ばれます。 つまり、事前にトレーニングされた画像分類器で推論を実行します。

まず、JSONファイルをダウンロードして、ニューラルネットワークの出力を人間が読める形式のクラス名に変換します。

  1. wget -O ~/pytorch/assets/imagenet_idx_to_label.json https://raw.githubusercontent.com/do-community/tricking-neural-networks/master/utils/imagenet_idx_to_label.json

次のPythonスクリプトをダウンロードします。このスクリプトは、画像を読み込み、その重みを使用してニューラルネットワークを読み込み、ニューラルネットワークを使用して画像を分類します。

  1. wget https://raw.githubusercontent.com/do-community/tricking-neural-networks/master/step_2_pretrained.py

注:このファイルstep_2_pretrained.pyの詳細なウォークスルーについては、「ニューラルネットワークをだます方法」チュートリアルのステップ2 —事前トレーニング済み動物分類子の実行をお読みください。

次の犬の画像をダウンロードして、画像分類子を実行します。

https://i.imgur.com/duDwOU8.jpg

これを行うには、次のコマンドを使用します。

  1. wget -O assets/dog.jpg https://assets.digitalocean.com/articles/trick_neural_network/step2a.png

最後に、新しくダウンロードした画像に対して事前トレーニング済みの画像分類器を実行します。 Pretrained は、このモデルがすでにトレーニングされており、クラスを正確に、すぐに予測できることを意味します。

  1. python step_2_pretrained.py assets/dog.jpg

これにより、次の出力が生成され、動物分類子が期待どおりに機能することが示されます。

Output
Prediction: Pembroke, Pembroke Welsh corgi

これで、事前にトレーニングされたモデルで推論を実行することはできます。 別の画像を使用する場合は、最初の引数をpython3 step_2_pretrained.pyコマンドに変更することでこれを行うことができます。 引数として、画像ファイルの相対パスを渡します。 次のステップでは、PyTorchで作業するためのいくつかの推奨ツールを要約します。

PyTorchエコシステム

このセクションでは、PyTorchを使用する際に、開始するためのいくつかのフレームワークとライブラリをお勧めします。 これらの追加ライブラリは、PyTorchの旅の後半まで有益ではないかもしれませんが、これらのツールが存在することを知っていると便利なので、準備ができたらそれらを活用できます。

ディープラーニングライブラリごとに、使用する標準的な高レベルのフレームワークがあります。 PyTorchは、最初の数年間はこのルールの例外でした。 ただし、Facebook AI Researchは2019年に、人気が急速に高まっている2つのフレームワークをリリースしました。 どちらのライブラリも2021年2月の時点で完全に成熟していないことに注意してください。その結果、ネイティブPyTorchチュートリアルははるかに使いやすい場所から始めることができます。

  • Classy Vision は、新しいプロジェクトを開始し、大規模なトレーニングを行うためのユーティリティを提供します。 ライブラリは、あらゆるアプリケーションに適合させることができます。 ライブラリは元々ビデオでのアクション認識のために作成されたため、特に便利なビデオユーティリティのセットとビデオデータセットのすぐに使えるサポートが含まれています。 詳細については、チュートリアルにアクセスしてください。 ImageNetでのClassyVisionトレーニングの例を次に示します。Neural-BackedDecisionTrees 。これについては、ニューラルネットワークの視覚化に関するこのチュートリアルについて詳しく知ることができます。
  • PyTorch Lightning は、PyTorchプロジェクトを作成するためのフレームワークを提供します。 同様に、このライブラリを任意のアプリケーションに適合させることができます。 PyTorch Lightningチュートリアルを使用して、それらの例を読むことができます。

統合するのにさらに役立つディープラーニングライブラリにとらわれないツールがいくつかあります。 これらは両方とも、研究コミュニティと業界コミュニティの両方で多作です。

  • Weights and Biases は、実験の追跡用に設計されており、特にa)共同作業者間のコミュニケーション、b)実験の整理、c)多くの実験結果の迅速な視覚化に役立ちます。
  • Tensorboard は、表面上はTensorflow用に設計されています。 ただし、PyTorchは視覚化ダッシュボードをネイティブにサポートしていないため、PyTorchの実践者はTensorboardを採用しました。 PyTorch Webサイトで、Tensorboard視覚化のPyTorchチュートリアルを見つけてください。

PyTorchモデルを本番環境にデプロイするには、一般的に使用されるオプションがいくつかあります。

  • TorchScript は、PyTorchモデルでネイティブにサポートされている展開オプションです。 ただし、2021年のほとんどのモデル展開では、次の2つの方法のいずれかを使用します。
  • ONNX は、すべての深層学習フレームワーク用のオープンソース形式であり、展開だけでなく、深層学習フレームワーク間の相互運用性もサポートします。 実際には、PyTorchモデルからONNX形式に変換するには、デバッグが必要です。 PyTorchがONNXエクスポートのネイティブサポートを増やすにつれて、これは何年にもわたって徐々に改善されてきました。
  • Caffe2 は、これら3つの中で最も一般的に使用される展開オプションです。 Caffe2自体はスタンドアロンのディープラーニングフレームワークでしたが、その後2018年にPyTorchと統合されました。 Caffe2を使用したデプロイの詳細については、PyTorchチュートリアルWebサイトを参照してください。

アプリケーションに焦点を合わせたPyTorchGitHubリポジトリもいくつかあり、それぞれの研究分野で最先端の結果を再現して構築するのに役立ちます。

  • コンピュータビジョン用のDetectron2は、オブジェクト検出、オブジェクトセグメンテーション、キーポイント推定などをサポートします。 また、TorchscriptまたはCaffe2のいずれかでモデルをエクスポートするためのユーティリティも含まれています。
  • 自然言語処理用のTransformersは、多数の最先端モデルとそれに関連するトークナイザーをサポートしています。

PyTorchエコシステムには、さらに多くのPyTorchライブラリがあります。

結論

Python仮想環境にPyTorchをインストールし、いくつかの例を実行してPyTorchが機能することを検証しました。 これで、機械学習をさらに詳しく調べるためのツールが手に入りました。 ディープラーニングのノウハウを開発するための次のステップについては、 PyTorchの概要:手書き数字を認識するニューラルネットワークの構築をご覧ください。 PyTorchだけではありません。 また、機械学習の基礎についても説明します。

PyTorchの詳細については、公式チュートリアルを参照してください。 Tensorflow など、他の一般的なディープラーニングフレームワークを開始することもできます。 その他の機械学習コンテンツについては、機械学習トピックページをご覧ください。