LoginSignup
13
11

【Build 2023】AI Copilot時代 ~詳細解説版~

Last updated at Posted at 2023-05-28

Microosft Build 2023

Satya sessionのまとめは多い中、個人的にはその次のKevin Scoottのセッションが非常に良かったのでそのセッションを中心にまとめてみました。Microsoftに今までかかわりのなかったAWS UserGCP UserでもLLMに関わる方はぜひ最後まで見ていただけると今後のLLM時代の波をうまく乗りこなすことができるのではないかと思っています。

Copilot : AIの役割と実用性の再定義

Copilotとは現代のAIを利用し、会話型のインターフェースを持ち、ユーザーの複雑な認知的タスクを支援するアプリケーションのことを指します。この新たなAIの役割は、ユーザーのエクスペリエンスを豊かにするだけでなく、ビジネスやライフスタイルの可能性を広げる大きな役割を果たします。

image.png

Copilotの実例: OpenAI社 ChatGPTから学ぶ

OpenAIはそのGPT4モデルとChatGPTによって、AIの能力とポテンシャルをさらに押し広げています。これらのツールは、人々の日常生活やビジネスの運営方法に革命をもたらし、これまでにない新しいインタラクションと体験を提供しています。そしておそらく現在世界で最も興味深いCopilotであるChatGPTについても今後進化していきます。ちなみにChatGPTはAzureCosmos DBで動いています。
image.png

Copilotの実例: Microsoftから学ぶ

Microsoftは、そのビジョンを現実にするために多数のCopliotを開発し、公開してきました。これらのCopilotは、ユーザーが日々の業務を効率的にこなすための補助を提供し、ユーザーと機械の相互作用を再定義しています。MicrosoftのCopilotがユーザーの体験をどのように向上させているかを理解することで、AIがどのように進化しているかを把握することができます。下記はCopilotの例になります。
image.png

数年前にGitHub Copilotをはじめた時から、Copilotを作っていく中で気づいたことは、Copilotのアイデアは実際には非常に一般的であるということです。 つまり、ソフトウェア上で認知的に複雑なタスクをサポートするための、対話型のエージェントのようなインターフェースを持つというアイデアは、ソフトウェア開発の支援に限らず、さまざまな場面で応用できるということです。実際にそのようなCopilotが増えていることがわかります。現在は検索に特化したCopilotがあり、将来的にはセキュリティに関するCopilotや生産性を高めるCopilotが登場する予定です。また、皆さんが作り出すCopilotもたくさんあるでしょう。

そこでMicrosoftが気づいたのは、これらのすべてに共通する要素を見つける必要があるということです。これによって、優れたユーザーエクスペリエンスを設計する方法や、これらの機能を安全かつ費用対効果の高い方法で大規模に提供するための技術スタックを理解することができます。

このようなCopilotの発表を連続して行い、ユーザーにこれらの製品を迅速に提供できる唯一の理由は、マイクロソフトが時間をかけてCopilotの技術スタックを構築し、安全に迅速に進めるようにすることができたからです。

そして、マイクロソフトがCopilotリリースを大量に行った際に培った知見をより汎用化してプラットフォームに落とし込み、 それをすべての開発者が享受できるようにCopilot Stackとして抽象化しました。

PluginsによるLLMの無限の拡張可

基本モデルは強力でありますます強力になっているが、すべてのことを完全にはできないといわれています。たとえどんなにLinearにLLMが大きくなったとしても完全にはできないのではないかといわれています。
image.png

そこで登場するのがPluginsです。

image.png

image.png

  • Plugins
    AIシステムを補完、拡張してAPIにアクセスし、APIを通じてデジタルシステムの状態を変更したり情報を取得したりすることができます。 人々はPluginsを使って有用な情報を取得するために使用することになります。

image.png

Pluginsを使用することで、任意の計算を実行し、安全にユーザーの代わりに行動することができます。 Pluginsについて私たちが考えている方法は、それらがデジタル世界のアクチュエータのようなものだということです。デジタルで行うことができることはすべて、Pluginsを介してCopilotに接続できるということです。

image.png

そして、そしてその流れはMicrosoft 365 Copilot Pluiginsにも波及していきます。それはつまりPlugins Economy が来ると思っています。(対応しないわけにはいかない)

  • ChatGPT Pluginを簡単にPythonとFast APIで始める方法
    これは、GitHub Codespaces、VS Code、およびAzureを使用してChatGPTプラグインを作成するためのサンプルです。このサンプルには、Azure Developer CLIを使用してプラグインをAzure Container Appsにデプロイするためのテンプレートも含まれています。ChatGPTプラグインにアクセスするためには、Waitinglistに参加してください!

