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
以上