1月26日、人工知能ベンチャーであるABEJAは「ABEJA Meetup Vol.8」を開催した。勉強会では、ABEJAやアイレット(cloudpack)、クラスメソッドのエンジニアがクラウドを活用したシステム作りやサービスの使いどころなどディープなLTを披露した。
ABEJA河崎さんが語るデータ処理基盤のコンテナ活用
今回8回目を数えるABEJA Meetupは、ディープラーニングを専業で手がけるABEJAが主催するエンジニアコミュニティ。人工知能に限らず、幅広い技術情報を扱っており、登録者数は400名を超えているという。冒頭、挨拶に立ったABEJAの平田 拓嗣さんは、「これから必要になるのは、テクノロジストとアントレプレナーの両方の資質を持つテクノプレナー。こうした人たちを育てていくために、最新技術を使いながら、どうやってビジネスに活かせるか、みんなで議論していきたいと思っている」とイベントの趣旨を語る。
今回はABEJA、cloudpack、クラスメソッドの3者が最新技術の使い方についてLTを披露した。「分散AI基盤の作り方」というタイトルで登壇したABEJAの河崎敏弥さんは、現実世界から収集した写真などのデータを学習するマシンラーニングの基盤をどのように作っているかを語った。
河崎さんは2012年のABEJA創業から1年ほど経ってエンジニアとして入社。バックエンドエンジニアとしてクラウドでの開発を行なったり、IoTデバイスとのクラウド連携などを行なっており、ここ2年はコンテナをずっといじっていたという。
ABEJAではカメラなどの動画データを解析し、人数を数えたり、性別や年齢などの属性を認識したり、人の動き方などを解析している。しかし、データを収集するカメラがどんどん増え、受け取るべきデータも増大してきたことで、リソースの管理に問題が出てきた。「1日数百テラバイトのデータが上がってくる中で、これらをどう処理するか。データ量が増えるということでは、必要なコンピューターのリソースも増える。アプリケーションの種類も増えるので、リソースをどのように解決すべきか」という点が早晩解決する必要が出てきたという。
大量の計算資源が必要で、しかもデータ量にあわせてスケールする必要。また、タスクによっては分散処理が必要になり、リソースに関しても果たしてCPUなのか、GPUなのかを見極めなければならないし、コア数やメモリ数も適切な量を調達しなければならない。これに対して、ABEJAのチームが使ったのがコンテナだ。
ABEJAのインフラチームは、開発チームが作ったエンジンの要求にあわせてDockerコンテナのイメージを作り、スケジューラーで分散処理するという形を実現しているという。「この1年でコンテナのスケジューラーがずいぶん進化してきたので、解析処理の分散はこれらに任せ、必要に応じて増やしたり、どこかのコンテナが勝手に処理してくれている状況」と河崎さんは語る。また、CPUやGPUなどの用途に合わせたリソースプールを用意してあるため、アプリケーションや処理に応じたリソースの利用が可能になっている。
今回は動画のような非構造データの処理基盤がテーマだったが、今後は構造化データの処理やデータ管理などについてもABEJA Meetupで取り上げていくという。