PyTorch:GPU 対応テンソル計算&深層学習フレームワーク。Python ネイティブな動的計算グラフで研究から本番まで
bash ファイル名.sh を実行してください(中身を一度確認してから実行すると安心です)。
(macOS / Linux 環境が必要) PyTorch:GPU 対応テンソル計算&深層学習フレームワーク。Python ネイティブな動的計算グラフで研究から本番まで
ひとことでいうと
PyTorch(パイトーチ)は、Python で書かれたオープンソースの機械学習フレームワークです。Facebook AI Research(FAIR)が中心となって開発し、現在はコミュニティ主導で進化し続けています。NumPy(ナムパイ:科学計算によく使われる Python ライブラリ)に近い感覚で「テンソル(多次元配列)」計算ができ、GPU(画像処理チップを転用した高速演算装置)による高速処理と自動微分機能を兼ね備えています。学術研究から商用サービスまで、世界中の AI 開発現場で採用されており、BSD ライセンスのもと無償で使えます。
こんな人におすすめ
1. 機械学習・深層学習の研究をしている方 動的計算グラフ(プログラムを実行しながらリアルタイムでネットワーク構造を組み立てる仕組み)を採用しているため、通常の Python コードと同じ感覚でデバッグできます。モデルの構造を実行中に変えることができるので、実験的なアイデアを素早く試すのに最適です。
2. GPU を使って数値計算を高速化したいエンジニア NumPy の代替として GPU 上で行列演算や科学技術計算を手軽に扱えます。NVIDIA cuDNN・Intel MKL などと連携しており、CPU・GPU ともに高いスループットを発揮します。物理シミュレーションや大規模データ処理の高速化にも活用されています。
3. Python で完結した AI アプリを作りたい開発者 PyTorch は Python ネイティブに設計されており、NumPy・SciPy・scikit-learn と自然に組み合わせられます。Hugging Face Transformers をはじめとする多くのオープンソースモデルが PyTorch をバックエンドに採用しているため、既存の資産をそのまま活用できます。
インストール・使い方
ターミナル(文字を入力してパソコンに命令を送る画面)を開いて、以下の手順を上から順に実行してください。コマンドはコピー&ペーストで構いません。
Step 1 — バイナリ版のインストール(推奨)
バイナリ版とは、あらかじめビルド(コンパイル)済みのパッケージのことです。CPU のみの環境であれば次の 1 行で完了します。
pip install torch torchvision torchaudio
NVIDIA の GPU を持っている場合は、CUDA(クーダ:GPU 上で並列計算を行うためのプラットフォーム)12.4 対応版を使うと高速化の恩恵を受けられます。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
どちらのコマンドを使うか迷ったら、まずは上の CPU 版から試してみてください。GPU がなくても PyTorch の基本機能はすべて使えます。
Step 2 — インポートして動作確認
インポートとは、インストールしたパッケージを Python スクリプト内で読み込む操作のことです。以下を実行してエラーが出なければセットアップ完了です。
import torch
print(torch.__version__) # バージョン確認
print(torch.cuda.is_available()) # GPU 利用可否(True なら GPU が使える)
GPU が使える環境では True と表示されます。CPU のみの環境では False と表示されますが、問題ありません。
Step 3 — ソースからビルドする場合(上級者向け)
ソースビルドとは、公開されているソースコード(人間が読めるプログラムの元ファイル)から自分でビルドする方法です。最新の開発版を試したいときに使いますが、環境の準備が必要なため初心者には Step 1 の方法を強くおすすめします。
ソースビルドに必要な条件は次のとおりです。
- Python 3.10 以上
- C++20 対応のコンパイラ(Linux なら gcc 11.3.0 以上)
- ディスク空き容量 10 GB 以上
- 初回ビルドに 30〜60 分程度
リポジトリ(ソースコードの置き場)を取得してビルドするコマンドは以下の通りです。git submodule の取得が必須なので、クローン直後に忘れずに実行してください。
git clone https://github.com/pytorch/pytorch
cd pytorch
git submodule sync
git submodule update --init --recursive
pip install --group dev
python -m pip install --no-build-isolation -v -e .
動かしてみた
Python 3.12 の Linux 環境で動作を確認しました。バイナリ版(pip install torch)を使えば、Python と pip(パイソンのパッケージ管理ツール)さえあれば数分でセットアップが完了し、すぐにテンソル計算を試せます。
公式ドキュメントと README から確認できた推奨スペックは次のとおりです。試す前に参考にしてください。
- Python: 3.10 以上
- ディスク空き容量: バイナリ版は数 GB 程度、ソースビルドは 10 GB 以上
- GPU サポート: NVIDIA CUDA + cuDNN v9.0 以上、AMD ROCm 4.0 以上、Intel GPU にも対応
- コンパイラ(ソースビルド時のみ): C++20 対応の gcc 11.3.0 以上または clang
バイナリ版であれば上記のコンパイラは一切不要です。GPU がない場合も CPU で問題なく動作します。
ブラウザで試す(デモ)
テンソル演算・行列積・自動微分(autograd)を手軽に体験できる Gradio デモが用意されています。インストール不要でブラウザから操作でき、行数・列数・演算の種類を選ぶとランダムなテンソルが生成されて結果と勾配計算のサンプルが表示されます。「まず雰囲気を掴みたい」という方はデモから入るのがおすすめです。
実践のコツ:はじめの一歩
セットアップが終わったら、まず以下のコードをそのまま動かしてみてください。コピー&ペーストで OK です。
import torch
# 2×3 のランダムなテンソルを作成
x = torch.rand(2, 3)
print("テンソル:", x)
print("合計:", x.sum().item())
# GPU があれば転送して確認
if torch.cuda.is_available():
x = x.to("cuda")
print("GPU に転送済み")
# 自動微分(autograd)の例
a = torch.tensor([2.0], requires_grad=True)
b = a ** 2 + 3 * a # b = a² + 3a
b.backward() # 逆伝播(勾配を計算)
print("db/da =", a.grad.item()) # 結果: 7.0
requires_grad=Trueをテンソルに付けるだけで、計算の流れ(グラフ)が自動で記録されます。.backward()を 1 回呼ぶだけで勾配(微分の値)が自動計算されます。これが PyTorch の「テープベース autograd」の核心部分です。torch.cuda.is_available()で GPU の有無を確認してから転送するコードは、CPU・GPU のどちらの環境でも同じコードが動くようにするための定番パターンです。- 次のステップとして、
torch.nn.Linearやtorch.nn.Conv2dなどを使えばニューラルネットワークの層を定義できます。公式チュートリアル「60 Minute Blitz」は日本語訳もあり、最初の学習素材としておすすめです。 torch.utils.data.DataLoaderを使うと、大量のデータをバッチ(小分け)にして効率よくモデルへ渡せます。画像分類や文章処理など、あらゆるタスクで基本になる部品です。
活用アイデア
- 画像認識モデルの学習:
torch.nnでオリジナルの CNN(畳み込みニューラルネットワーク)を定義し、DataLoaderでデータを流すパイプラインを短いコードで構築できます。ResNet や EfficientNet など有名な学習済みモデルはtorchvision.modelsから 1 行で読み込めます。 - 自然言語処理(NLP)への応用: Hugging Face Transformers ライブラリは PyTorch をバックエンドに採用しており、BERT・GPT 系の大規模言語モデルを数行のコードで呼び出せます。テキスト分類・要約・翻訳など幅広いタスクに対応しています。
- 強化学習エージェントの開発: 動的計算グラフの特性を活かして、環境からのフィードバックに応じてリアルタイムでモデル構造を変えるエージェントを実装できます。ゲーム AI やロボット制御の研究に活用されています。
- 科学技術計算の高速化: NumPy の代替として GPU 上で物理シミュレーションや大規模行列演算を高速化する用途にも使われています。計算量が多くて CPU では時間がかかりすぎる処理の高速化に効果的です。
- モデルの本番デプロイ: TorchScript を使うとモデルを Python に依存しない形式に変換できるため、C++ アプリや組み込み環境への組み込みが容易になります。研究段階のモデルをそのまま製品に載せるまでの道のりが短くなります。
- 教育・学習目的: 動的計算グラフはデバッグが直感的なため、深層学習の仕組みを学ぶ入門環境としても優れています。大学の講義や個人学習で最初のフレームワークとして選ばれることが多いのも納得です。
用語とポイント解説
テンソル(Tensor) 数値を格納する多次元配列のことです。スカラー(1 個の数)・ベクトル(1 列の数)・行列(縦横の表)を一般化したものと考えると分かりやすいです。かんたんに言うと、PyTorch で扱うすべてのデータの基本単位で、NumPy の配列に GPU 対応機能を加えたものです。
autograd(自動微分)
計算の流れを自動で記録し、逆向きにたどって勾配(微分の値)を自動計算する仕組みです。ニューラルネットワークの学習に必須の「誤差逆伝播法」をコードで一から書かずに済みます。かんたんに言うと、requires_grad=True を付けて .backward() を呼ぶだけで、どの方向にパラメータを調整すればよいかを自動で教えてくれる機能です。
Define-by-Run(動的計算グラフ)
プログラムを実行しながらリアルタイムで計算グラフ(処理の流れの地図)を組み立てる方式です。静的グラフ(実行前に全体を決める方式)と異なり、Python の if や for をそのまま使えます。かんたんに言うと、「書いた通りに動く」ため、バグの発見や実験的な改造がしやすいのが特徴です。
TorchScript PyTorch モデルを Python に依存しない形式に変換・最適化する仕組みです。変換後は C++ アプリや組み込みデバイスでも実行できるようになります。かんたんに言うと、研究で作ったモデルを製品に組み込みやすい形に「固める」ための機能です。
CUDA(クーダ) NVIDIA が提供する、GPU 上での並列計算を可能にするプラットフォームです。PyTorch はこれを通じて NVIDIA GPU の演算能力を活用します。かんたんに言うと、GPU を「数千個の小さな計算ユニット」として一斉に動かすための橋渡し役です。
cuDNN(クーディーエヌエヌ) NVIDIA が提供する深層学習専用の GPU 高速演算ライブラリです。畳み込み演算やバッチ正規化など、深層学習でよく使う処理を GPU 上で高速に実行するために最適化されています。かんたんに言うと、PyTorch が GPU 上で深層学習を速く動かすために裏側で使っている専門的なエンジンです。
DataLoader(データローダ) 大量のデータをバッチ(小分けのかたまり)に分割して、モデルへ効率よく供給するユーティリティです。シャッフルや並列読み込みもサポートしており、学習の前処理を自動化できます。かんたんに言うと、「大量の教材をページ単位で順番に渡してくれる係」のようなものです。
torch.nn(ニューラルネットワークモジュール) 全結合層・畳み込み層・活性化関数など、ニューラルネットワークの部品を集めたモジュールです。これらを組み合わせるだけで複雑なモデルを簡潔に記述できます。かんたんに言うと、ネットワークの「レゴブロック」を一式そろえた箱で、好きなブロックを積み上げてモデルを作れます。
ROCm(ロッコム) AMD が提供する GPU 向けオープンソースの計算プラットフォームです。CUDA の AMD 版にあたる位置づけで、PyTorch は ROCm にも対応しています。かんたんに言うと、NVIDIA 以外の AMD 製 GPU でも PyTorch を高速に動かすための仕組みです。
PyTorch はインストールが簡単で、書いたコードがそのまま直感的に動くため、深層学習の入門から最先端の研究まで幅広く使えます。ぜひ画像認識モデルの学習や自然言語処理、科学技術計算の高速化などに活用してみてはいかがでしょうか。