ディープラーニング PyTorchを選ぶ
3年半ぶりのブログ更新となります。色々あって滞っていました。
いつの間にか世の中は「AI」「機械学習」「ディープラーニング(深層学習)」の時代になりました。
超速が更に加速している感じでとても追いつけないと思いつつもあがいています。
いつの間にか世の中は「AI」「機械学習」「ディープラーニング(深層学習)」の時代になりました。
超速が更に加速している感じでとても追いつけないと思いつつもあがいています。
私がAIを意識するようになったのは2015年からで書籍で勉強するなど細々情報収集していましたが,生活も落ち着いてきたので一昨年2017年から情報収集を加速し検討したところ,私でもこの最先端技術を扱うことが出来るかも知れないとの結論に至り,ようやく重い腰を上げ活動を開始しました。
PC上でディープラーニングを活用するには,まず「フレームワーク」を選択する必要があります。
フレームワークも色々あるようですが私的には下記からの選択となりました。
PC上でディープラーニングを活用するには,まず「フレームワーク」を選択する必要があります。
フレームワークも色々あるようですが私的には下記からの選択となりました。
・TensorFlow(テンソルフロー) + Keras(ケラス)
言語 Python C Java Go
オープンソース by Google
・PyTorch(パイトーチ)
言語 Python C++ CUDA
オープンソース by Facebook
・Cognitive Toolkit(コグニティブ) ※旧CNTK
言語 C++ C# python
オープンソース by Microsoft
・Neural Network Libraries(NNL)
Neural Network Console(NNC)
操作はGUIでPythonコードにエクスポート可能
オープンソース(NNL) by Sony
TensorFlow+Kerasがもっとも普及しており書籍も多く,ググれば細かいことも大抵のことが分かるようです(但し英語だったりしますが)。Kerasの特徴は記述コード量の少なさで他を圧倒しているようです。一番無難な選択になります。
PyTorchは今一番勢いがあるようです。最大の特徴は「ネットワークを動的に変更出来る」ことだそうです。扱うデータによって設計したモデルを変更出来るってことですかね?だとすると自由度が高い気がします。また最先端の研究論文に掲載されたアルゴリズムがいち早くPyTorchコードとしてgithubに公開されるっぽいです。但し,現状ググっても日本語記事のヒットがTensorFlowほどは無いので英語記事と格闘になります。
Cognitiveはつい最近Kerasをサポートしたそうですので人気のフレームワークと同じ土俵に立った感じです。Cognitiveの売りは多数個CPU,GPUでの並列処理が増えるほど速度の有意差が増す(とMicrosoftが主張)ことです。それからC#を使えるのが何気にポイントかも知れません。
NNCは何と言ってもGUI(グラフィカルユーザーインターフェース)での操作が秀逸で数式を意識することなくモデルを生成出来ます。但し,使い手が少ない分コミュニティからの支援が少なかったりします。また,設定含めKerasならちょっとの記述がNNCだと多項目操作になります。
どれも一長一短なのですがTensorFlow+Keras,PyTorch,NNCをちょっと触ってみた感じでは私的にNNCが一番分かり易かったですね。しかしNNCはコミュニティが弱いので壁に当たった時に解決に時間がかかりそうです。とするとTensorFlow+Kerasが無難なのですが,勢いが良いのはPyTorchです。PyTorchは最新のアルゴリズムを実験出来ることも魅力です。
なお,今後は「ONNX」と言う技術がキーワードとなり,フレームワーク間の垣根が低くなるためフレームワークの選択をあまり気にしなくてよくなるらしいのです。
ONNXとは「Open Neural Network eXchange」の略でフレームワークごとのコード書式をオープン標準フォーマットに変換する仕組みです。
ONNX対応状況
TensorFlow
言語 Python C Java Go
オープンソース by Google
・PyTorch(パイトーチ)
言語 Python C++ CUDA
オープンソース by Facebook
・Cognitive Toolkit(コグニティブ) ※旧CNTK
言語 C++ C# python
オープンソース by Microsoft
・Neural Network Libraries(NNL)
Neural Network Console(NNC)
操作はGUIでPythonコードにエクスポート可能
オープンソース(NNL) by Sony
TensorFlow+Kerasがもっとも普及しており書籍も多く,ググれば細かいことも大抵のことが分かるようです(但し英語だったりしますが)。Kerasの特徴は記述コード量の少なさで他を圧倒しているようです。一番無難な選択になります。
PyTorchは今一番勢いがあるようです。最大の特徴は「ネットワークを動的に変更出来る」ことだそうです。扱うデータによって設計したモデルを変更出来るってことですかね?だとすると自由度が高い気がします。また最先端の研究論文に掲載されたアルゴリズムがいち早くPyTorchコードとしてgithubに公開されるっぽいです。但し,現状ググっても日本語記事のヒットがTensorFlowほどは無いので英語記事と格闘になります。
Cognitiveはつい最近Kerasをサポートしたそうですので人気のフレームワークと同じ土俵に立った感じです。Cognitiveの売りは多数個CPU,GPUでの並列処理が増えるほど速度の有意差が増す(とMicrosoftが主張)ことです。それからC#を使えるのが何気にポイントかも知れません。
NNCは何と言ってもGUI(グラフィカルユーザーインターフェース)での操作が秀逸で数式を意識することなくモデルを生成出来ます。但し,使い手が少ない分コミュニティからの支援が少なかったりします。また,設定含めKerasならちょっとの記述がNNCだと多項目操作になります。
どれも一長一短なのですがTensorFlow+Keras,PyTorch,NNCをちょっと触ってみた感じでは私的にNNCが一番分かり易かったですね。しかしNNCはコミュニティが弱いので壁に当たった時に解決に時間がかかりそうです。とするとTensorFlow+Kerasが無難なのですが,勢いが良いのはPyTorchです。PyTorchは最新のアルゴリズムを実験出来ることも魅力です。
なお,今後は「ONNX」と言う技術がキーワードとなり,フレームワーク間の垣根が低くなるためフレームワークの選択をあまり気にしなくてよくなるらしいのです。
ONNXとは「Open Neural Network eXchange」の略でフレームワークごとのコード書式をオープン標準フォーマットに変換する仕組みです。
ONNX対応状況
TensorFlow
Import ○
Export △
PyTorch
Export △
PyTorch
Import ×
Export ○
Cognitive Toolkit
Export ○
Cognitive Toolkit
Import ○
Export ○
NNC
Export ○
NNC
Import ○
Export ○
Keras
Export ○
Keras
Import ×
Export ×
Kerasが対応してくれればほぼ言うこと無しです。ONNXが普及すれば学習済みモデルを簡単に比較出来るようになるため「実行速度」が覇権を決める要素になると予想します。
で,結論として勢いを買って「PyTorch」を選択導入することにしました。
Export ×
Kerasが対応してくれればほぼ言うこと無しです。ONNXが普及すれば学習済みモデルを簡単に比較出来るようになるため「実行速度」が覇権を決める要素になると予想します。
で,結論として勢いを買って「PyTorch」を選択導入することにしました。
さて,まずは再度PyTorchの環境構築から始めますか。
| 固定リンク
この記事へのコメントは終了しました。
コメント