トピック

Microsoft Azure上で機械学習を駆使したシステム開発の奮戦記

GANREFのAIフォトコンテストはいかにして実現したのか

 写真を愛好するハイアマチュアの間で人気を集めている写真投稿・共有サイト「GANREF」では、このたび応募写真をAI(人工知能)が採点するというユニークなフォトコンテストを開催する運びとなった。このイベントを支えているのが、Microsoft Azure上で運用された機械学習をベースとするAIシステムだ。この開発にはどのような工夫が重ねられてきたのか、舞台裏の取り組みを紹介しよう。

AIに強い企業がシステム開発に加わった

 「探す楽しさ、見せる喜び、集うトキメキ」をテーマに、写真ファンの創作活動を支援すべくインプレスが運営している写真投稿・共有サイト「GANREF」では、さまざまなフォトコンテストを実施している。その一環として2019年11月より開催を予定しているのが、マイクロソフトの協力のもと、応募写真をAIでリアルタイムに判定(採点)するAIフォトコンテストである。

「花フォト」勝ち抜きコンテスト

 インプレスがこのコンテストの運営システムを準備するにあたり、そのコアとなるAI部分の開発を担ったのがネクストスケープだ。

 ネクストスケープとはどんな企業なのか、簡単に紹介しておこう。代表取締役社長を務める小杉智氏が、まだ学生だった1999年、慶応大学湘南藤沢キャンパス研究室内に立ち上げた合資会社ネクストスケープが同社の原点だ。その後、株式会社への移行を経て、顧客企業の新規事業開拓および既存事業発展に寄与するITソリューションを、企画から開発、保守までトータルに提供するSIベンダーへと発展してきた。

 特に注力してきたのが、Microsoft Azureを基盤とするクラウド上でのシステム開発や音楽・動画配信ソリューション、教育、コンサルティングなどの事業である。2012年に受賞した「Windows Azureパートナー アワード」を皮切りに2013年、2014年、2016年、2018年、2019年と複数回受賞するなど、同社の技術力は早くから高く評価されてきた。近年では機械学習を活用した予測分析モデルの構築、テスト、Webへのデプロイをトータルで支援する「Azure Machine Learning Studio(以下、ML Studio)」の活用でも頭角を現しており、「AIに強い企業」として今回のAIフォトコンテストのシステム開発を依頼することとなった。

判定対象のカテゴリーを「花の写真」に絞った

 とはいえ、ネックになったが非常にタイトなスケジュールだ。今回のAIフォトコンテストの企画がスタートしたのは2019年7月で、システム開発に着手したときにはすでに9月を迎えていた。11月よりコンテストを実施するためには、核となるAIリアルタイム判定のモジュールは、10月初旬までに開発を終えておく必要がある。

 実質約1カ月という短期間で、ネクストスケープはいかにしてこの開発を成し遂げることができたのか。その道程を振り返ってみよう。

 プロジェクトの開始時点で極めて重要な判断となったのが、今回のAIフォトコンテストで判定対象とする写真の絞り込みである。同社 システムインテグレーション事業本部 クラウド推進部の部長を務める上坂貴志氏は、次のように語る。

 「すべての写真を対象としたのではあまりにも多種多彩すぎて、この短期間で的確な判定を行うAIを開発するのは不可能に近いと考えました。そこで応募写真を花の写真に絞らせていただきました。花の写真なら、機械学習によって構図(ワイド、アップ)や色などでクラスタリングできる可能性が高く、それぞれのクラスタごとであればポイントを付けやすいと判断しました」。

 その上で上坂氏が立てたのが、次の3つのステップからなるシステム構築の基本方針である。

①「Computer Vision API」を使用して花の写真から属性データを取得し、Microsoft Azure上のデータベースに格納する。
②「Azure Machine Learning Studio」(以下、ML Studio)上でクラスタリングモデルを実装し、写真データのクラスタリング環境を構築する。
③クラスタごとにポイントを算出するモデルを、深層学習(ディープラーニング)のアルゴリズムで構築する。

 「ある目的のために機械学習を行おうとすると、その前工程で何段階もの機械学習が必要となるのはよくあること」と上坂氏は言う。

ネクストスケープ システムインテグレーション事業本部 クラウド事業部 部長の上坂貴志氏

機械学習を未経験の新人に開発をすべて任せた

 3つのステップをさらに詳しく順に見ていこう。実はこの方針を決めたところから先が、今回のAIリアルタイム判定の開発における、最も興味深いチャレンジとなった。上坂氏は「中途採用で入社したばかり、なおかつ機械学習も未経験の新人がどこまでやれるか、あえて開発を任せてみることにしました」というのである。

 白羽の矢が立ったのは、同社 システムインテグレーション事業本部 デジタルマーケティングソリューション部の太田宗孝氏。外から見ればかなりの"無茶ぶり"に思えるが、「せっかく与えていただいた成長のチャンス。とにかく自分なりにやってみようと思いました」と、太田氏は前向きだ。

