PyTorch

出典: フリー百科事典『ウィキペディア(Wikipedia)』
PyTorch
PyTorch logo black.svg
作者
  • Adam Paszke
  • Sam Gross
  • Soumith Chintala
  • Gregory Chanan
初版 2016年10月 (6年前) (2016-10)
最新版 1.13.1[1] ウィキデータを編集 - 2022年12月16日 (53日前) (2022-12-16) [±]
リポジトリ ウィキデータを編集
プログラミング
言語
対応OS
プラットフォーム
対応言語 英語
種別 機械学習/ディープラーニングライブラリ
ライセンス 修正BSDライセンス
公式サイト pytorch.org ウィキデータを編集
テンプレートを表示

PyTorchは、コンピュータビジョン自然言語処理で利用されている[2]Torch英語版を元に作られた、Pythonオープンソース機械学習ライブラリである[3][4][5]。最初はFacebookの人工知能研究グループAI Research lab(FAIR)により開発された[6][7][8]。PyTorchはフリーでオープンソースのソフトウェアであり、修正BSDライセンスで公開されている。

さまざまなディープラーニングのソフトウェアがPyTorchを利用して構築されており、その中には、UberのPyro[9]、HuggingFaceのTransformers[10]、Catalyst[11][12]などがある。

PyTorchは以下の機能を備えている:

歴史[編集]

FacebookはPyTorchとConvolutional Architecture for Fast Feature Embedding(Caffe2)をメンテナンスしていた。しかし、互換性が無いためPyTorchで定義されたモデルのCaffe2への移行やまたその逆の作業が困難であった。これら2つのフレームワークでモデルを変換することができるように、2017年9月にFacebookとマイクロソフトがOpen Neural Network Exchange(ONNX)プロジェクトを作成した。2018年3月下旬に、Caffe2はPyTorchに併合された[14]

2019年12月、Preferred Networksは自社開発していたChainerのバージョン7をもって、PyTorchによる研究開発へ順次移行して行くことを発表した [15]

PyTorchのテンソル[編集]

PyTorch はテンソルに Tensor (torch.Tensor)と呼ばれるクラスを定義しており、それを均質(homogeneous)な多次元の長方形の数値配列の保存と演算に利用している。PyTorch の Tensor は Numpy の多次元配列 (numpy.ndarray) に似ているが、CUDA が有効な Nvidia のGPU上での演算も可能になっている。

PyTorch には 32bit 浮動小数点数用の FloatTensor や 32bit 整数用の IntTensor など、さまざまな型のTensorサブタイプが存在する[16][17]。またテンソルにはCPUに配置する torch.*Tensor とGPUに配置する torch.cuda.*Tensor が存在している[17]。それぞれは Tensor.to(...) メソッドなどを用いることで変換することができる[17]

