PyTorch とは

URL をコピー

PyTorch はオープンソースソフトウェアとして公開されているライブラリです。開発者はこれを使用してコードを組み合わせ、データ内のパターンの識別を学習する AI の「頭脳」を作成できます。より技術的な用語で説明すると、開発者は PyTorch を使用することで、モジュール式のレイヤーを活用して、高度な機械学習のための複雑なニューラルネットワークを構築およびトレーニングできます。 

Red Hat AI の詳細について

PyTorch は開発者にとっての使い勝手を重視して作られており、モデル構造をリアルタイムで簡単に変更できるため、人気が高まっています。PyTorch では、ユーザーによる操作はフロントエンドで Python をプログラミング言語として使用して行われます。一方で、バックエンドで負荷の高い計算を実行する際には、プログラミング言語として C++ (NVIDIA グラフィック・プロセッシング・ユニットが利用可能な場合は CUDA) が使用されます。このハイブリッドアプローチにより、シンプルなユーザーインタフェースと最大限の計算能力を両立させることが可能になっています。

PyTorch は、Linux® Foundation の一部である PyTorch Foundation の下でオープンソースとして提供されています。このようにオープンなガバナンスが行われているため、PyTorch は無料で利用でき、オープンソース・コミュニティによって継続的に改善され、完全に監査可能です。開発者はソースコードを検査し、フレームワークがどのようにデータを処理しているかを確認できます。 

このようにオープンソースというルーツを持っていることに加え、PyTorch の基盤となるアーキテクチャは、さまざまなハードウェア・プラットフォームやクラウドプロバイダーを利用するすべてのユーザーに優れた柔軟性、スケーラビリティ、アクセシビリティを提供できるよう設計されています。 

AI の未来が PyTorch エコシステムにかかっている理由

AI テクノロジーの導入に関する 4 つのキーポイント

PyTorch は、開発者が人工知能を設計してデプロイするために必要な構成要素を提供します。PyTorch が優れている点は、直感的で Python ネイティブなアプローチとすぐに使える機械学習モデルのライブラリを備えていることで、開発者は複雑なシステムをゼロから構築する必要がありません。その最大の強みは柔軟性であり、開発者は AI モデルの実行中にリアルタイムで変更や実験を行うことができます。 

では、機械学習モデルの構築と実行の手順を段階を追って確認し、PyTorch がどのように役立つかを見ていきましょう。

計画とデータ準備
最初のステップは、問題の定義とデータの準備です。PyTorch はデータクリーニング・ツールではないため、データの整理には別のツール (Pandasや SQL など) を使用します。ドキュメントを取り込んで構造化データに変換する場合は、Docling を使用することもできます。PyTorch はこうして準備されたデータを受け取り、ニューラルネットワークに入力します。 

モデルトレーニング
ここで PyTorch は、開発者が AI モデルを設計およびトレーニングするための主要なワークスペースとして機能します。コードが記述されると、PyTorch は汎用的なブリッジとして機能し、データテンソルをハードウェア・アクセラレーターにプッシュします。CUDA を使用する NVIDIA グラフィックス・プロセッシング・ユニット (GPU)、ROCm を介した AMD GPU、またはインテルや Apple シリコンを搭載したシステムなど、どのようなハードウェア・アクセラレーターにも対応します(CUDA とテンソルについては後日詳しく解説します)。エンタープライズ AI モデルの場合は、このトレーニングコードを Docker コンテナとしてパッケージ化し、Kubernetes クラウドクラスタに渡すことが一般的なアプローチとなっています(Docker と Kubernetes についても後日詳しく解説します)。

モデル評価
この段階では、開発者は PyTorch を使用し、新しいデータセットに対するモデルのパフォーマンスをテストします。つまり、モデルの内部設定を固定 (学習を一時停止) し、モデルの生の予測性能を評価します。

デプロイ
PyTorch によるモデルのトレーニングを完了すると、チューニングされた数学的設定 (重みとバイアス。モデルパラメーターとも呼ばれる) が大量に記述された巨大なファイルができあがります。ここで AI はトレーニングから推論へと移行します。この時点で、AI は学習を停止し、トレーニングに基づいて予測を開始します。AI を起動するには、AI の「頭脳」をプロダクション環境用の Docker イメージとしてパッケージ化し、Amazon Web Services (AWS)、Google Cloud、Microsoft Azure などのクラウド・プラットフォームに渡します。モデルがクラウドに到達した後は、Kubernetes によってインフラストラクチャとスケーリングの管理が、vLLM などの推論エンジンによって計算の速度とパフォーマンスの最適化が行われます。 

