ホームページ テクノロジー周辺機器 AI ChatGPT はどのようにして単語ごとに出力するのでしょうか?

ChatGPT はどのようにして単語ごとに出力するのでしょうか?

Jun 02, 2023 pm 05:40 PM
大規模な言語モデル

ChatGPT はどのようにして単語ごとに出力するのでしょうか?

#ChatGPT が質問に答えると、単語ごとにポップアップ表示され、人々が真剣に考えているという印象を与えます。

この会話の基本的な内容は次のとおりです:

Q: 大規模言語生成モデルはどのように機能しますか
回答: 大規模言語生成モデル (GPT-3 など) は、深層学習テクノロジーに基づくニューラル ネットワーク モデルです。これらのモデルは多くの場合、自然言語処理の分野で大きな成功を収めた「Transformer」と呼ばれるアーキテクチャを使用します。

大規模な言語生成モデルがどのように機能するかについての概要は、

です。 .. 段落を省略します...

テキストの生成: モデルがトレーニングされると、それを使用してテキストを生成できます。最初のテキストまたはプロンプトが与えられると、モデルは学習した確率分布に基づいて次の単語を生成し、生成された単語を入力として使用して次の単語の生成を継続し、必要なテキスト長に達するか生成されるまでこれを繰り返します。シンボル。

...段落を省略...

大規模な言語モデル、大規模言語モデル。LLM と呼ばれます。

モデルの観点から見ると、LLM は、テキストの長さの制限に達するかターミネータが生成されるまで、推論を実行するたびにトークンを生成します。

サーバーの観点から見ると、生成されたトークンは、HTTPS プロトコルを通じてブラウザーに 1 つずつ返す必要があります。

クライアント/サーバー モードでは、従来の対話方法は、クライアントがリクエストを送信し、レスポンスを受信することです。明らかに、これでは ChatGPT が質問に応答するというシナリオには対応できません。

2 番目に、HTTP に依存してハンドシェイクを実装し、WebSocket にアップグレードされる WebSocket について考えます。ただし、WebSocket ではクライアントとサーバーの両方が継続的にソケットを占有する必要があり、サーバー側のコストが比較的高くなります。

ChatGPT は妥協策を使用します: サーバー送信イベント (略して SSE)。これは OpenAI の API ドキュメントから見つけることができます:

ChatGPT はどのようにして単語ごとに出力するのでしょうか?

SSE モードでは、クライアントはサーバーにリクエストを 1 回送信するだけでよく、サーバーは最後まで要求されるまで出力を続けることができます。インタラクション プロセス全体を次の図に示します。

ChatGPT はどのようにして単語ごとに出力するのでしょうか?

SSE は依然としてアプリケーション層の送信プロトコルとして HTTP を使用し、HTTP の長い接続を最大限に活用しています。サーバー側のプッシュ機能を実装する機能。

コードの観点から見ると、SSE モードと単一の HTTP リクエストの違いは次のとおりです。

  1. クライアントはオンにする必要があります。 keep -alive は、接続がタイムアウトしないことを保証します。
  2. HTTP 応答ヘッダーには、Content-Type=text/event-stream、Cache-Cnotallow=no-cache などが含まれます。
  3. HTTP レスポンスの本文は、通常、「data: ...」のような構造になります。
  4. HTTP 応答には、接続タイムアウトを回避するために空のデータが含まれる場合があります。

ChatGPT API を例に挙げると、リクエストを送信するときに、stream パラメーターを true に設定すると SSE 機能が有効になりますが、次のような SDK に注意する必要があります。データ。 。

通常モードでは、http.Response を取得した後、ioutil.ReadAll を使用してデータを読み取ります。コードは次のようになります。 :

