2019年12月に「Preferred Networks、深層学習の研究開発基盤をPyTorchに移行」と発表されている。
前ブログで記載したように、本日まで当社の深層学習フレームワークChainerの学習テーマを一通り完了し、詳細はまだまだ理解できていないが深層学習に関連する思考フローやキーワードの学習はできたようだ。数学的な背景やその思考フローなど丁寧な説明である。
ただ、深層学習層はまだ3層なので、これが多重化された場合の最適化の考え方までは理解できていないが、この点は少し後回しにしようと思う。
なので、Chainerチュートリアルで学んだことを足掛かりに、改めてPytorchでも準備されているチュートリアルを受講することにした。
0. PyTorch入門(Learn the Basics)
[0] 目次(table of contents)
[1] テンソル(Tensors)
[2] データセットとデータローダー(Datasets & DataLoaders)
[3] データ変換(Transforms)
[4] モデル構築(Build Model)
[5] 自動微分(Autograd)
[6] 最適化(Optimization Loop)
[7] モデルの保存・読み込み(Save, Load and Use Model)
[8] クイックスタート(Quickstart)
1. PyTorch基礎(Learning PyTorch)
[1] PyTorch60分講座: PyTorchとは?
[2] PyTorch60分講座: Autograd(自動微分)(AUTOGRAD: AUTOMATIC DIFFERENTIATION)
[3] PyTorch60分講座: ニューラルネットワーク入門(NEURAL NETWORKS)
[4] PyTorch60分講座: クラス分類モデルの訓練方法(TRAINING A CLASSIFIER)
[5] 例題を用いた、PyTorchの各要素の解説(LEARNING PYTORCH WITH EXAMPLES)
[6] torch.nnの解説(WHAT IS TORCH.NN REALLY?)
[7] TensorBoardを用いたモデル、データと訓練の可視化(VISUALIZING MODELS, DATA, AND TRAINING WITH TENSORBOARD)
2. 画像処理と動画(Image/Video)
[1] 画像分類タスクに対する転移学習の方法(TRANSFER LEARNING FOR COMPUTER VISION TUTORIAL)
[2] Torchvisionを利用した物体検出のファインチューニング手法(TORCHVISION OBJECT DETECTION FINETUNING TUTORIAL)
[3] 敵対的サンプル(adversarial examples)の生成(ADVERSARIAL EXAMPLE GENERATION)
[4] DCGANの実装チュートリアル(DCGAN TUTORIAL)
3. 自然言語処理(Text)
[1] TransformerとTorchTextを用いたsequence-to-sequenceモデルの学習(SEQUENCE-TO-SEQUENCE MODELING WITH NN.TRANSFORMER AND TORCHTEXT)
[2] 文字単位RNNによる名前(苗字)の分類(NLP FROM SCRATCH: CLASSIFYING NAMES WITH A CHARACTER-LEVEL RNN)
[3] 文字単位RNNによる名前(苗字)の生成(NLP FROM SCRATCH: GENERATING NAMES WITH A CHARACTER-LEVEL RNN)
[4] sequence to sequenceとアテンションによる翻訳モデル(NLP FROM SCRATCH: TRANSLATION WITH A SEQUENCE TO SEQUENCE NETWORK AND ATTENTION)
[5] TorchTextを使用したテキスト分類(TEXT CLASSIFICATION WITH TORCHTEXT)
[6] TorchTextを使用した言語翻訳(LANGUAGE TRANSLATION WITH TORCHTEXT)
4. 深層強化学習(Reinforcement Learning)
[1] 強化学習(DQN)チュートリアル (REINFORCEMENT LEARNING (DQN) TUTORIAL)
[2] 強化学習を用いたマリオの訓練 (TRAIN A MARIO-PLAYING RL AGENT)
[3] 強化学習チートシート (RL CHEAT SHEET)
5. PyTorchモデルのデプロイメント手法(Deploying PyTorch Models in Production)
[1] FlaskのREST APIとしてデプロイする方法(Python環境)(DEPLOYING PYTORCH IN PYTHON VIA A REST API WITH FLASK)
[2] TorchScript入門(INTRODUCTION TO TORCHSCRIPT)
[3] C++でのTorchScriptモデルのロード手法(LOADING A TORCHSCRIPT MODEL IN C++)
[4] PyTorchモデルのONNXへの変換とONNXランタイムでの実行((OPTIONAL) EXPORTING A MODEL FROM PYTORCH TO ONNX AND RUNNING IT USING ONNX RUNTIME)
6. 並列分散型の訓練手法(Parallel and Distributed Training)
[1] PyTorch Distributedの概要(PYTORCH DISTRIBUTED OVERVIEW)
[2] シングルマシン環境におけるモデル並列訓練(SINGLE-MACHINE MODEL PARALLEL BEST PRACTICES)
[3] 分散データ並列訓練入門(GETTING STARTED WITH DISTRIBUTED DATA PARALLEL)
[4] PyTorchで実装する分散アプリケーション(WRITING DISTRIBUTED APPLICATIONS WITH PYTORCH)
[5] 分散RPCフレームワーク入門(GETTING STARTED WITH DISTRIBUTED RPC FRAMEWORK)
[6] 分散RPCフレームワークを用いたパラメーターサーバーの実装(IMPLEMENTING A PARAMETER SERVER USING DISTRIBUTED RPC FRAMEWORK)
[7] RPCを用いた分散パイプライン並列化(DISTRIBUTED PIPELINE PARALLELISM USING RPC)
[8] 非同期実行を用いたバッチRPC処理の実装(IMPLEMENTING BATCH RPC PROCESSING USING ASYNCHRONOUS EXECUTIONS)
[9] 分散データ並列と分散RPCフレームワークの連携(COMBINING DISTRIBUTED DATAPARALLEL WITH DISTRIBUTED RPC FRAMEWORK)
7. 音声データ(Audio)
英語版のチュートリアルサイトでは項目がもう少し細かく分かれていますが、Jupyter Notebookは同じなので、以下2つにまとめています。
[1] torchaudioによる音声データの取り扱い(AUDIO MANIPULATION WITH TORCHAUDIO)
[2] tourchaudioを用いた音声コマンド認識(分類)ニューラルネットワークの構築(SPEECH COMMAND RECOGNITION WITH TORCHAUDIO)
8. モデル最適化(Model Optimization)
[1] PyTorchモジュールのプロファイリング方法(Profiling your PyTorch Module)
[2] Ray Tuneを用いたハイパーパラメータチューニング(Hyperparameter tuning with Ray Tune)
[3] 枝刈り(Pruning)のチュートリアル(Pruning Tutorial)
[4] LSTM単語言語モデルの動的量子化(ベータ版)((beta) Dynamic Quantization on an LSTM Word Language Model)
[5] 画像分類における量子化済み転移学習(ベータ版)((beta) Quantized Transfer Learning for Computer Vision Tutorial)
[6] BERTの動的量子化(ベータ版)((beta) Dynamic Quantization on BERT)
9. PyTorchのフロントエンド利用(Frontend APIs)
[・] 現在作成中、少々お待ちください