また PyTorch のテンソルは機械学習の逆伝播に使われる微分のためのパラメータ(勾配データ (Tensor.grad) や 微分関数 (Tensor.grad_fn))を持つことが出来る (requires_grad=Trueの場合、詳しくは後述の#autogradモジュールを参照)[18]。勾配データ (grad) は追加メモリを必要とするため、不要な場合に取り除くことが可能となっている(torch.no_grad()Tensor.detach() など)。

複素数テンソル(dtype=torch.cfloatのテンソル)[19]や量子化テンソル(dtype=torch.quint8dtype=torch.qint8などのテンソル)[20]も存在している。量子化テンソルはスケールやゼロポイントなどの量子化パラメータを持っている[20]

基本のテンソルは長方形であり、非長方形のデータを扱う際には padding で穴埋めする必要があるが、穴の多いデータを穴埋めするのは無駄となるため、非長方形のデータを扱うための疎テンソル (torch.sparse) や ネストされたテンソル (torch.nested) も用意されている。なお、疎テンソル構造はNVIDIA GPUのAmpere以降などでも直接サポートされるようになっているものの、その対応は2:4スパースに限られており[21]、PyTorchでの直接的な実装はまだとなっている。

PyTorchのモデル[編集]

PyTorch のモデルは基本的に torch.nn.Module の派生クラスとする必要があり[22]、そのtrain() メソッドとeval()メソッドにより、トレーニングモードと評価モードの切り替えが可能となっている[22]

また to(...) メソッドなどによってモデル全体のパラメータ型の変換が可能であり[22]、それによってモデルパラメータの半精度化(専用のhalf()メソッドもある[22])やbfloat16英語版化(専用のbfloat16()メソッドもある[22])を行うことでメモリ使用量を減らすことが可能となっている。ただしモデルパラメータのより高い圧縮を行うためには torch.quantization などで量子化を行う必要がある。

フロントエンド[編集]

PyTorch のフロントエンドには Pythonインターフェイスだけでなく C++インターフェイスも存在している[23]

autogradモジュール[編集]

PyTorchは自動微分と呼ばれるメソッドを利用する。recorderは実行された演算を記録し、その後、勾配の計算を行うときに記録した演算を逆方向にリプレイする。このメソッドは、ニューラルネットワークの構築時に特に強力であるため、順方向のパラメータの微分を計算することで、1エポックの計算にかかる時間を節約することができる。

optimモジュール[編集]

torch.optimは、ニューラルネットワークの構築時に使用されるさまざまな最適化アルゴリズムを実装したモジュールである。通常使用されるメソッドのほとんどはすでに対応しているため、スクラッチで構築する必要がない。

nnモジュール[編集]

PyTorchのautogradは、簡単に計算グラフを定義して勾配を得られるようになっているが、生のautogradは複雑なニューラルネットワークを定義するにはすこし低レベルすぎる場合がある。そのような場合のサポートとしてnnモジュールが提供されている。

jitモジュール[編集]

TorchScriptとして後述。

バックエンド[編集]

PyTorch のバックエンドは主に C++ で実装されている (ATen)。ATenは外部から直接使うことも可能となっている (C++ではATenライブラリ[24]、Pythonではtorch.ops.aten)。

また PyTorch では別パッケージとして Torch-TensorRT が用意されており、これを使うことにより PyTorch のバックエンドとして NVIDIA の TensorRT を使うことも可能となっている[25][26]

2022年現在はOpenAIのTritonなどをバックエンドとして使用できるTorchDynamoも開発中となっており、これは2023年にPyTorch 2.0に実装される予定となっている。TorchDynamo ではバックエンドの実装を簡略化するために、複合的な Aten 命令を単純な Prims 命令 (torch._prims) へと低下させる機能も提供している[27]

データ並列処理[編集]

PyTorchは以下の並列処理に対応している。

  • マルチスレッドデータ並列処理 (torch.nn.DataParallel) - 2022年現在Pythonのグローバルインタプリタロック (GIL) の問題がありスケールしにくい[28]
  • マルチプロセス/マルチマシンデータ並列処理 (DDP; torch.nn.parallel.DistributedDataParallel)
  • 完全共有データ並列処理 (FSDP; torch.distributed.fsdp.FullyShardedDataParallel) - FairScale の FSDP を統合した[29]

また並列処理のための外部プロジェクトとして Microsoft の DeepSpeed英語版 や、それを簡単に使うための HuggingFace の Accelerate も存在する。前述の FairScale 及び DeepSpeed は同じものを実装しており、どちらも最適化状態分割 (OSS; ZeRO Stage 1)、最適化および勾配状態分割 (SDP; ZeRO Stage 2)、完全共有データ並列処理 (FSDP; ZeRO Stage 3) の3つに対応している[30][31]


データ読み込み[編集]

外部プロジェクトとしてデータ読み込みを最適化するための FFCV が存在する。

ファイル形式[編集]

PyTorch で良く使われているファイル形式は Python における Python オブジェクトの標準シリアライズ(直列化)である Pickle形式 (*.pkl) [32]及びウェイトやバイアスなどのパラメータを無圧縮ZIPアーカイブでまとめたpt形式となっている。PyTorchでのこの形式の読み書きはtorch.load/torch.savetorch.jit.load/torch.jit.save(TorchScript向け)などを使うことで可能となっている。この形式はPyTorch内外を含め広く用いられているものの、Pickle形式は仮想マシン命令コードを記述したものであり[33]様々な操作が実行できるため、セキュリティのリスクが存在している[32]

そのため PyTorch 標準形式よりも安全で効率的なパラメータ保存形式が開発されてきており、その中の一つ HuggingFace の safetensors 形式は広く普及してきている。

TorchScript / ONNX出力[編集]

TorchScriptは推論モデル生成のための静的型付け言語である[34]Pythonのサブセット[35]。TorchScriptプログラムはPythonに依存しない環境(例: C++)で実行可能であり[36]JITコンパイルにより動作環境での最適化がおこなわれる。JITコンパイラでは演算fusion等がおこなわれる[37]

なおTorchScriptモデルの保存にはTorchScriptモデル形式が使われている (torch.jit.load / torch.jit.save) が、この形式はPyTorchモデル形式と同じく拡張子に「.pt」が使われている[38]。またTorchScriptを介したONNX形式への変換 (torch.onnx.export) も可能となっている[39]。また外部の LLVM プロジェクトの Torch-MLIR では TorchScript を介してPyTorchモデルのコンパイルを行うことができる[40]

実行[編集]

TorchScriptはJITオプティマイザ・JITコンパイラ付きのインタプリタにより実行される[41]。内部ではGraphExecutorによる最適化とinterpreterによる実行がおこなわれる。対応している最適化には、入力型に基づくGraphの特殊化[42]、演算子の融合 (Op fusion)、定数の事前計算[43]、不要ノード削除[44]などがある。

生成[編集]

Pythonのコードを直接TorchScriptに変換したり (torch.jit.script)、PyTorchの実行をトレースしてTorchScriptを生成する (torch.jit.trace) ことが可能となっている。

以下は前向き (forward) 関数のスクリプト変換の例である:

import torch # PyTorchモジュールを読み込み
def f(x, y): return x + y # 前向き関数を作る
ts_converted = torch.jit.script(f) # Pythonコードから直接TorchScriptに変換
print("Converted:\n%s" % ts_converted.code) # 変換したTorchScriptを表示
ts_traced = torch.jit.trace(f, (torch.tensor([1,2]), torch.tensor([3,4]))) # PyTorchの実行をトレースしてTorchScriptを生成
print("Traced:\n%s" % ts_traced.code) # 生成したTorchScriptを表示

torch.jit.save(ts_converted, "converted.pt") # 変換したTorchScriptをTorchScriptモデル形式で保存
torch.onnx.export(ts_converted, (torch.tensor([1,2]), torch.tensor([3,4])), "converted.onnx") # 上記をONNX形式で出力

FX[編集]

torch.fx はモデルの高レベルグラフ化・変換・コード生成に関するモジュールである[45][46]。モデルを入力/出力/演算の有向非巡回グラフと見なすIRを定義し[47]、モデル→IR→モデルの変換とIR編集をサポートする。主に次の3つの機能を提供する[48]

  • Model-to-IR: シンボリックトレースによるPython/PyTorchモデルからのIR生成
  • IR-to-IR: IRで表現されたグラフの変換
  • IR-to-Model: IRからのPython/PyTorchコード生成

FXはPythonをホスト言語とするIRグラフのメタプログラミングであり[49]、グラフの分析・可視化[50]、演算子の書き換えによる量子化[51]、グラフ全体を考慮したop fusion[52]、IRからのアクセラレータコード直接生成[53]など様々な用途に利用される。

モデルエクスポートのための幅広い演算サポートを目指すTorchScript IR[54]と異なり、FX IRは動的な制御フローを含まず演算ノード単位の操作を前提とした高レベルな表現と、それに付随するシンプルなIR生成・IR操作・モデル生成実装を掲げている。

以下は前向き (forward) 関数の変換の例である:

import torch # PyTorchモジュールを読み込み
def f(x, y): return x + y # 前向き関数を作る
fx_traced = torch.fx.symbolic_trace(f) # PyTorchの実行をトレースしてFX Graphを生成
print(fx_traced.graph) # FX GraphのIRを表示
print(fx_traced.code) # FX GraphをPythonコードに再変換して表示

AOT Autograd[編集]

AOT Autograd (functorch.compile) は前向き関数と後向き関数をコンパイルするための実験的サブシステムである[55]。FX GraphをTorchScriptのコンパイラによってコンパイルするための functorch.compile.ts_compile も実験的に提供されている[56]

以下は前向き (forward) 関数の変換の例である:

import torch, functorch # PyTorch 及び functorch モジュールを読み込み
def f(x, y): return x + y # 前向き関数を作る
fx_traced = torch.fx.symbolic_trace(f) # PyTorchの実行をトレースしてFX Graphを生成
ts_compiled = functorch.compile.ts_compile(fx_traced, [torch.Tensor([1,2]), torch.Tensor([3,4])]) # TorchScriptコンパイラでFXグラフをコンパイル
ts_compiled([torch.Tensor([1,2]), torch.Tensor([3,4])]) # コンパイルされた関数を実行

TorchDynamo[編集]

TorchDynamo (torchdynamo / torch._dynamo) はPythonコードのコンパイルのためのサブシステムである。2023年にリリース予定のPyTorch 2.0で本体に統合予定となっている。

狭義のTorchDynamoはPythonのバイトコードから前述のFX Graphを作るサブシステムであり[27]、FX Graphを各実行環境向けIRへと変換するための各バックエンド(TorchInductorなど)と組み合わせてPythonコードのコンパイルを行うことができる[27]。バックエンドを実装しやすくするためのものとして、FX Graphの複合的なAten命令を単純なPrim命令へと置き換えるPrimTorchも存在する[27]

以下は前向き (forward) 関数の最適化の例である:

import torch, torchdynamo
def f(x, y): return x + y # 前向き関数を作る
optimized_f = torchdynamo.optimize("inductor")(f) # 前向き関数をTorchDynamo(+ TorchInductor)で最適化
optimized_f(1, 2) # 最適化された前向き関数を実行

モデル / ライブラリ[編集]

Transformer モデル[編集]

性能の高い機械学習モデル「Transformer」が人気となるにつれ、PyTorchでも内部プロジェクト外部プロジェクト合わせ数多くの実装が登場した。その代表的なものには以下が存在する:

  • torch.nn.Transformer[57] - PyTorch 1.2で実装された[58]
  • Transformers (Hugging Face) - 様々な応用モデルを実装している。PyTorch以外にも対応している。
  • Fairseq (Meta AI) - Transformer派生を含む様々な応用モデルを実装している。またNVIDIAによりこのFairseqに基づくTransformerの実装が「Transformer for PyTorch」として提供されている[59]
  • xFormers (Meta AI) - 高速かつ省メモリな複数の実装を含んでいる(CUTLASSを使った実装やOpenAI Triton英語版を使った実装など)。前述のFairseqや後述のDiffusersでも使えるようになっている[60][61]

拡散モデル[編集]

拡散モデル英語版(確率拡散モデル; Diffusion model)は特に生成AI(ジェネレーティブAI)において人気となり、PyTorchでもその実装が登場した。その代表的なものには以下が存在する:

  • Diffusers (Hugging Face) - 単純なU-Net英語版ベースの拡散モデルだけでなく、変分オートエンコーダー (VAE) による潜在空間英語版を使った潜在拡散モデル (LDM) やその応用の Stable Diffusion、そのマルチリンガル版の AltDiffusion[62]、ベクトル量子化VAE (VQ-VAE) による潜在空間を使った VQ-Diffusion、汎用拡散モデルの Versatile Diffusion、オーディオに特化した Audio Diffusion / Latent Audio Diffusion、CLIPのテキスト埋め込みを直接使わず画像埋め込みへと変換してからガイドとして使用するKarlo unCLIP、U-Net部分までTransformerに置き換えたDiT (Diffusion Transformer) など様々な応用モデルを実装している。

torchvision[編集]

torchvision は PyTorch を基にした画像処理向けのライブラリである。画像分類、動画分類、セマンティックセグメンテーション、物体検出、インスタンスセグメンテーション、キーポイント検出、オプティカルフローなどに対応している[63]

torchaudio[編集]

torchaudio は PyTorch を基にした音声処理向けのライブラリである。音声認識 (Emformer RNN-T)、テキスト音声合成 (Tacotron2)、音声強調 (MVDR)、音源分離英語版 (Hybrid Demucs)などに対応している。

torchtext[編集]

torchtext は PyTorch を基にしたテキスト処理向けのライブラリである。

PyTorch Hub[編集]

PyTorch Hub (torch.hub) は GitHub のリポジトリ上に存在するPyTorchの事前学習モデルを簡単に使用できるようにするための仕組みである[64]。リポジトリをこの PyTorch Hub で使えるようにするためにはリポジトリ上に「hubconf.py」を設置する必要がある[64]

PyTorch Hub に対応しているリポジトリには例えば以下が存在する:

  • torchvision ("pytorch/vision")[63]
  • Fairseq ("pytorch/fairseq")[65]
  • YOLOv5 ("ultralytics/yolov5")[66]

PyTorch Hubでリポジトリ上のモデルを読み込むコードの例:

import torch
yolov5s_model = torch.hub.load('ultralytics/yolov5', 'yolov5s')

なお外部プロジェクトには GitHub 及び PyTorch Hubを使わずに、GitHubに似た独自リポジトリシステムとその読み込みスクリプトを提供するものも存在する(Hugging Face英語版Hugging Face Hub[67][68]など)。

TorchMetrics[編集]

Lightning AI製の評価指標(メトリクス)用ライブラリ。

学習[編集]

データローダ[編集]

PyTorchに使うことのできるデータローダには以下が存在する:

  • DataLoader (torch.utils.data.DataLoader) - PyTorch標準のデータローダ。
  • DataLoader2 (torchdata.dataloader2.DataLoader2) - 別パッケージのTorchDataで開発されているDataPipesを基にした実験的なデータローダ[69]
  • NVIDIA DALI (Data Loading Library; nvidia.dali.plugin.pytorch) - GPUDirect Storageに対応したデータローダ[70]。PyTorch以外にも対応している[70]。実験的なGPUデータ解凍にも対応している (fn.experimental.inflate)。

Lightning[編集]

Lightning(旧PyTorch Lightning)は学習の簡易化のための PyTorch 向けサードパーティー製ライブラリである。

脚注[編集]

[脚注の使い方]
  1. ^ "Release 1.13.1"; 閲覧日: 2022年12月16日; 出版日: 2022年12月16日.
  2. ^ Natural Language Processing (NLP) with PyTorch — NLP with PyTorch documentation” (英語). dl4nlp.info. 2019年3月30日閲覧。
  3. ^ Yegulalp, Serdar (2017年1月19日). “Facebook brings GPU-powered machine learning to Python”. InfoWorld. https://www.infoworld.com/article/3159120/artificial-intelligence/facebook-brings-gpu-powered-machine-learning-to-python.html 2019年3月30日閲覧。 
  4. ^ Lorica, Ben (2017年8月3日). “Why AI and machine learning researchers are beginning to embrace PyTorch”. O'Reilly Media. 2019年3月30日閲覧。
  5. ^ Ketkar, Nikhil (2017). “Introduction to PyTorch” (英語). Deep Learning with Python. Apress, Berkeley, CA. pp. 195–208. doi:10.1007/978-1-4842-2766-4_12. ISBN 9781484227657 
  6. ^ Patel, Mo (2017年12月7日). “When two trends fuse: PyTorch and recommender systems” (英語). O'Reilly Media. https://www.oreilly.com/ideas/when-two-trends-fuse-pytorch-and-recommender-systems 2019年3月30日閲覧。 
  7. ^ Mannes, John. “Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2” (英語). TechCrunch. https://techcrunch.com/2017/09/07/facebook-and-microsoft-collaborate-to-simplify-conversions-from-pytorch-to-caffe2/ 2019年3月30日閲覧. "FAIR is accustomed to working with PyTorch — a deep learning framework optimized for achieving state of the art results in research, regardless of resource constraints. Unfortunately in the real world, most of us are limited by the computational capabilities of our smartphones and computers." 
  8. ^ Arakelyan, Sophia (2017年11月29日). “Tech giants are using open source frameworks to dominate the AI community” (英語). VentureBeat. 2019年3月30日閲覧。
  9. ^ “Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language” (英語). Uber Engineering Blog. (2017年11月3日). https://eng.uber.com/pyro/ 2017年12月18日閲覧。 
  10. ^ PYTORCH-TRANSFORMERS: PyTorch implementations of popular NLP Transformers, PyTorch Hub, (2019-12-01), https://pytorch.org/hub/huggingface_pytorch-transformers/ 2019年12月1日閲覧。 
  11. ^ GitHub - catalyst-team/catalyst: Accelerated DL & RL, Catalyst-Team, (2019-12-05), https://github.com/catalyst-team/catalyst 2019年12月5日閲覧。 
  12. ^ PyTorch” (英語). www.pytorch.org. 2019年12月5日閲覧。
  13. ^ a b PyTorch – About”. pytorch.org. 2018年6月15日時点のオリジナルよりアーカイブ。2018年6月11日閲覧。
  14. ^ Synced (2018年4月2日). “Caffe2 Merges With PyTorch”. 2019年3月30日閲覧。
  15. ^ Chainer Team (2010年12月5日). “Chainer/CuPy v7のリリースと今後の開発体制について”. Chainer Blog. 2020年8月10日閲覧。
  16. ^ An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library”. analyticsvidhya.com (2018年2月22日). 2018年6月11日閲覧。
  17. ^ a b c torch.tensor PyTorch Foundation
  18. ^ Autograd PyTorch Foundation
  19. ^ Complex Numbers PyTorch Foundation
  20. ^ a b Quantization PyTorch Foundation
  21. ^ NVIDIA Ampereにおけるプルーニング対応の特徴 Impress 2020年7月20日
  22. ^ a b c d e Module PyTorch Foundation
  23. ^ The C++ Frontend”. PyTorch Master Documentation. 2019年7月29日閲覧。
  24. ^ Tensor Basics PyTorch Foundation
  25. ^ Installation PyTorch Foundation
  26. ^ Torch-TensorRT で PyTorch の推論を最大 6 倍高速化 NVIDIA 2021年12月2日
  27. ^ a b c d PyTorch 2.0 PyTorch Foundation
  28. ^ Getting Started with Distributed Data Parallel — PyTorch Tutorials 1.13.0+cu117 documentation PyTorch Foundation
  29. ^ Introducing PyTorch Fully Sharded Data Parallel (FSDP) API PyTorch Foundation 2022年3月14日
  30. ^ ZeRO Microsoft
  31. ^ Efficient Memory management - FairScale documentation Facebook Research
  32. ^ a b Pickle Scanning HuggingFace
  33. ^ Python pickle serialization format: format specification Kaitai Project
  34. ^ "TorchScript is a way to create serializable and optimizable models from PyTorch code." PyTorch. TorchScript.
  35. ^ "TorchScript is a statically typed subset of Python" PyTorch. TorchScript Language Reference.
  36. ^ "TorchScript program that can be run independently from Python, such as in a standalone C++ program." PyTorch. TorchScript.
  37. ^ "In PyTorch 1.10, we’ve added an LLVM-based JIT compiler for CPUs that can fuse together sequences of torch library calls" PyTorch. PyTorch 1.10 Release.
  38. ^ Saving and Loading Models — PyTorch Tutorials 1.12.1+cu102 documentation PyTorch Foundation
  39. ^ torch.onnx — PyTorch 1.13 documentation PyTorch Foundation
  40. ^ My spring internship – torch-mlir eager mode, OPT and blowing away the main git repo nod.ai 2022年6月20日
  41. ^ "TorchScript is executed using an interpreter attached to a JIT-optimizer and compiler." PyTorch. JIT Technical Overview. 2022-03-19閲覧.
  42. ^ "The executor specializes the Graph for the particular set of inputs." PyTorch. JIT Technical Overview. 2022-03-19閲覧.
  43. ^ "It propagates constants, pre-computing as much as possible" PyTorch. JIT Technical Overview. 2022-03-19閲覧.
  44. ^ "Eliminating dead code" PyTorch. JIT Technical Overview. 2022-03-19閲覧.
  45. ^ "FX is a toolkit for developers to use to transform nn.Module instances." PyTorch. TORCH.FX. 2022-03-23閲覧.
  46. ^ "torch.fx, a program capture and transformation library for PyTorch" Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  47. ^ "torch.fx represents programs in a DAG-based IR" Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  48. ^ "FX consists of three main components: a symbolic tracer, an intermediate representation, and Python code generation." PyTorch. TORCH.FX. 2022-03-23閲覧.
  49. ^ "graph-based ... IR ... Program transformations ... is as simple embedded programming languages that are meta-programmed from a host language, predominantly Python" Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  50. ^ "torch.fx provides an fx.graph_drawer package, which gives the user the ability to visualize torch.fx graphs with Graphviz" Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  51. ^ "Quantization makes use of torch.fx’s graph and GraphModule representation to simultaneously modify the program code and weight values." Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  52. ^ "6.2.2 Fusion Optimizations ... torch.fx provides the necessary non-local program context and state modification facilities needed for this transformation with its ahead-of-time, graph-based nature" Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  53. ^ " The project was quickly developed using torch.fx’s Python APIs as well as TensorRT’s Python APIs, creating a translation layer between the two." Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  54. ^ "the purposes of serialization or export. For instance, TorchScript" Reed, et al. (2021). Torch.fx: Practical Program Capture and Transformation for Deep Learning in Python. arxiv.
  55. ^ functorch.compile (experimental) — functorch 1.13 documentation PyTorch Foundation
  56. ^ functorch.compile.ts_compile — functorch 1.13 documentation PyTorch Foundation
  57. ^ torch.nn - Transformer Layers PyTorch Foundation
  58. ^ New Releases: PyTorch 1.2, torchtext 0.4, torchaudio 0.3, and torchvision 0.4 PyTorch Foundation 2019年8月8日
  59. ^ Transformer for PyTorch NVIDIA
  60. ^ Fairseq Meta AI
  61. ^ 動画も音楽もゲームも 広がるAIエンターテインメントの可能性 ITmedia 2022年11月11日
  62. ^ AltDiffusion Hugging Face
  63. ^ a b Models and pre-trained weights — Torchvision main documentation PyTorch Foundation
  64. ^ a b torch.hub — PyTorch 1.13 documentation PyTorch Foundation
  65. ^ fairseq · PyPI Facebook
  66. ^ PyTorch Hub Ultralytics
  67. ^ Hugging Face Introduces Private Hub Weights & Biases 2022年8月3日
  68. ^ Integrate your library with the Hub Hugging Face
  69. ^ PyTorch 1.12: TorchArrow, Functional API for Modules and nvFuser, are now available PyTorch Foundation 2022年6月28日
  70. ^ a b NVIDIA DALI Documentation NVIDIA

参考文献[編集]

  • 小川雄太郎:「つくりながら学ぶ! PyTorchによる発展ディープラーニング」,マイナビ出版(2019年7月29日)、ISBN 978-4839970253.
  • 斎藤勇哉 『動かしながら学ぶ PyTorchプログラミング入門』オーム社、2020年11月21日。ISBN 978-4-274-22640-3 
  • Eli Stevens, Luca Antiga, Thomas Viehmann: 「PyTorch実践入門」,マイナビ出版(2021年1月30日)、ISBN 978-4839974695.
  • 赤石雅典:「最短コースでわかる PyTorch &深層学習プログラミング」,日経BP(2021年9月17日)、ISBN 978-4296110322.

関連項目[編集]

外部リンク[編集]