みなさんこんにちは。 今週金曜日、
データサイエンティストコースの開始に関する最初の出版物を共有します。 読書をお楽しみください。
非常に多くの組織が、意思決定に人工知能を使用して活動の範囲を拡大したり、スタートアップを開発したりしようとしていますが、理解すべき重要なことは、選択された開発技術がディープラーニングのための優れたフレームワークに沿っていることです。ある種の別個の目標。 この場合の完璧なタンデムの検索は、ビジネスの円滑かつ迅速な発展とプロジェクトの成功した展開のための前提条件です。
ディープラーニングのフレームワークの以下のリストは、プロジェクトの作業中に発生する特定の問題を解決するための適切なツールを選択するプロセスで役立ちます。 さまざまなソリューションの長所と短所を比較し、それらの限界を評価し、各ソリューションの最適なユースケースについて学ぶことができます!
1.テンソルフローGoogleが作成し、PythonおよびC ++で記述されたTensorFlowは、数値計算用の最高のオープンソースライブラリの1つです。 DeepMind、Uber、AirBnB、Dropboxなどの巨人でさえ、ニーズに合わせてこのフレームワークを選択しているためです。
TensorFlowは、多層ニューラルネットワークなどの複雑なプロジェクトに適しています。 たとえば、音声認識や、Google翻訳などの画像およびテキストアプリケーションに使用されます。
もちろん、専門家はその利点の多くを呼びました:
- 彼女のために多数のマニュアルとドキュメントが書かれています。
- モデルの学習プロセスと視覚化(Tensorboard)を監視するための強力なツールを提供します。
- 開発者やハイテク企業の大規模なコミュニティによってサポートされています。
- サービスモデルを提供します。
- 分散学習をサポートしています。
- TensorFlow Liteは、モバイルデバイスの低遅延デバイスに出力を提供します。
そして、短所:
たとえば、CNTKやMXNetと比較して、ベンチマークでは速度が低下します。
PyTorchやKerasよりも初心者向けの入場閾値が高くなっています。 裸のTensorflowは非常に低レベルであり、多くの定型コードが必要です。また、Tensorflowの「検出および実行」モードはデバッグプロセスを大幅に複雑にします。
もう1つの重要な制限があります。完全にサポートされている言語はPythonのみです。
2. PyTorchPyTorchはPythonのLua Torchライブラリの後継であり、TensorFlowの優れたライバルです。 Facebookで開発され、Twitter、Salesforce、Oxford Universityなど多くの企業で使用されています。
PyTorchは主にモデルを迅速かつ効率的にトレーニングするために使用されるため、
これは多数の開発者
が選択するものです 。
それには多くの重要な利点があります:
- フレームワークのアーキテクチャのおかげで、モデルを作成するプロセスは非常にシンプルで透過的です。
- デフォルトの「実行による定義」モードは、従来のプログラミングへの参照です。 フレームワークは、pdb、ipdb、PyCharmデバッガーなどの一般的なデバッグツールをサポートしています。
- 宣言的なデータの同時実行性をサポートします。
- 多くの事前学習済みモデルと、組み立てが簡単なモジュール式パーツが用意されています。
分散トレーニングは、バージョン0.4以降で利用可能です。
ただし、このフレームワークには否定できないマイナス点がいくつかあります。
- モデルサポートの欠如。
- 彼はまだ製品版の完全なリリースの準備ができていませんが、バージョン1.0へのロードマップは本当に印象的です。
- TensorBoardのように、監視と視覚化のためのインターフェースがありませんが、Tensorboardへの外部接続があります。
3.
ケラスKerasは、TensoFlow、Theano、またはCNTK上で実行できる最小限のPythonベースのライブラリです。 GoogleのエンジニアであるFrançoisScholletが実験を加速するために開発しました。 Kerasは、畳み込み層、リカレントまたはデンスなど、広範囲のニューラルネットワーク層をサポートしています。
このフレームワークは、翻訳、画像認識、音声などの場合に適しています。
利点:
- プロトタイピングは非常に迅速かつ簡単です。
- 多くのレイヤーのディープラーニングモデルを構築するには十分に小さいです。
- 完全に構成可能なモジュールがあります。
- シンプルで直感的なインターフェースを備えており、初心者に適しています。
- 複数のGPUでのトレーニングのサポートが組み込まれています。
- TensorFlowのエバリュエーターとして構成でき、Google Cloudプラットフォーム上のGPUクラスターでトレーニングできます。
- Sparkで実行されます。
- NVIDIA GPU、Google TPU、AMDなどのOpen-CL GPUをサポートします。
そしていくつかの欠点:
- 高レベルであることが判明する可能性があり、カスタマイズが必ずしも容易ではありません。
- Tensorflow、CNTK、およびTheanoバックエンドに制限されています。
KerasはTensorFlowほど機能的ではなく、ネットワーク接続を管理するためのオプションが少ないため、特殊なディープラーニングモデルを作成する場合は深刻な制限になる可能性があります。
4. MXNet
これは、Python、Julia、C ++、R、またはJavaScriptなどの豊富な言語をサポートするApacheによって作成されたディープラーニングフレームワークです。 Microsoft、Intel、およびAmazon Web Servicesで使用されています。
MXNetフレームワークはその高いスケーラビリティで知られているため、主に音声認識と手書き、NLP、予測のために大企業で使用されています。
それには多くの利点があります:
- ディープラーニングアルゴリズムを使用するのに十分な速さ、柔軟性、効果的です。
- 高度なGPUサポートを提供します。
- 任意のデバイスで実行できます。
- 高性能の命令型APIを備えています。
- モデルを簡単にサポートします。
- 非常にスケーラブルです。
- Python、R、Scala、JavaScript、C ++などの多くのプログラミング言語を適切にサポートします。
次に、MXNetの欠点について:
- 彼の周りにはTensorFlowのようなコミュニティはもはやありません。
- 科学界ではあまり人気がありません。
上記の議論に基づいて、MXNetは大規模な産業プロジェクトに適したフレームワークですが、まだかなり若いため、問題を迅速に解決するためのテクニカルサポートを受けられない可能性があることに注意してください。
5. CNTKこのフレームワークは現在、Microsoft Cognitive Toolkitと呼ばれています。 これは、Python、C ++、C#、およびJavaをサポートする非常に大きなデータセットで動作するように設計された、ディープラーニング用のオープンフレームワークです。
CNTKは、音声、手書き、画像認識のための効果的なモデルトレーニングを提供し、CNNとRNNもサポートします。 Skype、Xbox、Cortanaで使用されます。
いつものように、専門家はすでにその利点を高く評価しています。
- 優れたパフォーマンスとスケーラビリティを示します。
- 最適化された多くのコンポーネントを提供します。
- Apache Sparkのサポートを提供します。
- リソースの使用に効果的。
- Azure Cloudと簡単に統合できます。
そして、1つの欠点:
6. CaffeとCaffe2Caffeは、非常に使いやすいPythonインターフェイスを備えたC ++フレームワークです。 CNNおよび直接配信ネットワークをサポートし、モデルのトレーニング(追加のコード行の記述なし)、画像の処理、および既存のニューラルネットワークの改善にも適しています。 一方で、文書化が不十分であり、コンパイルが困難です。 大企業によるCaffeの使用に関する情報はありません。 2017年、FacebookはCaffe 2をリリースしました。これは、Caffeの後継者となり、実稼働環境でのモバイル開発と大規模開発の両方のために作成されました。
Facebookでは、
「8世代のiPhoneと6世代のAndroidプロセッサアーキテクチャにまたがる、10億台以上のスマートフォンで動作する生産準備の整ったプラットフォーム(...)」として知られてい
ます。このフレームワークは、いくつかの理由で優れています。
- デモアプリケーションを作成するための事前トレーニングモデルを提供します。
- 高速でスケーラブルで、スペースをほとんど取りません。
- PyTorchなどの他のフレームワークとうまく機能し、最終的にはPyTorch 1.0に統合されます。
- サーバーとの最適化された作業を提供します。
そして再び、主な欠点:
Caffe2は速度と占有メモリの点でテストに合格しているという事実にもかかわらず、比較的新しく、複雑なネットワークの展開という点では非常に制限されています。これには、少なくとも、デバッグとテクニカルサポートに便利なツールが必要です。
7. Deeplearning4j主なプログラミング言語がJavaである場合は、DL4Jを詳しく検討する必要があります。 これは主にJavaおよびScala向けに書かれた商用のオープンソースプラットフォームであり、さまざまなタイプのニューラルネットワーク(CNN、RNN、RNTN、LTSMなど)を適切にサポートします。
このフレームワークは、画像認識、自然言語処理、脆弱性検索、テキスト分析の分野で大きな可能性を秘めているため、適切な選択となります。
長所:
- 信頼性、柔軟性、効率性;
- 速度を落とすことなく大量のデータを処理できます。
- 分散CPUまたはGPUでApache HadoopおよびSparkと連携します。
- 適切なドキュメントがあります。
- コミュニティおよびエンタープライズバージョンがあります。
驚くべきことに、このフレームワークについて言えば、一般的な機械学習に対するJavaの適合性に関する一般的な議論のように、専門家は特定の欠点に焦点を合わせていません。 Javaは機械学習プロジェクトではあまり使用されないため、フレームワークは特定の問題を解決するために、既成のコードの成長するデータベースに依存することはできません。 その結果、プロジェクトのコストが非常に高くなり、1つの問題を解決するとプロジェクトの全体的な進行が著しく遅くなる可能性があります。
8.チェーンIntel、IBM、NVIDIA、AWSなどの大手企業がサポートするもう1つのPythonディープラーニングフレームワーク。 複数のGPUを簡単に使用できます。
Chainerは、主に音声認識、機械翻訳、キー分析に使用されます。 CNN、早送り、RNNなどのさまざまなネットワークアーキテクチャをサポートし、競合他社と比べていくつかの重要な利点があります。
- 他のPythonフレームワークよりもはるかに高速です。
- 信じられないほど柔軟で直感的です。
- 既存のネットワークは、実行時に直接変更できます。
一方、
- デバッグに関して非常に難しい。
- 彼の周りには比較的小さなコミュニティがあります。
他のPython中心のフレームワークがはるかに一般的であるため、TensorFlowやPyTorchなどの他のフレームワークほど迅速なヘルプが得られない場合があります。
まとめると
深層学習プロジェクトに最適なフレームワークを選択することは非常に困難です。 次の要素を考慮する必要があります。
- 開発するニューラルネットワークのタイプ。
- 使用するプログラミング言語。
- 必要なツールと追加オプションの数。
- プロジェクト予算;
- プロジェクト自体が追求する性質と目標。
このフレームワークの比較がこの問題に光を当て、プロジェクトに最適なソリューションを選択するのに役立つことを願っています。
コメントを書いて、
アレクサンドルニキチンが 3月19日に開催
する公開日にお会いしましょう。