PyTorchとは
PyTorchは、コンピュータビジョンや自然言語処理で利用されているTorch(英語版)を元に作られた、Pythonのオープンソースの機械学習ライブラリである。最初はFacebookの人工知能研究グループAI Research lab(FAIR)により開発された。PyTorchはフリーでオープンソースのソフトウェアであり、修正BSDライセンスで公開されている。Pythonインターフェイスの方が洗練されており、活発に開発が行われているが、C++インターフェイスも存在する。
さまざまなディープラーニングのソフトウェアがPyTorchを利用して構築されており、その中には、UberのPyro、HuggingFaceのTransformers、Catalystなどがある。
PyTorchは次の2つの高度な機能を備えている。
・強力なGPUサポートを備えた(NumPyのような)テンソル演算ができる
・テープベースの自動微分システムの上に構築された深層ニューラルネットワークが利用できる
Dockerで環境構築
Dockerfile
FROM pytorch/pytorch:1.3-cuda10.1-cudnn7-runtime
RUN pip install --upgrade pip setuptools \
&& pip install matplotlib jupyter
docker-compose.yml
version: '3.3'
services:
pytorch:
container_name: pytorch
build: .
tty: true
stdin_open: true
ipc: host
ports:
- "8889:8889"
volumes:
- .:/opt/pytorch
environment:
- JUPYTER_CONFIG_DIR=/opt/pytorch
working_dir: /opt/pytorch
jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8889
c.NotebookApp.token = ''
Jupyter起動までの手順
$ docker-compose up -d pytorch
Creating pytorch ... done
$ docker exec -it pytorch bash
# pwd
/opt/pytorch
# jupyter notebook --allow-root &
後片付けの手順
# exit
$ docker-compose stop
Stopping pytorch ... done
$ docker-compose rm
Going to remove pytorch
Are you sure? [yN] y
Removing pytorch ... done
DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ
DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ を用いて、基本的な操作からCIFAR10のデータセットを用いた画像分類までを実施。
このチュートリアルは5つに分かれていて、それぞれどんな内容なのかというと、
What is PyTorch?
- 基本的なTensorの操作について
- Numpy Array <=> Tensor
Autogad: Automatic Differentiation
- Gradientsについて
Neural Networks
- NNの定義について
- Loss functionについて
- バックプロパゲーションについて
- Optimizerについて
Training a Classifier
- CIFAR10データセットについて
- データセットの準備
- CNNを定義
- Loss function と Optimizerを定義
- ネットワークを学習させる
- テストデータを使って分類
- モデルの保存、読み込み
- 全体のAccuracyの確認
- GPUを使うには
Optional: Data Parallelism
- 複数のGPUを使用する方法について
チュートリアルを実施したノートブック
チュートリアルを実施したノートブックはGitHubにPush。
参考