AIを使ったソフトフェア開発について

Copilotについて、さらに掘り下げてみたいと思います。Copilotとは何か、どのような構成をしているのか?何が共有されているのか?私たちがこれまでに構築したものの中で共通しているものは何か?そして、皆さんが自身のCopilotを構築するために私たちが構築しているプラットフォームコンポーネントは何か?といったことについて解説していきます。
image.png

これはユーザー体験から始まります。Copilotのユーザー体験を構築する際に同じであるものと異なるものがあります。アプリケーションのアーキテクチャが存在し、それには馴染みのある要素がある一方で、新たに学ぶべきものもたくさんあります。そして、私たち全員が安全性とセキュリティについて考えることが非常に重要です。そのうえで3つのポイントをおさえる必要があります。

  • 素晴らしい製品を作り出す
    Copilotを構築する際の基本的な要件は、その製品が素晴らしいものであることです。これは単にテクノロジーの活用にとどまらず、ユーザーの要望やニーズに深く洞察し、それを満たすソリューションを設計する能力を含みます。つまり、新たな技術が可能にした多くのものがあるとはいえ、それが私たちに良い製品作りについて考える責任を免除するものではないということです。

  • モデルはあなたの製品ではない
    技術的なモデルやインフラストラクチャは、製品の可能性を広げ、製品の実現を支えるものであり、製品そのものではありません。これは、製品開発においてモデルやインフラストラクチャに過度に注力し、最終的なユーザー体験や製品価値についての視点を見失うことの危険性を示しています。最終的な目標は、問題を解決し、価値を提供する製品を作り出すことであり、それを最もよくサポートするモデルやインフラストラクチャを選択し利用するべきです。

  • 素晴らしい体験を作り出す
    最終的には、ユーザーにとって価値ある体験を作り出すことが最も重要です。これは製品のデザイン、機能、使いやすさなど、多岐にわたる要素を含みます。ユーザーにとっての価値を最大化するためには、素晴らしい体験を作り出すことが求められます。また、それは迅速にユーザーの手に製品を届け、フィードバックを受け取り、製品を反復的に改善していくというプロセスを含むものでもあります。

上記の内容を踏まえて Copilot Stackについてみていきたいと思います。

Copilot Stackという概念について

LLMを使ったサービスの開発をするすべてのビジネスユーザー、エンジニアにとって必要となる基本的な考え方、そして時代の最先端をゆくOpenAIとMicrosoftの協業の中で、Microsoft何度も何度も試行錯誤して共通項をフレームワークに落とし込みMicrosoftが開発したCopilot Stackについて要素ごとに解説していきたいと思います。

image.png

一部はお馴染みのものかもしれません。三つのボックスがあります。これらは、通常のアプリケーションの三層に大まかに対応していると考えることができます。フロントエンド、ミッドティア、バックエンドがあります。

image.png

フロントエンドについては、すでに話した通り、皆さんの素晴らしいプロダクトアイデアを理解することから始まります。Copilotのユーザーエクスペリエンスデザインが少し異なるのは、私たちが180年以上も前から、Ada Lovelaceが最初のプログラムを書いて以来、ユーザーエクスペリエンスをほぼ同じ方法で構築してきたということです。つまり、私たちはマシンが何をできるのかを理解し、その後、人間とマシンとの間の接続を非常に明確な方法で表現する方法を模索してきました。

image.png

  • 自然言語を活用したシームレスなユーザーエクスペリエンス
    Copilotの特徴の一つは、開発者が自然言語を使ってコミュニケーションすることで、ユーザーエクスペリエンスを向上させることです。Copilotは、開発者のニーズや要望を理解し、ユーザーインターフェース要素やコードとの関連付けを容易にします。これにより、開発者は直感的な方法でアクションを実行し、コードに組み込まれた機能や能力に簡単にアクセスできるようになります。

  • Copilotの実現可能な範囲の把握
    Copilotの設計において重要なポイントは、Copilotが具体的に何ができるのかを理解することです。Copilotは、一部のタスクや機能に特化しており、全ての要求に対応できるわけではありません。開発者は、Copilotの制約や限界を認識し、適切なオーケストレーションレイヤーやPlugins、ファインチューニングモデルを活用することで、Copilotの機能を補完する必要があります。このような理解に基づいて、開発者はCopilotを効果的に活用し、タスクをスムーズに進めることができます。

  • Copilotに適さない処理や制約の設定
    Copilotは強力なツールですが、全ての処理や制約に対応するわけではありません。開発者は、Copilotには適さない処理や制約を明確に設定する必要があります。これは安全性や効率性の観点から重要です。Copilotの基礎となるモデルは非常に柔軟な機能を持っているため、開発者は特定の領域や要件にモデルを制約する必要があります。これにより、より適切な結果やセキュリティを確保することができます。例えば、GitHub Copilotでは、私たちが行った仕事の一部は、モデルがタスクに集中し続けるようにすることで、それは開発者の開発問題を解決する手助けをすることです。つまり、開発者がGitHub Copilotに座ってコードを書いているとき、松屋のメニューアイテムが何が最良かを調べるのではないということです。