PyTorch を使用して、機械学習およびディープラーニング・アプリケーションを構築できます。PyTorch は以下のトレーニングに広く使用されています。

大規模言語モデル (LLM):PyTorch は、OpenAI の初期の GPT モデルや Meta の Llama シリーズに使用されました。

コンピュータビジョン:自動運転車、医療画像処理、顔認識ソフトウェアなどでは、画像分類や物体検出の支援を必要とするパイプラインを構築するために、PyTorch (特に TorchVision ライブラリパッケージ) がよく利用されます。 

画像生成ツール:PyTorch を使用して、テキストから画像を生成するモデルをトレーニングできます。PyTorch は、数百万から数十億もの画像の分析、および AI に画像を作成する方法を教えるために必要な基盤となる数値計算を実行します。 

自然言語処理 (NLP) と音声:PyTorch を使用して、音声合成モデル (文字を音声に変換) および音声認識モデル (音声を文字に変換) をトレーニングできます。PyTorch は、音波と構造化された可読テキストとの間の関連性を解釈します。PyTorch を使って翻訳ツールを作成することもできます。

テンソルは、先進的な AI の基本的な構成要素です。単語、画像、動画、音波などのデータはすべて、まずテンソルに変換しなければ AI モデルで処理できません。 

PyTorch は、生データやモデルパラメーターを表す数値の体系的な配列であるテンソルを用いたコーディングのためのライブラリとして説明されることがあります。ディープニューラル・ネットワークを構築および実行するためのツールを提供し、構造化されたテンソルをこれらのネットワークに入力することで、AI モデルの計算「頭脳」となります。 

テンソルは、簡単に言えば数値を格納するためのコンテナです。テンソルは、1 つの数値 (スカラーとも呼ばれる) から多次元の数値グリッドまで、幅広い範囲をカバーできます。テンソルは、次元数に応じてさまざまなサイズがあります。

  • スカラーは 0 次元のテンソルです。これは単一の数値です。
  • ベクトルは 1 次元のテンソルです。スカラーの行、つまり数値の列です。
  • マトリックスは 2 次元のテンソルです。スプレッドシートのように、数字が格子状に配置されています。
  • 3 次元以上のテンソルは高次元テンソルとみなされます。ルービックキューブのように、グリッドが積み重なったものです。 
A diagram illustrating tensors from 0D to 3D as a scalar, a vector, a matrix, and a cube

テンソルは、4 次元テンソルや 5 次元テンソルのように、いくらでも次元を増やせます。高次元テンソルを使用することで、PyTorch はカラー画像や動画のシーケンスといった複雑なデータをスタックして構造化することができます。

 

A diagram of tensors: a single 3D cube, a row of 4D cubes, and a 3x3 block of 5D cubes

ここで次元について説明したのには、以下のような理由があります。

データを処理する際、PyTorch は情報を高次元空間と呼ばれるものの中でテンソルとして表現します。高次元空間とは、数十、あるいは数千もの方向と次元を持つ抽象的な数学的領域のことです。この空間では、AI モデルが座標のマッピングや測定によって、概念をプロットしたり分析したりすることができます。

私たちは 3 次元の世界に住んでいるため、何千もの次元が存在する空間を想像するのは困難です。しかしコンピュータはそうではないため、AI は線形代数を利用してデータを高次元空間にマッピングし、それらの点の間の空間的な関係を計算することで学習します。 

PyTorch では、データを構造化された数値グリッド (テンソル) に変換し、そのテンソルをニューラルネットワークに通します。ニューラルネットワークはこのデータを処理する際に、このデータを使用して内部パラメーター (モデルによっては数十から数百、数兆の場合もあります) を徐々に調整します。このプロセスによってモデルは学習し、データ内のパターンや関係性を認識できるようになっていきます。そうして学習したパターンにより、モデルは以前に見たことがない新しい情報についても予測を行うことができるようになります。「AI の頭脳」は、このように学習した振る舞いによって形成されています。