func main() {payload := strings.NewReader(`{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "大语言生成式模型是如何工作的"}],"max_tokens": 1024,"temperature": 1,"top_p": 1,"n": 1,"stream": false}`)client := &http.Client{}req, _ := http.NewRequest("POST", "https://api.openai.com/v1/chat/completions", payload)req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Bearer <openai-token>")resp, err := client.Do(req)if err != nil {fmt.Println(err)return}defer resp.Body.Close()body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body))}</openai-token>
ログイン後にコピー

実行して完全な結果を得るには約 20 秒かかります:

{"id": "chatcmpl-7KklTf9mag5tyBXLEqM3PWQn4jlfD","object": "chat.completion","created": 1685180679,"model": "gpt-3.5-turbo-0301","usage": {"prompt_tokens": 21,"completion_tokens": 358,"total_tokens": 379},"choices": [{"message": {"role": "assistant","content": "大语言生成式模型通常采用神经网络来实现,具体工作流程如下:\n\n1. 数据预处理:将语料库中的文本数据进行预处理,包括分词、删除停用词(如“的”、“了”等常用词汇)、去重等操作,以减少冗余信息。\n\n2. 模型训练:采用递归神经网络(RNN)、长短期记忆网络(LSTM)或变种的Transformers等模型进行训练,这些模型都具有一定的记忆能力,可以学习到语言的一定规律,并预测下一个可能出现的词语。\n\n3. 模型应用:当模型完成训练后,可以将其应用于实际的生成任务中。模型接收一个输入文本串,并预测下一个可能出现的词语,直到达到一定长度或遇到结束符号为止。\n\n4. 根据生成结果对模型进行调优:生成的结果需要进行评估,如计算生成文本与语料库文本的相似度、流畅度等指标,以此来调优模型,提高其生成质量。\n\n总体而言,大语言生成式模型通过对语言的规律学习,从而生成高质量的文本。"},"finish_reason": "stop","index": 0}]}
ログイン後にコピー

stream を何も変更せずに true に設定した場合、リクエストの合計消費量は 28 秒になります。多くのストリーム メッセージの場合:

ChatGPT はどのようにして単語ごとに出力するのでしょうか?

上の図は、ioutil.ReadAll モードを使用して chatgpt API を呼び出している Postman の図です。ストリーム読み取りを実装するには、http.Response.Body をセグメントで読み取ることができます。これが機能する理由は次のとおりです。

  1. http.Response.Body のタイプは io.ReaderCloser で、最下層です。 HTTP 接続に依存し、ストリーム読み取りをサポートします。
  2. #SSE によって返されたデータは改行文字で分割されています\n

したがって、修正方法は次のようになります。 bufio.NewReader(resp.Body)ラップして for ループで読み取ります。コードは次のとおりです:

// stream event 结构体定义type ChatCompletionRspChoiceItem struct {Deltamap[string]string `json:"delta,omitempty"` // 只有 content 字段Indexint `json:"index,omitempty"`Logprobs *int`json:"logprobs,omitempty"`FinishReason string`json:"finish_reason,omitempty"`}type ChatCompletionRsp struct {IDstring`json:"id"`Objectstring`json:"object"`Created int `json:"created"` // unix secondModel string`json:"model"`Choices []ChatCompletionRspChoiceItem `json:"choices"`}func main() {payload := strings.NewReader(`{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "大语言生成式模型是如何工作的"}],"max_tokens": 1024,"temperature": 1,"top_p": 1,"n": 1,"stream": true}`)client := &http.Client{}req, _ := http.NewRequest("POST", "https://api.openai.com/v1/chat/completions", payload)req.Header.Add("Content-Type", "application/json")req.Header.Add("Authorization", "Bearer "+apiKey)req.Header.Set("Accept", "text/event-stream")req.Header.Set("Cache-Control", "no-cache")req.Header.Set("Connection", "keep-alive")resp, err := client.Do(req)if err != nil {fmt.Println(err)return}defer resp.Body.Close()reader := bufio.NewReader(resp.Body)for {line, err := reader.ReadBytes('\n')if err != nil {if err == io.EOF {// 忽略 EOF 错误break} else {if netErr, ok := err.(net.Error); ok && netErr.Timeout() {fmt.Printf("[PostStream] fails to read response body, timeout\n")} else {fmt.Printf("[PostStream] fails to read response body, err=%s\n", err)}}break}line = bytes.TrimSuffix(line, []byte{'\n'})line = bytes.TrimPrefix(line, []byte("data: "))if bytes.Equal(line, []byte("[DONE]")) {break} else if len(line) > 0 {var chatCompletionRsp ChatCompletionRspif err := json.Unmarshal(line, &chatCompletionRsp); err == nil {fmt.Printf(chatCompletionRsp.Choices[0].Delta["content"])} else {fmt.Printf("\ninvalid line=%s\n", line)}}}fmt.Println("the end")}
ログイン後にコピー

クライアント側を読み取った後、サーバー側を見てみましょう。ここで、chatgpt サーバーを模擬して、テキストをそのまま返してみます。ここには 2 つの点が関係します。

  1. 応答ヘッダーでは、Connection を keep-alive に設定し、Content-Type を text/event-stream に設定する必要があります。
  2. respnose を書き込んだ後、クライアントにフラッシュする必要があります。

コードは次のとおりです:

func streamHandler(w http.ResponseWriter, req *http.Request) {w.Header().Set("Connection", "keep-alive")w.Header().Set("Content-Type", "text/event-stream")w.Header().Set("Cache-Control", "no-cache")var chatCompletionRsp ChatCompletionRsprunes := []rune(`大语言生成式模型通常使用深度学习技术,例如循环神经网络(RNN)或变压器(Transformer)来建模语言的概率分布。这些模型接收前面的词汇序列,并利用其内部神经网络结构预测下一个词汇的概率分布。然后,模型将概率最高的词汇作为生成的下一个词汇,并递归地生成一个词汇序列,直到到达最大长度或遇到一个终止符号。在训练过程中,模型通过最大化生成的文本样本的概率分布来学习有效的参数。为了避免模型产生过于平凡的、重复的、无意义的语言,我们通常会引入一些技巧,如dropout、序列扰动等。大语言生成模型的重要应用包括文本生成、问答系统、机器翻译、对话建模、摘要生成、文本分类等。`)for _, r := range runes {chatCompletionRsp.Choices = []ChatCompletionRspChoiceItem{{Delta: map[string]string{"content": string(r)}},}bs, _ := json.Marshal(chatCompletionRsp)line := fmt.Sprintf("data: %s\n", bs)fmt.Fprintf(w, line)if f, ok := w.(http.Flusher); ok {f.Flush()}time.Sleep(time.Millisecond * 100)}fmt.Fprintf(w, "data: [DONE]\n")}func main() {http.HandleFunc("/stream", streamHandler)http.ListenAndServe(":8088", nil)}
ログイン後にコピー

実際のシナリオでは、返されるデータは別のサービスまたは関数から取得されます。このサービスまたは関数呼び出しの戻り時間が不安定なため、クライアントが長時間メッセージを受信できない可能性があるため、一般的な処理方法は次のとおりです。 #サードパーティへの呼び出しはゴルーチンに配置されます。

    時間を経過するタイマーを作成します。チェックマークを付けて、空のメッセージをクライアントに送信します。
  1. 応答時間が長すぎるのを避けるために、タイムアウト チャネルを作成します。
  2. さまざまなチャネルからデータを読み取るには、次のデモ コードのような適切なキーワードを選択します。
    // 声明一个 event channel// 声明一个 time.Tick channel// 声明一个 timeout channelselect {case ev := 
    ログイン後にコピー
  3. 概要大規模な言語モデルの結果全体の生成と応答には比較的時間がかかりますが、トークンごとに生成される応答は比較的高速です。ChatGPT は、この機能と SSE テクノロジーを完全に組み合わせて、単語ごとにポップアップします。返信はユーザーの質的向上を達成しました。経験。

LLAMA/Little Alpaca (市販されていません) または Stable Diffusion/Midjourney のいずれであっても、生成モデルを調べます。オンライン サービスを提供する場合、SSE テクノロジーを使用してユーザー エクスペリエンスを向上させ、サーバー リソースを節約できます。

以上がChatGPT はどのようにして単語ごとに出力するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Groq Llama 3 70B をローカルで使用するためのステップバイステップ ガイド Groq Llama 3 70B をローカルで使用するためのステップバイステップ ガイド Jun 10, 2024 am 09:16 AM

翻訳者 | Bugatti レビュー | Chonglou この記事では、GroqLPU 推論エンジンを使用して JanAI と VSCode で超高速応答を生成する方法について説明します。 Groq は AI のインフラストラクチャ側に焦点を当てているなど、誰もがより優れた大規模言語モデル (LLM) の構築に取り組んでいます。これらの大型モデルがより迅速に応答するためには、これらの大型モデルからの迅速な応答が鍵となります。このチュートリアルでは、GroqLPU 解析エンジンと、API と JanAI を使用してラップトップ上でローカルにアクセスする方法を紹介します。この記事では、これを VSCode に統合して、コードの生成、コードのリファクタリング、ドキュメントの入力、テスト ユニットの生成を支援します。この記事では、独自の人工知能プログラミングアシスタントを無料で作成します。 GroqLPU 推論エンジン Groq の概要

GenAI および LLM の技術面接に関する 7 つのクールな質問 GenAI および LLM の技術面接に関する 7 つのクールな質問 Jun 07, 2024 am 10:06 AM

AIGC について詳しくは、51CTOAI.x コミュニティ https://www.51cto.com/aigc/Translator|Jingyan Reviewer|Chonglou を参照してください。これらの質問は、インターネット上のどこでも見られる従来の質問バンクとは異なります。既成概念にとらわれずに考える必要があります。大規模言語モデル (LLM) は、データ サイエンス、生成人工知能 (GenAI)、および人工知能の分野でますます重要になっています。これらの複雑なアルゴリズムは人間のスキルを向上させ、多くの業界で効率とイノベーションを推進し、企業が競争力を維持するための鍵となります。 LLM は、自然言語処理、テキスト生成、音声認識、推奨システムなどの分野で幅広い用途に使用できます。 LLM は大量のデータから学習することでテキストを生成できます。

大規模モデルは時系列予測にも非常に強力です。中国チームがLLMの新機能を有効にし、従来のモデルを超えたSOTAを達成 大規模モデルは時系列予測にも非常に強力です。中国チームがLLMの新機能を有効にし、従来のモデルを超えたSOTAを達成 Apr 11, 2024 am 09:43 AM

大規模な言語モデルの可能性が刺激され、大規模な言語モデルをトレーニングすることなく高精度の時系列予測を達成でき、従来のすべての時系列モデルを上回ります。モナシュ大学、Ant、IBM Research は共同で、モダリティ全体で配列データを処理する大規模言語モデルの機能を促進する一般的なフレームワークを開発しました。このフレームワークは重要な技術革新となっています。時系列予測は、都市、エネルギー、交通、リモート センシングなどの典型的な複雑なシステムにおける意思決定に役立ちます。それ以来、大規模モデルは時系列/時空間データ マイニングに革命をもたらすと期待されています。一般大規模言語モデル再プログラミング フレームワーク研究チームは、トレーニングなしで一般的な時系列予測に大規模言語モデルを簡単に使用するための一般的なフレームワークを提案しました。主に 2 つの主要なテクノロジが提案されています: タイミング入力再プログラミング、プロンプト プレフィックス。時間-

OpenHarmony で大規模な言語モデルをローカルにデプロイする OpenHarmony で大規模な言語モデルをローカルにデプロイする Jun 07, 2024 am 10:02 AM

この記事は、第 2 回 OpenHarmony テクノロジー カンファレンスで実証された「OpenHarmony での大規模言語モデルのローカル デプロイメント」の結果をオープンソース化します。オープンソースのアドレス: https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/thirdparty。 /InferLLM/docs/hap_integrate.md。実装のアイデアと手順は、軽量 LLM モデル推論フレームワーク InferLLM を OpenHarmony 標準システムに移植し、OpenHarmony 上で実行できるバイナリ製品をコンパイルすることです。 InferLLM はシンプルで効率的な L

宏蒙スマートトラベルS9とフルシナリオ新製品発売カンファレンス、多数の大ヒット新製品が一緒にリリースされました 宏蒙スマートトラベルS9とフルシナリオ新製品発売カンファレンス、多数の大ヒット新製品が一緒にリリースされました Aug 08, 2024 am 07:02 AM

今日の午後、Hongmeng Zhixingは新しいブランドと新車を正式に歓迎しました。 8月6日、ファーウェイはHongmeng Smart Xingxing S9およびファーウェイのフルシナリオ新製品発表カンファレンスを開催し、パノラマスマートフラッグシップセダンXiangjie S9、新しいM7ProおよびHuawei novaFlip、MatePad Pro 12.2インチ、新しいMatePad Air、Huawei Bisheng Withを発表しました。レーザー プリンタ X1 シリーズ、FreeBuds6i、WATCHFIT3、スマート スクリーン S5Pro など、スマート トラベル、スマート オフィスからスマート ウェアに至るまで、多くの新しいオールシナリオ スマート製品を開発し、ファーウェイは消費者にスマートな体験を提供するフル シナリオのスマート エコシステムを構築し続けています。すべてのインターネット。宏孟志興氏:スマートカー業界のアップグレードを促進するための徹底的な権限付与 ファーウェイは中国の自動車業界パートナーと提携して、

大規模言語モデルの空間推論能力を刺激する: 思考の視覚化のヒント 大規模言語モデルの空間推論能力を刺激する: 思考の視覚化のヒント Apr 11, 2024 pm 03:10 PM

大規模言語モデル (LLM) は、言語理解とさまざまな推論タスクにおいて優れたパフォーマンスを示します。しかし、人間の認知の重要な側面である空間推論におけるそれらの役割は、依然として十分に研究されていません。人間には、心の目として知られるプロセスを通じて、目に見えない物体や行動の精神的なイメージを作成する能力があり、目に見えない世界を想像することが可能になります。この認知能力に触発されて、研究者らは「思考の視覚化」(VoT)を提案しました。 VoT は、LLM の推論の兆候を視覚化することで LLM の空間推論をガイドし、それによって後続の推論ステップをガイドすることを目的としています。研究者は、自然言語ナビゲーション、視覚などのマルチホップ空間推論タスクに VoT を適用します。

Tao Dacheng のチームは、香港大学および UMD と共同で、374 件の関連著作を要約し、LLM 知識蒸留に関する最新のレビューを発表しました。 Tao Dacheng のチームは、香港大学および UMD と共同で、374 件の関連著作を要約し、LLM 知識蒸留に関する最新のレビューを発表しました。 Mar 18, 2024 pm 07:49 PM

大規模言語モデル (LLM) は過去 2 年間で急速に発展し、GPT-4、Gemini、Claude などのいくつかの驚異的なモデルや製品が登場しましたが、それらのほとんどはクローズド ソースです。現在研究コミュニティが利用できるほとんどのオープンソース LLM とクローズドソース LLM の間には大きな隔たりがあるため、オープンソース LLM やその他の小規模モデルの機能を改善して、クローズドソースの大規模モデルとの隔たりを減らすことが研究のホットスポットとなっています。この分野で。 LLM、特にクローズドソース LLM の強力な機能により、科学研究者や産業従事者は、独自のモデルをトレーニングする際に、これらの大規模モデルの出力と知識を利用できます。このプロセスは本質的に知識の蒸留です (Knowledge、Dist

OWASP が大規模言語モデルのネットワーク セキュリティとガバナンスのチェックリストをリリース OWASP が大規模言語モデルのネットワーク セキュリティとガバナンスのチェックリストをリリース Apr 17, 2024 pm 07:31 PM

現在、人工知能テクノロジーが直面している最大のリスクは、大規模言語モデル (LLM) と生成人工知能テクノロジーの開発と適用の速度が、セキュリティとガバナンスの速度をはるかに超えていることです。 OpenAI、Anthropic、Google、Microsoft などの企業による生成 AI および大規模言語モデル製品の使用は飛躍的に増加しています。同時に、オープンソースの大規模言語モデル ソリューションも急速に成長しています。HuggingFace などのオープンソース人工知能コミュニティは、多数のオープンソース モデル、データ セット、AI アプリケーションを提供しています。人工知能の開発を促進するために、OWASP、OpenSSF、CISA などの業界団体は、OWASPAIExchange、

See all articles