-(余談:UXデザイナーむけ)
UX: Designing for Copilot セッションにてAzureとMicrosoft 365のデザイナーのリーダーたちが、ChatGPTのUXをどのように活用し、企業向けに適応させたかについて詳しく解説しています。皆さんが作成するCopilotが同じような魅力を持つための参考になるかもしれません。
image.png

次はミッドティアであるオーケストレーションフレームワークスについてです。

image.png

  • Copilotのビジネスロジックとしてのオーケストレーション
    オーケストレーションはCopilotのビジネスロジックであり、モデルのシーケンス制御やフィルタリング、プロンプトの増強など、アプリケーションの作成に必要なロジックを担当します。

  • Semantic Kernelの開発秘話
    Microsoftが自身のCopilotを構築し始めた際、Microsoft社内の全てのチームはそれぞれオーケストレーション層を構築していました。このオーケストレーション層は、モデルのシーケンス制御やフィルタリング、そしてアプリケーションを本当に素晴らしいものにするために必要なプロンプト増強など、様々な要素を統合するためのロジックです。そしてMicrosoftは内部のチームが独自に構築したオーケストレーション層に共通性を見出しました。そこでMicrosoftはCopilot を大量に提供し、より野心的で大胆なアプローチを可能にするために、内部で共通のオーケストレーションメカニズムの採用を決定しました。それこそがSemantic Kernelと呼ばれ、Microsoftはそれをオープンソース化しました。

  • オーケストレーションツールの選択肢
    Microsoftは、オーケストレーションメカニズムの共通性を認識していますが、LangChainなどの優れたオープンソースのオーケストレーションツールがAzureエコシステム内で利用可能になっています。開発者は自由にオーケストレーションメカニズムを選択することができます。また、開発者が独自のメカニズムを作成することも可能です。常にオープンで自由な選択肢が提供されています。

  • Prompt Flowの注目すべき役割
    Prompt Flowは、LangChainとSemantic Kernelを統一する別のオーケストレーションメカニズムです。これは、オーケストレーションの中でも注目すべき要素です。Prompt Flowは、Copilotのプロンプト処理に関与し、モデル間の統一性を促進します。開発者にとって有用なオーケストレーションの一つです。オーケストレーションの重要性と選択肢について詳しく説明しました。Copilotのビジネスロジックとしてのオーケストレーション、さまざまなツールの選択肢、そしてPrompt Flowの役割に注目し、開発者にとって最適なオーケストレーションメカニズムを選択できることを強調しています。

早く使いたい方はAzureML Insiders Program-Registration Form にて申し込み!

image.png

image.png

  • プロンプト (Prompt)
    プロンプトとは、アプリケーションのユーザーエクスペリエンスレイヤーによって生成される一連のトークンのことを指します。例えば、ユーザーがモデルに対して何かを求める質問や指示、あるいはアプリケーション自身が構築したものが該当します。これは直接的な自然言語の形式でユーザーから来るものでも、アプリケーションがモデルに伝える自然言語の形式でも構いません。

  • レスポンスフィルタリング (Response Filtering)
    レスポンスフィルタリングは、オーケストレーションの初期段階で扱われる大きな部分です。具体的には、プロンプトに対するモデルの反応をフィルタリングし、モデルがアプリケーションのニーズを満たさない場合もしくは、何か安全でない行動を起こす可能性があるプロンプトを許可しないようにすることです。また、モデルがプロンプトに対する反応を生成した後にもレスポンスをフィルタリングする場合があります。これは、プロンプトの一部または全体をフィルタリングしたいと判断した場合などに行われます。

  • メタプロンプト (Metaprompt)
    メタプロンプトは、開発者がCopilotに与える定常的な指示セットであり、すべての会話ターンでモデルに伝えられます。これは、作成しようとしているCopilotに適応する方法をモデルに指示するもので、大部分の安全性チューニングが行われる場所でもあります。メタプロンプトはまた、モデルにどのような性格を持たせたいかを示す手段でもあります。例えば、メタプロンプトを使用して、Bing Chatにバランスを取るように、または精度を重視するように指示することができます。これはまた、モデルに新しい能力を教える方法でもあります。

