見出し画像

JuliaちゃんとPythonくん 徒然なるままに

データサイエンティストが使う言語として、職場では感覚として2−3割がR、残りの7割以上はPythonで、時々Julia使おうぜという人がでてるのを見るぐらいでしょうか。

将来はどうなっているのでしょうか。

結構前の話ですが、機械学習、Deep Learningでよく使われるPyTorchをベースに、シンプルなコードでモデル構築を実現するFastAIを開発されたJaremy Howardさんが、機械学習の未来の言語はPythonではありえないと仰られ、期待しているのはJuliaと話された動画を見た時は驚きでした。世界一の人気度を誇るPythonが機械学習分野での未来の言語たりえないと言われたのはどうしてでしょうか。

「12x13は?」とか「234x357は?」とか聞かれると、インド式計算法もやってみたのにすっかり忘れてしまってるので、電卓をとりだすか、スマホの電卓アプリか、ググるか、もしくはAlexaやGoogleに聞いたりします。
速攻で計算結果を出してくれるこれらのツールを利用してそれをもとに返答するのがパイソンくんのイメージです。Glue Languageとしての面目躍如。そんなイメージです。

タコですみません

一方で世の中には2桁の計算だけでなく3桁、4桁それ以上の計算も暗算でぱっと返答できる人たちがいます。もう驚くほどの速さで答えてくれます。計算ではかないません。それがJuliaさんのイメージです。

機械学習や科学技術分野では計算のスピードがとても大事な要因になります。京や富嶽がスパコン世界一とったとかいうニュースをご存知の方も多いと思いますが、京のサイトでは「スーパーコンピュータ「京」は、1秒間に 10,000,000,000,000,000回(10ペタフロップス=10の16乗)、日本の数字の単位では1京回、の計算ができます。「京」の愛称の由来のひとつは、この1秒間にできる計算回数です。京は一京回の計算をわずか一秒で完了できます」とあります

2017年、Juliaはペタフロップスクラブに参加しました。ペタフロップスクラブとは、最高のパフォーマンスで毎秒1ペタフロップスの速度を超えることができる言語のクラブです。現在クラブに参加しているのはC、C ++、Fortran、そしてJuliaです。Juliaがどんだけ速く計算できるか想像いただけるでしょうか。

それではPythonはいずれJuliaに置き換えられるのか。そんなことはありません。(希望的観測を含めてですが)科学技術計算や機械学習の分野でJuliaがよく使われる時代が来ても、Pythonが使われなくなると言った事はないと思います。例えばWeb開発の場合、比率として大きいのはJavascriptベースの場合だと思います。ですがFrontendでプロトタイプとして使いやすいStreamlitや、もうちょっとカスタマイズしたりプロダクトとして使うDash、BackendでもDjangoやFastAPIといった優れたものがあります。そんな立ち位置になるような気がします。

そして例え遅いのが分かっててもRが使われる事もあります。特に昔から発展させてきたモデルは例えレガシーと言われようとも現役でもしっかりと計算してくれているものをなかなかPythonや他の言語で置き換えようという余力や時間はないものです。なのでこういった意味でもPythonが消えることはないです。

そしてパイソンくんは30歳を超えたばかり。脂が乗っていろんな所で大活躍中です。本当にデータサイエンス、データエンジニアリング、データ分析、データと名のつくものならパイソンくんは至る所に現れます。

一方はJuliaさんというより、今年10歳を迎えたばかりの女の子ジュリアちゃんです。

Austinでも、年齢は覚えていませんが10歳くらいのみためで、あまりにも数学的に天才すぎて大学生と一緒に授業受けてる話が記事になったことがありますがそんなイメージ。パイソンくんが他の人(CやC++)と協力して結果を出しているのに対し、ジュリアちゃんは一人で同様のスピードが出せる天才です。

しかしジュリアちゃんはまだまだ子供。パイソンくんに比べても色んなもの(ライブラリ)が手元にありません。パイソンくん同様に他の人よりめちゃくちゃ速いし、シープラさんのような気難しいが計算は世界一速いスーパーおじいちゃん/おばあちゃんとの協力もできますが(Cpp.jl)、シープラさんが築き上げてきたもの(OpenCVやGDALなど様々なもの)に取って代わるには時間も余力も(お金ともいう)ありません。「おじいちゃーーん♫、おばあちゃーーーん♬」と言って甘えることができる立場ですし、おばあちゃんのものをいじる気もなく、学んだことを自分の感覚で作っている感じです。(シープラさんを年寄り扱いしましたが、理解するのはとても大変だけど常に世界一速い結果を示し続ける優秀な人間を排出するシープラ家みたいな)

しかし、それだけに今は偉いねー、すごいねーと言ってお小遣いをだしてくれる存在(VC)がいる間はいいのですが、そろそろビジネスと関わらないとお金がずっともらえるわけではありません。Jeremyさんもその点を心配されていました。マイクロソフトさんのR Openのような例を期待するか、GoogleかAmazon、Netflix、FacebookのどれかがJuliaを使ったプロダクト開発してくれる事を期待します。Julia以前にSwift for TensorFlowに期待した時もありましたが、それも開発停止。このお金をとってくる、それがなければ、「子供時代は天才」みたいな感じで終わる可能性もないわけではないからです。世知辛いですね。

