Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

GitHub Universe ~Copilotのウラ側!コードが提案されるまでに何が起きている?~

日本の皆さん、こんばんは!
GitHub Universe現地参加してきた、マーケ部しんばです。
現地時間の今日、羽田へ向けてフライト🛫ですが、まだブログにできていなかったセッションがあるので、公開します!

Jen AgarwalとTrevor Carnahanによる、「Building mindfully: Managing scale and responsibility in AI tool development」というセッションです!

リスクや責任の管理についてのセッションで、Copilotが提案を出力するまでに、どんなことが行われているか紹介されました!

GitHub Copilotという魔法のようなAIツールの前提

2人は、GitHub Copilotはまるで魔法のようなAIツールで、会場の参加者も実感しているはずだと力強く述べていました。

しかし、「強力な新技術には巨大な責任が伴う」ということを忘れてはいけない。

これがこのセッションのメインテーマです。

Copilotをより責任のある、安全な製品とするためにGitHubはどのような取り組みをしているのでしょうか?

Copilotは、Microsoft AI原則に則る

前提として、GitHub社において大規模言語モデル(LLM)を利用した開発は、MicrosoftのAI原則が適用されます。

MicrosoftのAI原則というのは、「Responsible and trusted AI(責任のある信頼されたAI)」のことで、 6つの基本原則として、アカウンタビリティ、包括性、信頼性と安全性、公平性、透明性、プライバシーとセキュリティを挙げています。

詳細は以下のMicrosoft公式ページをご覧ください。
learn.microsoft.com

Copilotは、世界中のユーザーが安心して使えるように、これらの基準を厳格に満たしている必要があります。

そのために、どのようなことをしているのでしょうか?

リスクインパクトの評価

まず、GitHubチームはCopilotによって起こり得るリスクインパクトの評価したそう。

簡単にいうと、アプリケーションの意図したユースケース、意図していないユースケースをリストアップし、ユーザーにとってどのようなインパクトが起こり得るのかを評価します。

大規模言語モデルとして、さまざまな課題やクリエイティブを補助できる一方で、差別や有害なコンテンツの生成など意図しないユースケースで利用されることもあります。

それらの有害なユースケースが実行されないように、Copilotはそれらのプロンプトや出力をフィルタリングする必要があります。

Copilotのフィルタリング

Copilotには、ユーザーが入力したプロンプトそのものを評価(フィルタリング)し、「ユーザーの求めたプロンプトに答えない」という機能が備わっています。

多層フィルタリングを実装しており、まずは「プロンプトそのものが有効であるか」チェックし、その後に「Copilotの答えが適切であるか?」を再度確認をしているとのこと。

なるほどなるほど、多層フィルタリングをすることで意図しないユースケースに対し予防をしていたのですね。

各フィルタリングにも、さらに細分化されたステップがあるそうです。

プロンプトフィルタリング(ユーザーからCopilotへの指示)

  1. 意図しているユースケースかどうか判断する
  2. 毒性フィルタ
    • 毒性フィルタは、ヘイトスピーチや差別、自傷などの内容のこと
    • 毒性フィルタの中にもさらに2つのフィルタがある。
      • 「LLMとして判別するもの」と「あらかじめリストアップされたキーワードとのマッチング」

提案フィルタリング(Copilotからユーザーへの答え)

  1. 毒性フィルタ
  2. オフトピックフィルタ
    • 意図しない回答/ユースケースとになっていないかどうか
  3. パブリックコードとのマッチングフィルタ
    • Copilotには、「Publicコードとの一致を防ぐ」という機能があります。パブリックコードと一致し、この機能がON(Block)になっている場合、このフィルタに引っかかります
    • パブリックコードと一致していて、Copilotユーザーがそれを許可する場合、Copilotはリファレンスを提示します
  4. 品質フィルタ
    • SQLインジェクションやハードコードされたシークレットなどが存在しないか確認し、より安全なコードを提案します
    • Copilot Chatでは品質フィルタに引っかかった場合、その旨を知らせる回答をだすという挙動になっています

毒性や品質フィルタについては、レッドチームを結成し、特定の害・オープンな害を検証、フィルタ実装しているとのこと。

レイテンシとの戦い

Copilotは単純にプロンプトを理解し、提案するだけの技術技術ではなく、上記のような多層フィルタリングを実装していることがわかりました。

そこで問題はレイテンシです・・・。

フィルタリングはいいけど、回答はすぐにほしいですよね!?w

もともとMicrosoft Azure上で開発をされているCopilotですが、レイテンシを削るために日中や相当な努力があったとのこと・・・感謝感激です・・・。

Copilotの返答を1行に絞ることでかなりレイテンシを抑えてるとのこと。

Copilot Chatの負担はそこそこでかいんですかね〜〜。マシンパワー含め、かなりの負荷がかかっていると語られていました。

まとめ・所感

「Copilot便利だな〜」とのほほんと利用している裏には、血と汗の滲む努力があるんだなあというセッションでしたw

ユーザーとして意識することはないかもしれませんが、GitHubのCopilotに取り組む姿勢は、Copilotを選択するひとつの要因になることもあるかなと思いブログにしてみました。いやあ、面白いですね。

レイテンシについてはもっと熱く語られていたのですが、専門外すぎてちょっと私の手には追えませんでしたw
もしかしたら誰かが書くかもしれないし、私自身いずれ勉強して理解できるようになりたいものです。

以上、GitHub Copilotの裏側の話でした!


サービス一覧

www.alterbooth.com

cloudpointer.tech

www.alterbooth.com