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
800
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
800
Microsoft Ignite 2023 現地参加レポート/ignite2023
thara0402
0
220
Azure Container Apps で .NET 7 アプリを Blue-Green デプロイしてみよう!/jazug12
thara0402
0
1.6k
Azure Synapse Analytics 入門/jazug11
thara0402
0
680
Azure Bicep で始める Infrastructure as Code/ace0917
thara0402
0
420
Introduction to Azure Synapse Analytics/ace0416
thara0402
0
470
Azure Kubernetes Service を活用したマイクロサービス開発/clouddev
thara0402
0
430
Azure Kubernetes Service を活用したマイクロサービス開発/Ignite-osaka
thara0402
0
440
Azure Kubernetes Service を活用したマイクロサービス開発/Ignite-tokyo
thara0402
0
190
Other Decks in Technology
See All in Technology
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
250
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
820
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
130
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
350
信頼性に挑む中で拡張できる・得られる1人のスキルセットとは?
ken5scal
2
530
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Music & Morning Musume
bryan
46
6.2k
Being A Developer After 40
akosma
86
590k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
89
Code Reviewing Like a Champion
maltzj
520
39k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Fireside Chat
paigeccino
34
3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Code Review Best Practice
trishagee
64
17k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Embracing the Ebb and Flow
colly
84
4.5k
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.