マイクロソフトとOpenAI

蒲生弘郷氏:こういうことを言うと、「またマイクロソフトの人間が大きなことを言ってポジショントークをしている」みたいになりますが、GPTは正しい使い方と注意点を踏まえていかないといけない部分はやはりあると思うので、今日のこの講演の中でしっかりその内容について把握いただいた上で、活用方法について見いだしてもらえればと思います。

すでに時間を30分使っていますが、OpenAIについて簡単に説明します。OpenAIはもともとマイクロソフトとは独立している、2015年に設立された会社です。ChatGPTはもちろん、「DALL・E」といった画像生成系のモデルも含めて展開しているような企業です。

DALL・Eはテキストから画像を生成するAIで、GPTに比べると若干地味ではありますが、こちらも「Bing Image Creator」とかで使えます。

あとは「Microsoft Designer」と呼ばれるツールも使えるようになっています。本当はデモを見せたかったんですが、時間がないのもあって、本日はDALL・Eのデモについては省略します。

マイクロソフトとOpenAIですが、今はパートナーシップも結んでいます。結んだのは2019年からで、パートナーシップを皮切りにリリースされたGPT-3モデル、それからDALL・Eといったそれぞれのモデルは、基本的にはマイクロソフトのパブリッククラウドであるAzure上で稼働しています。

そして、これからOpenAI社が出していくAIのモデルについて、パブリッククラウド上で展開をする場合には、マイクロソフトのAzure上でしか展開されないといったかたちのパートナーシップが結ばれているので、ほかのベンダーさんからOpenAIのモデルが提供されることは基本的にありません。

具体的なサービスとしてはM365などもGPTを内部で使っているので、既にいろいろな製品の中にGPTモデルが含まれているかたちになります。

(もし)企業さんが「自社のサービスに使っていきたいよ」「社内で使っていきたいよ」となった場合にどういう手段があるのかというと、GPTをカスタマイズして、いわゆる自社にフィッティングさせた使い方をしていく場合には、Azure AIというカテゴリーの中の構築済みのAIをAPIで提供する。

機能だけをシステムに組み込んでいくためのサービスとして、「Cognitive Services」がありますが、そのCognitive Servicesの1ファミリーとして「OpenAI Service」が位置付けられています。

Azure OpenAI Serviceならではの特徴

このAzure OpenAI Serviceですが、OpenAI社でもAPIが公開されています。「じゃあどういう違いがあるんだ」という話になってくるので、Azure OpenAI Serviceならではの特徴を書きます。

何度もお話ししているように、Azure OpenAI ServiceはAPIのサービスになっているので、エンドポイントはお客さま独自環境で立てられるかたちになります。立てられた場所にデータとリクエスト、つまり入力を送ってあげると、GPTが解釈した上でその推論結果、いわゆるテキスト生成をしてくれて返してくれます。

なので、システムに組み込むとかアプリに組み込むとかサービスに組み込むという場合には、このエンドポイントにリクエストを投げてあげて、その出力結果を返してシステム上で表示させる。あるいはバックエンドに取り入れてから表示させるみたいなことをやっていくかたちになります。このサービスはOpenAI社と競合になっているという位置付けではなくて、基本的には足並みをそろえてやっています。

API仕様とかライブラリとかも基本的にはOpenAI社が公開しているAPIとまったく同じようなものが使えるので、パラメーターを変更していくだけでAzure OpenAI Serviceに移れます。このAzure OpenAI Serviceは、OpenAIのAPIの安定稼働版のようなイメージを持ってもらえればいいかなと思います。

(Azure OpenAI Serviceは)SLA(Service Level Agreement)を規定していて、可用性とか個別環境で立っていくので、レイテンシーがほかのユーザーの利用によって制限されることがないようなかたちで、安定した稼働で使っていただけます。

あとはセキュリティ機能。いわゆる「Azure Active Directory」という権限を管理してあげて、「この人はいじれるけど、この人はいじれない」といったような認証であったり、あるいは「データを外に出したくないのでプライベートなネットワークの中に隠蔽してあげて、このネットワーク内でしかやり取りができないようにする」などの機能が提供されています。

ここのデータの取り扱いなどを含めて、非常に多くのお客さまからお問い合わせをいただくことがあるので、全部とは言いませんが、ちょっと紹介します。

まずデータの取り扱いになります。提供されたトレーニングデータ。Azure OpenAI ServiceはGPTにトレーニングデータを与えて、いわゆるFine tuningを行ってカスタマイズする機能があります。GPT3系のモデルについて、Fine tuningはリソースの関係上、今はまだ公開されていないというところもあって、お使いいただくお客さまは一瞬少ないです。

今後もし(Fine tuningを)使う場合、お客さまのモデルをトレーニングするために使ったデータは、マイクロソフトのモデルをトレーニングや改善をするために一切使用しないというかたちで明言しています。

また、Fine tuningに使われたデータは、いったんAzureストレージに置く必要はありますが、配置する際にはちゃんと暗号化されて、学習後はユーザーの判断で削除が可能になっています。同じく、チューニングした後のモデルもユーザー判断で削除が可能になっています。Fine tuningについてはこういったデータの取り扱いになっているので、ご安心いただければと思います。