PyTorch と TensorFlow はどちらもオープンソースのツールです。データをテンソルに変換してデジタル空間にマッピングし、コンピュータの学習を支援します。PyTorch は柔軟性と使いやすさに重点を置いており、TensorFlow はスケーラビリティと構造に重点を置いています。 

PyTorch は、Meta (旧 Facebook) によって 2017 年にオープンソース製品としてリリースされました。当初は社内ツールとして使用されたもので、研究を最優先とするフレームワークとしてゼロから設計され、ニューラルネットワーク・アーキテクチャをより迅速かつ柔軟にテストするための手段となりました。TensorFlow よりも使いやすくて迅速に反復作業ができると開発者たちが感じたことにより、人気を集めました。

TensorFlow は、2015 年に Google によってオープンソース製品としてリリースされました。当初は研究開発およびプロダクション環境のための社内ツールとして開発され、巨大なエンタープライズシステム上で動作させることを前提とした設計となっていました。このため、TensorFlow は数百万人のユーザーと大規模なクラウドサーバーを扱う企業環境で広く使われるようになりました。

現在、PyTorch と TensorFlow は多くの共通機能を持ち、互いに刺激を与え合いながら時間とともに改良を重ねています。 

CUDA (Compute Unified Device Architecture の略) は、NVIDIA 製 GPU 上で並列処理を実行するコードを記述できるソフトウェア・プラットフォームです。PyTorch は CUDA をデジタルブリッジとして使用して、計算処理をコンピュータのメインプロセッサーから NVIDIA GPU にオフロードします。これにより、数十億もの計算を極めて高速に実行できるようになります。 

ただし、PyTorch はグラフィックスカードや CUDA がなくても使用できます。CUDA や ROCm などのサポートされている GPU プラットフォームがない場合、PyTorch は自動的にデフォルトとしてコンピュータの中央処理装置 (CPU) 上でワークロードを実行します。小規模モデルのデバッグや実行であれば CPU 処理でも十分ですが、大規模なニューラルネットワークを使用して数時間ではなくミリ秒単位でデータを処理したい場合は、CUDA を使用するのが最適解となります。 

計算グラフとは、数学的な手順を視覚的に表したマップのことです。数学システム内のデータの流れをトレースし、PyTorch が各ノードで実行した演算を示すのに役立ち、ネットワークのレイヤー間の依存関係をわかりやすく表現します。

AI 開発において、計算グラフは学習のための青写真となります。入力がどのように出力に変換されるかを追跡することで、エラーを計算して内部パラメーターを調整することが必要な場合に、コンピュータは明確な経路をたどって遡ることができます。

動的計算グラフ (DCG) とは

PyTorch は、動的計算グラフ (DCG) を使用してディープラーニング・モデルを実行します。DCG と通常の計算グラフ (静的グラフとも呼ばれる) との違いは、柔軟性にあります。 

静的計算グラフと動的計算グラフの違いを理解するには、線路 (ディープラーニング・モデルのアーキテクチャ) の上を走る列車 (データ) を想像してみてください。 

静的グラフは、列車が走る前に線路全体を敷設するようなものです。すべての列車は同じルートを通らなければならず、必要な迂回や方向転換はすべて事前に予測し、計画しておく必要があります。まだ線路を敷設していないルートを通る必要があるデータを積んだ列車が到着した場合、システムはクラッシュし、線路を再構築する必要が生じます。つまり静的グラフでは、モデル全体の構築が完了していなければデータを流すことができません。 

動的グラフは、列車が出発する直前に、列車が運ぶ荷物に合わせてルートをカスタマイズし、それぞれの列車の新しいルートを設計するようなものです。データが短い文の場合、PyTorch はモデル内でデータを通す短い経路を構築します。データが長い文章である場合、PyTorch の動的グラフは、モデル内でデータを通す、より長い経路を構築します。

動的アプローチのメリットは、反復処理ごとの柔軟性とデバッグの容易さです。PyTorch はリアルタイムで線路を 1 本ずつ構築するため、何らかの不具合が発生した場合、列車はエラーが発生した線路上で停止します。 

静的グラフの場合、エラーは線路全体を配置した後に発生し、何が間違っていたのかを明確に示すことができません。当然ながら、これは開発者のストレスの原因となり得ます。 

