目次
クラウドサービスの機械学習サービスはできる事も難易度も様々
機械学習、Deep Learning、そしてAI。最近では専門家でなくてもニュースや雑誌などで目にすることは多くなってきました。これらの「理論」は数十年前から存在していましたが、「実現」するためにはサーバーのマシンパワーが必要になり、大企業や政府機関のような資金力がないと行えない分野でした。しかし、近年ではテクノロジーの進歩によってマシンパワーが上がり、機械学習などが個人レベルでも行えるようになってきました。更にクラウドサービスを使うことで多くのマシンパワーが必要な機械学習なども行えるようになってきました。
クラウドサービスの機械学習系のサービスは非常に多種多様です。なぜなら機械学習サービスこそクラウドサービスの「大量のマシンパワーをマネージドで時間貸しできる」特徴にフィットするため、各クラウドサービスが力を入れてきた分野だからです。今回は機械学習サービスについてAmazon社の「Amazon Web Services(通称:AWS)」、Microsoft社の「Azure」、Google社の「Google Cloud Platform(通称:GCP)」のサービスを中心に説明します。
※注意:本編では機械学習の専門的内容には触れていません
なんで機械学習はマシンパワーが必要なの?
Deep Learningを含めた機械学習がなぜマシンパワーが必要になるかと言うと単純に「大量のデータを処理する必要がある」からです。
機械学習には「教師データあり学習」と「教師データなし学習」の2種類があり、一般的には「教師データあり学習」が使われ、クラウドサービスの機械学習サービスも「教師データあり学習」に特化しているため、本編では「教師データあり学習」について説明します。教師データとは「分析・予測するための元となるデータ」です。例えば猫の画像を認識するためには、事前に多種多様の猫の画像を学習する必要があり、これらの画像が教師データとなります。この学習結果は「モデル」というデータに変換され、今後の分析・予測で使われます。
このように機械学習の精度を上げるためには大量のデータを学習させる必要があり、そのためにはCPU処理能力や大容量の記憶媒体などのマシンパワー(マシンリソース)が必要になります。そのため、オンプレサーバーで実現することは難しくなり、クラウドサービスを使うことになります。
開発プラットフォーム
単純に高性能なサーバーを使用したい場合はクラウドサーバーを使用します。Amazon EC2、Azure Virtual Machines、Google Compute Engine がクラウドサーバーになります。このクラウドサーバーはOSやマシンパワーを選択でき、高速な機械学習処理に必要なGPU搭載のクラウドサーバーもあります。
機械学習処理を行うためにはPythonプログラムで行うことが一般的です。機械学習で使用するPythonプログラムは大量のコードディングは必要ない場合もありますが、Pythonの実行環境や快適なコーディング環境を整えるのは大変です。
このPython環境構築の手間を減らすためのクラウドサービスとして、機械学習に特化した開発プラットフォームをサービス提供しています。開発プラットフォームは「Jupyter Notebook」というGUIのPython実行環境をベースに機械学習に必要なPythonライブラリ(追加オプション的なもの)、そして各種クラウドサービスとの連携機能が環境構築された状態で提供されます。そのため、分析者はクラウドサービス管理画面から10分ほどで整ったPythonの実行環境を準備することができます。クラウドサービスでは Amazon SageMaker、Azure Notebooks、Google Cloud Datalab がこれに該当します。
参考:Jupyter Notebook は機械学習の実行環境のデファクトスタンダードになる
それでもPythonプログラムをコーディングの手間を減らしたい場合は、ノンプログラミングでも機械学習できる Amazon Machine Learning、Azure Machine Learning Studio があります。ただ、やれる事は限られているため特に Amazon Machine Learning はあまり使われていないのが現実です。
参考:Amazon MLで何ができるのか?|Amazon Machine Learningを使ってみた
実行プラットフォーム
上記の開発プラットフォームを使用することで機械学習は行えます。しかし、いくら高性能といっても実行しているマシンは1台のサーバーのため、処理できるデータ量に限界があります。この問題を解決するために機械学習用の実行プラットフォームとしてクラウドサービスの Google Cloud Machine Learning Engine(以下、Cloud ML Engine)があります。
Cloud ML Engine では機械学習を開発することはできません。Cloud ML Engine を実行するためには、データファイルをクラウドストレージに配置し、Pythonソースと実行状態の情報を Cloud ML Engine に送る必要があり、操作が面倒です。しかし、Cloud ML Engine 内部ではクラウドストレージと連携し、複数のサーバーとTPUと呼ばれる独自プロセッサによって高速に並列処理が可能です。また、Amazon SageMaker も機械学習実行時、クラウドストレージと複数のサーバーで並列処理することが可能です。
参考:Google Cloud Machine Learning Engine は”エンジン”であって開発環境ではない
学習済みモデルを使ったサービス
クラウド御三家には、Google翻訳や音声認識、Amazonサイトの商品リコメンドなどを機械学習を用いてきたノウハウが沢山貯まっています。そのノウハウが詰まった機械学習の「モデル」も学習済みモデルとしてサービス提供しています。
学習済みモデルはAPIとして提供されています。自然言語解析、テキスト翻訳、音声からテキスト変換、テキストから音声変換、静止画分析、動画分析など各社10種類程度の学習済みモデルAPIが提供されています。例えば静止画分析APIに猫が写った写真を送ると、猫が写っている座標と猫である確率が文字情報として返ってきます。この時、機械学習の知識は殆ど必要なく、APIを使用する初歩的なプログラミングスキルだけで分析することができます。
参考:Azure Media Analytics で動画のモーション検知をやってみた
学習済みモデルのクラウドサービスの欠点として、新たな学習が行えない事があります。例えば静止画分析では有名人の特定はできても、社員の特定は「モデル」内に情報がないためできません。この問題を解決するかもしれない静止画分析サービスが Google Cloud AutoML です。現在、Cloud AutoML はアルファ(特定の開発者のみが試用できる)状態のため詳細は分かりませんが、学習済みモデルに新たに静止画を学習させることが可能なようで、これを使うことで社員の特定ができるかもしれません。
分析要件に合わせて機械学習サービスを選択する
この様にクラウドサービスの機械学習サービスは多種多様で分析・予測できる事や難易度などが異なります。しっかり機械学習を行いたい場合はJupyter Notebookが構築された開発プラットフォーム、大量のデータファイルを分析する必要が出てきた場合は Cloud ML Engine を使用するなど、分析要件の変化によってクラウドサービスを替える必要があるかもしれません。
サービスの利用料金では「開発プラットフォーム > 実行プラットフォーム > 学習済みモデル」の順になり、開発プラットフォームとなる高性能なクラウドサーバーは時間課金のため、非常に高額になる可能性があり、コストの面からクラウドサーバーを使わずに自社でGPUを搭載したオンプレサーバーを購入する企業もあります。
反面、学習済みモデルAPIは実行回数をベースとした課金のため、実行回数が多くなければ安価で済ませることが可能です。できる事は限られていますが、分析システムや分析工程の一部に組み込むことで新たな分析領域を開拓できるかもしれません。
連載:経営者のためのクラウド講座
- クラウドを使えない大企業は、ベンチャー企業と戦えるのか
- クラウドサービスの課金体系・支払方法は複雑
- クラウドサービスのシステムリリースの早さと安さの秘密
- クラウドサービスのシステム開発に求められる技術者とは
- クラウドストレージによって安く・安全にデータを保存する
- クラウドサーバーはアイディア次第で使用用途は無限大
- クラウドデータベースは高ければ良いって物ではない! 特徴を見極める必要がある
- AWS × Azure × Google Cloud Platform を様々な角度から評価 ~AWSは絶対王者なのか?~
- クラウドサービスのサーバーレスは銀の弾ではない
- クラウドサービスの機械学習サービスの整理 (本編)