サイトへ戻る
サイトへ戻る

Convergence Lab. Research:

PyTorch 1.0 のリリースノートを

読んでみた

PyTorch 1.0 has released!!

Convergence Lab. の木村です。

PyTorch 1.0 がリリースされましたね。ここでは 1.0 の新機能について見ていこうと思います。

PyTorchとは?

PyTorchは Facebook を中心として開発されている Deep Learning フレームワークです。Deep Learning フレームワークといえば、 GoogleのTensorFlowが有名です。しかし、このTensorFlowはやや開発しにくい部分があって好みは別れます。コンラボ的には PyTorchのほうが好きですね。

PyTorch の特徴といえば、以下が挙げられると思います。

  • Define by Runでデバッグしやすい
  • Python との親和性
要するに書きやすいです。

PyTorch 1.0 の新機能

それでは、https://github.com/pytorch/pytorch/releases を読んでいきましょう。

JIT

PyTorch に JIT がつきました。これにより、書きやすさを維持したままパフォーマンスが向上するはずです。以下のように書くだけで良いとのこと。

ドキュメントは以下です。

https://github.com/pytorch/pytorch/releases

分散学習の刷新

torch.distributed のバックエンドが増えました。以下がサポートされます。

  • Gloo
  • NCCL
  • MPI

Gloo (https://github.com/facebookincubator/gloo) は Facebook が開発した分散学習ライブラリのようです。基本的には Gloo を使っていくことになるのだろうか。

C++ Frontend

PyTorchが C++ でもかけるようになりました。 Py とは何かとか考えてはいけません。

[Python]

import torch

model = torch.nn.Linear(5, 1)

optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

prediction = model.forward(torch.randn(3, 5))

loss = torch.nn.functional.mse_loss(prediction, torch.ones(3, 1))

loss.backward()

optimizer.step()

[C++]

#include <torch/torch.h>

torch::nn::Linear model(5, 1);

torch::optim::SGD

optimizer(model->parameters(), /*lr=*/0.1);

torch::Tensor prediction = model->forward(torch::randn({3, 5}));

auto loss = torch::mse_loss(prediction, torch::ones({3, 1}));

loss.backward();

optimizer.step();

という感じで、ほぼそっくりにかけます。

Torch Hub

TensorFlow hubに対抗して PyTorch にも 学習済みモデルのホスティング環境が整備されました。

https://pytorch.org/docs/master/hub.html

ドキュメントの整理はまだこれからのようですね。

その他

その他の目玉機能です。個人的には以下の2つに注目しました。

  • CELU活性化関数
  • CTCLoss のサポート

CELU関数 (https://pytorch.org/docs/master/nn.html#torch.nn.CELU) は、 ELUは x=0 で微妙に滑らかじゃないのを修正した関数です。ELU自体を使うメリットはもうないのかな?という感じ。

CTCLoss (https://pytorch.org/docs/master/nn.html#torch.nn.CTCLoss)は音声認識をよくやる私には嬉しい追加です。これまで、PyTorchでCTCLossを使おうとすると、WarpCTC(https://github.com/SeanNaren/warp-ctc)を使っていました。少しだけ面倒な部分もありました。これからは、pytorch をインストールするだけで使えるので便利です。

あと、Trainer は削除されました。Trainer っぽいものがほしい人は、 Ignite を使うと良いでしょう。

まとめ

ざっくりと、PyTorch 1.0 のリリースノートを見ていきました。

 

Convergence Lab.もよろしくお願いします。

読者登録
前へ
Convergence Lab. Research: よくわかる質問応答システム
次へ
Convergence Lab. Research Blog: NeurIPS2018読み会@PFNで 個別論文発...
 サイトへ戻る
キャンセル
すべての投稿
×

もう少しで完了します。

あなたのメールアドレスにメールを送信しました。 読者登録の承認のため、届いたメールのリンクをクリックください。

OK