autograd とは

autograd は、PyTorch に組み込まれているエンジンで、微分と勾配の計算を自動的に行います。PyTorch は、カセットテープやビデオテープの機能に似た、テープベース (またはレコーダーベース) システムと呼ばれる固有のアプローチを採用しています。 

トレーニング中に PyTorch モデルにデータを入力すると、autograd はフォワードパス (「テープレコーダー」機能) を有効にして、すべての数学的演算を実行した順にキャプチャして記録します。また、バックワードパス (巻き戻し) 機能も備えています。autograd は、数学的演算を逆方向に実行することで、各パラメーターが該当のエラーにどれだけ寄与したか、およびどのように調整すべきかを計算します。 

autograd がテープを「巻き戻す」方法は、数学教師が生徒の長い数式に基づく解答を採点するようなものです。誤った最終解答から出発して計算過程を 1 つずつ順に遡り、数式のどこが間違っていたのか、そして次に解くときにどこを修正すべきかを特定します。 

PyTorch でのトレーニングを autogradで最適化する

AI モデルに正しい応答をさせることは、作業全体の半分に過ぎません。モデルがなぜ、あるいはどのようにその決定に至ったのかも理解する必要があるからです。透明性と説明可能性を優先することで、開発者は技術的に高度なだけでなく、安全で公平、かつ人間の価値観やニーズに合った AI を​構築できます。 

動的計算グラフや autograd などの PyTorch の基本的な機能は、データを処理する数学的フローをステップバイステップで追跡できますが、人間が読めるように設計されているわけではありません。このギャップを埋めるために、PyTorch には Captum と呼ばれる専用の説明可能な AI ライブラリが搭載されています。Captum は autograd のデータを利用して、どの入力が最終出力に最も大きな数学的影響を与えたかを計算し、AI モデルのブラックボックスの中で何が行われたのかを解明するのに役立ちます。 

この透明性により、次のようなメリットが得られます。

トラブルシューティングの迅速化: モデルが出力を作成する際のロジックをデータサイエンティストが理解できれば、開発、デバッグ、意思決定がより容易かつ迅速になります。

規制コンプライアンスの向上: 説明可能な AI は、企業が規制やプライバシー法を順守するのに役立ちます。

信頼性の向上: エージェント型 AI などのテクノロジーを実装するには、アルゴリズムと人間の間に信頼関係がなければなりません。

ソブリン AI への道: ソブリン AI とは、AI システムを制御する権利を持つことです。そのためには、モデルがどのようにデータを処理し、インサイトを生成しているかを深く理解する必要があります。 

ソブリン AI アーキテクチャ:分散トレーニングのスケーリング

PyTorch は、ローカルシステムとクラウド・プラットフォームのどちらでもインストールして実行できます。ただし、先に Python がインストールされている必要があります。Python でのコーディングに慣れている方なら、PyTorch は初心者であってもかなり直感的に使えるはずです。 

PyTorch は、Google Colab のようなブラウザーベースのクラウド環境からもアクセスできます。Google Colab には PyTorch と GPU へのアクセスがプリインストールされています。PyTorch を使い始めると、PyTorch のエコシステムが次のような人気のツールへと広がっていることがわかります。

  • Hugging Face:開発者は、PyTorch モデルをゼロから構築する代わりに、事前トレーニング済みのモデルをダウンロードできます。
  • PyTorch Lightning:PyTorch の高レベルの「ラッパー」であり、複雑なエンジニアリングコードを表示しないようにすることで、すっきりと整理された開発者エクスペリエンスを提供します。
  • ONNX:Open Neural Network Exchange (ONNX) は、PyTorch モデルを標準化されたブループリントに変換します。これにより、コードを書き直すことなく、さまざまなソフトウェアシステムやハードウェアチップ上で読み込んで実行できます。 

PyTorch の公式チュートリアルを見る → 

Docker は、コンピュータの環境のスナップショットを保持するデジタル輸送コンテナに例えることができます。PyTorch で Docker ベースのワークフローを使用する目的は、マシン間でコードを共有し、設定エラーやシステムクラッシュを防ぐことです。

