$30 off During Our Annual Pro Sale. View Details »

Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOps環境を作ってみた

Azure OpenAIを使用したChatGPTもどきを作るためのIaCとDevOps環境を作ってみた

SoftBank Tech Night

July 28, 2023
Tweet

More Decks by SoftBank Tech Night

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide