Difyによる全社LLMプラットフォーム運用とv1アップデート

26.1K Views

May 21, 25

スライド概要

Difyをバックエンドとする全社WEB LLMプラットフォームSAIの運用と、Difyのv1アップデート時に行った対応について紹介します。
登壇者 : 大泉壮汰 / 株式会社ディー・エヌ・エー
---------
Dify Meetup Tokyo #5
https://dify.connpass.com/event/352859/
動画アーカイブ : https://www.youtube.com/live/nxPNHw2b6Ao?si=1_mVYVWl5f4XUhl1

profile-image

DeNA が社会の技術向上に貢献するため、業務で得た知見を積極的に外部に発信する、DeNA 公式のアカウントです。DeNA エンジニアの登壇資料をお届けします。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Difyによる全社LLMプラットフォーム 運用とv1アップデート 大泉壮汰 IT本部 AI・データ戦略統括部 データ基盤部 ゲームエンタメグループ 株式会社ディー・エヌ・エー © DeNA Co., Ltd. 1

2.

目次 1 AI ALLIN 2 SAIとDify 3 Difyの運用について 4 v1 プラグイン対応 © DeNA Co., Ltd. 2

3.

自己紹介 大泉 壮汰 / Sota Oizumi DeNA AI・データ戦略統括部 データ基盤部 ゲームエンタメグループ MLエンジニア ● ● ● ● 宮城県仙台市出身 情報系の修士修了後24卒入社で2年目 機械学習モデルの学習パイプラインや 推論サーバーを作ることが多い DevOps好き #海外サッカー観戦 #フットサル #ゴルフ #料理 #コーヒー @sotazum @softheart023 © DeNA Co., Ltd. 3

4.

1. AI ALLIN © DeNA Co., Ltd. 4

5.

1 BUSINESS PORTFOLIO [ 事業ポートフォリオ ] ゲーム スポーツ・スマートシティ © DeNA Co., Ltd. ライブコミュニティ ヘルスケア・メディカル 新領域・その他 5

6.

1 AI ALLIN 2025年2月5日のDeNA AI Dayのオープニングトークで宣言されたキャッチコピー 今後DeNAがAIを活用して事業に注力していく方針が明かされた https://fullswing.dena.com/archives/100153/ © DeNA Co., Ltd. https://ssl4.eir-parts.net/doc/2432/ir_material/250042/00.pdf 6

7.

AI ALLINの先駆けとなった Difyベースの社内プロダクトを紹介 © DeNA Co., Ltd. 7

8.

© DeNA Co., Ltd. 8

9.

2. SAIとDify © DeNA Co., Ltd. 9

10.

LLM WEBプラットフォーム SAI 2 2024年7月に社内リリース ● 基本的なLLMチャット機能を備えた WEBアプリケーション ● RAGアプリやカスタムプロンプトを WEB UIから作成・使用可能 ● 会話履歴や作成したアプリケーションは ユーザーごとに権限管理 バックエンドの大部分にてDifyで発行したアプリのAPIを使用 → ほぼ全てのリクエストにDifyが介在 © DeNA Co., Ltd. 10

11.

なぜDify? 2 SAIは24年新卒エンジニア研修にて新卒8名×実働2ヶ月で作成されたプロダクト ● とにかく時間がない中で共通実装をスキップして成果を最大化したい ● チャットアプリやワークフローのAPIを発行できて、カスタマイズ性が高い ● シングルテナント運用でも簡易的なバックエンドの追加で最低限の権限管理ができる 採用! © DeNA Co., Ltd. 11

12.

Google Cloud上でのDify全社運用に向けた課題 2 ● 用意された公式のデプロイ方法はない (よく見るとCloud Storage用の環境変数はある) ● 社内のデータガバナンス上コミュニティ版のセルフホストしか選択肢がない状況 ● MVP時点ではGCEインスタンス上で docker compose up 1,000ユーザー以上のアクセスに耐える設計にしたい データを永続化してセキュアに保管したい 運用コストの小さいマネージドサービス中心の構成にしたい © DeNA Co., Ltd. 12

13.

2 Difyのアーキテクチャ https://github.com/langgenius/dify/blob/main/docker/docker-compose.png © DeNA Co., Ltd. 13

14.

2 Difyのアーキテクチャ Cloud Run Sidecarsで 一緒にデプ ロイしたい Memorystoreで いけるな workerは単独で スケールできる ようにしたい pgvectorでDB とベクトルDB は一緒に扱え るかも LB挟んで独自 ドメインに したい sandboxは単独 サービスとしても 問題なさそう https://github.com/langgenius/dify/blob/main/docker/docker-compose.png © DeNA Co., Ltd. 14

15.

2 SAIのアーキテクチャ (v0 時代) VPC DB/VectorDB Redis Cloud SQL Memorystore dify-worker dify-sandbox Cloud Run Cloud Run dify-api dify-web Artifact Registry Artifact Registry 5001 3000 Storage Cloud Storage nginx Azure OpenAI API Artifact Registry Cloud Run Sidecars Secret Manager SAI Backend SAI Frontend Cloud Run Cloud Run Load Balancer Cloud Load Balancing User © DeNA Co., Ltd. 15

