Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOpsSoftBank テクノロジーユニット共通プラットフォーム開発本部宮田 銀河12023年 7月29日
View Slide
【経験】● インフラのコード化・デプロイの自動化● Webアプリ開発 (フロント・サーバ)● 2023 AWS Jr. Champion & All Certifications Engineer自己紹介: 宮田 銀河 2合格した資格(22コ)AWS12冠
今回の発表内容↑話しません3生成AIの詳しい仕組み【Azure】生成AIアプリのデプロイ自動化メイン
Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOps4
Azure OpenAIを使用したChatGPTもどき?を作るためのIaCとDevOps5
ChatGPTもどきのデモ動画 (資料の構成案)6
7ChatGPTもどきのデモ動画 (車の画像)
「え? ChatGPTで良くない?」と思った方へ8
Azure OpenAI: GPT-3.5 (ChatGPTと同じ) がAzure上で使え、可用性・セキュリテイ・監視が優れているChatGPT と Azure OpenAIの比較 9提供会社ChatGPT Azure OpenAI使えるモデル● GPT-4● GPT-3.5● DALL-E● GPT-4● GPT-3.5● DALL-E可用性 ● SLAなし ● SLA99.9%セキュリティ ● 閉域接続が不可 ● 閉域接続が可能監視 ● 独自に監視設定が必要 ● ログ・メトリックの監視2023/07/21時点
提供会社Azure OpenAI可用性 ● SLA99.9%セキュリティ ● 閉域接続が可能監視 ● ログ・メトリックの監視顧客顧客顧客顧客顧客顧客生成AIを● いつでも自由に使いたい● セキュアな環境で使いたい● どのくらい使われているかを知りたい上記を満たすChatGPTを使いたいAzure OpenAIを使いたい理由 10→Azure OpenAIの活用が不可欠
Azure OpenAIを迅速に構築/検証できるサービス(SoftBankの法人サービス)参考URL11本サービスの提供に、IaCとDevOpsが不可欠だった
Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOps12
以下リソースが作成されるIaC = Infrastructure as Code (インフラのコード化) 13コマンド実行Virtual NetworkAzure OpenAI ServiceIaC (Terraform)のコード
数個のコマンドを実行するだけで、環境の構築が可能→誰でも迅速にデプロイ可能 & 手作業のミスが減るIaCを導入するメリット 14Azure環境TerraformデプロイVirtual NetworkAzure OpenAI ServiceNetwork Security Group Network Security GroupApp ServicePrivate EndpoinPrivate DNS作業者
Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOps15
DevOps: 開発(Dev)と運用(Ops)を支援する仕組み開発者と運用者がスムーズに開発〜運用可能→システムの価値を継続的に向上できる16DevOpsの要素である”デプロイの自動化”をメインで説明
今回作成したインフラの自動デプロイの仕組み17
インフラの自動デプロイの流れ● 人の仕事はTFファイルの準備 & 承認だけ● インフラを迅速にデプロイ可能18作業者GitHubにTFファイルをpush、PR作成PRを承認し、マージするterraform planterraform apply (約10分)承認TFファイルTFファイルを準備自動自動
デプロイ自動化 → 顧客にも素早く展開が可能 19顧客B顧客C顧客A作業者 TFファイル検証環境
今回作成したChatアプリの自動デプロイの仕組み20
Chatアプリの自動デプロイの流れ● 人の仕事はコーディング&ブランチ作成だけ● 静的解析/E2Eテスト→コード品質を高く保てる● URLをクリックするだけで動作確認可能21GitHubに検証ブランチを作成するE2Eテストが実行される静的解析が実行される検証環境がデプロイされるApp Service 検証環境(デプロイスロット)検証ブランチ自動
この仕組みが”ない”と、PRレビューが遅くなる (参考) 22開発者A開発者B
この仕組みが”ある”と、PRレビューが速くなる 23開発者A開発者B
24Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOpsの作成過程で困ったこと
Azure OpenAIが最新サービスなので、サンプルコードが見つからない→ChatGPTに生成させたコードや試行錯誤で作ったコードでは、Private Endpointの名前解決ができず... (ちなみに、手作業で作ると名前解決可能 )IaC導入時の困りごと: サンプルコードがない 25Azure環境Virtual NetworkAzure OpenAIServiceNetwork SecurityGroupNetwork SecurityGroupApp ServicePrivate EndpoinPrivate DNS
足りなかったコード解決方法: terraform -generate-config-outを使う(2023年6月) terraformのv1.5から、既存リソースをコード化できるように→ 手作業で作成した既存リソースから、コードを生成可能に。26generate-config-out既存リソースTFコード
Private Endpointの名前解決のフロー (例)Virtual Network linkがないと、③のアクセスができない。→Clientから Private IPが取得できない (参考URL)27
まとめ● IaCとDevOps導入により、Chatアプリを迅速にデプロイ可能に● IaC導入時の課題: 最新サービスのためにサンプルコードがない○ 手作業でリソースを作成して、-generate-config-outでコード作成が有効。28スターターパッケージ は、本資料で説明したIaCとDevOpsを利用しています