ネクストスケープ システムインテグレーション事業本部 デジタルマーケティングソリューション部の太田宗孝氏

 ステップ1で利用したComputer Vision APIとは、Microsoft Azureから提供されているコグニティブサービスの1つで、写真に写っているものを識別・特定し、自動的にタグ付けを行う。「これによって取得できるタグ情報を、クラスタリングの属性データとして使用することにしました」と太田氏は語る。

 ステップ2で利用したML Studioは、データ入力から機械学習モデルの開発、トレーニングまで一連の処理を実行し、さらにはその機械学習モデルをWebサービスとして公開することができる開発ツールだ。

 なお、上坂氏は「ML Studioでは標準で用意されたモジュールのプロパティに対して調整やコードを記載するのが基本的な実装方法となりますが、RとPythonスクリプトを実行するモジュールも用意されており、Jupyter NotebookによるPython実装も可能です」と、クラスタリング環境の構築に際して、このツールを利用することを基本方針に定めた理由を示している。

 そして、今回のAIリアルタイム判定の核心となるステップ3において太田氏が採用したのが、「畳み込みニューラルネットワーク(CNN)」というアルゴリズムである。

 「本来CNNはクラス分類で用いられているアルゴリズムなのですが、今回はあえてその用途では使用せず、アウトプットが回帰モデルとなるように加工することで、ポイント数を結果として得られるようにしました」と太田氏は語る。

 とはいえ、その先に立ちはだかったのは、この機械学習を実行するための環境をどうやって準備するのかという課題である。「私はこれまで組み込み系の開発に携わってきたエンジニアだったこともあり、これまでインフラを構築した経験がなかったのです」と太田氏は振り返る。

 そこに上坂氏から指示されたのが、やはりMicrosoft Azureから提供されている「Data Science Virtual Machines」(以下、Data Science VM)を利用することだった。その名のとおりデータサイエンスのモデリング、開発、デプロイのために事前構成され、GPUを利用可能な仮想マシンだ。

 「今回は開発スケジュールが非常にタイトで、ローカルPC上にディープラーニングの環境を構築する余裕はなく、仮にここでトラブってしまうと取り返しのつかないことになってしまいます。そこで時間短縮のため、実は最初からData Science VMで開発を行うことを決めていました」と上坂氏は語る。

 タネを明かせばシナリオどおりだったわけだが、実際にこの選択が功を奏した。「思った以上にData Science VMの立ち上げは簡単でした。インスタンスに名前を付けて、割り当てるCPUやGPUコアの数、メモリ容量、OSなどを選ぶだけです。Jupyter NotebookやPythonも最初からインストールされています」と太田氏は語る。

 おかげで太田氏は、翌週から機械学習モデルの開発に専念することができたのである。3週目で行った機械学習モデルの改良(チューニング)はさすがにハードルが高すぎて、先輩エンジニアの手を借りることになったものの、なんとかスケジュールどおりにステップを進めることができた。

完成した機械学習モデルを実行環境ごと丸ごとデプロイ

 最後のハードルは、開発された機械学習モデルのWebサービスへの公開だ。完成した機械学習モデルをそのままData Science VMで運用するのはコストの点で得策ではなく、より安価に利用できるMicrosoft AzureのPaaS環境である「Web Apps」にデプロイするよう上坂氏から指示された。

 「認証基盤の『Azure Active Directory』と簡単に連携させて、機械学習モデルにアクセスするエンドポイントのセキュリティを強化するという観点からも、Web Appsを利用したいと考えました」と上坂氏は語る。

 ただ、Data Science VMとWeb Appsの環境には差異があり、Data Science VM上で開発した機械学習モデルがそのままWeb Appsで動くとは限らない。かといって、残されたスケジュールからが逆算するとプログラムを修正しているような時間的な余裕はない。

 「なんとか機械学習モデルをそのまま持っていけないだろうか」と悩んだ太田氏が、さまざまな方法を調査し、先輩からもアドバイスを受けたどり着いたのが、「Dockerコンテナを使ってData Science VM上の機械学習モデルおよびその実行環境を、丸ごとWeb Appsに持っていく」という方法である。

 結論を述べると、この判断もまた正解だった。「Data Science VMでインスタンスを作ったときと同様に、実行環境をDockerコンテナでデプロイする際もMicrosoft Azure上でパスと認証情報を入力してボタンをクリックするだけの操作でした。Web Apps上で自動展開された機械学習モデルに、すんなりアクセスすることができました」と太田氏。

 こうしてシステムはスケジュールどおりに開発され、AIフォトコンテストは無事に開催される運びとなった。

 開発作業のほとんどを新人に任せるという"英断"を下した上坂氏は、「機械学習モデルの開発から運用のそれぞれに適した基盤、さらに両者をつなぐDockerコンテナまで、トータルにサポートしているのがMicrosoft Azureの強みです。まさにそのメリットを実証できたのではないでしょうか」と、Microsoft MVP for Microsoft Azureの称号をもつエバンジェリストならではの視点から今回のプロジェクトを総括する。

 こうした開発の舞台裏での出来事も頭の片隅に置きつつ、GANREFのAIフォトコンテストを楽しんでいただけたら幸いだ。