PyTorch コードを Docker イメージファイルに移動することで、そのコードを実行するために必要なすべてのものを、マシンの他の部分から隔離されたコンテナにパッケージ化できます。そのコンテナをチームメンバーやクラウドサーバーに送信すると、必要なすべての設定とともにダウンロードされ、実行されます。

PyTorch の開発者とコミュニティメンバーは、公式のビルド済み Docker イメージを維持管理しています。これにより、PyTorch をコンピュータにインストールすることなく PyTorch の Docker イメージをダウンロードできるため、開発とデプロイが単純化されます。 

PyTorch モデルを数百万のユーザー規模に拡張する準備が整ったら、ワークロードを処理するためのサーバー群が必要になります。実行に必要なすべての要素とともに PyTorch モデルを Docker イメージにコンテナ化したら、Kubernetes がそのコンテナを必要な場所に移動させるのに役立ちます。Kubernetes 上で AI ワークロードを実行すると、以下のメリットがあります。

リソースの自動オーケストレーション:PyTorch モデルは、GPU、CPU、メモリー、ネットワーク帯域幅など、多くの計算リソースを必要とします。Kubernetes は、環境内の全サーバーで利用可能なリソースを追跡し、ワークロードをスケジューリングして適切な場所に割り当てることで、PyTorch モデルを中断なく実行し続けるのに役立ちます。サーバーがクラッシュした場合、Kubernetes はエラーを即座に検知し、人間の介入を必要とすることなくデータトラフィックをリダイレクトできます。 

スケーラビリティ:AI のワークロードは予測不可能です。モデルに突然、大量のトラフィックが送られた場合、Kubernetes は複数のサーバーに Docker コンテナの複製を作成してスケールアップし、急増した負荷に対応することができます。トラフィックが少なくなったら、Kubernetes はリソースを元通りにスケールダウンしてコストを節約します。

分散トレーニングのサポート:AI モデルが大きすぎて単一のコンピュータではトレーニングできない場合、コンテナを使用してワークロードを複数のマシンに分散させることができます。PyTorch は、モデルを Docker コンテナにコンテナ化し、クラウド・アーキテクチャを利用することで、負荷の高い数学的処理を、相互接続された GPU のクラスタ全体に分散させることができます。

その際、Kubernetes は Docker コンテナ同士が通信し、テンソルを同期し、単一の統合された「頭脳」として計算を実行できるように、Docker コンテナ間のネットワーキングを処理します。この並列処理により、全体のトレーニング時間が短縮されます。

Red Hat OpenShift 上で分散型 AIトレーニングを実行する

Red Hat® AI は、vLLM 搭載のサーバーを通じて、高速で柔軟かつ効率的な推論を行うように構築されています。モデルをデータと確実に接続し、専用エージェントのカスタマイズと開発を単一のプラットフォームで行うことができます。オープンソースを基盤として構築された当社の製品により、あらゆる規模で AI ワークフローをエンドツーエンドで完全に制御することができます。 

また、Red Hat AI ポートフォリオには AI 推論、エージェント型 AI ワークフロー、AI 対応アプリケーションをあらゆるインフラストラクチャ上でデプロイ、管理、スケーリングするための統合 AI プラットフォームである Red Hat AI Enterprise が含まれています。

Red Hat AI の詳細

ブログ

Artificial Intelligence (AI)

See how our platforms free customers to run AI workloads and models anywhere

Red Hat で AI をナビゲート:AI 導入に役立つ専門知識、トレーニング、サポート

Red Hat の独自の AI ポートフォリオをご覧ください。Red Hat AI は、人工知能 (AI) を活用してお客様のビジネスおよび IT の目標を達成するお手伝いをします。

関連情報

RAG とファインチューニング

RAG とファインチューニングはいずれも LLM の改良を目的としていますが、使用する手法は異なります。RAG はモデルの変更を行いませんが、ファインチューニングはパラメーターの調整を必要とします。

AIOps について

AIOps (IT 運用のための AI) は、機械学習やその他の高度な AI 技術を用いて IT 運用を自動化するアプローチです。

機械学習とは

機械学習は、明示的にプログラムしなくても、パターンを見つけ、予測し、経験から学習するようにコンピュータをトレーニングする手法です。

AI/MLリソース

注目の製品

  • Red Hat AI

    ハイブリッドクラウド環境全体で AI ソリューションの開発とデプロイメントを加速させる柔軟なソリューション。