Graywood House
© Copyright N Chadwick and licensed for reuse under this Creative Commons Licence.

 

前回は、GPTのような大規模言語モデルのベースとなるニューラルネットワークについて、正に恥ずかしながら今まで十分理解できていなかったことをChatGPTに質問し、その質問の流れで、GPT-2,GPT-3に関して、トークンがどのように処理されているのかを教えてもらいました。

GPT-4の何が凄いかGoogle Bardに訊くと、

GPT-2は2019年に発表された言語モデルで、1.5Bのパラメタ数を持っていました。GPT-3は2020年に発表された言語モデルで、175Bのパラメタ数を持っていました。GPT-3.5は2022年に発表された言語モデルで、355Bのパラメタ数を持っていました。GPT-4は2023年に発表された言語モデルで、パラメタ数は非公開ですが、500B-1Tと推定されています。

パラメタ数が増えたことで、GPT-4は、GPT-2やGPT-3と比べて、次の点で大幅に性能が向上しています。

  • より正確で自然なテキストを生成できる。
  • より複雑な質問や依頼を理解できる。
  • より創造的なテキスト形式を生成できる。

のように答えてくれました。

そこで、「ではそのパラメタとはどんなものか」尋ねたところ、

パラメタとは、言語モデルの学習において、モデルの重みやバイアスなどの値を指します。これらのパラメタは、大量のデータセットで学習させることで、言語のパターンや文法構造を学習します。

のような答えで、このパラメタが、よく見るニューラルネットワーク/ディープラーニングの絵のどこと対応するのか、これまで深く考えていなかったのですが、ChatGPTの以下の回答より、今更ですが、「腑に落ちた」心地がしました。

  • シナプス: 人間の脳におけるニューロン間の接続点です。シナプスを通じて、ニューロンは電気的または化学的な信号を伝達します。
  • ニューロン: 脳の基本的な動作単位で、情報を処理および伝達する細胞です。
  • ノード vs ニューロン: ニューラルネットワークのノードは、人間の脳のニューロンに似ています。ノードは入力を受け取り、それを処理し、出力を生成します。同様に、ニューロンも情報を受け取り、処理し、他のニューロンに信号を送ります。
  • 重み vs シナプス: ニューラルネットワークの接続は「重み」として知られ、これはシナプスの強度や効率を模倣するものです。シナプスの強度は、ニューロン間の情報伝達の効率性を決定します。ニューラルネットワークの学習中に、これらの重みは調整され、最適な出力を得るために最適化されます。

また、以下の通り、GPT-2とGPT-3の構造を知ることができました。

  • GPT-2: このモデルは、小さなモデルから非常に大きなモデルまで、さまざまなサイズのバージョンがあります。最も大きなモデルは、5B(15億)のパラメータを持ち、48層のTransformerブロックから構成されています。
  • GPT-3: GPT-3は、さらに大きなモデルとして知られており、最大で175B(1750億)のパラメータを持っています。この最大のモデルは、96層のTransformerブロックから構成されています。

そして、GPT(Transformerの設計)では、入力層、中間層のノード数(次元数)は同じで、GPT-2の場合は1600。これに対して出力数のノード数は語彙のサイズと等しく50,257。

内部処理として、入力として100個のトークンが与えられた場合、各トークンは1600次元の埋め込みベクトルに変換され、入力層は100×1600の行列として表され、入力シーケンス全体の情報を反映した100×1600の行列が出力されます。46層の中間層各層では、前の層からの100×1600の行列を入力として受け取り、Transformerの特徴であるAttentionと呼ばれる仕組みを使いながら同じサイズの行列を出力します。最後の中間層からの出力を受ける出力層では、各トークン位置に対して語彙サイズの次元のベクトルが出力され、最終的な出力は100×50,257の行列となります。

ということでした。

語彙サイズの50,257というのは、少ない気もしましたが、ディープラーニングのベースとなっているニューラルネットの構造について、今1つはっきり理解していなかったのがクリアになり、GPTの動きに関しても、理解が深まりました。

さて、今回ですが、ブログタイトルにある通り、Azure OpenAI Serviceで利用するOpenAIのモデルをGPT-4に乗り換える作業を行いましたので、その経過報告です。

Azure OpenAI Serviceを使ってみたーその1に書いたように、Azure OpenAI ServiceでGPT-4モデルを利用するためには、MicrosoftへのAzureサブスクリプション申請、Azure OpenAI Service利用申請だけでなく、Azure OpenAI Service内でのGPT-4利用申請を行わなければならなかったのですが、GPT-4の利用申請に関しては、7月3日に、GPT-4利用申請のwaitlistに入れた旨の通知が届いたきり音沙汰がありませんでした。そして、8月11日になって、やっと「Welcome to Azure OpenAI Service GPT-4!」というメールがMicrosoftのCognitive Services Gating Support経由で届きました。

