新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

Workers AIにおいては、大規模な言語モデルのためのストリーミングとより長いコンテキスト長が可能です

2023/11/14

4分で読了
Streaming LLMs and longer context lengths available in Workers AI

Workers AIは、Cloudflareのグローバルネットワーク上で動作するサーバーレスGPU駆動の推論プラットフォームです。Workersとシームレスに連携し、開発者が数分で強力でスケーラブルなAIアプリを構築できるようにする、既製モデルの増加し続けるカタログを提供しています。すでに開発者がWorkers AIを使用して驚くべきことを成し遂げており、プラットフォームを拡大し続ける中で彼らがどのようなことをするかを見るのが楽しみです。そのために、今日は以下、いくつかの最も要望の多かった新機能であるすべての大規模言語モデル(LLM)に対するストリーミング応答、より大きなコンテキストとシーケンスウィンドウ、そして完全な精度のLlama-2モデルのバリアントを発表できることを嬉しく思います。

もし以前にChatGPTをご使用されたことがあれば、トークン単位でレスポンスが流れてくるレスポンスストリーミングの利点はよくご存知でしょう。LLMは内部的には、推論を繰り返すプロセスを用いてレスポンスを逐次生成することで動作します。LLMモデルの完全な出力は、基本的に数百から数千の個々の予測タスクのシーケンスです。このため、トークンの生成には数ミリ秒しかかかりませんが、完全なレスポンスの生成には数秒単位で時間がかかります。良いニュースは、最初のトークンが生成されたらすぐにレスポンスを表示し始め、レスポンスが完了するまでトークンを追加していくことができるということです。これにより、エンドユーザーのエクスペリエンスが大幅に向上します。生成されたテキストを段階的に表示することで、即座に応答するだけでなく、エンドユーザーがテキストを読んで解釈する時間をも確保できます。

本日より、カタログ内の人気モデルであるLlama-2モデルを含む、どのLLMモデルに対してもレスポンスストリーミングを利用できるようになりました。動作方法は以下の通りです。

サーバー送信イベント:ブラウザAPIの中での小さな宝石

サーバー送信イベントは使いやすく、サーバーサイドで実装が簡単で、標準化されており、多くのプラットフォームでネイティブにまたはポリフィルとして広く利用可能です。サーバー送信イベントは、サーバーからの更新ストリームを処理するニッチな用途を満たし、イベントストリームを処理するためにそれ以外に必要なボイラープレートコードを排除します。

使いやすい ストリーミング 双方向
フェッチ
サーバー送信イベント
Websockets
フェッチ、サーバー送信イベント、およびWebSocketsを比較

Workers AIのテキスト生成モデルでサーバー送信イベントを使用するには、リクエストの入力で"stream"パラメータをtrueに設定します。これにより、レスポンスのフォーマットとmime-typetext/event-streamに変更されます。

以下は、REST APIを使用してストリーミングを行う例です:

curl -X POST \
"https://api.cloudflare.com/client/v4/accounts/<account>/ai/run/@cf/meta/llama-2-7b-chat-int8" \
-H "Authorization: Bearer <token>" \
-H "Content-Type:application/json" \
-d '{ "prompt": "where is new york?", "stream": true }'

data: {"response":"New"}

data: {"response":" York"}

data: {"response":" is"}

data: {"response":" located"}

data: {"response":" in"}

data: {"response":" the"}

...

data: [DONE]

以下は、Workerスクリプトを使用した例です:

import { Ai } from "@cloudflare/ai";
export default {
    async fetch(request, env, ctx) {
        const ai = new Ai(env.AI, { sessionOptions: { ctx: ctx } });
        const stream = await ai.run(
            "@cf/meta/llama-2-7b-chat-int8",
            { prompt: "where is new york?", stream: true  }
        );
        return new Response(stream,
            { headers: { "content-type": "text/event-stream" } }
        );
    }
}

このWorkerからの出力イベントストリームをブラウザページで消費する場合、クライアントサイドのJavaScriptは次のようになります:

const source = new EventSource("/worker-endpoint");
source.onmessage = (event) => {
    if(event.data=="[DONE]") {
        // SSE spec says the connection is restarted
        // if we don't explicitly close it
        source.close();
        return;
    }
    const data = JSON.parse(event.data);
    el.innerHTML += data.response;
}

このシンプルなコードは、簡単なHTMLページだけでなく、Reactや他のWebフレームワークを使用した複雑なSPAにも利用できます。

これにより、ユーザーにとってはページが逐次的に更新されるため、全体のレスポンスシーケンスが生成されるまでスピナーで待つのではなく、よりインタラクティブな体験が得られます。ai.cloudflare.comでストリーミングをお試しください。

Workers AIは、Llama-2モデルおよび将来的にカタログに追加するすべてのLLMモデルに対して、テキストのストリーミング応答をサポートしています。

しかし、それだけではありません。

高い精度、より長いコンテキストおよびシーケンスの長さ

Workers AIの発売後、コミュニティから寄せられたもう1つの主要な要望は、Llama-2モデルでのより長い質問と回答のサポートでした。LLMの用語では、これはコンテキストの長さ(予測を行う前にモデルが入力として受け取るトークンの数)とシーケンスの長さ(モデルがレスポンスで生成するトークンの数)の増加につながります。

その要望にお応えすべく、ストリーミングと連動して、今日はカタログにより高い16ビットのフルプレシジョンなLlama-2バリアントを追加し、既存の8ビットバージョンのコンテキストとシーケンスの長さを増やしています。

モデル コンテキストの長さ(入力) シーケンスの長さ(出力)
@cf/meta/llama-2-7b-chat-int8 2048(以前は768) 1800(以前は256)
@cf/meta/llama-2-7b-chat-fp16 3072 2500

ストリーミング、高い精度、およびより長いコンテキストとシーケンスの長さは、大規模言語モデルをWorkers AIで使用することにより、より良いユーザーエクスペリエンスを提供し、新しい、より豊かなアプリを可能にします。

より詳細な情報やオプションについては、Workers AIの開発者ドキュメントをご確認ください。Workers AIに関する質問やフィードバックがあれば、ぜひCloudflareコミュニティまたはCloudflare Discordでお知らせください。
機械学習やサーバーレスAIにご興味をお持ちの場合、Cloudflare Workers AIチームは、当社のネットワーク上で高速で低遅延の推論タスクを実行できるようにする、グローバル規模のプラットフォームとツールを構築しています。よろしければ求人情報ページをご確認ください。

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
Workers AI (JP)Cloudflare Workers (JP)Developer Platform (JP)JavaScript (JP)Serverless (JP)日本語

Xでフォロー

Celso Martinho|@celso
Cloudflare|@cloudflare

関連ブログ投稿

2024年4月02日 13:01

Workers AIのレベルアップ:一般提供とさらなる新機能

本日、私たちは、Workers AI、Cloudflareの推論プラットフォームの一般公開、LoRAを使用した細かく調整されたモデルのサポート、HuggingFaceからのワンクリックデプロイなど、一連の発表を行うことを嬉しく思います。Cloudflare WorkersがPythonプログラミング言語などをサポートするようになりました...

2024年4月02日 13:00

LoRAを使用してWorkers AIで細かく微調整されたモデルの実行

Workers AIは、LoRAを使用して細かく調整されたモデルをサポートするようになりました。では、LoRAとは一体何か、どのように機能するのでしょうか?この記事では、微調整、LoRA、さらには数学的な話にまで踏み込んで、内部的な動作について詳しく紹介します...

2024年3月14日 12:30

AIサービスでトークン長のサイドチャネル攻撃を軽減する

Workers AI/AI Gatewayチームは最近、ベングリオン大学のセキュリティ研究者グループと緊密に協力して、パブリックバグバウンティプログラムを通じて提出されたあるレポートに取り組みました。このプロセスを通じて、すべてのLLMプロバイダーに影響を及ぼす脆弱性を発見し、完全にパッチを適用しました。 その詳細を紹介します...

2024年3月04日 14:00

Cloudflare、セキュリティ分析のためのAIアシスタントを発表

セキュリティ分析にAIアシスタントを導入。Webセキュリティに関する強力な洞察を得ることが、かつてないほど簡単になりました。新しく組み込みまれた自然言語クエリーインターフェースを使用して、セキュリティ分析を調査します...