2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
渡辺慎二郎氏:「大規模データをAIに活かすワークフローツールの紹介 約300万画像を画像検索システムで検索可能にした事例紹介」ということで、ZOZO研究所 福岡・渡辺慎二郎が登壇いたします。よろしくお願いします。
最初に簡単に自己紹介します。株式会社ZOZOテクノロジーズ ZOZO研究所 福岡、研究開発エンジニアの渡辺慎二郎です。Twitterでは「@shikajiro」でやっています。
すごく簡単に経歴も紹介しますと、2010年から8年ぐらいフリーランスとしてAndroidアプリを専門にしていました。2018年からZOZO研究所 福岡に入りまして、バックエンドを担当しています。その担当している内容を今日お話ししたいと思います。
あと、もうすごく犬が好き。Twitterをフォローしてもらえると犬が定期的に流れてきますので、オススメです。ぜひフォローしてください(笑)。
「#zozotech_gcp」というハッシュタグがありますので、shikajiroの話がおもしろい・おもしろくない、どっちでも「shikajiroの話おもしろいなー」とツイートしてください。あと、質問は「#zozotech_gcp」をつけてツイートしてください。お待ちしています。
今日は、まず僕の役割である研究開発エンジニアについて軽く紹介いたします。次に事例を紹介しながら、その事例のインフラやAPIの仕組み、ワークフローの構成をお話しします。このワークフローの構成というのが今日のメインのものになります。最後はまとめと質疑応答というかたちでいきたいと思います。
最初に会社の組織の中でも「研究所とはなんぞや?」というところを紹介します。
まず、親会社としてZOZOがあります。子会社としてZOZOテクノロジーズがありまして、ここがITの部門。開発、デザイン、あと運用、研究ですね。先ほどお話ししてくれた児玉さん(@dama_yuさん)の発表も、こちら、テクノロジーズの話ですね。
僕が所属しているのは、さらにその内部組織で1つの部署である「ZOZO Research(ZOZO研究所)」と呼ばれているところになります。ここは主に研究開発を行なっています。どんなことをしているかといいますと、「ファッションを数値化する」というテーマで研究をしています。
似合う服というのは何なのか? 例えば僕は今日ピンクの服を着ていますが、その下に着るのは何がいいのか。この僕の服は今から出かける場所に合っているのか、季節的にどうなのかとか、そういったところを数値化できないだろうかということをやっています。すてきなファッションになるための組み合わせだとか、そういうことですね。
ファッションの数理モデルを獲得し実用化をやっていくというのを長期プラン、短期プランでいろいろやっています。ほかにも繊維的な、服の繊維の研究とかいろいろやっていまして、そのうちの1つですね。ファッションの数値化を行なっています。
僕はMLエンジニアではなく「研究開発エンジニア」という名前でやっています。主にバックエンドをやっているんですが、どういうことをやっているかというと、「MLエンジニアがMLしやすくする」というのがテーマです。もっと言うと、ML以外全部やるという気概でやっています。
もうちょっと具体的に紹介しますと、MLエンジニアとの協働です。MLエンジニア、要は機械学習だとかAI、ML・DLあたりを使ってモデルを作っていくいろいろ研究していく人たちなんですが、そのエンジニアが学習しやすい環境づくりをします。
「Kubernetesを使いたいです」とか「画像がたくさんあるのでいっぱい欲しいです」とか、「並列でいっぱい処理したいです」だとかですね。そういう環境づくりをしたりしています。
彼らが作ったモデルを基にプロトタイプ開発もしています。「すごいのできたんですが、ちょっとプレゼンではわかりにくいです」「じゃあプロトタイプを作ってしまいましょう」みたいな感じで、プロトタイプの開発をやっていきます。
フロントエンドからサーバーからパッと作ってしまって、社内にいるみんなに見せて「おお、いいね、これ。やっちゃいなよ」という流れを作っていきます。そのモデルをプロダクションの中でAPIとして動かすような仕組みを作っていっています。
先ほどちょうどお話してくださった@dama_yuさんが所属しているMLOpsチームと一緒に作ったモデルのサービスを、きちんとプロダクションのサービスに足るような性能に引き上げる仕組みをやっています。
「一緒にこういうモデルを作っていこうと思います。こういうサービスにしようと思います」と言って、インフラから「じゃあ、こういうインフラにしていきましょう」という設計をしていって、どんどん性能を引き上げていきます。
もうちょっと言いますと、研究開発エンジニアが普通のインフラやバックエンドをやっている人と何が違うかというと、ビッグデータを使って学習するところ。もう1つはビッグデータに対して予測するところです。
大量にすごいデータがあるとき、それに対するAPIを作ったり事前準備をするなどの部分が、僕たち研究開発エンジニアが必要とされているところになってきます。ビッグデータに対して予測するというのは、APIの部分だったり、そういったところになります。
今からは事例を紹介しながら、その中で使っているGCPの紹介をしたいと思います。今日お話しする内容ではありませんが、ZOZOがやっている「WEAR」というファッションサービスのアプリがありまして、その中の「髪型別コーデ検索」というのをちょっと前にリリースしました。
これはロング、ミディアムなどの髪型、例えば「私は今ボブだけど、ほかの人はボブに似合うどんなファッションをしているんだろうか?」というのをすぐ探せる仕組みになります。これも「WEAR」にある大量の画像データから機械学習を使って髪型を識別・選別し、検索可能にするというのを行ないました。
次は一時期話題になったのでけっこう有名かと思うのですが、ZOZOTOWNの類似アイテム検索。
要は画像検索なんですが、この画像でいうと、左の女性が着ている花柄の服に似ているものを探したいときに、ボタンをポチッと押すと、それっぽいファッションの服が出てきます。その中から自分が気に入ったものを探す。「この花柄なんだけど、もうちょっと襟が広いのがいいなぁ」みたいなときに押してもらえると、いろいろな似たものから探すことができます。
今回はそのZOZOTOWNの画像検索、類似アイテム検索で、裏側で動いているGCPのワークフローの紹介をしたいと思います。これは最近ちょうどテックブログに載せた内容でして、それの補完みたいなかたちになるんですが、よければそちらも併せて見ていただけるとうれしいです。あと、はてブもしてくれるとうれしいです。
ZOZOTOWNの類似アイテム検索のインフラ紹介になります。GCP、もちろん使っています。今回お話しするメインはワークフローという仕組みなんですけれど、これはあとで紹介していきます。
MLエンジニアはGCPの、例えばCompute Engine、インスタンスを立てて、GPUや、今回ではTPUも、TensorFlowのTensor Processing Unitだとかそういったものを使って学習を行ない、すごいクールなモデルを作っていったりしています。
僕みたいな開発者はそれを動かすためのAPIを作り、GitHubでCI/CDを使ってデプロイして、Container Registryに乗せたりとかをしています。そうやってできた仕組みをユーザーはロードバランサーを経由してAPI叩いて、内部的にはKubernetes Engineが動いています。GKEですね。これを使って動かしています。
その前に、簡単に中身を紹介します。この画像検索、今回「画像検索」という名称で呼んじゃいますが、画像検索は「物体検索」「特徴量抽出」「最近傍探索」という3つのステップを踏んで検索しています。それを、GKEを使って動かしています。
ユーザーが「この似ている服を探したい」と言っているAPIを総称して、推論するAPI、「推論API」と呼んでいます。今回はワークフローの話なんですが、いったんこの推論APIについて流れを紹介します。
この服がいいなと思ったら、まずこの服から物体検出を行ないます。この服には、どんな服があるか。物体、洋服だとか上着だとかズボンだとかトップスだとかといったところを、まず検出を行ないます。
具体的な画像検索の中身についての解説は次回のミートアップとかに委ねたいと思いますので、今回はちょっと端折ります。
まずtopsを取りまして、そこから特徴量を抽出して数字にします。ZOZOTOWNには、今回で言うと300万ぐらい対象となる画像がありまして、それに対してあらかじめ全部この特徴量に計算し、インデックス化をしておきます。
そのインデックスに入っている特徴量とこの花柄の服の特徴量と照らし合わせて計算することで、似たものを、最も似ているものをどんどん出していくというもの。この3つのステップを経て推論APIはできあがっています。というのが前提ですね。
GCPを選んだ理由なんですが、まずBigQueryがあること。ZOZOTOWNの300万画像という大量にある情報のデータがBigQueryですでにあるということ。
画像検索ではすごい計算量を使いまして、GPUとか使いたいなという要望がありました。その中でGPUがまず使えること。TPUも使おうと思えばできるということがあります。実際、GPUは推論APIで使っていますし、学習のときはGPUはもちろんTPUも使って、ものすごい計算を短時間でできるようにしています。
ですので、GPUを推論APIをするときに普通のGoogle App Engineだとかでは使いにくかった、できなかったので、k8sのマネージドサービスGKEを使いました。これがほかのクラウドサービスの中ではKubernetesのマネージドサービスが安定しているので、これを選択しました。という、このあたりが一番大きな理由ですね。
推論APIのおさらいになるのですが、物体検出と特徴量抽出と近似最近傍探索を行なうという流れなんですが、近似最近傍探索をするにあたって、あらかじめZOZOにある画像データの検索対象になるもののインデックスを作っておく必要があります。対象となる画像は具体的には300万ぐらいあります。
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05