PyTorchとは
PyTorchとは、Torchを元に作られたPython用の深層学習用フレームワークソフトウェアを指します。読み方は「パイトーチ」で、Facebook(現Meta)のAI Reserarch Lab(FAIR)で開発されました。グラフベースの実行・分散学習・モバイル展開・量子化の機能を持ちます。トレーニング時間が高速なため、短い時間で完了します。
【参考】:PyTorch
PyTorchの特徴
Pythonの特徴はプログラム記述がシンプルなため、高機能なプログラムが簡単に記述できることです。また、インタプリタのためデバッグが簡単に行えます。AIでは分析アルゴリズムが共通化しやすいため、機械学習やディープラーニング(深層学習)のライブラリが数多く提供されており、AI分野の開発言語にPythonが標準的に用いられています。記述しやすく、かつ判読しやすいのでメンテナンス性にも優れています。
PyTorchはPythonのメリットを享受できるよう、Torchを元に開発されました。PyTorchは分散トレーニングが可能で、スケーラブルなトレーニングと利用現場でのパフォーマンス最適化が可能です。同様に主要なクラウド環境がサポートされており、シームレスな開発とスケーリングを提供します。
PyTorchのメリット
PyTorchは以下のメリットにより、人気が高まっています。
・GPUサポート GPUとしてNVIDIAがサポートされます。NVIDIAのソフトウェアライブラリであるCUDA(Compute Unified Architecture)が活用できます。このため、強力なGPUサポートを活用して配列(テンソル)演算が可能です。
・使い勝手が良い PyTorchはNumpyに近い操作性を持っています。そのため、すでにNumpyを利用しているユーザにはそのまま利用できるメリットがあります。標準ONNX(Open Neural Network Exchange)フォーマットがサポートされており、対応プラットフォーム・ランタイム・ビジュアライザーなどに直接アクセスすることができます。
搭載されている自動微分(Automatic Differentiation)により、自動勾配計算が行われます。深層ニューラルネットワークの最適化が簡単に行えます。フロントエンドの提供により、PythonならびにC++から利用できるメリットもあります。
・主要クラウドが活用可能 インストール使用するほかに、クラウドではAlibaba Cloud・Amazon Web Services・Google Cloud Platform・Microsoft Azureが対応します。シームレスな開発運用が可能です。
PyTorchのデメリット
PyTorchのデメリットも少なからずあります。具体的には以下のデメリットがあります。
・日本語の情報が少ない PyTorchチュートリアルの日本語版が有志により提供されていますが、総じて日本語の情報が少ない状況です。最新情報を入手する際には多少の英語力が求められます。
・低レベルAPIのみ 人間の言語水準に近いものを高レベル、機械の言語水準に近いものを低レベルとする場合、PyTorchの提供APIは低レベルのものが提供されます。低レベルAPIは細かい操作や機能が提供される半面、プログラミングの難易度が求められます。使用するにあたって慣れが必要です。
・研究用途がメイン PyTorchは、Facebook(現Meta)のAI研究の一環で開発されました。そのため研究者に人気があり、論文発表のコードはPyTorchの利用が多い傾向があります。一般用途では高レベルAPIが求められることがあり、そこまで利用が増加していません。
PyTorch入門
ここではPyTorchの入門として、基本手続きを説明します。最初にPythonを起動します。
python
Pythonのコマンドとして、PyTorchのライブラリをインポートします。ここで乱数の配列(テンソル)を生成・表示してみます。簡単な例ですが、動作確認のサンプルとしても利用されています。
import torch
x = torch.rand(5, 4)
print(x)
以降で、インストールから簡単な使い方について説明していきます。
PyTorchのインストール
PyTorchはWindows・MacOS・Linuxでインストール可能です。
【参考】:GET STARTED START LOCALLY
各OSのインストール方法は以下の通りです。
・Windows環境 Windows 7以降でインストール可能であり、推奨されているのはWindows 10以降です。サーバーはWindows Server 2008 R2以降がサポートされます。Windowsでは、Python 3.7〜3.9がサポートされ、Chocolatey・Python公式サイト・Anacondaを用いてインストールします。パッケージマネージャは、Anacondaとpipがサポートされます。
・MacOS環境 MacOS 10.10(Yosemite)以降でサポートされます。MacOSではPython 3.7以降がサポートされ、Homebrew・Python公式サイトを用いてインストールします。パッケージマネージャは、Anacondaとpipがサポートされます。
・Linux環境 Linuxでは、glibc v2.17以降がサポートされます。ディストリビューションで言うと、Arch Linux 2012-07-15・CentOS 7.3-1611・Debian 8.0・Fedora 24・Mint 14・OpenSUSE 42.1・PCLinuxOS 2014.7・Slackware 14.2・Ubuntu 13.04以降が対応します。Linuxでは、通常Python 3.7以降がインストール済みのためそのまま利用できます。パッケージマネージャは、Anacondaとpipがサポートされます。
PyTorchの使い方
PyTorchの使い方は、公式サイトのチュートリアルで基本情報を得ることができます。
【参考】:LEARN THE BASICS 【参考】:QUICKSTART
・基本操作
最初に、以下の様にPythonでtorchライブラリをインポートして利用します。
import torch
データ処理には、”torch.utils.data.DataLoader”と”torch.utils.data.Dataset”の2種類が用意されています。”torch”をインポート後、以下のように読み込みます。nnはニューラルネットワークのモジュールです。
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor
・GPUの利用
GPUとCUDA(Compute Unified Architecture)が利用可能か確認するには、以下の関数を用います。
import torch
torch.cuda.is_available()
・モデルの作成 モデルの作成では、nn.Moduleを継承したクラスを作成します。__init__関数で必要なネットワーク層を定義します。nn.Flatten()・nn.Sequential()・nn.Linear()・nn.ReLU()等を用います。クラスのforward関数では、データがネットワークを通過する方法を指定します。
・学習と最適化 モデルは、学習ループで学習データセットに対して予測を行い、モデルのパラメータを調整します。そして、テストデータセットに対してモデルのパフォーマンスをチェックします。学習プロセスは数回の反復を経て予測精度を高めていきます。最後にモデルを保存します。
そもそもPythonのフレームワークとは
Pythonは、インタープリタ型のオブジェクト指向プログラミング言語です。フレームワークとは、アプリケーション開発を効率的に行うように定義したものです。Pythonのフレームワークは、ベースとなる開発言語にPythonを用いたものを指します。
Pythonは言語仕様がシンプルであるため、メンテナンス性に優れており、汎用用途に加えて専門分野向けにライブラリが数多く公開されています。特にデータサイエンス・人工知能(AI)向けに活用されることが多いので、専用のフレームワークも数多く提供されています。
【参考】:python
Pythonのフレームワークの特徴
フレームワークとは、物事の考え方を整理しルール化したものです。Pythonのフレームワークは、汎用用途・ウェブアプリケーションからデータサイエンス・人工知能(AI)向けまで数多くあります。
Pythonフレームワークの代表的なメリットは、開発生産性の向上です。設計・開発の工数が削減でき、短納期で開発することができます。誰が見ても理解しやすいので、メンテナンスの工数が削減でき、品質が維持できます。以上のことから、フレームワークでは設計・開発から運用までの標準化により一貫性が確保され、全体の生産性と品質の向上が期待できます。
PyTorch以外のフレームワーク
TensorFlowは、Google社が開発した機械学習用のフレームワークです。機械学習モデルの開発とトレーニング(学習)に使用し、Pythonに限定されず、C・C++やJava等の言語で利用できます。
【参考】:TensorFlow
PyTorchとTensorFlowの使い分け
PyTorchとTensorFlowは、ともに処理が高速で人気があるため、どちらが良いのか判断がつかないこともあります。
TensorFlowはAPIが低レベルから高レベルまで揃っており、コードを見やすく記述することができます。PyTorchでは低レベルAPIを中心としたフレームワークですので、記述は慣れが必要ですがデバッグ操作はしやすくなります。それぞれメリットが多いため、実際に使用してみて使いやすいソフトウェアを選択することをおすすめします。
PyTorchを理解して最新の研究成果に触れてみましょう
PyTorchは低レベルAPIですので、最初は難しく感じますが細かい操作が可能なことで研究者に人気があります。研究成果となる論文発表では、PyTorchがコード開発に活用されています。AI分野の最新の研究成果に多く触れるには、PyTorchがうってつけです。将来への投資として、ぜひ学習しましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから