2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
ピクシブの機械学習基盤(全1記事)
リンクをコピー
記事をブックマーク
sugasuga氏:こんにちは。今日は、ピクシブの機械学習基盤に関する発表をいたします。
まずは自己紹介から始めさせてください。自分は、機械学習チームでエンジニアをしているsugasugaといいます。サブで採用・広報活動にも関わっています。最近の趣味は、トレーニングです。
今日お話しすることは、(スライドを示して)こちらを予定しています。機械学習基盤について。そして、基盤で使われている技術について。運用してみて感じたメリットとデメリットについてお話しします。
本題に移る前に、導入として、どういったところで機械学習が活用されていて、なぜ機械学習基盤が必要かについてお話しします。
活用されている場面としては、違反検知、レコメンド、広告、3Dなど多岐にわたります。ここでは、「pixiv」でレコメンドがどのように使われているかを紹介します。
トップページに「おすすめ作品」枠というものがあります。これは、ユーザー一人ひとりにパーソナライズされた作品をレコメンドする枠になっています。
さらに、作品ページのタブには、関連作品枠と呼ばれるものがあります。これは、その作品を見ているのであれば、この作品も好むであろうという作品をレコメンドしている枠です。
そしてレコメンドはpixivだけではなく、他のサービスでも積極的に活用されています。例えば、クリエイターの創作活動を支援するプラットフォームである「FANBOX」では、ユーザーに対しておすすめのクリエイターをレコメンドする機能が提供されています。
ほかにも、「BOOTH」「ピクシブ百科事典」「pixivコミック」「pixivision」「VRoid Hub」など、さまざまなサービスでレコメンドが活用されています。
さまざまなサービスで活用されているレコメンドですが、1ヶ月間のレコメンドの表示件数は、いったいどのぐらいなのでしょうか?
2023年の平均的な月のデータによれば、約110億件のレコメンドが表示されています。
投稿作品総数が約1.3億件、総登録ユーザー数が約9,800万人とあり、国内でも有数の規模のデータなんじゃないかなと思っています。こういったデータに対して、自分たちはかつて、オンプレミス基盤で機械学習技術を使っていました。
しかし大規模なデータの効率的な処理や、機械学習サービスの展開のしやすさ、あとは効率的な開発などに課題があり、それらを解決する基盤を作成する必要がありました。
実際に、それらの課題を解決するために開発した3つの基盤について説明いたします。
まず1つ目の基盤として、GCPバッチ基盤というものがあります。現在のバッチ基盤は、「Google Kubernetes Engine」上で構築されています。そのため、必要な時に必要な分だけリソースを確保できるようになりました。
また「Digdag」というワークフローツールを使っており、バッチの状態の可視化、失敗時の通知、バッチの依存関係の記述などができるようになりました。
例として、レコメンドを計算するバッチを挙げます。Digdagがバッチジョブを発行します。最初にデータの集計を行い、次に機械学習モデルの学習、レコメンド候補の生成、レコメンドデータの出力の順で処理が進行します。いずれかのステップで失敗した場合「Slack」に通知が飛ぶようになっています。
以前はできなかった一時的に高性能なリソースを借りて、その分だけ料金を支払ったり、複数同時に実行して時間内に処理を終わらせるということができるようになりました。この基盤によって大規模なデータを効率的に処理できるようになりました。
2つ目の基盤として、リアルタイムの推論基盤を紹介させてください。
バッチ基盤は、GPU、TPUなど、潤沢なリソースを使い、数時間かけて処理を行う場合に使われます。対して、こちらのリアルタイム推論は、ユーザーからのリクエストがあった場合など、数秒以内にレスポンスを返すために使われています。
一例として、タグのおすすめ機能があります。これは、クリエイターの方が作品を投稿した際に、投稿された作品に対しておすすめのタグを返却するという機能になっています。
こういった機能以外にも現在機能を開発しています。機械学習チーム内で機械学習を活用したサービスが作りやすくなったかなと感じています。
以前は、オンプレのリソースが限定されていたり、自分たちが自由にいじれる基盤がなかったため、機械学習のサービスを展開するハードルが非常に高い状態でした。しかし現在は、この基盤のおかげでサービスの展開がしやすくなり、取れる選択肢が広がったと感じています。
3つ目の基盤として、ノートブック開発環境についてお話しします。
機械学習エンジニアは、PythonをWebブラウザ上で実行できる「Jupyter Notebook」というツールを使うことが多いです。(スライドを示して)こんな感じで、中身を確認しながら逐次的にスクリプトを実行できます。
以前のオンプレ基盤の時は、都度、環境構築を行ったりしていて大変でした。また、ほかのユーザーがGPUリソースを使っていないかを気にしたり、ストレージを圧迫しないように後片付けなどをきちんと行なわなければならないというのがつらいところでした。
現在は、「GCP」の「Vertex AI Workbench」を使うことにより、マネージドなノートブック開発環境を使用しています。ボタン数回のクリックで自由にリソースを選択でき、環境が構築されます。リソースやストレージの競合を気にする必要がなくなりました。使わなくなれば気軽に破棄できます。
Vertex AI Workbenchを使うことで、効率的に開発を行えるようになりました。
ここまで、GCP上での基盤を紹介させていただきました。実をいうと、以前のオンプレの仕組みを全部GCPに移行しているというわけではありません。紹介できていないような、既存の便利な機能や仕組みを一緒に資産として活用しているというかたちになっています。
次に、2つ目の項目である、基盤で使われている技術についてお話しさせてください。主に「なんでピクシブがこの技術を使っているの?」という観点から紹介します。
「どうやってインフラ管理を行うか?」についてです。
インフラ管理は、ピクシブで標準の「Terraform」を使いました。チーム内外で経験がある人が多く、ノウハウもあったので、気軽に使うことができました。
「どうやって認証を行うか?」についてです。
弊社の場合、オンプレサーバーからつなぐ必要があるため、アプリケーションとの間には、認証を挟む必要があります。サーバーと開発者にはアクセスを許可したいが、一般のユーザーのアクセスは制限したいという要件がありました。
自分たちは、「IAP」と呼ばれるリバースプロキシを使って認証を行っています。ピクシブは、「Google Workspace」を使っていて、開発者全員がGoogleアカウントを持っているので、そのアカウントを認証に使います。設定もかなり楽でした。
サーバー側のサービスアカウントと、開発者のGoogleアカウントをまとめて管理できるのもうれしい点なのかなと感じています。
「なんでGKEを使っているの?」についてです。
GKEの管理は大変だと思いますが、自分たちは、この基盤がポータブルである必要がありました。なにかしらの理由でオンプレや「AWS」に移行する可能性があったからです。
実際に今、コスパが悪い一部分をオンプレに移行するという話があります。また、今でこそ一部対応されているのですが、「Cloud Run」などでは使えないような機能がGKEにはありました。そのため自分たちは、GKEを使うという判断をしました。
「どうやってKubernetesのマニフェストを管理しよう?」についてです。
「Kubernetes」の設定を記述するためにマニフェストファイルを準備する必要があります。開発環境と本番環境とステージング環境ごとに準備すると、大量のyamlファイルが爆誕します。
そうすると、更新する時に変更箇所が多くなり、ミスが入り込む可能性が高くなります。自分たちはそういった問題を減らすために「Kustomize」というツールを使って、DRY原則に則り環境管理を行っています。
その他として、ワークフローツールの選定、エラー通知、クラスタ監視、CI/CDの設定や軽量化、あとは機械学習特有の継続的学習についてなどを考えつつ、基盤を構築しています。
もし詳細が気になる方がいましたら、「Ask the Speaker」まで聞きに来てください。
では、最後の項目である、実際に基盤を運用してみて感じたメリット、デメリットについてお話しします。
まずは、運用してみて感じたメリットです。
1つ目のメリットは、自チーム内でプロジェクトが完結するため、手戻りや調整が少ないことです。企画、アルゴリズム作成、基盤変更、バックエンド変更、レポーティングなど、自チーム内でプロジェクトが完結するので、どこがボトルネックになりそうかなどを見積もって、手戻りを減らせているかな、と感じています。
具体的には、めっちゃいいアルゴリズムを作ったのですが、弊社のデータ量だったり、料金面的に「ちょっと無理っすね」みたいな手戻りが比較的少ないのかなと感じています。
やれることが増えるのもメリットの1つだと感じています。機械学習領域でやりたいことをエンジニアリングで解決することで、やれることを増やすことができます。
具体的には、以前はできなかった高度な機械学習モデルを使うために、GCP基盤を変更して実験を行うということが今はできるかなと感じています。また、オンプレマシンの調達を待たずに素早く実験が回せます。
副次的な作用として、インフラチームに負担がかかりにくくなっているのではないのかな、と僕は願っています。
最後の項目としては、マネージドサービス固有の問題を避けやすいというのもあると思っています。実際に、比較的自分たちでコントロールできる部分が多いGKEを使っているから問題を解決できたよねという事例があります。
具体的にはGKEから割り当てられたCPUと「PyTorch」の相性がおそらく悪く、デプロイの時に、時々CPU負荷が異常に高まるという問題が起きていました。
チーム内ではこれを、デプロイガチャと呼んでいました。チーム内で操作を行い、割り当てられるマシンの変更を加えたことによって解決しました。
マネージドな部分が多いサービスとかでは解決はできなかったんじゃないかなと思っていて、こういった問題を少し避けやすいと思っています。
これまでメリットについて話しました。次は、運用してみて感じたデメリットについてお話しします。
これはメリットの裏返しなのですが、やれることが増えた結果、機械学習領域に割く時間が減りました。1人の人間はやはり分身ができないので、インフラ領域やソフトウェアエンジニアリング領域の仕事が増えれば、相対的に機械学習領域に割く時間が減ってしまいます。
想定していたことながら、個人的には思ったより時間が減ってしまったなという印象があります。あとは、インフラばかりいじりすぎていて、時々「機械学習エンジニアとは?」みたいな気持ちになることもあります。
また、オンボーディングコストが高くなってしまうというのもあると思っています。Kubernetes、Terraform、GCP、GitLab CIなど、いろいろなツールがあります。
自分たちのチームは、人材の入れ替わりが激しいわけではないので、ゆっくり習得してもらう想定になっています。オンボーディングしやすくするために機械学習エンジニアにもGoogle Cloudの研修を受けてもらうなどの取り組みを行っています。
運用していく中で感じるデメリットはありましたが、基盤を作ってよかったなと感じています。
最後です。ピクシブは、GCPで機械学習基盤というものを構築しています。今後もユーザーやクリエイターのために機械学習技術基盤を活用していきます。
今回のような基盤以外の事例など、社内ブログ「pixiv inside」に掲載しています。気になる方は、見ていただけますと幸いです。
では、最後までご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略