見出し画像

【技術関連】何故機械学習でPythonが使われるのか

よく聞くAIエンジニアってPython、SQLって言われててPythonエンジニア設定●●検定とかG検定とか持て囃されてるんで糞遅いPythonをなぜ使うかってところはっきりさせたいんです。(イライラする)

機械学習でPythonで行うというのは、Pythonで計算処理をすることではなくて、C++等で書かれた(Python向けの)の計算処理の外部ライブラリを使うことを意味しています。

Pythonを使うのは簡単なデータの前処理や後処理(結果をログファイルに書き出すなど)だけです。

メインの計算処理をPythonで書くことはありません。というか、「Pythonはそもそも機械学習みたいな重い計算に用いることは全く想定されていない言語」なので。

「メインの計算処理は書きたくてもPythonでは書けません!」
こう書くとPythonは不便な言語だなと思われるかもしれませんが、実際には、深層学習などの、GPUや並列計算機をブン回すような重い計算を必要とするような処理は、JavaだろうがC++だろうが、基本的に、素人(機械学習の専門家は、普通、計算機のHPC(高速化)に関しては全くの素人です)が書いたコードは、遅すぎて使い物になりません。


結局のところ、機械学習の準専門家としては、Javaを使うかC++を使うかPythonを使うかに関係なく、基本的には、「重い計算処理を自分で書いてはダメ」で、「HPCの専門家がチューニングしたライブラリをいかにうまく使って(自前で処理を書かずに)実装するか」、というのが腕の見せどころなわけです。


とすると、Pythonの「重い計算処理を書きたくても書けない」という欠点は、「必ず外部ライブラリを使わないといけない」ことを意味するわけで、

むしろ、素人の糞遅いプログラムが書かれること(「四角い車輪の再発明」と言ったりします)を強制的に阻止するという意味で利点かもしれません。


実際、昨今の機械学習(とくに深層学習)のブームでは、ガリガリにチューニングしたライブラリをC++やCuda等で作る計算処理の専門家(あるいは専用チップなどを作るハードウェア系の専門家)と、それらのライブラリをPythonから呼び出して新しい構成やアルゴリズムを考える機械学習の専門家は、完全に棲み分けがされています。

ワイ前者、後者両方イケます。ここ重要。
HPCの専門家は専門性ゆえに無自覚な希少種です。
 →市場単価高いのに安売りしちゃうー

この記事が気に入ったらサポートをしてみませんか?