AI開発環境の作り方 初心者向け

AI・ディープラーニングが普及し、AIが様々な分野で活躍する時代になってきました。例えば、医療分野においては医療画像判断、お客様からの問い合わせや誘導にはチャットボットでAIが返答することが可能になりました。

本記事では、「AI開発環境の作り方 初心者向け」と題して、まだAI開発のご経験がなくこれから開発に取り組まれるエンジニアの方に向けて、まずは必要最低限のAI開発環境をご紹介し、将来的に考慮していただきたいポイントまで解説していきます。

AI開発のフロー

AI開発を始めるにあたって、まずAIを使うことでどのようなことを実現できるのかをイメージすることが重要です。そのゴールが不明確であった場合、思った効果が出ずに中途半端なもので終わってしまう可能性があります。まずは、目的を明確に設定しましょう。

その上で、企画をまとめ、AIの学習に必要なデータを集め、学習モデルを作り、AIでさせたいことを実現するアプリケーション開発を経て、運用に移行していきます。ただし、運用後もより良いモデルの精度を求め、モデルの再度学習させたり機能拡張のためにAIモデルを追加作成するなどして、AIを活用した本当のシステム運用が始まります。

 

このようにAIを活用させるためには、以下のフローの適切なタイミングでAI開発のためのインフラ環境を整備する必要があります。

AI開発のフロー

AI開発に必要な環境

AIモデルを開発するにはそのための「環境」が必要です。この章ではハードウェア、ソフトウェアの観点からまず初めに用意すべき環境についてお話します。

ハードウェア

AIモデルの学習においては多くの演算処理が行われるため、“演算時間を短縮できるか”で開発の効率を左右します。そのため、高速演算処理が行えるGPU(Graphic Processor Unit)とプロセッサが必須となります。GPUを使用するためには大きく2つの方法があります。

 

・クラウドにあるGPUインスタンス

・GPUカードが挿さったワークステーションやノートパソコンなど

AI開発に必要なハードウェア

ただし、いきなりクラウドを選択してしまうとディープラーニングの試行錯誤に時間がかかって課金が膨らんでしまう不安もあるので、まずは1台ワークステーションもしくはノートパソコンを購入することをおすすめします。

 

また、購入する際は合わせてOSを選択する必要もあります。

OS

参考となる

WEBの情報量

GPUサポート

結論

Linux

(Ubuntu)

◎ 豊富

〇 有

最良の選択肢。GPU付きのWSで、本格的にAIを学び実践したい人は特に。

Windows

〇 そこそこ

〇 有

日常使いのPCや使い慣れた環境を使いたい人にとって最良だが、エラー遭遇時に不安が残る。

macOS

△ あまりなし

× 無

GPUを使う上では選択できない。CPU版であればOK。

現時点で、GPUを使ったAI開発を行うにはLinuxを選択するのが最良の選択といえます。

購入や借りただけでは基本的にAI開発に必要なOS以外のソフトウェアは搭載されておらず、開発者自身で構築、整備を行っていく必要があります。下図にはAI開発に最低限必要なハードウェア、ソフトウェアの環境を図示しました。この要素について紐解いていきます。

AI開発に必要な環境

ソフトウェア

開発の手法が多くあり、どのようなプログラミング言語で、どのような環境を整備すればよいのかがわからない方も多いと思います。AI開発は環境を構築する段階が大変で、いざ初心者が取り組もうとしても難しいのが現状です。まずは選んでおけば間違いないものを厳選してご紹介します。

AI開発のための言語とは

プログラミング言語と言えば、C言語を思いつく方も多いと思います。C言語は比較的古い言語で、ソースコードが多くなること、プログラムの実行にコンパイルを実行する手間があるなどという理由からAI開発ではあまり使用されません。

 

AIの開発では、Pythonと呼ばれる言語が多く使われています。理由は、C言語に比べ軽量なプログラミング言語で少ないソースコードで済むことから、言語を習得しやすいです。さらにAIの開発で肝となるフレームワーク(後で詳細を説明します。)の多くはPythonの言語で書かれています。よってAI開発においてはPythonを選択すると良いかと思います。

フレームワーク・ライブラリとは

世の中にはAIを開発するために便利なツールがOSS(オープンソースソフトウェア)として提供されています。その中でもフレームワークとライブラリがどのようなものか理解しておきましょう。

 

ライブラリとは、ある機能を提供するコードの集まりのことで、機械学習やディープラーニングの開発において、Pythonのコードを簡易的に記述するために使用されます。その様々な機能のライブラリを複数集めたまとまりをフレームワークと呼びます。ライブラリとフレームワークはほぼ同義で使われることがあります。

 

ここでは機械学習やディープラーニングの開発で使いやすいフレームワークを3つ挙げてみます。