これはまた、モデルに新しい能力を教える方法でもあります。メタプロンプトデザインをファインチューニングの一形態と考えることもできます。 したがって、メタプロンプトで作業を行うことは、インフラストラクチャの下層に下りて自分自身のものを作り始めるよりもはるかに容易です。

image.png

メタプロンプトとプロンプトフィルタリングのステージを終えると、次に考慮すべきことは「グラウンディング(grounding)」というステップです。

  • グラウンディングの概要と目的
    グラウンディングは、AIモデルがより適切で具体的な回答を生成するために追加の情報やコンテキストを提供するプロセスです。プロンプトに関連する情報やデータを付け加えることで、モデルはより深いコンテキストを持ち、正確な応答を提供できるようになります。例えば、ユーザーからのクエリや質問(プロンプト)に対して、関連するドキュメントを検索し、それらをプロンプトに追加することで、モデルにより深いコンテキストを提供することができます。これにより、モデルはユーザーのクエリに対してより詳細かつ正確な回答を提供することが可能になります。

  • ベクトルデータベースを用いた検索補強生成(retrieval augmented generation)の手法
    これは、入力となるプロンプトからエンベディング(数値化された表現)を計算し、それらのエンベディングによってインデックス化されたベクトルデータベースを検索して、プロンプトに関連するドキュメントを探すという手法です。このような関連ドキュメントは、AIモデルがより具体的かつ適切な応答を提供するための追加の情報源となります。これはユーザーの問い合わせや要求に対して、モデルがより詳細で適切な回答を生成するのに役立ちます。

  • Web APIを用いたグラウンディング
    さらに、検索補強生成は、Web APIを用いてプロンプトに情報を追加するという形でも行うことが可能です。つまり、特定のWeb APIから得られる情報をプロンプトに組み込み、それをベースにAIモデルが応答を生成するという方法です。

  • Pluginsを用いたグラウンディング
    特定のPluginsを用いてもグラウンディングを行うことが可能です。これにより、特定のタスクや目的に合わせて、 AIモデルがどのように情報を解釈し、応答を生成するかをより細かく制御することが可能になります。

グラウンディングはLLMの応答生成において重要な役割を果たし、その手法や技術は日々進化し多様化しています。パフォーマンス向上とユーザーエクスペリエンス向上のために、適切なグラウンディング手法を選択することが重要です。

image.png

次に取り組むべきステップはPluginsの実行です。ここでは、先ほどグラウンディングで述べたように、モデルへ送られる前のプロンプトに追加のコンテキストを付加するため、またはモデルから戻ってくる途中で何かを実行するためにPluginsを使用するかもしれません。これにより、システム上で何かアクションを実行することができます。

最後はバックエンドである基礎モデル(Foundation Models)とファインチューニングについてです。

image.png

  • ホステッド基礎モデル(Hosted foundation models)とファインチューニングの利用
    Copilotプラットフォームでは、AzureやWindows上でホステッド基礎モデルを使用することができます。例えば、Azure OpenAI APIサービスで提供されているChatGPTモデルやGPT-4モデルなどがあります。これらのモデルをそのまま利用することも、ファインチューニングしてカスタマイズすることもできます。ChatGPT 3.5のファインチューニングAPIはすでに利用可能であり、GPT-4のファインチューニングも近日中に可能になる予定です。

  • 独自のモデルの利用(BYO Models)
    もしオーケストレーションレイヤーでできることをすべて試しても必要な結果が得られない場合、またはホステッドAPIやファインチューニングAPIが適用できない場合、独自のモデルを利用することも可能です。現在、オープンソースコミュニティで起こっている非常に活発な取り組みとも連携しているのですが、Azure内で利用できるAzure AIカタログ、モデルカタログ があります。これはHugging FaceGitHubで最も人気のあるモデル を見つけることができる場所であり、それらのモデルをAzureにプッシュボタンでプロビジョニングして展開し、Copilotで使用すること可能です。

image.png

OpenAIがトレーニングしている世界で最も野心的なモデル(GPT-4含む)から、Azure AIのスーパーコンピューティングインフラストラクチャを使用して小規模なモデルまで、幅広いトレーニングオプションが提供されています。

  • (余談:大規模なモデルを作りたい方向け)
    Bing Platformを例にLLM Serving Platform Architectureを公開しています。
    こちらは大人気セッションInside Azure innovations with Mark Russinovichにて解説されてます。

image.png

最後はAIの安全性(AI Safety) です。

image.png