もう1個、データの種類があります。実際に立ち上がったAIモデルとして入力と出力が出てくるようなかたちになると思いますが、この入力と出力のデータについては、悪用、誤用が非常に多くなってきているので、監視目的でデフォルトでは30日間保存されて、(顧客から)許可されたマイクロソフト社員が障害時などにレビューをしていく可能性があるというかたちで記載しています。

ただ、やはりエンタープライズでの利用も含めて使っていただくような用途になっているので、ここらのプロセスはオプトアウト申請、つまり「承認された場合にログは保持されない」といった申請を上げることが可能になってきています。

そういったオプトアウト申請が承認されると、承認されるとログはまったく保持されず、トレーニングデータとして使われないかたちになるので、完全にお客さまのプライベート環境で使っていただけるようになっていっています。

自分のサービスに組み込む、あるいは会社で利用していく場合には、Azure OpenAI Serviceの検討をしていただけると幸いです。

あと特筆すべきところでいうのであれば、サポートが使えます。本家OpenAI社ではサポートを含めて行っていないですが、Azureではサポートされています。

(スライドを示して)黄色で書いた部分はAzure独自のものになっています。あとはリージョンですね。日本リージョンを今鋭意で検討中ではありますが、(現状は)米国の東部、それから米国の中南部、西ヨーロッパの3つのリージョンが利用可能になります。

私自身も「早く日本リージョンが来ないかな」と心待ちにしているんですが、今のところアナウンスはないので、今後の動向に期待いただければと思います。

あとは、開発ツールとしてChatGPTのチャットを使っていく上でのプレイグラウンドも後ほど紹介しますが、こちらも提供されています。けっこう使いやすいものになっているので、後ほど説明させてください。

提供可能なAIモデルの一覧としては、GPTモデルはEmbeddingと呼ばれる、テキストをベクトルに直してあげて、テキスト同士の類似度を測るようなかたちで利用されるようなモデルも含めて提供されています。

DALL・Eモデル、ChatGPTモデルは今のところpreviewというかたちにはなっていますが、やはり個別環境で立てられることについては違いはないし、GPT-4もwaitlist登録してもらえれば使っていただけます。

レイテンシーはある程度安定したようなかたちになっているので、preview版でも十分実用に耐え得るかたちで使っていただける状況ではあるかなという(ところです)。ここについてはちょっと省略します。

Azure OpenAI Serviceのプレイグラウンドのデモ

せっかくお集まりいただいたので、ここからは画面キャプチャーじゃなくて、実際の画面を確認していただきながら紹介したいと思っています。(Azure)OpenAI Serviceのプレイグラウンドについて説明します。

(画面を示して)このプレイグラウンドは開発者用のメニューになっています。ここを見てもらいながら開発をしていって、自分の作りたいチャットボットを作れます。

実際の例を左から見ていくと、アシスタントのセットアップがあります。ここにいろいろな例が用意されています。英語でちょっと申し訳ない部分もありますが。

例えばXboxのカスタマーサポートエージェントみたいなかたちで(ドロップダウンメニューの)「Xbox customer support agent」を押します。

そうすると、もともと教えておく用のシステムメッセージや後ほど出てきますが、Few-shot Learningという「こう聞かれたらこう答えなさいよ」という例示を記載できるという例になっています。

ここもシステムメッセージとかユーザーとアシスタントの回答例みたいなところを、自身で使われるチャットボットに合わせて変更してもらえれば、その振る舞いをしてくれます。ChatGPTはもともとそういう性質があるので、ここの調整が肝になる。

じゃあ実際にここに「こんにちわ」と打ってみます。「わ」がおかしくなっていますが、(このまま)いきます。

実際にシステムメッセージを打った時にどういう振る舞いをしてくれるのかをシミュレートしながら開発ができます。もともとAzure OpenAIはAPIで提供されるサービスと言っているので、ここはあくまでシミュレート画面ということで。

「実際にAPIに呼び出す場合にはどういうコードになるの?」という(ところを見ることができます)。

コードを自動で生成してくれたり、見かけ上は「こんにちは!」「私はXboxのカスタマーサポートエージェントです」みたいなかたちで出ますが、裏ではどんなものが打たれているのか。システムの中で、「あなたはXboxのカスタマーサポートです」というようなメッセージが打たれていたり(します)。

あるいは、「ユーザーとアシスタントの回答事例みたいなものを出してくれたり(する時には)、裏でこういうふうにプロンプトが打たれていますよ」というところが表示させられたり(できます)。

これも後で説明しますが、右側のパラメーターを調整してもらいながら、どういうチャットボットにしていくのかを仕立てていけるということで、けっこう便利なかたちになっています。

Azure OpenAI Serviceのプレイグラウンドのパラメーターについて

じゃあ、(次に)GPTのパラメーターの意味についてちょっと解説します。パラメーターについて深くは追求しませんが、1つ重要なところだけ。

