Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

PyTorch

PyTorchは、GPUテンソルと自動微分を使ってニューラルネットワークを構築・学習するためのオープンソースPythonフレームワークです。基本概念とデプロイまでの流れを解説します。

PyTorchは、Pythonでニューラルネットワークを構築、学習、デプロイするためのオープンソースフレームワークです。GPUで高速化されたテンソル、自動微分、レイヤー、オプティマイザー、損失関数のライブラリを提供します。また、コードを1行ずつ即時実行するため、通常のPythonプログラムと同じようにモデルを記述してデバッグできます。Facebook AI Research(現在のMeta AI)で開発されたPyTorchは、2022年以降、Linux Foundation傘下のベンダー中立なPyTorch Foundationによって運営されています。コンピュータービジョンや言語分野のディープラーニング研究および本番モデルで広く使われています。

基本概念#

  • テンソル: NumPy配列のような多次元配列で、CPUまたはアクセラレーター上に配置できます。PyTorchはCUDA経由でNVIDIA GPUを、ROCm経由でAMD GPUを、Metal(MPS)経由でApple siliconをサポートします。それらの間でデータを移動するには、.to(device)を1回呼び出します。
  • Autograd: テンソル演算の実行時に、PyTorchは演算を計算グラフに記録します。.backward()を呼び出すと、そのグラフを逆順にたどり、勾配が必要な各テンソルについて出力に対する勾配を計算します。これが学習時の誤差逆伝播の処理です。
  • 即時実行: 順伝播のたびにグラフが再構築されるため、モデル内でPythonのループ、条件分岐、print文を使用でき、エラーが発生すると失敗した正確な行が示されます。
  • モジュールとオプティマイザー: torch.nnは畳み込み、アテンション、正規化などのレイヤーを提供し、torch.optimは計算された勾配に基づいて重みを更新するSGDやAdamなどのオプティマイザーを提供します。
  • torch.compile: PyTorch 2.0で追加されました。即時実行されるプログラムをグラフとして取り込み、融合カーネルを生成します。モデルコードを変更せずに、学習や推論を高速化できる場合があります。

以下の例では、利用可能な場合はGPU上で小さな計算を実行し、autogradで勾配を計算します。

import torch

# Use a GPU when PyTorch can see one, otherwise fall back to the CPU
device = "cuda" if torch.cuda.is_available() else "cpu"

# Tensors record the operations applied to them when requires_grad=True
w = torch.tensor([2.0, -1.0], device=device, requires_grad=True)
x = torch.tensor([3.0, 4.0], device=device)

# Ordinary Python runs eagerly: each line executes immediately
loss = (w * x).sum() ** 2

# Autograd walks the recorded graph backward to get d(loss)/dw
loss.backward()
print(f"device={device}, loss={loss.item()}, grad={w.grad.tolist()}")

GPUのないマシンでは、device=cpu, loss=4.0, grad=[12.0, 16.0]が出力されます。損失は(2·3 − 1·4)² = 4で、autogradは手計算なしに導関数2·(w·x)·x = [12, 16]を返します。これは、数十億個の重みを持つネットワークを学習させる仕組みと同じです。

PyTorchとその他のツール#

  • TensorFlow: Googleのフレームワークです。TensorFlow 2で即時実行がデフォルトになるまでは、実行前に静的グラフを構築していました。KerasやGoogleのデプロイツールを中心に構築された本番システムで、現在も広く使われています。
  • JAX: XLAでコンパイルされるgrad、jit、vmapの各演算を使って、純粋なPython関数を変換するGoogleの数値計算ライブラリです。TPUを使った大規模研究で人気があります。
  • OpenCV: 古典的なアルゴリズムを使って画像の読み込み、変換、解析を行うコンピュータービジョンライブラリです。多くのパイプラインでは、PyTorchモデルで処理する前にOpenCVでフレームを読み込み、前処理します。
  • Hugging Face: 主にPyTorchを基盤とするハブおよびライブラリ群です。Transformersライブラリは、事前学習済みの言語モデルとビジョンモデルをPyTorchモジュールとして提供します。

研究からデプロイへ#

学習済みのPyTorchモデルはチェックポイントとして保存され、通常は重みを格納した.ptまたは.pthファイルになります。そのままPythonサービスで実行できますが、エッジデバイスや最適化されたサーバーでは、通常、ハードウェア向けに構築されたランタイム形式に変換する必要があります。

Ultralytics YOLO26はPyTorchで実装されています。yolo26n.ptはPyTorchチェックポイントであり、学習にはPyTorchのautogradとオプティマイザーを使用します。また、model.export()はモデルをデプロイ形式に変換します。形式にはONNX、TensorRT、OpenVINO、Core ML、LiteRTなどがあります。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう