PyTorch 0.3.1 リリースノート

PyTorch 0.3.1 リリースノート (翻訳)

翻訳 : (株)クラスキャット セールスインフォメーション
日時 : 04/20/2018

* 本ページは github PyTorch の releases の PyTorch 0.3.1 リリースノートに相当する、
“Bug fixes and performance improvements” を翻訳したものです:

 

バイナリ

  • CUDA capability 3.0 と 5.0 のサポートの除去 (今のところソースビルドについては依然として動作しますが、先々へのサポートのコミットメントは除去されます)。
  • CUDA 7.5 に対するバイナリ・リリースの停止。
  • CPU-only バイナリ・リリースの追加、これは CUDA 機能を持つ完全バイナリよりも 10x サイズが小さいです。

 

新しい特徴

  • コサイン・アニーリング (= Cosine Annealing) 学習率スケジューラ の追加します。 #3311
  • reduce されない損失を計算可能にするために PoissonNLLLoss に reduce 引数を追加します。 #3770
  • l1_loss と mse_loss で target.requires_grad=True を可能にします (target に関する損失の計算)。 #3876
  • random_split を追加します、これはデータセットを与えられた長さの (重ならない) 新しいデータセットに分割します。 #4435
  • より良い モデルの TensorBoard 可視化 を持つために ONNX グラフをアノテートするスコープを導入しました。 #5153
  • torch.load の map_location に map_location=’cpu’ あるいは map_location=’cuda:2′ のような文字列であることを許容します。 #4203

 

バグ修正

データ・ローダー / データセット / マルチプロセッシング

  • DataLoader ワーカーをバスエラーと segfault についてより verbose にしました。更に、DataLoader にタイムアウト・オプションを追加し、これはサンプル・ローディングが与えられた値を超える場合にはエラーになります。 #3474
  • DataLoader ワーカーは fork syscall のセマンティクスのために総て同じランダム数ジェネレータ (RNG) シードを持っていました。今では各ワーカーはその RNG シードを base_seed + worker_id に設定します、ここで base_seed は親プロセスにより生成されたランダム int64 値です。worker_init_fn でこの値にアクセスするために torch.initial_seed() が利用可能です、これは他のシード (e.g. NumPy) を設定するためにデータ・ローディングの前に使用できます。worker_init_fn はオプション引数でこれは入力としてワーカー id と共に各ワーカー・プロセス上でシーディングの後そしてデータ・ローディングの前に呼び出されます。 #4018
  • DataLoader ワーカー・プロセスでワーカーが唐突に死ぬとき追加のシグナル・ハンドリングを追加します。 (訳注: pull id 参照なし)
  • n_workers のための負値は今では ValueError を与えます。 #4019
  • ConcatDataset.cumulative_sizes 属性名のタイポを修正しました。 #3534
  • python 2 で dataloader のための default_collate で long を受け取ります。 #4001
  • 子プロセスで autograd エンジンを再初期化します。 #4158
  • 分散 dataloader を修正してそれはメモリを GPU 0 ではなく現在の GPU にピン止めします。 #4196

 

CUDA / CuDNN

  • fp16 batch norm のために cudnn を可能にします。 #4021
  • torch.autograd.profiler.emit_nvtx で enabled 引数を使用します (無視されていました)。 #4032
  • fp16 torch.dot のために cuBLAS 引数を修正します。 #3660
  • 小さいテンソル・サイズの CUDA index_fill_ boundary チェックを fix します。 #3953
  • CUDA 多項チェックを fix します。 #4009
  • 警告における CUDA バージョン・タイポを修正します。 #4175
  • cuda テンソル型をデフォルトに設定する前に cuda を初期化します。 #4788
  • cuda python モジュールで欠落している lazy_init を追加します。 #4907
  • set device の lazy init は getDevCount で呼び出されるべきではありません。 #4918
  • cuda が初期化されていないとき torch.cuda.empty_cache() を no-op にします。 #4936

 

CPU

  • ger, gemm, と gemv のために MKL ld* 条件を assert します。 #4056

 

torch 演算子

  • 基礎となるストレージが torch により所有されていないときの tensor.repeat を修正します (例えば、numpy 由来の)。 #4084
  • 正しい shape チェッキングを torch.cat に追加します。 #4087
  • index_copy_ と index_add_ にスライス shape 一致のチェックを追加します。 #4342
  • tensor による進んだ tensor のインデキシング時の user after free を修正します。 #4559
  • gpu 上で zero-strided 入力のための triu と tril (訳注: 行列演算の一種) を修正します。 #4962
  • blas addmm (gemm) 条件チェックを修正します。 #5048
  • topk ワークサイズ計算を修正します。 #5053
  • 出力のストライドを重視するように reduction 関数を修正します。 #4995
  • linspace op の浮動精度スタビリティの改良、4419 の修正。 #4470

 

autograd

  • THPVariable_traverse による python 競合状態 (= race condition) を修正します。 #4437

 

nn 層

  • Embedding(sparse=True) のために backward で無視される padding_idx を修正します。 #3842
  • cosine_similarity の出力 shape を修正します。 #3811
  • rnn 引数チェックを追加します。 #3925
  • NLLLoss は任意の次元で動作します。 #4654
  • Conv 演算子上の最も厳密な shape チェック。 #4637
  • maxpool3d / avgpool3d クラッシュを修正します。 #5052
  • InstanceNorm*d の実行時のスタッツを使用するセッティングを修正します。 #4444

 

Multi-GPU

  • 空のリスト / 辞書 / タプルについて scatter する DataParallel を修正します。 #3769
  • DataParallel の refcycle の scatter と gather (訳注: メソッド) を修正します (高められたメモリ消費を修正)。#4988
  • 対応する入力が requires_grad であるときに限り出力 requires_grad をブロードキャストします。 #5061

 

core

  • load() のハードファイルのオフセットのリセットを除去。 #3695
  • ストアされた要素のサイズを説明する sizeof を持ちます。 #3821
  • 未定義の FileNotFoundError を修正。 #4384
  • torch.set_num_threads に MKL threads もまた設定させます (take 2) #5002

 

その他

  • Python 2 における CosineAnnealingLR の間違った学習率評価を修正。 #4656

 

パフォーマンス改良

  • IndexToOffset の少し単純化された数学。 #4040
  • backwards で maxpooling のパフォーマンス改良。 #4106
  • cublas のバッチ化された gemm サポートを追加。 #4151
  • より良いパフォーマンスのために pointwise 演算の次元の再アレンジ。 #4174
  • インデックス演算のためのメモリアクセス・パターンの改良。 #4493
  • CUDA softmax パフォーマンスの改良。 #4973
  • 幾つかの pointwise 演算の二重メモリアクセスを修正。 #5068

 

ドキュメントと UX 改良

  • cuda.LongTensor を持つ blas ops のためのより良いエラーメッセージ。 #4160
  • 欠落していた trtrs, orgqr, ormqr docs を追加します。 #3720
  • Adaptive Pooling のための doc を変更します。 #3746
  • MultiLabelMarginLoss docs を修正します。 #3836
  • Conv1d Conv2d のための更なる doc。 #3870
  • Tensor.scatter_ doc の改良。 #3937
  • [docs] rnn.py: hidden state/cell に対して zero デフォルトをノート。 #3951
  • Tensor.new doc の改良。 #3954
  • torch と torch.Tensor のための doc を改良。 #3969
  • Conv1d の doc に明示的なタプル次元を追加しました。 #4136
  • svd doc の改良。 #4155
  • instancenorm の入力サイズを訂正する。 #4171
  • StepLR サンプル docs の修正。 #4478
 

以上