ある日、新宿駅西口の京王百貨店前で待ち合わせをしていたパイソンくん。目の前にメキシコ人のお母さんと息子さんが地図を見ながらスペイン語で話しています。スペイン語は挨拶程度だけわかるパイソンくんは話しかけてみました。どうやら観光で来ているようですが、新宿駅東口に行きたいようです。お母さんは英語はあまり話せません。息子さんは英語もスペイン語も大丈夫。パイソンくんは英語は流暢でありませんが話せます。お母さんは英語はよくわからないようで息子さんが通訳。お母さんがどうすべきかはわかっているのでそれをスペイン語で話すので、息子さんがなんとか翻訳しようとします。パイソンくんは翻訳アプリを使いながら聞いて理解しようとします。
そこへジュリアちゃんたちが現れました。ジュリアちゃんは現地語が話せるので軽く質問してすぐにスペイン語でペラペラペラペラペラペラペラペラペラと会話します。しかしジュリアちゃんはまだ子供なので地図とかよくわかりませんから、パイソンくんに聞きます(PyCall.jl)。パイソンくんはそういう事はとても優秀なのですぐに地図を示してあげます。ジュリアちゃんはそれをスペイン語でまたお母さんとものすごいスピードで話します。パイソンくんに時々聞きながら(またまたPyCall.jl)、無事お母さんの問題は解決しました

誤解なきように言えば、ジュリアちゃんがいなくてもパイソンくんだけで解決します。むしろ現時点では地図や道順、必要なアプリの話まで網羅してくれるでしょう。ジュリアちゃんはまだ子供。そこまでのもの(ライブラリ)はありません。ですがお母さんを機械とすれば機械とのコミュニケーションはめちゃくちゃ速いので例え子供でも地図を補ってできることがあります。

ジュリアちゃんは本当に大きな可能性を秘めた子供です。このまま無事大きくなっていけばとても優秀な人材になってくれることはわかりますし、ペタフロップスレベルのその力を発揮してくれれば機械学習の分野において今より凄いパフォーマンスが出せる様子が簡単に想像できます。

パイソンくんは更にジュリアちゃんの柔軟性、柔軟な発想力(Mulitiple Dispatch)にも驚いています。これまでは、パイソンくんが器用貧乏というか、超優秀というか、いろんな事ができるので、パイソンくんのネットワーク(コミュニティ)が広がるほどに頼る事が多々ありました。しかしパイソンくんグループでも元々の「クラス」の存在は大きく、クラスの変更を頼むには相当の努力がいりました。

ジュリアちゃんのMultiple Dispatchというスキルはとても優秀です。ジュリアちゃんはちょっとした骨子だけを作るだけで、他の人がそれを利用して発展させて構わないといった子供に似合わない想像以上の懐の深さがあります。ジュリアちゃんにこう直してほしいと伺う必要性がありませんので、ジュリアちゃんはそのまま楽しく他の事で遊んでいます。賢いといったほうがいいでしょうか。分かりやすい温度計の例があるのですが、このスキルの発展性はすごいなと思います。

被災地で超優秀な人が一人で支援物資管理してたけど(できてたのがすごい)物資が増えるにつれ疲労で倒れてしまった。別の若い人が担当になったけれども、「俺には彼のように優秀でもないし同じことは無理だ」と物資でなくカテゴリーごとに必要な場所だけ作って、見てすぐに似たようなものがあるかないかわかるようにしたら、後は他の人の判断に任せてしまった。でもその方がうまく言ってしまったような話を聞いた事がありますが、どっちが正しいのもなく、タイミングや状況によると思います。

パイソンくんはいろんな事ができる本当に優秀なやつです。どっちの立場にもなりえる。コミュニティがものすごく大きいからです。ただ「クラス」を作ると、先程の一人で管理しているような状態になっていきます。負担が大きすぎるわけです。もちろんよく使われるようなメインのライブラリの場合、複数で管理していますが、それでも負担にならないわけではありません。コミュニティから良きアイデアが生まれれば、ソースをいじるよう頼むしかないからです。多くのライブラリの場合、エンドユーザーサイドではあまり気にならないですし、優秀な人が作ってくれてるからそれでいいと言えばいいのですが、機械学習の分野ではそのへんの柔軟性は大事です。

更にパイソンくんは常にシープラ家に電話して計算速度に頼る必要があります(two language problem)。上記の例のようにパイソンくんにはその優秀さからパッとどういう方向へ行くべきか示すことはできるけど、後はシープラ家のものと検討することを選択することになります。
ジュリアちゃんはシープラ家の力を借りることもできますが、自分でも計算は速い。ジュリアちゃんはその点でも可能性は大きい。

ですが現時点ではジュリアちゃんの友達も少ない(コミュニティが小さい)ので、いろんな事(ライブラリ)がほったらかしになってることもあり、それでいいのかと思われる時もあります。

Rの話でもしたように、これまでのPythonのライブラリやコミュニティの大きさは財産であり、計算速度を補って余るものもあり、その数の大きさというのはビジネスとしても大きいので、とても優秀な人材もPythonのライブラリを更によくしようとしていくことでしょう。ただそれでもJuliaのポテンシャルの高さを見過ごす事はできません。

大谷選手が去年大活躍されましたが、高校卒業時にここまでになるポテンシャルはあっても、二刀流を信じられない人が多かったようなものです。栗山監督や日本ハムの存在が大きかったように、ジュリアちゃんを育てるのにどこまで球団や周りがサポートできる(お金ともいう)環境があるかどうか、もうそれだけが心配です。



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