16.

3. Difyの運用について © DeNA Co., Ltd. 16

17.

3 TerraformによるInfrastructure as Code (IaC) ● 開発環境と本番環境の分離 ● moduleを用いた共通化 再現性のある安定したインフラ運用を実現 ● インフラを含めたデプロイサイクルの構築 DeNAで実運用されている構成の 一部をGitHubで公開中! langgenius/difyのリポジトリの READMEにも掲載されています! © DeNA Co., Ltd. 17

18.

GitHub ActionsによるCI/CD 3 ● Difyのアップデートに素早く追従するため ● SAI側の細かな修正などは多く、Difyと一本化したパイプラインで安定デプロイ リリースノートとタグで アプリケーション全体の バージョン管理 Cloud Buildによる Artifact Regisitryへの ImageのBuild & Push © DeNA Co., Ltd. terraform applyを デプロイ対象環境 に並行実行 18

19.

利用実績 3 ● Monthly Active Users (MAU) はリリース初月から順調に増加し4月に800ユーザーを突破 ● 1時間を超えるような大きなダウンタイムの障害はなく、安定運用ができている 自由会話アプリ (GPT-4o) © DeNA Co., Ltd. MAUの推移 19

20.

運用面の頻発課題 3 ● 大きなナレッジを作ろうとするとAzure OpenAI APIの429エラーで失敗する ○ 入力制限がファイルサイズベースなのでファイル形式によっては巨大なトークン 数になってしまう ○ workerコンテナのスケーラビリティとは無関係で、アプリケーションのリトライ 処理などで対応する必要がある ● DBスロットが埋まってアプリ読み込みでエラーが出る ○ 社内ニーズに対しCloud SQLの単一インスタンスで運用する限界 (AlloyDB移行検討中) ○ © DeNA Co., Ltd. read/writeの分離などがDify側で環境変数で対応可能になると嬉しい 20

21.

4. v1 プラグイン対応 ここからは開発者向けの話題です © DeNA Co., Ltd. 21

22.

プラグイン 4 ● v1 メジャーリリースにより、モデル呼び出しはプラグインを介して行われるように ○ ● 新規モデルリリース時にDify自体のアップデートが不要に! (デプロイ不要) plugin daemonコンテナが追加され、アーキテクチャレベルで再検討が必要に © DeNA Co., Ltd. https://github.com/langgenius/dify/blob/main/docker/docker-compose.png 22

23.

4 © DeNA Co., Ltd. 現在のアーキテクチャ (v1 以降) 23

24.

Plugin Daemonの仕様 4 公式Dockerイメージがlocal runtimeとserverless runtimeの2つ存在 ● local runtime ○ 標準入出力でapiコンテナやworkerコンテナと連携 ■ ● api, workerはCloud Run の別サービスに分離して いるので相性が悪い plugin daemon, api, workerが同一Pod上にあることを仮定 serverless runtime ○ AWS Lambdaなどのトリガーベースで関数実行を行うマネージドサービスでの 利用を前提としてHTTP通信でapiコンテナやworkerコンテナと連携 workerコンテナ単体でのスケーラビリティを保つため、 Cloud Run Functionsと組み合わせてserverless runtimeを使いたい © DeNA Co., Ltd. 24

25.

4 Dify開発陣とのコミュニケーション serverless runtimeの稼 働には別リソースが必 要と気づき、issue起票 残念ながらEnterprise 版用の設定なのでdocs は提供不可能とのこと https://github.com/langgenius/dify-plugin-daemon/issues/141 © DeNA Co., Ltd. 25

26.

ストレージ問題 4 一旦local runtimeを用いて、nginx, web, api, plugin daemonを一つのCloud Run Sidecarsで扱 う方針に ● plugin daemonコンテナのローカルストレージに各プラグインのPythonモジュールが保 存される ● Cloud RunのPodが内部的に入れ替わる度にローカルストレージが空になり、DBとの整 合性が取れなくなる Cloud Runのボリュームマウント機能でCloud Filestoreを用いてプラグインストレージを永続化 © DeNA Co., Ltd. 26

27.

4 再掲:現在のアーキテクチャ (v1 以降) workerを Sidecars 内に プラグインのストレージ はFilestoreでボリューム マウント © DeNA Co., Ltd. 27

28.

まとめ ● DeNAでは2024年夏より、AI ALLINに先駆けて、DifyをベースとしたWEB LLMプラット フォームが全社運用されており、今日も元気にGoogle Cloud上でコミュニティ版のDify が稼働しています ● IaCやCI/CDなどインフラ面の運用を整備することで、内製アプリケーションSAIと うまく融合させた運用を行っています ● v1アップデートでは、アーキテクチャレベルでの対応が必要になりましたが、Dify開発 陣ともコミュニケーションをとり、より良いセルフデプロイ方法を模索しています © DeNA Co., Ltd. 28

29.

© DeNA Co., Ltd. 29