Slide 1

Slide 1 text

2024年11月21日 JAWS-UG SRE支部 #10 SREでもAI活用がしたい! SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~

Slide 2

Slide 2 text

About Me ogady | Takumi Ogawa(@_ogady_) ● 株式会社エウレカ ○ 2021年にSREとして入社 ■ 現在はSRE/Data Platform Team ○ 最近はボルダリングしたり、HoYoverseゲーム やったり、帯状疱疹という病にかかったり

Slide 3

Slide 3 text

Agenda 1. AIOpsとは 2. AIOpsの実践に向けて 3. 最近の取り組み 4. まとめ/今後の展望

Slide 4

Slide 4 text

①AIOpsとは

Slide 5

Slide 5 text

AIOpsとは ● IT運用効率の向上を目的としてAI技術を活用し、パフォーマンス監視、ワークロードスケジュー リング、データバックアップ等のタスクを自動化するプロセス ● AIOpsのユースケース ○ アプリケーションパフォーマンスモニタリング(APM) ○ 根本原因解析 ○ 異常検出 ○ クラウドの自動化と最適化 ○ アプリケーション開発サポート 参考: AIOps とは何ですか?(https://aws.amazon.com/jp/what-is/aiops/)

Slide 6

Slide 6 text

AIOpsとは ● IT運用効率の向上を目的としてAI技術を活用し、パフォーマンス監視、ワークロードスケジュー リング、データバックアップ等のタスクを自動化するプロセス ● AIOpsのユースケース ○ アプリケーションパフォーマンスモニタリング(APM) ○ 根本原因解析 ○ 異常検出 ○ クラウドの自動化と最適化 ○ アプリケーション開発サポート 参考: AIOps とは何ですか?(https://aws.amazon.com/jp/what-is/aiops/) これ、SREのプラクティスをAI活用でさら によくしていこうって話なのでは??

Slide 7

Slide 7 text

② AIOpsの実践に向けて

Slide 8

Slide 8 text

AIOps実践に向けて: SREチームがAIOpsに投資するとは ● そもそもSREとしてAIOpsに取り組む時のスコープって? ● SREという立場から、AIOpsの実践をするには知見が足りない・・・ ● 定常の業務を行いながら投資するための工数 is ・・・

Slide 9

Slide 9 text

②-1 SREとしてAIOpsに取り組むスコープ

Slide 10

Slide 10 text

AIOps実践に向けて: LLM for Developerという考え方 SREが投資するスコープを「LLM for Developer」として定義 LLM for Developerとは Developerの開発/運用効率向上を目的とし、LLMを利用した開発・運用支援のツール開発を行うこと ● 主にLLMの技術領域を活用する ○ 本格的な学習を含むMLOps領域やProductのAI機能はAIチームの専門とする ● ここでいうDeveloperとは ○ アプリケーション開発者 ○ インフラ・データ基盤開発者 ○ データ基盤利用者(データアナリスト含)

Slide 11

Slide 11 text

②-2 AIOpsのキャッチアップと実践にむけて

Slide 12

Slide 12 text

AIOps実践に向けて: AIチームとの協業 SREチームの課題感 ● AIOpsに関わるスキルはPlatformを担うSREチーム のケイパビリティとして持っているべきだが、 キャッチアップできていない... AIチームの課題感 ● AIチームは、LLMやAIOpsに先行投資を行っている が、リソースが限られており高頻度で変化する多様 な開発者のニーズを把握して対応するのはきつい... AIチーム SREチーム

Slide 13

Slide 13 text

AIOps実践に向けて: AIチームとの協業 ● 先行投資しているAIチーム + 守備範囲が幅広くニーズを把握しているSREが協働し、キャッチ アップやAIOpsの実践に向けてLLM for Developerチームとしてプロジェクトチームを組成 Assemble!!!

Slide 14

Slide 14 text

AIOps実践に向けて: AIチームとの協業 AIチームではLLM Application(社内ツール/プロダクト)のEval-drivenなリリースライフサイクルの 実現をサポートするLLMOps基盤を作成中。LLM for Developerチームではこの基盤を利用する形で LLMアプリケーション開発を行う LLMOps基盤は下記機能を提供 ● ログ/トレース ● 評価データセット管理 ● 継続評価(LLM-as-a-Judge) ● 実験管理 ● プロンプトマネジメント

Slide 15

Slide 15 text

②-3 AIOpsに投資する工数確保のための座組

Slide 16

Slide 16 text

AIOps実践に向けて: SREチームプリンシパルの変更 SREチームとしてAIOpsの工数を確保するために、チームプリンシパルを変更   → チームとしてAIOpsに対して取り組む責務があることを明記し、チーム戦略として組み込む ● Development Support Tools ○ 開発生産性の向上に対する寄与。 ○ 複数のチームにおいて存在する共通のニーズを抽出し、解決を支援するツールを提供する事で全 てのチームの生産性の向上とオペレーションの品質の向上・簡略化を目指す。 ○ ChatOpsを中心とした、developerがself serviceでdeliveryできる領域の拡張 ○ AIOps領域への投資・実践 ■ 2024年現在は以下のようなテーマを中心に調査・実装を行い、実際の開発プロセスへの 組み込みについて試行/評価を行っている。 ● コーディング&レビュー支援 ● システム&データ仕様記述支援 ● システム&データ仕様参照支援 ● インシデント対応支援 ● 会議効率化支援 ● 技術キャッチアップ投資 New!!

Slide 17

Slide 17 text

AIOps実践に向けて: SREチームプリンシパルの変更 SREチームとしてAIOpsの工数を確保するために、チームプリンシパルを変更   → チームとしてAIOpsに対して取り組む責務があることを明記し、チーム戦略として組み込む ● Development Support Tools ○ 開発生産性の向上に対する寄与。 ○ 複数のチームにおいて存在する共通のニーズを抽出し、解決を支援するツールを提供する事で全 てのチームの生産性の向上とオペレーションの品質の向上・簡略化を目指す。 ○ ChatOpsを中心とした、developerがself serviceでdeliveryできる領域の拡張 ○ AIOps領域への投資・実践 ■ 2024年現在は以下のようなテーマを中心に調査・実装を行い、実際の開発プロセスへの 組み込みについて試行/評価を行っている。 ● コーディング&レビュー支援 ● システム&データ仕様記述支援 ● システム&データ仕様参照支援 ● インシデント対応支援 ● 会議効率化支援 ● 技術キャッチアップ投資 New!! LLM for Developerの工数として - SRE 1人月 - AI 1人月 を確保することでチーム間で合意

Slide 18

Slide 18 text

③ 最近の取り組み

Slide 19

Slide 19 text

最近の取り組み ● 障害対応Slack Botに障害対応報告文書自動作成機能追加 ● Pairsの開発、運用、機能、障害対応に関する質問を解決するQ&A LLM ChatBot (Pairs Navi)を提供 ● LLM for Developerが投資する開発アイテム整理 ● GitHub PullRequestに対するAI Reviewの拡張

Slide 20

Slide 20 text

Pairsの開発、運用、機能、障害対応に関する質問を解決するQ&A LLM ChatBot(Pairs Navi)を提供 ● Pairsの開発、運用、機能、障害対応に関する質問を解決するLLM ChatBotを提供 ○ ドキュメント情報を基に構築したRAGを活用し、一般的なLLMの知識も踏まえ多言語 で質問に答える。テキストだけでなく画像やpdfのインプットにも対応 ○ 翻訳機能や文章校正機能も一部のユースケースのために提供 ○ 障害対応チャンネルが作成されると、Pairs Naviも自動でInviteされ、いつでも対応 者が活用できる状態に ○ 障害対応に不慣れな人でも簡単に障害対応プロセスをキャッチアップ可能な状態に し、プロセス認知負荷軽減を目指す 詳細はこちら: ペアーズにおけるAmazon Bedrockを⽤いた障害対応 ⽀援 ⽣成AIツールの導⼊事例

Slide 21

Slide 21 text

障害対応Slack Botに障害対応報告文書の自動作成機能を追加 ● インシデントコマンダーが障害状況を報告するための報告文書を、障害対応チャンネルの メッセージと障害チケットの情報から自動生成する機能を提供 ○ 障害対応中にコマンダーが報告書を書く負担や工数削減 ● 同様に、振り返りの際に作成するポストモーテム文書についても生成をサポート ○ コマンダーが主導する振り返りの負担や工数削減 詳細はこちら: ペアーズにおけるAmazon Bedrockを⽤いた障害対応 ⽀援 ⽣成AIツールの導⼊事例

Slide 22

Slide 22 text

LLM for Developerとして投資すべき項目を分類 LLM for Developerで投資するべき課題を6項目にカテゴライズ 1. コーディング&レビュー支援 ○ 開発効率やレビュー精度向上を図る 2. システム&データ仕様記述支援 ○ ドキュメントの生成サポートや品質向上を図る 3. システム&データ仕様参照支援 ○ ChatBot、LLM agentにより仕様の把握をサポートする 4. インシデント対応支援 ○ インシデント対応のコマンダーサポートや原因調査の効率化を図る 5. 会議効率化支援 ○ MTG議事録の生成や、文字起こしなどのサポート(Tool選定なども含) 6. 技術キャッチアップ投資 ○ アップデートや新技術開発が高速なLLM領域のキャッチアップ

Slide 23

Slide 23 text

LLM for Developerとして投資すべき開発アイテム整理 6項目の課題に対してLLM for Developerという文脈で成果が出そうなものをブレスト形式で列挙 ● アウトカムを議論して優先度付けを してチケット管理 ● 都度出てきたアイテムは週次MTGで リファインメント ● 今Q、来Q以降で着手するアイテム を整理しアサインする

Slide 24

Slide 24 text

GitHub PullRequestに対するAI Reviewの拡張 GitHub PullRequestに対するAI Reviewを拡張し、社内のコーディング規約に沿ったレビュー機 能を追加 ● 社内コーディング規約のレビューが難しいという課題 ○ 規約の量が多い ○ 新規参入者は特に、レビューで毎回意識しないといけないので効率が悪い ○ 自動でレビューされて自己解決できるとレビュワーもレビュイーも楽 ● tmokmssさんの、bedrock-pr-reviewerを拡張 ○ https://github.com/tmokmss/bedrock-pr-reviewer ● GitHub Wiki上の社内コーディング規約を`system_message`に組込むかたちでプロンプト チューニング ○ 社内コーディング規約の文量がそこまで多くないため、そのままコンテキストとして 渡すことが可能だった。

Slide 25

Slide 25 text

GitHub PullRequestに対するAI Reviewの拡張: 実装 GitHub Actionsとして組み込み: 一部抜粋 name: AI review internal style guide jobs: Run-Bedrock-review: runs-on: ubuntu-latest steps: - name: Checkout Wiki uses: actions/checkout@v4 with: repository: ${{ github.repository }}.wiki token: ${{ secrets.GITHUB_TOKEN }} path: "wiki" - name: Load Go Style Guide id: load-go-style-guide run: | GO_STYLE_GUIDE_CONTENT=$(cat wiki/Style-Guide.md) echo 'GO_STYLE_GUIDE_CONTENT<> $GITHUB_ENV echo "$GO_STYLE_GUIDE_CONTENT" >> $GITHUB_ENV echo 'EOF' >> $GITHUB_ENV - name: PR review uses: tmokmss/bedrock-pr-reviewer env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: debug: false path_filters: | **/**.go disable_release_notes: true bedrock_heavy_model: "anthropic.claude-3-5-sonnet-20240620-v1:0" system_message: | ## この後のスライドで話します GitHub Wikiをcheckout 社内コーディング規約(スタイルガイ ド)を読み込み、$GITHUB_ENVとして 設定 tmokmss/bedrock-pr-reviewerを利用、 アプリケーションコード(*.go)のみがレ ビュー対象 リクエスト数が少ないため、性能重視で モデルはclaude-3.5 sonnet v1を利用

Slide 26

Slide 26 text

GitHub PullRequestに対するAI Reviewの拡張: 実装 system_message: | You are `/reviewbot` (aka `github-actions[bot]`), a language model trained by Bedrock. Your purpose is to act as a highly experienced software engineer and provide a thorough review of the code, focusing solely on compliance with the internal Go Style Guide. For code reviews regarding Golang, review strictly based on the internal Go Style Guide included here: ${{ env.GO_STYLE_GUIDE_CONTENT }} When reviewing the code, prioritize checking the following based on the internal Go Style Guide: - Adherence to naming conventions, formatting, error handling, and documentation as specified in the guide. - Code readability and consistency according to internal policies. In your response, include the following reference URL for the Go Style Guide written in markdown : ${{ env.GO_STYLE_GUIDE_URL }} example: > ref: ${{ env.GO_STYLE_GUIDE_URL }}#<> Please answer this prompt in ${{ contains(steps.get_labels.outputs.result, '-en') && 'en-US' || 'ja-JP' }}. Avoid any feedback or comments that are not directly related to the internal Go Style Guide requirements. system_messageとして渡すプロンプト抜粋: 基本的にはベースとなっている デフォルトプロンプトを踏襲。 社内コーディング規約をそのま まコンテキストとして渡し、そ れを参照してレビューするよう 指示 レビュー結果に参照したコー ディング規約のURLを出力する ように指示することでレビュ イーに伝わりやすくする

Slide 27

Slide 27 text

GitHub PullRequestに対するAI Reviewの拡張: レビュー結果 コーディング規約(例) ============================= Exists (Select) - ✅ 対象レコードの存在チェックを実行し たい場合、 SELECT 1 を使用する - ❌ レコードそのものを取得しない ============================= referenceも示した上で、社内コーディン グ規約に沿ったコードレビューが自動で行 われるように

Slide 28

Slide 28 text

⑤ まとめ/今後の展望

Slide 29

Slide 29 text

まとめ ● ペアーズでは専門家であるAIチームとSREチームがちゃんと協調する座組を作り、AIOpsに取 り組んでいく ○ 開発者のニーズをプラットフォーマーとして実現していく以上、個人プレーではなく、 組織として戦略的に取り組むためのスキームが重要 ● AIチームの先行投資含め、いくつか施策を進めている状況 ○ 特にnariによる障害対応改善の施策の評価がとても高い ○ AIによる自動PullRequest Reviewはリリースしたばかりなのでフィードバックを取り込 みつつ運用していく ● 新しい技術領域へのチャレンジの側面もあるので、技術的な楽しさがある

Slide 30

Slide 30 text

● 品質の高いLLMアプリケーションを作成するためには、まずはコンテキストとして使用するデータ ソースの充実が必要 ○ LLMアプリケーションだけでなく、DataCatalogなどを利用したメタデータの網羅と管理 ○ システム&データ仕様記述支援などによるドキュメントの網羅性と精度向上 ● AIチームのLLMOps基盤との連携により、評価のプロセスを作り、提供ツールの性能向上のサイク ルを回せるようにしていく 今後の展望: AIOpsの好循環を目指して

Slide 31

Slide 31 text

● AIOps とは何ですか?(https://aws.amazon.com/jp/what-is/aiops/) ● tmokmss/bedrock-pr-reviewer(https://github.com/tmokmss/bedrock-pr-reviewer) ● ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 (https://speakerdeck.com/fukubaka0825/peazuniokeruamazon-bedrockwo-itazhang-hai -dui-ying-yuan-cheng-aiturunodao-shi-li-at-20241115pei-xin-awsuebinadeng-tan) 参考資料

Slide 32

Slide 32 text

No content