Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Azure App Service on Linux の Sidecar に Phi-3 を配...
Search
TonyTonyKun
October 03, 2024
Technology
0
900
Azure App Service on Linux の Sidecar に Phi-3 を配置してインテリジェントなアプリケーションを作ってみよう/jazug-anniv14
Japan Azure User Group 14周年イベントのセッション資料です。
TonyTonyKun
October 03, 2024
Tweet
Share
More Decks by TonyTonyKun
See All by TonyTonyKun
サイクルガードサービス AlterLock の問い合わせ対応業務に Azure OpenAI Service を活用した話/jazug46
thara0402
0
830
Microsoft Ignite 2023 現地参加レポート/ignite2023
thara0402
0
240
Azure Container Apps で .NET 7 アプリを Blue-Green デプロイしてみよう!/jazug12
thara0402
0
1.6k
Azure Synapse Analytics 入門/jazug11
thara0402
0
690
Azure Bicep で始める Infrastructure as Code/ace0917
thara0402
0
430
Introduction to Azure Synapse Analytics/ace0416
thara0402
0
480
Azure Kubernetes Service を活用したマイクロサービス開発/clouddev
thara0402
0
440
Azure Kubernetes Service を活用したマイクロサービス開発/Ignite-osaka
thara0402
0
460
Azure Kubernetes Service を活用したマイクロサービス開発/Ignite-tokyo
thara0402
0
190
Other Decks in Technology
See All in Technology
最近のSfM手法まとめ
kwchrk
2
230
[トレノケ雲の会 mod.13] 3回目のre:Inventで気づいたこと -CloudOperationsを添えて-
shintaro_fukatsu
0
110
Server-Side Engineer of LINE Sukimani
lycorp_recruit_jp
0
360
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
39
16k
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
190
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
120
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
260
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
190
podman_update_2024-12
orimanabu
1
290
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
330
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
160
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
120
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
530
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
170
Why Our Code Smells
bkeepers
PRO
335
57k
How to Ace a Technical Interview
jacobian
276
23k
Speed Design
sergeychernyshev
25
670
Faster Mobile Websites
deanohume
305
30k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Raft: Consensus for Rubyists
vanstee
137
6.7k
The Pragmatic Product Professional
lauravandoore
32
6.3k
Navigating Team Friction
lara
183
15k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Transcript
Azure App Service on Linux の Sidecar に Phi-3 を配置して
インテリジェントなアプリケーションを 作ってみよう 2024.10.5 Japan Azure User Group 14周年イベント
自己紹介 名前 原 敏之 個人 X (Twitter) : @TonyTonyKun ROMANCE
DAWN for the new world • https://gooner.hateblo.jp/ Microsoft MVP for Microsoft Azure 2017 〜 2023 Microsoft MVP for AI Platform 2024 〜 仕事 株式会社ネクストスケープ Copyright© 2024, JAZUG All Rights Reserved. 2
アジェンダ Sidecar Pattern とは SLM(Phi-3)を Sidecar として活用する Sidecar Pattern with
App Service の使いどころを考える まとめ 3 Copyright© 2024, JAZUG All Rights Reserved.
Sidecar Pattern Sidecar パターンとは 4 Copyright© 2024, JAZUG All Rights
Reserved.
Sidecar パターンとは 5 Copyright© 2024, JAZUG All Rights Reserved. マイクロサービスの非機能要件をアプリケーションから切り離し、
疎結合に実装するデザインパターン メインアプリケーションの実装に依存せずに、非機能要件を組み込める 一方で、通信処理によるオーバーヘッドがトレードオフとなる モニタリング&ロギング 分散トレーシング ネットワークプロキシ リモートサービス呼び出しのリトライ サーキットブレーカー セキュリティ 通信暗号化 シークレット管理
Sidecar パターンのソリューション① 6 Copyright© 2024, JAZUG All Rights Reserved. コンテナーのグループ化(Kubernetes
の Pod) Kubernetes 上に構築するサービスメッシュ(Istio など) Envoy コンテナーをインジェクションして、サービス間の通信を統一的な仕組みで管理する
Sidecar パターンのソリューション② 7 Copyright© 2024, JAZUG All Rights Reserved. コンテナーのグループ化(Kubernetes
の Pod) Kubernetes 上に構築する Dapr( Distributed Application Runtime )
Sidecar パターンのソリューション③ 8 Copyright© 2024, JAZUG All Rights Reserved. Sidecar
Pattern with Azure App Service on Linux App Service on Linux に Sidecar パターンでコンテナーを追加できる 機能が追加されました。
Sidecar Pattern with App Service on Linux 9 Copyright© 2024,
JAZUG All Rights Reserved. App Service 作成時、Sidecar Support を有効化する 現時点の制約(Public Preview) • Docker Container のみ(Windows Container は未対応) • Sidecar を構成できるのは新規作成のみ、既存リソースに追加不可 • Sidecar を構成できるリージョンは限定(West Europe など)
Sidecar Pattern with App Service on Linux 10 Copyright© 2024,
JAZUG All Rights Reserved. App Service に対して、Sidecar の Container Registry を追加する
Phi-3 SLM with Linux App Service SLM(Phi-3)を Sidecar パターンで活用する 11
Copyright© 2024, JAZUG All Rights Reserved.
モチベーション 12 Copyright© 2024, JAZUG All Rights Reserved. なぜ、SLM を
Sidecar で使うユースケースが良いと感じたのか? AOAI で LLM を使うだけがシステムの生成 AI 活用ではない • 期待値が高すぎる、大きく構えずにライトな活用も検討してもいいのでは? SLM のセルフホストで十分なユースケースもありそう • リアルタイム応答、機密データの取り扱い、コスト削減を実現しやすい • LLM と比較すると、ファインチューニングの敷居もそれほど高くない SLM を動かせるデバイスに実行環境を作るのはそれなりに大変そう • 2024年5月から Copilot+PC が発売されているが・・・ PaaS で提供される Sidecar に SLM をセルフホストするアーキテクチャ https://azure.github.io/AppService/2024/08/05/Using-SLM-with-Sidecar.html
手順① SLM の Sidecar を作る 13 Copyright© 2024, JAZUG All
Rights Reserved. Phi-3 モデルの呼び出しをサポートするツールに Ollama を使い、 REST API で対話できる I/F をもったコンテナーを作成する Phi-3 • Microsoft によって開発された Small Language Models(SLM) Ollama(https://ollama.com/) • ローカル環境で LLM や SLM のモデルを動かすことができるツール • Phi-3 以外にも、Llama 3.1 や Google Gemma 2 などのモデルをサポート ※ SLM の呼び出しをサポートできれば、 ONNX Runtime generate API などを活用してもいい
手順① SLM の Sidecar を作る 14 Copyright© 2024, JAZUG All
Rights Reserved. Ollama の Docker Image をベースに Dockerfile を定義する
手順② メインのアプリケーションを作る 15 Copyright© 2024, JAZUG All Rights Reserved. ASP.NET
Core で Sidecar を呼び出す Web API を作成する
手順② メインのアプリケーションを作る 16 Copyright© 2024, JAZUG All Rights Reserved. Ollama
のモデルを実行するための REST API エンドポイント Generate a completion Generate a chat completion など https://github.com/ollama/ollama/blob/main/docs/api.md
デモ 17 Copyright© 2024, JAZUG All Rights Reserved. VS Code
拡張の REST Client で Web API を呼び出す
事例:.NET Smart Components 18 Copyright© 2024, JAZUG All Rights Reserved.
AI を活用した機能を .NET アプリに組み込めるコンポーネント コンポーネントに含まれている機能 • Smart Paste • Smart TextArea • Smart ComboBox AI バックエンド • Azure OpenAI Service • OpenAI • セルフホスト • Ollama など OpenAI API スキーマと互換性のあるエンドポイント https://github.com/dotnet/smartcomponents/blob/main/docs/configure-openai-backend.md このようなコンポーネントであれば、SLM のセルフホストでいいのでは?
What are the use cases for Sidecar Pattern with App
Service? Sidecar Pattern with App Service の使いどころを考える 19 Copyright© 2024, JAZUG All Rights Reserved.
モニタリング&ロギング 20 Copyright© 2024, JAZUG All Rights Reserved. Datadog などの監視ツールにログやメトリクスを送信する
メインアプリケーションに改修を行うことなく、Sidecar を配置する だけで監視ツールとシームレスに統合できる https://azure.github.io/AppService/2024/07/26/Using-Datadog-with-Sidecar.html https://azure.github.io/AppService/2024/07/26/Using-Dynatrace-with-Sidecar.html
キャッシュ 21 Copyright© 2024, JAZUG All Rights Reserved. Sidecar にキャッシュのデータストア(Redis)を配置する
Sidecar をオンメモリキャッシュとして使いたい気持ちはわかる • 通信処理のオーバヘッドが小さいため、高速にキャッシュをリードライトできる ただし、アーキテクチャ上の注意事項あり • リクエストがルーティングされるインスタンスによってはキャッシュが使えない • メインアプリケーションと Sidecar が同一ライフサイクルなので • 素直に Azure Cache for Redis を使った方が良さそう • 個人的には Sidecar パターンの特性には合っていない気がする https://azure.github.io/AppService/2024/07/19/Using-Redis-with-Sidecar.html
定期的なバックグラウンド処理 22 Copyright© 2024, JAZUG All Rights Reserved. Sidecar ではなく、App
Service の WebJobs を使ったほうがいい WebJobs で出来ること • 継続的なジョブで定期タスクを自動化 • CRON によるトリガーでタスクを実行 スクリプトファイル、バッチファイルをそのままデプロイ ちょっとした定期タスク向き • Linux や Container 版は Preview 版だが、Windows 版は GA 済み メインアプリケーションと分離したい場合は、Azure Functions を使う
マルチコンテナーの後継機能 23 Copyright© 2024, JAZUG All Rights Reserved. App Service
では、以前から複数コンテナーをサポートしている 2つの形式 • Docker Compose • Kubernetes Deployment YAML 公式ドキュメントで紹介されているユースケース • WordPress(Web Server と MySQL)をデプロイする Sidecar パターンの登場により、オワコンとなる可能性を示唆 Frontend と Backend をまとめて1つのホストに配置するユースケース が Sidecar として本当に適切かどうかはしっかりと検討したい
Conclusion まとめ 24 Copyright© 2024, JAZUG All Rights Reserved.
まとめ Sidecar パターンは、SLM のセルフホストと相性が良さそう リアルタイム応答、機密データの取り扱い、コスト削減を実現しやすい LLM と比較すると、ファインチューニングの敷居もそれほど高くない このアーキテクチャでのインテリジェントアプリ開発が流行るかも Sidecar パターンの使いどころ
非機能要件の疎結合化 • 王道はロギングやモニタリング • あくまでメインアプリケーションを補助的にサポートするコンテナー • 少なからず、オーバヘッドが発生するので許容できるかどうか メインアプリケーションと同一ライフサイクルであることがポイント 25 Copyright© 2024, JAZUG All Rights Reserved.
参考リンク 個人ブログ Azure App Service の Sidecar に Phi-3 をデプロイして
Web アプリケーションの機能を拡張する • https://gooner.hateblo.jp/entry/2024/08/14/173326 Azure App Service Team Blog Phi-3 • https://azure.github.io/AppService/2024/08/05/Using-SLM-with-Sidecar.html • https://azure.github.io/AppService/2024/09/03/Phi3-vector.html • https://azure.github.io/AppService/2024/08/19/Phi-3-ONNX.html Datadog • https://azure.github.io/AppService/2024/07/26/Using-Datadog-with-Sidecar.html Dynatrace • https://azure.github.io/AppService/2024/07/26/Using-Dynatrace-with-Sidecar.html Redis • https://azure.github.io/AppService/2024/07/19/Using-Redis-with-Sidecar.html .NET Smart Components https://github.com/dotnet/smartcomponents/ 26 Copyright© 2024, JAZUG All Rights Reserved.