SlideShare a Scribd company logo
pytorch-segmentationを
TPUで実行してみた/
pytorch-lightningで書き換えてみた
東京大学大学院 情報理工学系研究科
電子情報学専攻 坂井・入江研 D1
谷合 廣紀
今日の内容
• セマンティックセグメンテーションを題材に
• PyTorchでTPUを使ってみる
• pytorch-lightningで学習コードを書き直す
pytorch-segmentation
• https://github.com/nyoki-mtl/pytorch-segmentation
• PyTorchで書いたセマンティックセグメンテーション用のコード
• Deeplab V3+, MobileNet V2, Unetなどが使える
TPUで実行してみた
TPUとは
• Googleが開発したディープラーニング用のプロセッサ
• Google ColaboratoryやGoogle Cloud Platformで使える
• フレームワークとしえはKeras/Tensorflowが対応
PyTorchからもTPUを使ってみたい
• 去年10月くらいにPyTorchも今後TPUに対応していくことが発表された
• https://cloud.google.com/blog/products/ai-machine-
learning/introducing-pytorch-across-google-cloud
• https://github.com/pytorch/xla で開発が進められている
• XLA(Accelerated Linear Algebra)はTensorflow用のコンパイラ
• XLAでコンパイルした中間言語はTPUで実行可能
pytorch/xla
• githubのページに行くとチュートリアルがある
• 実行してみよう!
環境
• Google Cloud Platformで実験
• インスタンス
• TPU v3x8 (第三世代のTPUが8台)
• n1-standard-16 (vCPU x16, Memory 60GB)
TPUの起動 (コマンド例)
$ gcloud compute tpus create tpu-
node1 
--zone=us-central1-a 
--network=default 
--range=10.0.101.0 
--version=pytorch-0.1 
--accelerator-type=v3-8
Pytorch用のソフトウェア
CPUの起動 (コマンド例)
$ gcloud compute instances create master-
vm 
--zone=us-central1-a 
--machine-type=n1-standard-16 
--image=debian-9-torch-xla-
v20190817 
--image-project=ml-images 
--boot-disk-size=100GB 
--boot-disk-type=pd-ssd
Pytorch用のイメージ
MNIST実行
$ gcloud compute ssh master-vm
(vm)$ export XRT_TPU_CONFIG="tpu_worker;0;10.0.101.2:8470“
(vm)$ conda activate pytorch-0.1
(pytorch-0.1)$ cd /usr/share/torch-xla-0.1/pytorch/xla
(pytorch-0.1)$ python test/test_train_mnist.py
pytorch-segmentationを書き換える
• もとのコード
https://github.com/nyoki-mtl/pytorch-segmentation/blob/master/src/train.py
• TPU用のコード
https://github.com/nyoki-mtl/pytorch-segmentation/blob/tpu/src/train_tpu.py
• UNetでcityscapesを学習させてみる
ライブラリ
• TPU用の環境変数
• torch-xlaのインポート
TPUの設定
• 使用するデバイスの設定
• max_devices: TPUをいくつ使うか指定でき、Noneなら全部使う
モデルの並列化
• Train
• Valid
Train loop
所感
• 思ったより簡単にTPU実行可能なコードに書き換えることができた
• まだできていない部分も多い
• Dilated convが実行できなかったので、deeplab v3+は動かせなかった
• model.eval()をするとBatchNormの挙動がおかしくなっているように感じた
• 学習に時間がかかる
• NVIDIA TITAN Vで3分の学習がTPU v3x8で20分ほどかかった
• TPUの強みを活かせていない or 別のところにボトルネックがあるかも
pytorch-lightningに
書き換えてみた
pytorch-lightningとは
• PyTorchのラッパーで効率的に実験コードを書くことができるライブラリ
• Tensorflowにおけるkerasのような立ち位置
• 最近、Pytorch公式のエコシステムのひとつに
pytorch-lightningの書き方
• pl.LightningModuleを継承したモデルを書いて
pytorch-lightningの書き方
• Trainerで学習を回すだけ
pytorch-segmentationを書き換える
• もとのコード
• https://github.com/nyoki-mtl/pytorch-segmentation/blob/master/src/train.py
• Pytorch-lightningのコード
• https://github.com/nyoki-mtl/pytorch-segmentation/blob/pytorch-lightning/src/pl_model.py
• https://github.com/nyoki-mtl/pytorch-segmentation/blob/pytorch-lightning/src/pl_train.py
• Deeplabv3+でcityscapesを学習させてみる
所感
• コードがきれいにまとまって可読性が向上した
• 機能が多い
• 簡単にマルチGPUや混合精度演算を実行できる
• Tensorboardでログを出力できる
• 簡潔に書ける一方でカスタマイズ性も高い

More Related Content

PPTX
【DL輪読会】Contrastive Learning as Goal-Conditioned Reinforcement Learning
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
PPTX
PyCUDAの紹介
PDF
学位論文の書き方メモ (Tips for writing thesis)
PDF
最適輸送の解き方
PPTX
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
PDF
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PDF
Vision and Language(メタサーベイ )
【DL輪読会】Contrastive Learning as Goal-Conditioned Reinforcement Learning
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
PyCUDAの紹介
学位論文の書き方メモ (Tips for writing thesis)
最適輸送の解き方
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
Vision and Language(メタサーベイ )

