人工知能/機械学習を学ぶ際の開発環境の注意点

1.人工知能/機械学習を学ぶ際の開発環境の注意点

・人工知能/機械学習を学習する際の学習環境やツールの選び方には落とし穴がある
・プログラミング言語としてPythonを学ぶ事と人工知能/機械学習を学習する事は異なる
・クラウドにハードウェア、Pythonを任せてブラウザでアクセスするのが一番早くて楽

2.人工知能/機械学習をこれから学習する入門者向けのアドバイス

人工知能/機械学習を学習する際の学習環境やツールの選び方は実は結構な落とし穴があるので、入門者用のはじめの一歩に相当する情報を以下にまとめておきます。

アイキャッチ画像のクレジットはPhoto by Elijah Hail on Unsplash

 

人工知能/機械学習を学習する際の開発環境は大まかに以下の4パターンがあります。

(A)パソコン内にハードウェア、Python、統合開発環境をセットアップ

一般的なプログラム言語を学習する際に多く見られる環境であるため、多くの初学者は(A)パターンを自然に選択し、Python用の統合開発環境(IDE:Integrated Development Environment)のメリット/デメリットが何かを調べる事が多いです。Python用の統合開発環境としてはAtom,PyCharm,Rodeo,Spyderなどがあり、これらの比較は下記記事でまとめています。

Pythonの統合開発環境でベストなものはどれか?

しかし、実はこのパターンはプログラミング言語としてPythonを学ぶだけでしたら問題ないのですが、人工知能/機械学習の入門用環境としてはあまりお勧めしません。自分のパソコンをカスタマイズして予算の許す限り最高のGPU/Jetsonを購入してバリバリ動かすのは一見、理想的に思えますが「将棋ソフトやIoT工作など既製品を動かすだけで新規開発はほぼしない」等でなければ、避けた方が良いです。

理由は人工知能/機械学習の世界は進化の速度が速すぎるので、ハードウェアがすぐに陳腐化してしまう恐れが非常に高い事と、Pythonのモジュール等もどんどん新しいものが出たり既存のものが更新されるので、ある日、突然動かなくなってしまう等のトラブルが発生する可能性が非常に高いからです。

自分専用の独自環境を構築してしまっている場合、何かトラブルが発生した際にネット上のコミュニティに助けを求めても有用なアドバイスが貰える事はあまり期待できません。自分自身で解決するしかない状態に陥ると、ハードウェアやドライバ絡みのエラーの原因を調べるのは初心者にとって非常にシンドイ作業になります。

自作PC等を作った経験があり、ハードウェア環境のトラブル解決に自信を持っている方であっても、ただでさえ学ぶべき事は多いので、追加のトラブルの種を抱え込む事になる環境は少なくとも初心者の方にはお勧めしません。

(B)クラウドにハードウェア、Pythonを任せてブラウザでアクセス

このパターンが実は一番手っ取り早く、楽だと思います。

データサイエンティストなど統計解析系のバックグラウンドをお持ちの方は親しんでいる環境と思いますが、ハードウェアの管理/更新はクラウド側でやって貰えるのと、同じ環境を使っている仲間が多いので、何かモジュールなどでトラブルがあっても誰かエキスパートが解決策を見つけてくれる可能性が高いです。

具体的な「サービス提供ベンダー」としては

・GoogleのGoogle Colaboratory(略称:Colab)
制限はあるが無料。有料サービスもあり。
・PaperspaceのGradient
制限はあるが無料。有料サービスもあり。
・AmazonのSageMaker
無料枠はあるが有料。

で、「ブラウザでアクセスする先のソフトウェア」は、

・Jupyter Notebook
学術界で人気の高い、ブラウザを使って文書とコードを一緒に管理/実行できる仕組み。Python以外にも他のプログラミング言語で使う事も可能

・Colaboratory
GoogleがJupyter Notebookを改良してGoogle提供のサービス(Google Colaboratory)として利用可能にしたもの。無料で使え、性能も良いが、Jupyter notebookに慣れた人にとっては改良しすぎでJupyterで出来ていた事が出来なくなっていると感じる事もある。

・nbdev
Jupyter Notebookの開発機能を強化したもので、Colabのようなやり過ぎ感はない。

各ソフトウェアの概要は下記でまとめています。

Colab:TensorFlow入門者のための優れた学習環境

データサイエンティストがJupyter notebookを愛する10の理由

nbdev:探索的プログラミングをPythonで実現する開発環境(1/4)
nbdev:探索的プログラミングをPythonで実現する開発環境(2/4)
nbdev:探索的プログラミングをPythonで実現する開発環境(3/4)
nbdev:探索的プログラミングをPythonで実現する開発環境(4/4)

(C)(D)クラウドにハードウェア、Pythonを任せて統合開発環境も使う

ブラウザで開発するのはどうしても違和感があってやはり統合開発環境を使って開発がしたい、と思う方は「ややセットアップの手間がかかる」のと「独自のカスタマイズができる故にカスタマイズした部分にトラブルが発生した際は自己調査で解決しなければいけなくなる可能性もある」のですが、(C)や(D)のパターンも良いと思います。

ここでの統合開発環境(IDE)はVSCode(Visual Studio Code:Microsoftが開発したWindows、Linux、macOSで動くソースコードエディタ)となります。Python専用のIDEではないのですが、拡張機能をインストールする事で様々なプログラミング言語に対応可能な人気のあるIDEです。

自分のパソコンに自由にソフトがインストールできる環境でしたら(D)と思いますが、インストールが制限されている環境であれば(C)パターンを試す余地があると思います。

(C)パターンの解説
Google Colabをプロ仕様に設定する

(D)パターンの解説
Google Colab上でVS Codeを動かしてブラウザでアクセス

その他

クラウドサービス(AWS, Azure, GCP)上に自分自身の仮想マシン(Amazon EC2、Azure Virtual Machines、 Google Compute Engine)を構築して、仮想マシン上に独自の開発環境(python,  frame work, Jupyter Notebook)などを構築する案もありますが、これも初心者にはあまりお勧めできないです。

機械学習のトレーニングは、一気に重たい処理をガーッと長時間走らせるので、仮想マシンがその処理に追いつけなくなって、色々な所で通常は起きないような原因究明が難しい謎のエラーが頻出する状況に陥る時があります。

安いインスタンスを使って長時間処理を走らせられると理想ですが現実には上手く動いてくれない事が多く、そこそこのインスタンスを使っても途中で止まっていてがっかりする事があります。

タイトルとURLをコピーしました