・ TensorFlow

Googleが開発している機械学習、ディープラーニングのフレームワークでTensor(多次元配列)の操作に特化しており、「脳を模した機械学習モデル」と呼ばれるニューラルネットを効率的に実装できます。

・ PyTorch

Facebookが開発を主導し、その書きやすさと使いやすさから人気があり、非常に柔軟なニューラルネットワークの記述ができ、今主流であるディープラーニングフレームワークの中でもかなりの人気を誇ります。

・ scikit-learn

Pythonの代表的な機械学習のフレームワークで様々な機械学習のアルゴリズムがクラスとして用意されていて、簡単に機械学習を試すことができます。

 

ここまでの説明にでてきた、GPU+OS(Linux)+フレームワーク(ライブラリ)があれば、まずはAI開発を始めることが可能です。試しに動作させてみたいという方はここまでの情報参考にしてみてください。

 

ただし、フレームワーク・ライブラリとその上で開発するアプリケーションは非常に依存関係が強いという特徴があり、開発中に あるライブラリを最新のものに更新すると、そのライブラリが含まれるフレームワーク全体が動かない、過去に開発したものが使えないという事態が発生します。

その問題を予め回避する方法として、AI開発環境の仮想技術を活用することをおすすめします。ただの仮想技術というのではなくAI開発環境の構築を飛躍的に簡単にすることもできるので、なおさら知っておいてほしい技術です。

仮想技術Dockerとは

 

AIを開発する際に、様々な恩恵が受けられる仮想技術の1つ“Docker”を使うことが標準となってきております。Dockerがどのようなものか、使用するメリットも併せてご説明します。

 

Dockerとはコンテナを構築するためのツールで、アプリケーションやフレームワーク・ライブラリをまとめて独立した環境にすることができる仮想技術です。あるコンテナの中で一部のライブラリが更新されても、他のコンテナ内の環境に影響することはありません。また一般的に仮想マシンを実現するには、ホストマシン上でハイパーバイザをおいて、ゲストOSを動かし、その上でミドルウェアを動かす・・・などと、ソフトウェアの階層が多くなってしまいます。Dockerはそれらの機能を一つで実現できるため、軽量で高速に各コンテナを起動、停止、破棄することが可能です。

Dockerを使用したAI開発環境

Dockerを使うメリットを3つ挙げてみます。

 

①複雑なフレームワークの更新が簡単になります

 

Tensorflow, PyTorchなどAI開発で使用されるフレームワークは日々進化しており、最新の環境に更新をしたくなります。ですが依存関係が強いという話があったようにこれらを更新する作業は容易ではありません。Dockerを環境に構築しておくことで、最新のフレームワークは“Dockerイメージ”という形式で配布されており、簡単に更新することが可能になります。だれでも気軽に利用することができますし、またNVIDIAからもNGC (nvidia GPU cloud)でGPUに最適化されたDockerイメージが提供されており、これを活用しない手はありません。

 

 

②多数の人と、同じ環境で動作させて、動作の再現性を確認できる

 

作成したDockerイメージを他の人にも渡して使うことで、他の人との環境のバージョンずれ防止や、開発環境準備の短縮化にもつながります。

 

 

③小さい環境を、簡単に構築・破棄ができる

 

ホスト側の環境を壊すことなく、使い捨てのテスト環境を一瞬で構築、破棄できるため、試行錯誤のAI開発に向いています。

 

 

ここまで構築ができるとAI開発の初期においては理想的な環境となります。最近ではDockerを含めた環境をインストールした状態で販売しているワークステーションやインスタンスもあるようですが、一般的にはここまでをご自身で構築されています。

将来的に考慮したい開発環境

最初は一人ひとりで開発していたプロジェクトが、検討が進むとチームで開発する規模になり、より成果が求められるようになります。チームが増えたことで多くの開発者のメンバーが開発のための環境について悩むことになります。よくこのようなお話を聞きます。

 

・チームで効率的に計算リソース(GPU)を使いたい

・開発した資産を共有したい

・計算リソースが足りなくなった時に簡単にリソースを増やしたい

 

Dockerを利用することである程度ポータビリティは上がりますが、それでもリソースをうまく活用する方法を別途考える必要がでてきます。その場合は専門的な知識をもつエンジニアに相談するのが秘訣です。

AIインフラでお困りの際はご相談ください

AIを開発するための環境に焦点を当ててご紹介しましたが、いかがでしたでしょうか。

 

マクニカではこれから開発環境をご用意される方向けに、開発環境を構築するサービスを行っております。

AIインフラに関して不明点などありましたらエンジニアより要件をヒアリングさせていただき、最適な構築内容をご提案します。活用してみようかなと思われた方は、是非お気軽にお問い合わせください。