2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
リンクをコピー
記事をブックマーク
渡辺慎二郎氏:「大規模データを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.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