Slide 1

Slide 1 text

Azure OpenAIを使用した ChatGPTもどきを作るためのIaCとDevOps SoftBank テクノロジーユニット 共通プラットフォーム開発本部 宮田 銀河 1 2023年 7月29日

Slide 2

Slide 2 text

【経験】 ● インフラのコード化・デプロイの自動化 ● Webアプリ開発 (フロント・サーバ) ● 2023 AWS Jr. Champion & All Certifications Engineer 自己紹介: 宮田 銀河 2 合格した資格 (22コ) AWS12冠

Slide 3

Slide 3 text

今回の発表内容 ↑話しません 3 生成AIの詳しい 仕組み 【Azure】 生成AIアプリの デプロイ自動化 メイン

Slide 4

Slide 4 text

Azure OpenAIを使用した ChatGPTもどきを作るためのIaCとDevOps 4

Slide 5

Slide 5 text

Azure OpenAIを使用した ChatGPTもどき?を作るためのIaCとDevOps 5

Slide 6

Slide 6 text

ChatGPTもどきのデモ動画 (資料の構成案) 6

Slide 7

Slide 7 text

7 ChatGPTもどきのデモ動画 (車の画像)

Slide 8

Slide 8 text

「え? ChatGPTで良くない?」 と思った方へ 8

Slide 9

Slide 9 text

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時点

Slide 10

Slide 10 text

提供会社 Azure OpenAI 可用性 ● SLA99.9% セキュリティ ● 閉域接続が可能 監視 ● ログ・メトリックの監視 顧客 顧客 顧客 顧客 顧客 顧客 生成AIを ● いつでも自由に使いたい ● セキュアな環境で使いたい ● どのくらい使われているかを知りたい 上記を満たす ChatGPTを使いたい Azure OpenAIを使いたい理由 10 →Azure OpenAIの活用が不可欠

Slide 11

Slide 11 text

Azure OpenAIを迅速に構築/検証できるサービス (SoftBankの法人サービス) 参考URL 11 本サービスの提供に、IaCとDevOpsが不可欠だった

Slide 12

Slide 12 text

Azure OpenAIを使用した ChatGPTもどきを作るためのIaCとDevOps 12

Slide 13

Slide 13 text

以下リソースが作成される IaC = Infrastructure as Code (インフラのコード化) 13 コマンド実行 Virtual Network Azure OpenAI Service IaC (Terraform)のコード

Slide 14

Slide 14 text

数個のコマンドを実行するだけで、環境の構築が可能 →誰でも迅速にデプロイ可能 & 手作業のミスが減る IaCを導入するメリット 14 Azure環境 Terraform デプロイ Virtual Network Azure OpenAI Service Network Security Group Network Security Group App Service Private Endpoin Private DNS 作業者

Slide 15

Slide 15 text

Azure OpenAIを使用した ChatGPTもどきを作るためのIaCとDevOps 15

Slide 16

Slide 16 text

DevOps: 開発(Dev)と運用(Ops)を支援する仕組み 開発者と運用者がスムーズに開発〜運用可能 →システムの価値を継続的に向上できる 16 DevOpsの要素である”デプロイの自動化”をメインで説明

Slide 17

Slide 17 text

今回作成した インフラの自動デプロイの仕組み 17

Slide 18

Slide 18 text

インフラの自動デプロイの流れ ● 人の仕事はTFファイルの準備 & 承認だけ ● インフラを迅速にデプロイ可能 18 作業者 GitHubにTFファイルをpush、PR作成 PRを承認し、マージする terraform plan terraform apply (約10分) 承認 TFファイル TFファイルを準備 自動 自動

Slide 19

Slide 19 text

デプロイ自動化 → 顧客にも素早く展開が可能 19 顧客B 顧客C 顧客A 作業者 TFファイル 検証環境

Slide 20

Slide 20 text

今回作成した Chatアプリの自動デプロイの仕組み 20

Slide 21

Slide 21 text

Chatアプリの自動デプロイの流れ ● 人の仕事はコーディング&ブランチ作成だけ ● 静的解析/E2Eテスト→コード品質を高く保てる ● URLをクリックするだけで動作確認可能 21 GitHubに検証ブランチを作成する E2Eテストが実行される 静的解析が実行される 検証環境がデプロイされる App Service 検証環境 (デプロイスロット) 検証ブランチ 自動

Slide 22

Slide 22 text

この仕組みが”ない”と、PRレビューが遅くなる (参考) 22 開発者A 開発者B

Slide 23

Slide 23 text

この仕組みが”ある”と、PRレビューが速くなる 23 開発者A 開発者B

Slide 24

Slide 24 text

24 Azure OpenAIを使用した ChatGPTもどきを作るためのIaCとDevOps の作成過程で困ったこと

Slide 25

Slide 25 text

Azure OpenAIが最新サービスなので、サンプルコードが見つからない →ChatGPTに生成させたコードや試行錯誤で作ったコードでは、 Private Endpointの名前解決ができず... (ちなみに、手作業で作ると名前解決可能 ) IaC導入時の困りごと: サンプルコードがない 25 Azure環境 Virtual Network Azure OpenAI Service Network Security Group Network Security Group App Service Private Endpoin Private DNS

Slide 26

Slide 26 text

足りなかったコード 解決方法: terraform -generate-config-outを使う (2023年6月) terraformのv1.5から、既存リソースをコード化できるように → 手作業で作成した既存リソースから、コードを生成可能に。 26 generate- config-out 既存リソース TFコード

Slide 27

Slide 27 text

Private Endpointの名前解決のフロー (例) Virtual Network linkがないと、③のアクセスができない。 →Clientから Private IPが取得できない (参考URL) 27

Slide 28

Slide 28 text

まとめ ● IaCとDevOps導入により、Chatアプリを迅速にデプロイ可能に ● IaC導入時の課題: 最新サービスのためにサンプルコードがない ○ 手作業でリソースを作成して、-generate-config-outでコード作成が有効。 28 スターターパッケージ は、 本資料で説明したIaCとDevOpsを利用しています