Copilotを構築する際に最初に考えることであり、プロセスの各段階で考慮しています。

image.png

開発者は安全で責任あるAIアプリケーションを構築するためにこれらをビルドインするだけ安心安全なアプリケーション構築を行うことが可能になります。

image.png

またMicrosoftでは、メディアの起源追跡ツール(Media provenance tools) を提供しています。これにより、ユーザーが生成されたコンテンツを見ているかどうかを理解するのに役立ちます。私たちは、自社で生成しているすべてのコンテンツに透かしを入れ、AIアプリケーションやCopilotが合成コンテンツを生成している場合には、APIを呼び出してこれらの暗号証明透かしをツールに追加することができます。世の中の様々な問題を解決するツールになると信じています。

image.png
Copilots。皆さんへ、Microsoft からは新しいソフトウェア開発パターンについて共有しました。MicrosoftがCopilotsの設計について考える方法や、MicrosoftやパートナーからたくさんのCopilotsが登場するという情熱をお伝えしましたが、実際にはこの記事を読んでいる皆さんこそが世界で最も興味深いCopilotsを作り出す存在だとと私自身は思っています。これは他の主要なプラットフォームと同じです。パソコンを素晴らしいものにするのは、インターネットを素晴らしいものにするのは、スマートフォンを素晴らしいものにするのは、それらのプラットフォームが登場するときにリリースされるものではありません。それらの上に皆さんが作り出すものこそが重要なのです。

image.png

最後に

セッションのKevin の小話をそのまま掲載します。

I want to share one anecdote before we go.
I was an intern at Microsoft Research in 2001, I came to MSR with my PhD advisor when he went on sabbatical. We would go out with our research group every Thursday to this burrito joint in Bellevue that I think it's closed now, called Acapulco Fresh. Occasionally this gentleman would join us, his name is Murray Sargent.
Murray, like I was a 30-year-old PhD student, seemed like a legend to me because Murray was the guy who had broken the 64K limit on the Intel microprocessors. Many of you may be too young to even remember this, but at one point in time, the computers that we shipped could only use 64 kilobytes of memory for doing the work that they had to do, and Murray was the guy, when the 286 came out, that figured out protected mode and got Microsoft software to work beyond that 64K memory barrier.
It's unbelievable to think about what impact small things like that had on the trajectory of the industry. I was in awe of Murray and I wondered every time we had lunch with him, what am I ever going to do in my career that would allow someone like me, a younger version of myself to look at me and think, "Wow, like this guy did some legendary stuff.
" This is the moment for all of us now; we have capabilities in our hands with these new tools, in the early days of this new platform, to absolutely do amazing things, where literally, the challenge for you all is to go do some legendary shit that someone will be in awe of you for one day.

(訳)
話を終わる前にひとつエピソードを共有したいと思います。
私は2001年にMicrosoft Researchでインターンをしていました。私の博士号の指導教官が休職する際に一緒にMSRに来たのです。毎週木曜日に私たちは研究グループと一緒にBellevueのこのブリトーのお店、今は閉店してしまったと思いますが、Acapulco Freshというお店に行っていました。時々、この紳士が一緒に来ていました。彼の名前はMurray Sargentです。
私は当時30歳の博士課程の学生で、Murrayは私にとって伝説のような存在でした。なぜならMurrayはIntelのマイクロプロセッサの64K制限を破った人物だったからです。多くの皆さんはこのことを覚えていないかもしれませんが、当時、私たちが出荷したコンピュータは64キロバイトのメモリしか使用できませんでした。そしてMurrayは286が登場したとき、プロテクテッドモードを解析し、Microsoftのソフトウェアを64Kのメモリ制限を超えて動作させる方法を見つけました。
小さなことが産業の進路に与える影響を考えると信じられません。私はMurrayに畏敬の念を抱いていましたし、彼とランチをするたびに、私のような若い世代の人が私を見て、「この人は伝説的なことをしたんだな」と思えるようなキャリアを積んでいこうと思ったものです。
今こそ、私たち全員にとっての瞬間です。私たちは、この新しいツールで、この新しいプラットフォームの初期に、絶対に素晴らしいことができる能力を手にしています。文字通り、皆さんへの挑戦は、いつか誰かがあなたを畏怖するような伝説的なことをやってみることです。

image.png

引用
The era of the AI Copilot | KEY02H
Next generation AI for developers with the Microsoft Cloud | KEY03H
Azure AI Studio: Satya Nadella at Microsoft Build 2023
Inside Azure innovations with Mark Russinovich | BRK290HFS
UX: Designing for Copilot | DIS214H

参考

image.png

13
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11