What's hot (20)

PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
PDF
【DL輪読会】A Path Towards Autonomous Machine Intelligence
PDF
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
PDF
SLAM開発における課題と対策の一例の紹介
PDF
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
PDF
【DL輪読会】NeRF in the Palm of Your Hand: Corrective Augmentation for Robotics vi...
PDF
[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
PPTX
多目的強凸最適化のパレート集合のトポロジー
PDF
QGISセミナー中級編(V2.4)
PDF
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
PDF
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PPTX
backbone としての timm 入門
PDF
JupyterLabを中心とした快適な分析生活
PDF
Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン
PPTX
[DL輪読会]Pay Attention to MLPs (gMLP)
PPTX
強化学習初心者が強化学習でニューラルネットワークの設計を自動化してみたい
PDF
LightGBM: a highly efficient gradient boosting decision tree
PDF
Deeplearning bank marketing dataset
PPTX
物体検出の歴史(R-CNNからSSD・YOLOまで)
PDF
【メタサーベイ】基盤モデル / Foundation Models
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
【DL輪読会】A Path Towards Autonomous Machine Intelligence
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
SLAM開発における課題と対策の一例の紹介
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
【DL輪読会】NeRF in the Palm of Your Hand: Corrective Augmentation for Robotics vi...
[DL輪読会]Factorized Variational Autoencoders for Modeling Audience Reactions to...
多目的強凸最適化のパレート集合のトポロジー
QGISセミナー中級編(V2.4)
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
backbone としての timm 入門
JupyterLabを中心とした快適な分析生活
Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン
[DL輪読会]Pay Attention to MLPs (gMLP)
強化学習初心者が強化学習でニューラルネットワークの設計を自動化してみたい
LightGBM: a highly efficient gradient boosting decision tree
Deeplearning bank marketing dataset
物体検出の歴史(R-CNNからSSD・YOLOまで)
【メタサーベイ】基盤モデル / Foundation Models

More from Deep Learning JP (20)

PPTX
【DL輪読会】AdaptDiffuser: Diffusion Models as Adaptive Self-evolving Planners
PPTX
【DL輪読会】事前学習用データセットについて
PPTX
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
PPTX
【DL輪読会】Zero-Shot Dual-Lens Super-Resolution
PPTX
【DL輪読会】BloombergGPT: A Large Language Model for Finance arxiv
PPTX
【DL輪読会】マルチモーダル LLM
PDF
【 DL輪読会】ToolLLM: Facilitating Large Language Models to Master 16000+ Real-wo...
PPTX
【DL輪読会】AnyLoc: Towards Universal Visual Place Recognition
PDF
【DL輪読会】Can Neural Network Memorization Be Localized?
PPTX
【DL輪読会】Hopfield network 関連研究について
PPTX
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
PDF
【DL輪読会】RLCD: Reinforcement Learning from Contrast Distillation for Language M...
PDF
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
PPTX
【DL輪読会】"Language Instructed Reinforcement Learning for Human-AI Coordination "
PPTX
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
PDF
【DL輪読会】"Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware"
PPTX
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
PDF
【DL輪読会】Drag Your GAN: Interactive Point-based Manipulation on the Generative ...
PDF
【DL輪読会】Self-Supervised Learning from Images with a Joint-Embedding Predictive...
PPTX
【DL輪読会】Towards Understanding Ensemble, Knowledge Distillation and Self-Distil...
【DL輪読会】AdaptDiffuser: Diffusion Models as Adaptive Self-evolving Planners
【DL輪読会】事前学習用データセットについて
【DL輪読会】 "Learning to render novel views from wide-baseline stereo pairs." CVP...
【DL輪読会】Zero-Shot Dual-Lens Super-Resolution
【DL輪読会】BloombergGPT: A Large Language Model for Finance arxiv
【DL輪読会】マルチモーダル LLM
【 DL輪読会】ToolLLM: Facilitating Large Language Models to Master 16000+ Real-wo...
【DL輪読会】AnyLoc: Towards Universal Visual Place Recognition
【DL輪読会】Can Neural Network Memorization Be Localized?
【DL輪読会】Hopfield network 関連研究について
【DL輪読会】SimPer: Simple self-supervised learning of periodic targets( ICLR 2023 )
【DL輪読会】RLCD: Reinforcement Learning from Contrast Distillation for Language M...
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Language Instructed Reinforcement Learning for Human-AI Coordination "
【DL輪読会】Llama 2: Open Foundation and Fine-Tuned Chat Models
【DL輪読会】"Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware"
【DL輪読会】Parameter is Not All You Need:Starting from Non-Parametric Networks fo...
【DL輪読会】Drag Your GAN: Interactive Point-based Manipulation on the Generative ...
【DL輪読会】Self-Supervised Learning from Images with a Joint-Embedding Predictive...
【DL輪読会】Towards Understanding Ensemble, Knowledge Distillation and Self-Distil...

[DLHacks]pytorch - segmentation を TPU で実行してみた / pytorch - lightning で書き換えてみた