6月にOpenAI Serviceを使い始めるにあたっては、GPT-3.5Turboモデルを利用するAzure OpenAIリソースをサポートする環境が日本になかったので、米国東部(East US)の環境を使ったのですが、今回のメールを見ると日本東部(Japan East)の環境が使えるようなので、一旦、これまで使っていたリソースをすべて削除して、Azure OpenAI Serviceと、Azure Prompt flowを実施する環境を、一から日本の環境で作り直しました。

そこで、面白い?体験をしたので、今回は、その報告となります。

まず、OpenAI Serviceを使えるようにするためにAzure OpenAI StudioでGPT-4モデルをAPI呼び出しする実行モジュールをデプロイします。

ご覧の通り、利用できるモデルに、今回はgpt-4とgpt-4-32k(gpt-4の最大トークン長は8,192、gpt-4-32kの最大トークン調は32,768)が増えていました。

うまくできているか確認のため、Azure OpenAI Studioのプレイグラウンドのチャットで動作確認です。

この時は、GPTと繋がることを確認しただけなのですが、「Feel free to ask anything you need assistance with, whether it’s about Azure, OpenAI, GPT, or any other topic.」との回答。

そこで、「Azure Prompt flow側の環境設定で問題に遭遇した場合でも助けてくれるの?(can you also assist me if I encounter some trouble while defining Azure Prompt flow environment?)」と尋ねたところ、「Absolutely! I’d be glad to help you with Azure and setting up your prompt flow environment.」と自信ありげに返答がありましたが、実はあまりAzure側の設定で問題があった場合にGPTが助けてくれるとは期待していませんでした。

で、次に、Prompt flowの実行モジュールの環境設定を行いました。

Microsoft LearnのPrompt flowのテキストやインターネットの情報を頼りにして、前回同様環境設定を実施したのですが、まずは、Standard flowのテンプレートを用いてPrompt flowを作成し、そのまま実行(「Run」をクリック)したところ、以下のようなWarningが表示されます。

かまわず「Run anyway」をクリックして実行を促すと、今度は以下のエラーとなってしまいました。

そこで、Azure OpenAI Studioのプレイグラウンドに戻って、本当にトラブルアシストしてくれるのか確かめてみました。

以下は、その時のチャットのやり取りです。

対応策として

  1. Click on the step “joke(variant_0)” in your prompt flow.
  2. Look for a field labeled “connection” (it might be in the “settings” or “configuration” section of the step).
  3. Input the necessary connection details for Azure OpenAI’s chat service (you might need to create or retrieve these details from Azure portal).
  4. Save the changes and try running the prompt flow again.

とあったので、これに従い、「joke」モジュールを見てみました。

 

確かに、「joke」の「connection」欄(と、「deployment_name」欄)が未設定になっていたので、下図赤枠の通り、Prompt flowの環境設定時の情報を設定し保存。その後、再度実行(「Run」をクリック)すると、問題なく実行が完了しました。

本件に関しては、MicrosoftがAzureに関して独自のデータソースの追加を行っている結果、このような的確な回答が得られたのだろうと思い、試しにWebブラウザからOpenAIのChatGPT Plusを呼び出し、同じエラーの回避方法を尋ねた結果は以下の通りとなりました。

 

私#1:

