PyTorchは、Torchの機械学習ライブラリとPythonベースの高レベルAPIを組み合わせた、ニューラル・ネットワークを構築するために使用される、ソフトウェアベースのオープンソースのディープラーニング・フレームワークです。その柔軟性と使いやすさから、学術・研究コミュニティの主要な機械学習フレームワークとなっています。
PyTorchは、単純な線形回帰アルゴリズムから、コンピューター・ビジョンや 自然言語処理(NLP)などのタスクに使用される複雑な畳み込みニューラル・ネットワークから生成変換モデルまで、多様なニューラル・ネットワーク・アーキテクチャーをサポートしています。PyTorchは、広く知られているプログラミング言語「Python」をベースに構築されており、事前構築済み(さらには事前学習済み)モデルの広範なライブラリを提供しています。データサイエンティストは、コードと数学関数に費やす時間と労力を最小限に抑えながら、高度なディープラーニング・ネットワークを構築・実行することができます。
また、データサイエンティストは、コード全体が実装されるのを待たずに、コードの一部をリアルタイムに実行してテストすることができます(大規模な深層学習モデルでは、非常に長時間かかることがあります)。これにより、PyTorchはラピッド プロトタイピングに優れたプラットフォームであり、デバッグ・プロセスも大幅に高速化できます。
Facebook AI Research (現Meta)によって開発されたPyTorchは、2017年にオープンソースになり、2022年からはPyTorch Foundation(より大きなLinux Foundationの一部)に管理されています。同組織は、ディープラーニング・コミュニティがPyTorchエコシステムのさらなる開発に協力するための中立的な組織として機能しています。
IBMは、2023年にPyTorch Foundationの主要メンバーとなり、すでに2つの主要プロジェクトに協力してきました。 数十億のパラメーターを備えた、柔軟なAI基盤モデルの効率的なトレーニングを可能にすることと、AIトレーニングのチェック・ポイント作成の費用対効果を大幅に改善することです。IBMの watsonx プラットフォームは、PyTorchを活用して、エンドツーエンドのトレーニングからモデルのファイン・チューニングまで、AI基盤モデルのためのエンタープライズ・グレードのソフトウェア・スタックを提供しています。
データ分析に役立つオープンソースのSQLエンジンであるPrestoの導入方法については、O'Reilly社が提供する資料をご覧ください。
AIデータ・ストアに関する電子ブックに登録する
PyTorchの数学的およびプログラミング構造により、ディープ・ニューラル・ネットワークの複雑さやパフォーマンスを制限することなく、機械学習のワークフローが簡素化および最適化されます。
Pythonは、データサイエンスで広く使用されている汎用の高水準プログラミング言語であり、ディープラーニング・ネットワークのモデリングを行うデータサイエンティストは、直感的に作業できます。Pythonのシンプルな構文は読みやすく、習得にそれほど時間がかからず、Windows、macOS、Linux、Unixなどのオペレーティング・システム上で実行できます。Pythonは3年以上にわたり、GitHub上で2番目に使用されているプログラミング言語であり、2019年にJavaを上回りました。その人気は高まり続けており、2022年には22.5%増加する見込みです。1
この柔軟性とシンプルさは、Python開発者の強力なオンラインコミュニティを育むのに役立っており、数学演算用のNumerical Python(NumPy)、データ操作用のPandas 、データの可視化用のmatplotlibなど、さまざまなPythonライブラリとAPI、教育リソースで協力されています。また、このコミュニティは、機械学習のコーディングの単調さや当て推量を減らし、機械的な作業ではなく、開発者やデータサイエンティストがイノベーションに集中するための膨大なPytorchライブラリを作成しています。
機械学習アルゴリズムでは、音や画像などの表面上は数値でない情報に適用されるアルゴリズムであっても、データは数値で表現する必要があります。PyTorchでは、テンソルによってこれを実現します。テンソルは、プラットフォーム上の計算に使用されるデータの基本単位です。
機械学習の文脈では、テンソルは数学の簿記装置のように機能する、数値の多次元の配列です。言語的には、「テンソル」は、よりよく知られた数学的実体を含む、一般的な用語です。
PyTorchのテンソルは、NumPyのndarrayと同様に機能します。ただし、中央処理装置(CPU)上でのみ実行できるndarrayとは異なり、テンソルはグラフィックス処理装置(GPU)上でも実行できます。GPUでは、CPUよりも劇的に高速な計算が可能になります。これは、ディープラーニングに必要な膨大なデータと並列処理において、大きな強みになります。
PyTorchのテンソルは、モデルの入出力をエンコードするだけでなく、モデル・パラメーター、つまり機械学習で「学習」される重み、バイアス、勾配もエンコードします。テンソルのこの特性により、PyTorchの最も重要な機能の1つである自動微分が可能になります。
PyTorchは深層学習モデルの構成要素としてモジュールを使用するため、各アルゴリズムを手動でコーディングするという面倒な作業を行うことなく、ニューラル・ネットワークを迅速かつ簡単に構築できます。
モジュールには、他のネストされたモジュールを含めることができます(多くの場合、実際に含まれます)。これにより、より精巧な多層ニューラル・ネットワークの作成が可能になるだけでなく、これらの複雑な深層学習モデルを単一の名前付きモジュールとして簡単に保存し、異なるマシン、CPU、またはGPU間で転送できるようになります。PyTorchモデルは、Torchscript(ibm.com外部へのリンク)を使用して、 C++などのPython以外の環境でも実行できるため、研究プロトタイプと実稼働展開の間のギャップを埋めるのに役立ちます。
PyTorchでディープラーニング・モデルを構築および最適化するために使用されるモジュールには、大きく分けて次の3つの主要なクラスがあります。
nnモジュールは、ニューラル・ネットワークの層として展開されます。torch.nnパッケージには、畳み込み、プーリング、回帰などの一般的な操作を実行するモジュールの大規模なライブラリが含まれています。たとえば、 torch.nn.Linear(n,m) は、n個の入力とm個の出力を持つ 線形回帰アルゴリズムを呼び出します(最初の入力とパラメーターは、後続のコード行で確立されます)。
autogradモジュールは、ニューラル・ネットワーク内で動作する関数に対して、勾配降下法を介してモデル・パラメーターを最適化するために使用される勾配を自動的に計算する、簡単な方法を提供します。require_grad=Trueを指定してテンソルを追加すると、そのテンソルに対するすべての操作を追跡する必要があることをautogradするため、自動微分が可能になります。
Optimモジュールは、最適化アルゴリズムをそれらの勾配に適用します。Torch.optimは、特定の最適化ニーズに合わせて、確率的勾配降下法(SGD)や二乗平均平方根伝播(RMSprop)などのさまざまな最適化手法のモジュールを提供します。
動的計算グラフ(DCG)は、深層学習モデルをPyTorchで表現する方法です。抽象的に言えば、計算グラフは、数学システム内のさまざまな操作間のデータの流れをマッピングします。深層学習の文脈では、計算グラフは基本的に、ニューラル・ネットワークのコードをフローチャートに変換し、各ノードで実行される操作と、ネットワーク内の異なる層間の依存関係(入力データを出力データに変換するステップとシーケンスの配置)を示します。
動的計算グラフ(PyTorchで使われているようなもの)が静的計算グラフ(TensorFlowで使われているようなもの)と異なる点は、DCGは計算の正確な仕様と計算間の関係を実行時まで延期することです。言い換えると、静的計算グラフを実行するには、ニューラル・ネットワーク全体のアーキテクチャーを完全に決定してコンパイルする必要があるのに対し、DCGはその場で反復および変更できます。
このため、DCGはデバッグやプロトタイピングに特に有用です。モデル全体をリセットすることなく、モデルのコードの特定の部分を変更したり、切り離して実行できるからです。高度なコンピューター・ビジョンやNLPタスクに使用される極めて大規模な深層学習モデルでは、時間と計算リソースの両方を無駄に浪費することになります。バックプロパゲーション中に動的計算グラフを逆方向に簡単に生成できるため、この柔軟性の利点はモデルのトレーニングにも及びます。
静的計算グラフは、固定構造によって計算効率を高めることができますが、柔軟性は限られています。たとえば、さまざまなサイズの画像を処理できる 畳み込みニューラルネットワーク(CNN)のように、入力データに応じて層数を変化させるモデルを構築することは、極めて困難です。
ニューラル・ネットワークのトレーニング(特に教師あり学習)に広く使用されている方法の1つは、バックプロパゲーションです。まず、順方向パスでは、モデルにいくつかの入力(x)を与えて、いくつかの出力(y)を予測します。その出力から逆算して、損失関数を使用して、さまざまなx値でのモデルの予測の誤差を測定します。その損失関数を微分して導関数を見つけることにより、勾配降下法を使用して、ニューラル・ネットワークの重みを一度に1層ずつ調整できます。
PyTorchのautogradモジュールは、微分の連鎖律を使用した自動微分技術を強化し、より単純な導関数に分割し、後で結合することで複雑な導関数を計算します。Autogradは、計算グラフで実行されるすべての操作の勾配を自動的に計算して記録し、バックプロパゲーションの作業を大幅に軽減します。
すでにトレーニング済みのモデルを実行する場合、autogradは計算リソースを不必要に使用することになります。require_grad=Falseを指定してテンソル演算を追加すると、勾配の追跡を停止するように、PyTorchに通知されます。
深層学習モデルのトレーニングに必要な膨大なデータセットの操作は、複雑で計算量が多くなる場合があります。PyTorchは、データの読み込みを容易にし、コードを読みやすくするために、データセットとデータローダーという2つのデータ・プリミティブを提供します。
PyTorchのコア機能は、PyTorchコミュニティのメンバーによって開発されたツール、ライブラリ、拡張機能(ibm.com外部へのリンク)の堅牢なエコシステムによって補完されています。プリインストールされたTorchライブラリを補完するために、目的別モジュール、事前構築されたニューラル・ネットワーク、さらには事前トレーニングされたモデルを含む、多くのオープンソース・ライブラリが利用可能です。
Torchvisionは、さまざまな画像分類、オブジェクト検出、画像セグメンテーションタスクのためのモジュール、ネットワーク・アーキテクチャー、およびデータセットを含むツールキットです。
TorchText は、自然言語処理で使用するためのデータセット、基本的なテキスト処理変換、事前トレーニングされたモデルなどのリソースを提供します。
Open Neural Network Exchange(ONNX)は、AIフレームワーク間の相互運用性を保証し、ユーザーがPyTorchモデルを他のプラットフォームに簡単に移行できるようにします。
PyTorch.orgで多くの役立つチュートリアルをご覧いただけます。たとえば、こちらの中級チュートリアル(ibm.com外部へのリンク)では、ビデオ・ゲームをプレイするようにAIをトレーニングすることで、深層強化学習の基礎を学ぶことができます。
PyTorchは、ローカル・システムとクラウド・プラットフォームの両方に、さまざまな構成でインストールして実行できます。
PyTorchをローカルで実行するには、Anacondaパッケージ・マネージャー、Homebrew(ibm.com外部へのリンク)、またはPythonのWebサイト(ibm.com外部へのリンク)のいずれかを使用して、Pythonをインストールする必要があります。
PyTorchは、Anaconda(ibm.com外部へのリンク)経由で、conda install pytorch torchvision -c pytorchコマンドを使用してローカルにインストールすることも、 pip(ibm.com外部へのリンク)経由で、pip3 install torch torchvisionコマンドを使用してローカルにインストールすることもできます。Anacondaは、すべてのPyTorchの依存関係(Pythonを含む)を1つのサンドボックス・インストールで提供しているため、推奨されます。2
PyTorchは、Amazon Web Services、Google Cloud、Microsoft Azureなどのクラウド・プラットフォーム上でも実行できます。
PyTorchのCUDA(Compute Unified Device Architecture)のサポートを利用するために、NVIDIA GPUを使用することが推奨されます(必須ではありません)。
基盤モデル、生成AI、機械学習のトレーニング、検証、チューニング、デプロイが容易になり、少量のデータを使用して、短時間でAIアプリケーションを開発できます。
AIの活用方法を新たに創造する:2万人を超えるAI専門家からなるIBMの多様なグローバル・チームは、お客様が迅速かつ自信を持ってAIと自動化を設計し、ビジネス全体に拡張できるよう支援します。独自のIBM watsonxテクノロジーとパートナーのオープン・エコシステムを連携して、倫理と信頼に基づいて、あらゆるクラウド環境にAIモデルを提供します。
watsonx.dataは、オープンでハイブリッドな統制されたデータ・ストアとして、あらゆるデータの分析とAIワークロードをあらゆる場所に拡張できます。
1 Octoverse 2022: The top programming languages (ibm.com外部へのリソース)、Github、2022年11月17日
2 PyTorch: Get Started – Start Locally (ibm.com外部へのリンク)