(画面を示して)右に「温度」(と書かれていて)、和訳はこれでいいのかというのはありますが「Temperature」というパラメーターがあります。

このTemperatureというパラメーターは何かと言うと、先ほど生成の例で出した確率分布が出てきた時に、信長、信忠、信秀とろいろな確率があるものの中で、創造的な振る舞いをしてほしい場合には、必ずしも(最も確率の高い)信長(だけ)じゃなくて、正確性を捨ててでも2番目、3番目の候補も拾って出してほしいなケースがあります。

このTemperatureのパラメーターを高めてあげると、そういった創造的な回答を返してくれるようになるので、チャットボットの用途によってはパラメーターを調整してあげて、振る舞いを確認してもらえればいいかなと思います。

「top_p」はなにかというと、「上位P」と書かれているところです。これは、単語の選択肢の範囲のようなものになります。(この値を)高くすると、信長、信秀、それからその他諸々みたいなところすべてを候補にして採択するようなかたちになります。

普通の文章でさえ成り立たなくなってしまうような単語を採択されると困っちゃうので、「創造的な回答を返してほしいですが、選ぶ答えの候補は上位50%くらいでいいよ」というかたちにしたいのであれば、top_pを調整して0.5とすると、Temperatureが高くても、その半分の確率の中から採択をしてくれます。

「max_tokens」とか「stop」については一応記載はしていますが、時間がないので飛ばします。

Azure OpenAI Serviceのプレイグラウンドの価格

気になる価格ですが、GPTは基本的に出力と入力に使われたトークンで課金されます。「こんにちはOpenAI」というと、この「こんにちはOpenAI」をトークン化した、(つまり)ここでいうと3トークンというかたちで、トークンの数に応じて課金がかかるかたちになります。

「じゃあこのトークンって、どうやってトークン化されるの?」という話になるんですが、これはモデルに応じて変わってきます。GPT-4のモデル、GPT-3.5のモデル、細かく言うとそれ以前に出ていたGPT-3のモデルなど、いろいろ細かくモデルが出ているんですが、それに応じてエンコーディング、いわゆるトークン化していくツールが変わってきます。

だいたい最新のモデルを使うことが多いかなと思いますが、(その場合は)1文字あたりだいたい1トークンくらいの目安を持ってもらえればなと思います。

(スライドを示して)こちらは弊社のアーキテクトが実際に検証をしてみて、「平均だとこんなもんだよね」というところを出しているページなので、後ほど資料を確認いただく場合にも(あわせて)参照してもらえればと思います。

なので、単純にトークン価格だけではなくて、このトークンが有効に使われるのかどうか。トークン効率も含めて見ていかないと、実際の価格と乖離が生じてしまうようなところもあるので、気をつけていただければと思います。

システム上は「tiktoken」と呼ばれるPythonのライブラリが提供されているので、これを使ってもらえれば、このトークンがどうなっているのかのシミュレートが行われます。

コストの概算シミュレート

実際にコストの概算シミュレートをしてみました。ちなみに、Azure OpenAI ServiceとOpenAI社のAPIのサービスは、基本的に価格が一緒です。どっちを使っても値段は一緒になってきます。これはAzureでも本家のOpenAIでもそうなんですが、コストの概算シミュレートをちょっとやってみました。

従業員1万人の会社でプレーンなChatGPTを使ってみるケースにおいて、例えばユーザー数が1万人、1日のチャット回数が10回、1回のチャットにだいたい1,100トークン。だから1,000文字くらいかかるのかな。稼働日は21日(間)。GPT-3.5を使っていった場合にどうかなと見てみると、月あたり61万2,150円になる。

私の計算が間違っていたら非常に申し訳ないんですが、私がシミュレートした時に、これが安いと言っていいのかどうかわからないですが、1人あたり61円で使えます。値下げをしたというところもありますが、非常にお得に使ってもらえるかたちになっています。

「61万2,150円は低めに見積もっているんじゃないのか」という話なんですが、かなり高めに見積もっています。実績ベースでいくと、ここまでいっているお客さまはなかなかいないぐらいの感覚なので。

そもそも1万人(の社員が)いても1万人が全員使うかと言われると(実際は)全員は使わないというところも考慮に入れていないし、まだまだChatGPTの使い方が定着していない中では、ぜんぜんかからない価格になります。もちろん、たくさん使ってもらえれば私のボーナス的にはうれしいんですけど(笑)。

「まず触ってみよう」という意味では、GPT3.5であればあまり気をつけなくても手を出していけるような金額になっているかなと思います。

GPT-4になってくるとそれなりに高くなってきます。GPT-4は入力と出力でそれぞれお金を使うので、あくまでざくっと入力と出力が6対4(の場合)で計算してみましたが、月に2,571万円。1人あたり2,570円。いわゆるChatGPTのPlusみたいなところも、確か20ドルぐらいだったかなと思いますが、ちょうどいい価格設定になっているのかなというかたちです。

こういう「なんとなくのイメージ感」を計算できるので、ここで使用想定をしていただければと思います。

(次回に続く)