
ブログ
容量の比較:TensorFlow vs PyTorch vs Neural Designer

容量とは、データサイエンスや機械学習プラットフォームにおいて、コンピュータプログラムが解析できる最大データ量を意味します。
この記事では、3つの機械学習プラットフォームの負荷容量を比較します。TensorFlow、PyTorch、Neural Designerの3つの機械学習プラットフォームについて、近似値のベンチマークを行い、その負荷容量を比較します。
これらのプラットフォームは、それぞれGoogle、Facebook、Artelnicsによって開発されたものです。
これからわかるように、Neural DesignerはTensorFlowやPyTorchよりも1.8倍大きなデータセットをロードすることができます。
この記事では、Neural Designerの無料トライアルを使用して結果を再現するために必要なすべてのステップを提供します。
リンク:
はじめに
ツールが解析できる最大データ量は、さまざまな要因に依存する。最も重要なものは、それが書かれているプログラミング言語と、メモリ使用量が内部でどのように動作しているかです。
次の表は、これらのツールのメモリ使用量に影響を与える可能性のある技術的特徴をまとめたものです。

3つのプラットフォームは、C++が核となっているとはいえ、そのインターフェースは異なります。TensorFlowとPyTorchは、PythonのAPIを使うのが一般的です。一方、Neural DesignerはC++のGUIを使用します。
後述するように、アプリケーションがPythonのインターフェースを持つということは、メモリ消費量が多くなり、データを読み込む容量が少なくなることを意味します。
ベンチマークアプリケーション
3つのプラットフォームの能力をテストするために、変数の数を固定し、サンプル数を変えて、異なるRosenbrockデータファイルを読み込むことを試みます。以下の表は、サイズとRosenbrockの総サンプル数の対応表です。

サンプル数は比較テストを行うために変更する唯一のパラメータです。他のパラメータは一定です。次の図は、ベンチマークを設定したところです。

各プラットフォーム(TensorFlow、PyTorch、Neural Designer)ごとに、メモリがクラッシュするまでサンプルを増やしながら、上記のベンチマークを実行します。CSVファイルを読み込み、ニューラルネットワークを学習させることができれば成功としています。
リファレンスコンピュータ
次のステップは、TensorFlow、PyTorch、Neural Designerでニューラルネットワークを学習するためのコンピュータを選択することです。容量テストでは、コンピュータの最も重要な機能はメモリです。
我々は、すべての計算をAmazon Web Servicesのインスタンス(AWS)で行っています。特に、結果の再現が容易にできるように、r5.large.を選択しました。次の表は、ここで使用したコンピュータの基本情報の一覧です。

パソコンが決まったら、TensorFlow(2.1.0)、PyTorch(1.7.0)、Neural Designer(5.0.0) をパソコンにインストールする。
結果
最後に、TensorFlow、PyTorch、Neural Designerを使用してベンチマークアプリケーションを実行します。そして、それらのプラットフォームが提供する能力結果を比較します。
以下の表は、それぞれのプラットフォームが異なるデータファイルを読み込むことができるかどうかを示しています。青いチェックはそのプラットフォームがロードできることを意味し、オレンジのクロスはできないことを意味します。

このように、TensorFlowとPyTorchの最大容量はともに5×109データで、Neural Designerの最大容量は9×109データであることがわかる。
これらの結果は、グラフ化することも可能です。

これらの結果から、Neural DesignerはTensorFlowやPyTorchよりも1.8倍大きなデータセットを読み込むことができると結論付けることができます。
以下の図は、16GB RAMのコンピュータで、Neural Designerが90億のデータポイントのニューラルネットワークを学習できることを示しています。

次の図は、60億件のデータを含むデータファイルを読み込もうとしたときに、TensorFlowがメモリ不足になる様子を示しています。

このように、TensorFlowの外部モジュールPython pandasが60億件のデータをロードしようとすると、RAM不足でプラットフォームがクラッシュしてしまいます。TensorFlowの最大容量は50億データです。
次の図は、PyTorchでも60億データを含むデータファイルを読み込むと、メモリ不足になる様子を示しています。

ここでも、PyTorchの外部モジュールPython pandasが60億件のデータを読み込もうとするとクラッシュしています。PyTorchの最大容量は50億データです。
結論
TensorFlow、PyTorchともに最大容量は50億データ、Neural Designerの最大容量は90億データです。
この差は、TensorFlowとPyTorchがデータの読み込みに外部モジュール(Python pandas)を使用しているためです。これに対し、Neural Designerでは、その機能を用いてデータを読み込むため、アドバンテージがあります。
確かに、Pythonは高水準のプログラミング言語です。しかし、そのため、Pythonのツールでは、データを読み込む能力が低くなっています。
この結果を再現するには、Neural Designerの無料体験版をダウンロードし、この記事で説明されている手順に従ってください。