ANDPADでエンジニアをしている森です。先日Google社と機械学習(Machine Learning:以下、ML)についてのプライベートなワークショップを開催しました。その参加報告ということでテックブログを執筆しまして、社外の方にもその様子をお伝えできればと思います。
はじめに
私が所属するデータグループでは、2年ほどかけて社内のデータ基盤の構築を行い、データの蓄積を進めてきました。ある程度整備が進捗してきたところで、次はデータの分析にも力を入れていく方針を採っていて、MLやBusiness Intelligenceの分野がターゲットとなっています。直近のテックブログでは、Kaggleへの参加&メダル獲得の記事もアップするなど、社内外の技術動向にアンテナを高く張って活動をしています。
Kaggleコンペティションの振り返り - ANDPAD Tech Blog
H&Mコンペで銀メダルを獲得したソリューション - ANDPAD Tech Blog
ANDPADがサービスを提供している建築・建設業界では、工事状況や完成後の建物を写した写真、建物の設計を記述した図面など、いわゆる非構造データが多数扱われています。これらのデータをMLで分析し、既存サービスの手動作業の軽減と利便性の向上を実現することで、ANDPADの魅力をさらに高めていきたいと考えています。
Google社とのワークショップ
データの活用に着手するにあたり、ANDPADのデータ基盤にGoogle Cloud Platformを用いていること、近年Vertex AIをリリースするなどML分野のプロダクトに力を入れていることから、Google社にお声がけし、ワークショップが実現することとなりました。営業の方とカスタマーエンジニアの方々がワークショップにコミットしてくださり、数回の事前打ち合わせで内容をFIXさせました。ワークショップ本番はのべ2日間にわたって実施し、ハンズオンでの実演を中心にMLとその周辺の技術を学ぶ内容でした。
コンテンツ
ワークショップのコンテンツはざっくり以下の通りです。
(1)MLプロダクト紹介
(2)AutoMLのハンズオン
(3)Pipelinesのハンズオン
(4)CloudRunのハンズオン
(1)GCPのMLプロダクト紹介
まずは座学でVertex AI AutoML, Pipelines, Dataset, 他、MLモデルを学習するエンジン部分と、それをデプロイするCloud Run他のプロダクトについて概要のレクチャでした。様々なプロダクトを組み合わせてML基盤を構築するためのプラクティスに加えて、従来からあるプロダクト・新興のプロダクトを使い分けていく考え方やロードマップが参考になりました。
(2)AutoMLのハンズオン:画像中の物体検出
ネット上で公開されているサラダ画像のデータセットをアノテーションし、画像中のトマトやチーズを検出するモデルを学習し、デプロイしてエンドポイントにリクエストを送信する、という題材のハンズオンを行いました。詳細はGoogle社の公式チュートリアル(https://cloud.google.com/vision/automl/object-detection/docs )を参照ください。時間の関係で画像の枚数を十数枚程度に絞ることとし、手順を一通り実行して動作を確認することを主目的としました。アノテーションは下図のようなUIで画像中の物体を1個ずつ四角で囲むことで作業しました。
Webブラウザでポチポチしていくだけでアノテーションからデプロイまで完了し、出来上がったエンドポイントにCurlコマンドで画像を送信すると即座に結果を得ることができました。このワンストップで完結する体験は衝撃的でした、プロトタイプ開発であればこれだけで事足りてしまいますね。
(3)Pipelinesのハンズオン:画像のクラス分類
MLパイプラインを作成して、Cifar-10(身の回りにある物体の画像データセット)を入力し、画像をクラス分類するモデルを学習して、デプロイする、という題材のハンズオンを行いました。詳細はGoogle社の公式チュートリアル(https://cloud.google.com/vertex-ai/docs/pipelines/build-pipeline )を参照ください。パイプライン化により処理フローを構築することのメリットは、各工程がDockerコンテナとして独立することで、工程ごとに実行要否を制御できること、不具合の追跡と修正が容易となること、工程ごとにバージョン管理ができること、などが挙げられます。
ハンズオンでの実装はJupyterNotebookベースの環境で行い、出来上がったパイプラインのDAG(データの処理フローをグラフとして可視化したもの)を眺めて進捗の様子が可視化できるのが面白かったです。途中、実装にまずい箇所があってパイプライン処理が途中で停止してしまうハプニングがありました。途中停止したDAGをGUI上で選択するとその実行ログの閲覧ページに遷移することができ、エラー原因を推測してサクッと修正することができました。パイプラインを再実行して正常に動作するのが確認でき、期せずしてデバッグの様子を味わうことができました。
(4)CloudRunのハンズオン
(3)で作成したパイプラインの実行により、学習済みモデルをデプロイしたエンドポイントが生成されます。このエンドポイントに画像を送付して返答を受け取る、というコードをCloudRunでデプロイする題材のハンズオンでした。CloudRunがフロントエンドとMLモデルの間を仲介することで、MLモデルの出力を加工・整形したり、画像に重畳表示するなど、様々なアクションを加えることができます。さらに、CloudRunのビルドごとにタグを付与しておくと、タグに沿ってトラフィックを割り振りすることができます。開発版を本番環境に載せて社内向けのみにリリースする、更新版を段階的にリリースする、といった用途を実現することができます。
急ごしらえで用意してもらったハンズオン教材につき一部の動作に軽微な改良余地があって、両社のエンジニアによるライブコーディングが始まって大盛り上がりでした。ログ画面を見ながら挙動を特定し、それに応じた修正を行いながら進めました。困った時にみんなどうしているのかを学ぶことができ、トラブルシューティングの知見も得られたと思います。
さいごに
2日間にわたってVertexAI周辺のプロダクトを教材にハンズオンを受講し、これらのプロダクトを使ってどんな感じにサービスを構築しようかと夢がもりもり膨らむ内容でした。一部当社向けにコンテンツを作り込んでくださるなど、多くのリソースを割いてワークショップに参加くださったGoogle社のご厚意には感謝しかありません。本当にありがとうございました。
ちなみに、当初はGoogle社の渋谷オフィスでの物理開催が予定されていて、訪問できるのをワクワクしていたのですが、直前に新型コロナウイルス第七波の脅威が高まってしまい、リモート開催となりました。またの機会にぜひ物理訪問したいです!!
アンドパッドでは、さまざまなデータを集積し活用するためのデータ基盤チームの立ち上げから2年ほどが経ち、新たなメンバーを多く迎え、現在は名称をデータグループへと改め、さらなるデータの活用へ向けて組織を拡大しようとしています。
現在、アンドパッドではさまざまなポジションを募集しています! hrmos.co
また、アンドパッドではこれ以外にもさまざまな勉強会、ワークショップを開催していますので、興味を持たれた方は下記よりお気軽にカジュアル面談のお申込みをどうぞ! engineer.andpad.co.jp