この記事を読んでいるということは、おそらくすでにディープラーニングの旅を始めているということでしょう。この分野に詳しくない方のために説明すると、ディープラーニングは、特殊な脳のようなアーキテクチャである「人工ニューラル ネットワーク」を使用して、現実世界の問題を解決できる人間のようなコンピューターを作成します。これらのアーキテクチャの開発を支援するために、Google、Facebook、Uber などのテクノロジー大手は、Python ディープラーニング環境用の複数のフレームワークをリリースし、さまざまな種類のニューラル ネットワークの学習、構築、トレーニングを容易にしています。この記事では、2 つの一般的なフレームワークである TensorFlow と PyTorch を詳しく紹介し、比較します。 1. GoogleのTensorFlow TensorFlow は、Google の開発者によって作成され、2015 年にリリースされたオープンソースのディープラーニング フレームワークです。公式の研究は論文「TensorFlow: 異機種分散システムにおける大規模機械学習」に掲載されました。 論文アドレス: http://download.tensorflow.org/paper/whitepaper2015.pdf TensorFlow は現在、企業やスタートアップ企業でワークロードの自動化や新しいシステムの開発に広く利用されています。分散トレーニングのサポート、スケーラブルな生産および展開オプション、複数のデバイス (Android など) のサポートが高く評価されています。 2. FacebookのPyTorch PyTorch は、Facebook のチームによって開発され、2017 年に GitHub でオープンソース化された最新のディープラーニング フレームワークの 1 つです。開発の詳細については、論文「PyTorch での自動微分化」を参照してください。 論文アドレス: https://openreview.net/pdf?id=BJJsrmfCZ PyTorch は、そのシンプルさ、使いやすさ、動的な計算グラフのサポート、高いメモリ効率により、ますます人気が高まっています。これについては後で詳しく説明します。 TensorFlow と PyTorch を使って何を構築できるでしょうか? ニューラル ネットワークは最初、手書きの数字を認識したり、カメラを使用して車のナンバープレートを識別したりするなど、単純な分類問題を解決するために使用されました。しかし、最近のフレームワークの開発と NVIDIA の高性能グラフィックス プロセッシング ユニット (GPU) の進歩により、テラバイト単位のデータでニューラル ネットワークをトレーニングし、はるかに複雑な問題を解決できるようになりました。特筆すべき成果の 1 つは、TensorFlow と PyTorch に実装された畳み込みニューラル ネットワークが、ImageNet で現在の最先端のパフォーマンスを達成したことです。トレーニングされたモデルは、オブジェクト検出、画像セマンティックセグメンテーションなどのさまざまなアプリケーションで使用できます。 ニューラル ネットワーク アーキテクチャは任意のフレームワークに基づいて実装できますが、結果は同じではありません。トレーニング プロセスには、フレームワークに密接に関連する多数のパラメーターがあります。たとえば、PyTorch でデータセットをトレーニングする場合、GPU は CUDA (C++ バックエンド) 上で実行されるため、GPU を使用してトレーニング プロセスを強化できます。 TensorFlow も GPU を使用できますが、独自の組み込み GPU アクセラレーションを使用します。したがって、モデルのトレーニングにかかる時間は、選択したフレームワークによって常に異なります。 1. TensorFlow 優秀プロジェクト Magenta: 機械学習をクリエイティブ プロセスのツールとして使用することを検討しているオープン ソースの研究プロジェクト: https://magenta.tensorflow.org/ Sonnet: これは、複雑なニューラル ネットワークを構築するために使用できる TensorFlow ベースのソフトウェア ライブラリです: https://sonnet.dev/ Ludwig: これは、コードを書かずにディープラーニング モデルをトレーニングおよびテストするためのツールボックスです: https://uber.github.io/ludwig/ 2. PyTorch の優れたプロジェクト CheXNet: ディープラーニングを使用して胸部X線を分析し、放射線科医レベルの肺炎モニタリングを可能にする: https://stanfordmlgroup.github.io/projects/chexnet/ PYRO: これは、PyTorch バックエンドを備えた Python で書かれた汎用確率プログラミング言語 (PPL) です: https://pyro.ai (https://pyro.ai/) Horizon: 応用強化学習 (Applied RL) のためのプラットフォーム: https://horizonrl.com (https://horizonrl.com/) これらは、TensorFlow と PyTorch 上に構築されたフレームワークとプロジェクトのほんの一部です。詳細については、TensorFlow および PyTorch の GitHub および公式 Web サイトをご覧ください。 4. PyTorchとTensorFlowの比較 PyTorch と TensorFlow の主な違いは、コードの実行方法です。どちらのフレームワークも、基本データ型テンソルで動作します。テンソルは、次の図に示すように多次元配列として考えることができます。 1. メカニズム: 動的グラフ定義と静的グラフ定義 TensorFlow フレームワークは、次の 2 つのコア ビルディング ブロックで構成されています。
計算グラフは、計算を有向グラフとして記述する抽象的な方法です。グラフは、ノード (頂点) とエッジで構成されるデータ構造であり、有向エッジによってペアで接続された頂点の集合です。 TensorFlow でコードを実行すると、計算グラフが静的に定義されます。外部とのすべての通信は、実行時に外部データに置き換えられるテンソルである tf.Sessionobject と tf.Placeholder を通じて実行されます。たとえば、次のコード スニペットを検討してください。 次の図は、TensorFlow でコードを実行する前に計算グラフが静的に生成される方法を示しています。計算グラフの主な利点は、並列化または依存関係駆動スケジューリングを実現できることです。これにより、トレーニングがより高速かつ効率的になります。 TensorFlow と同様に、PyTorch にも 2 つのコア モジュールがあります。
下の図からわかるように、特別なセッション インターフェイスやプレースホルダーなしで、実行の進行に応じてグラフが変化し、ノードが実行されます。全体的に、このフレームワークは Python 言語とより緊密に統合されており、ほとんどの場合、よりネイティブな感じがします。つまり、PyTorch はより Python 的なフレームワークですが、TensorFlow はまったく新しい言語のように感じられます。 ソフトウェアの世界では、使用するフレームワークによって大きな違いがあります。 TensorFlow は TensorFlow Fold ライブラリを使用して動的グラフを実装する方法を提供しますが、PyTorch の動的グラフは組み込まれています。 2. 分散トレーニング PyTorch と TensorFlow の主な違いの 1 つは、データの並列性です。 PyTorch がパフォーマンスを最適化する方法は、Python のネイティブの非同期実行サポートを活用することです。 TensorFlow では、分散トレーニングを実現するために、手動でコードを記述し、特定のデバイスで実行するように各操作を微調整する必要があります。ただし、PyTorch のすべての機能を TensorFlow で再現することは可能ですが、多くの作業が必要になります。次のコード スニペットは、PyTorch を使用してモデルの分散トレーニングを実装する簡単な例を示しています。 3. 視覚化 TensorFlow はトレーニング プロセスを視覚化する上で利点があります。視覚化により、開発者はトレーニング プロセスを追跡し、より便利なデバッグが可能になります。 TensorFlow の視覚化ライブラリは TensorBoard と呼ばれます。 PyTorch 開発者は Visdom を使用しますが、Visdom が提供する機能はシンプルで制限されているため、トレーニング プロセスを視覚化する場合には TensorBoard の方が適しています。 TensorBoard の機能:
TensorBoardでのトレーニングの視覚化 Visdomの特徴:
Visdomでトレーニングを視覚化する 4. 本番環境への展開 トレーニング済みのモデルを本番環境にデプロイする場合、TensorFlow が明らかに勝者です。 REST クライアント API を使用するフレームワークである TensorFlow サービングを使用して、TensorFlow にモデルを直接デプロイできます。 PyTorch では、最新の 1.0 安定バージョンで本番環境へのデプロイが少し簡単になりますが、Web 上で直接モデルをデプロイするためのフレームワークは提供されていません。バックエンド サーバーとして Flask または Django を使用する必要があります。したがって、パフォーマンスを考慮する場合は、TensorFlow サービングの方が適している可能性があります。 5. PyTorchとTensorFlowを使用してシンプルなニューラルネットワークを定義する PyTorch と TensorFlow でニューラル ネットワークを宣言する方法を比較してみましょう。 PyTorch では、ニューラル ネットワークはクラスであり、torch.nn パッケージを使用してアーキテクチャを構築するために必要なレイヤーをインポートできます。すべてのレイヤーは最初に __init__() メソッドで宣言され、次に forward() メソッドは入力 x がネットワークのすべてのレイヤーをどのように通過するかを定義します。最後に、変数モデルを宣言し、定義されたアーキテクチャに割り当てます ( model = NeuralNet() )。 最近、Keras は TensorFlow をバックエンドとして使用するニューラル ネットワーク フレームワークである TensorFlow ライブラリに統合されました。その時点から、TensorFlow でレイヤーを宣言するための構文は Keras の構文と似ています。まず、変数を宣言し、宣言するスキーマのタイプ (この場合は Sequential() スキーマ) に割り当てます。 次に、model.add() メソッドを使用して、レイヤーを順番に直接追加します。次のコード スニペットに示すように、レイヤー タイプは tf.layers からインポートできます。 5. TensorFlow と PyTorch の長所と短所 TensorFlow と PyTorch にはそれぞれ長所と短所があります。 TensorFlow の利点:
TensorFlow の欠点:
PyTorchの利点
PyTorch の欠点:
6. PyTorchとTensorFlowのインストール、バージョン、アップデート PyTorch と TensorFlow はどちらも最近、新しいバージョン、PyTorch 1.0 (最初の安定バージョン) と TensorFlow 2.0 (ベータ バージョン) をリリースしました。どちらのバージョンにも、トレーニング プロセスをより効率的、スムーズ、強力にするためのメジャー アップデートと新機能が追加されています。 これらのフレームワークの最新バージョンをマシンにインストールする場合は、ソースからビルドするか、pip 経由でインストールできます。 1. PyTorchのインストール macOS と Linux
ウィンドウズ
2. TensorFlowのインストール macOS、Linux、Windows
インストールが成功したかどうかを確認するには、コマンド プロンプトまたはターミナルを使用して次の手順に従います。 7. TensorFlow と PyTorch のどちらがおすすめか TensorFlow は、強力な視覚化機能と高度なモデル開発のための複数のオプションを備えた、非常に強力で成熟したディープラーニング ライブラリです。本番環境への導入オプションがあり、モバイル プラットフォームをサポートしています。一方、PyTorch フレームワークはまだ新しく、コミュニティの活動が活発で、Python と親和性があります。 AI 関連製品をより速く開発・構築したいのであれば、TensorFlow がよい選択肢であると私は提案します。 PyTorch は高速かつ動的なトレーニングをサポートしているため、研究開発者に推奨されます。 オリジナルリンク: https://builtin.com/data-science/pytorch-vs-tensorflow [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: AI による顔を変える動画が何百万人ものユーザーを獲得。たった 1 ステップで楽しさから恐怖感まで
>>: 認知知能を業界の奥深くまで導くWAIC Baiduが言語と知識技術の完全なレイアウトを公開
[[242467]]現在観察できるマクロ経済、政治、人口、社会、文化、ビジネス、テクノロジーの一般...
ご存知のとおり、現在業界で最も強力な (SOTA) ディープラーニング モデルは、膨大な量のビデオ ...
パーソナライズされたサービスが大きなメリットをもたらすことは間違いありません。うまく行けば、投資収益...
[[280530]] [51CTO.com クイック翻訳] システムの効率性と複雑さが増すにつれて、...
スマートテクノロジーをどのように活用するのでしょうか?ほとんどのテクノロジー製品は、特にワイヤレス接...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[263771]] 5Gの進歩に伴い、コスト面でも速度面でも、中国の5Gなしでは5Gを推進するの...