Running an Azure Prompt flow, Validation Warning of [Empty config: “connection” at step: “joke(variant_0)”] was displayed. When clicked “Run anyway”,  [Run failed: Required inputs ‘connection’ are not provided for tool ‘AzureOpenAI.chat'” was displayed. How I can solve the trouble?

 

■ChatGPT#1(GPT-3.5の場合の回答):

It seems like you’re encountering an issue with an Azure Prompt flow related to the “connection” configuration. The error messages indicate that the required inputs for the tool ‘AzureOpenAI.chat’ are not provided. This could be due to a configuration problem or missing settings in your flow.

Here are a few steps you can take to troubleshoot and potentially solve the issue:

  1. Check Connection Configuration: Double-check the configuration settings related to the “connection” parameter. Make sure that you have provided all the necessary information for establishing the connection. If any credentials or tokens are required, ensure they are correctly set up.
  2. Input Parameters: Make sure that you are passing the required input parameters to the tool ‘AzureOpenAI.chat’. The error message suggests that the ‘connection’ parameter is missing, so ensure that it is included in your input.
  3. Flow Configuration: Review the entire flow configuration to ensure that there are no missing or incorrect settings. Sometimes, errors can stem from incorrect configurations earlier in the flow.
  4. Version Compatibility: Ensure that you are using the correct version of the tools and libraries required for your Azure Prompt flow. Compatibility issues can sometimes lead to unexpected errors.
  5. Azure Service Status: Check if there are any ongoing issues or outages with the Azure services you’re using. Sometimes, service disruptions can impact the functionality of your flow.
  6. Documentation and Support: Refer to the official documentation for the tool you’re using within Azure Prompt. It might provide insights into common issues and their solutions. Additionally, you can reach out to Azure support for assistance.
  7. Testing Step by Step: Try running the flow step by step, starting with the ‘AzureOpenAI.chat’ tool, and gradually adding components to identify the specific step where the issue arises.
  8. Community Forums: Participate in Azure or tool-specific community forums. Other users might have encountered similar issues and could provide helpful suggestions or solutions.
  9. Remember, troubleshooting technical issues often requires patience and a systematic approach. It’s good to keep a record of the changes you make so that you can backtrack if needed. Also, consider seeking assistance from colleagues or experts in the field, especially if the issue persists.

 

■ChatGPT#1(GPT-4の場合の回答):

The error you’re seeing pertains to a configuration issue with Azure’s integration for an OpenAI chat flow. The “connection” part refers to a required configuration for the specific Azure tool or service you’re trying to interface with. Here are some steps to troubleshoot the issue:

  1. Connection Configuration: Ensure that you have set up the proper connection for the OpenAI chat tool within Azure. This usually involves linking your OpenAI account to the Azure service and providing necessary credentials.
  2. Check Your Flow Sequence: The error suggests there’s a step titled “joke(variant_0)” in your flow. Ensure that the sequence of steps in your flow makes sense, and that any step which relies on a connection (like making a chat request to OpenAI) has that connection properly set up.
  3. Check Input/Output Mappings: Azure workflows often involve passing data between steps. Make sure that the required inputs for the AzureOpenAI.chat step are being passed correctly from any previous step.
  4. Update Modules: Ensure that your Azure modules or extensions, especially ones related to OpenAI, are up to date. Sometimes, issues arise from using outdated modules or tools.
  5. Refer to Documentation: Microsoft Azure’s documentation and OpenAI’s documentation might have more specific information or examples related to the tools you’re using. Checking there can give insights into common configuration issues or requirements.
  6. Reach Out for Support: If you’re still facing issues, it might be helpful to contact Azure’s support or check community forums. Sometimes, specific issues or bugs might be known and solutions or workarounds might be available.

Remember, when working with cloud services and tools, it’s crucial to ensure that all configurations, especially those related to connections and authentication, are correctly set up. A small oversight in these settings can lead to errors and disruptions in the flow’s execution.

 

これらChatGPT Plusの回答内容を見ると、Azure OpenAI Studioのプレイグラウンドでの回答より汎用的な問題への対策が示されており、今更ながら、ChatGPTの、如何にももっともらしく答える「Hallucination」の実力に感心しました!

※最も、今回は単純な設定ミスだったので、ChatGPT Plusの回答でもエラーに対処できたと思います

以下は、ChatGPT自身に確認した結果です。

私#2:
丁寧に回答してくれてどうもありがとう。ただ、不思議なのは、あなたは2021年9月までのデータしか学習していないはずなのに、どうして最新の、しかもOpenAIのソリューションの機能ではなく、Microsoftのソリューションの機能を理解していたのかということです。あなたは、いつ、どこで、Microsoft Azureの機能を学習したのでしょうか?それともあなたの回答は単にHallucinationだったのですか?
ChatGPT#2:
申し訳ございませんが、私の学習データは2021年9月までのものです。そのため、それ以降の具体的な更新や新機能についての情報は持っていません。私が提供する情報は、その時点までの知識に基づいています。

Microsoft Azure Prompt flowに関する具体的な新機能や詳細についての質問に答えた場合、それは私の既存の知識を基にした推測や一般的な情報に基づくものであった可能性があります。私はユーザーの質問に最善を尽くして答えるよう努力していますが、最新の情報や詳細については正確でない場合があります。そのような場合、私の回答が不正確であったり、期待に応えられないことがあるかもしれません。
もし具体的な情報や最新の機能についての質問がある場合は、公式のドキュメントや関連する専門家に確認することをおすすめします。

 

結論としては、やはり、Azure OpenAI StudioのプレイグラウンドからOpenAIのGPTを利用する場合、Microsoft側で追加したAzureに関する情報(今回のトラブルでいうと、必要ならAzure OpenAI Serviceで定義した情報を確認して、Promp flowの「joke」というLLMモジュールの「connection」欄を設定し保存する必要があるという具体的な指示)を利用してチャットの回答が作成されていたのだと思われます。

今回は以上です。

 

終わり