2024.10.01
自社の社内情報を未来の“ゴミ”にしないための備え 「情報量が多すぎる」時代がもたらす課題とは?
ピクシブの機械学習基盤(全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.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには