Subscribe to receive notifications of new posts:

Workers AI:Cloudflareのグローバルネットワーク上でサーバーレスGPUによる推論を実現

09/27/2023

9 min read

開発者コミュニティの近くにいれば、AIの最近の進歩がエコシステムに与えた影響を避けることはほとんど不可能です。生産性を向上させるためにワークフローでAIを使用しているにせよ、AIベースの機能をユーザーに提供しているにせよ、AIはあらゆるところに顕在しています。AIのもたらす改善への注目は大きなものであり、この先にもたらされるチャンスに大いに期待が寄せられる一方、これだけでは十分ではありません。

少し前までは、AIの力を活用しようと思えば、機械学習の一部始終を知り、それを支えるインフラストラクチャを管理する能力が必要でした。

100万人以上のアクティブな開発者を抱える開発者向けプラットフォームとして、当社はまだ解き放たれていない多くの可能性があると信じており、開発者へのAIの提供方法を変えようとしています。現在のソリューションの多くは、強力ではあるものの、クローズドで占有的なモデルに基づいており、開発者やユーザーが求めるプライバシーのニーズに対応していません。あるいは、オープンソースの現場では強力なモデルにより爆発的に成長しているが、すべての開発者にとってアクセシブルではありません。ホストされている場所に関わらず自分自身のコードからモデルを実行でき、GPUを探したりそれをサポートするためのインフラストラクチャを構築したりする必要がない状況を想像してみると良いでしょう。

これこそ、当社がWorkers AIの立ち上げに期待している理由です。当社GPUのグローバルネットワークによって支えられる環境で、開発者がわずか数行のコードでAIモデルを実行できるようにしするものです。オープンかつアクセスシブル、サーバーレスかつプライバシー重視、ユーザーの近くで動作する従量制課金により、クラス最高の開発者体験のためにゼロから構築されています。

Workers AI - 推論を機能させる

当社では、AI推論をすべての開発者の手に届けるためにWorkers AIを立ち上げました。そのまますぐに使えます。これを実現した方法を説明しましょう。

  • すべての核となるのは、適切なインフラストラクチャーつまり当社のワールドクラスのGPUネットワーク上で動作すること
  • 当社のインフラストラクチャ上でシームレスに動作する既製のモデルを提供します。
  • 最終開発者に喜んでもらえるような形で提供。開発者は初めてのWorkers AIアプリを数分で構築でき「奇跡みたいだ!」と驚嘆するはずです。

では、Workers AIとは一体どういうものなのでしょうか。これを説明するなら、当社が開発者向けプラットフォームに追加しているもう一つのビルディングブロックであり、開発者がサーバーレスGPU上で有名なAIモデルを実行できるようにするもので、すべてがCloudflareの信頼できるグローバルネットワーク上に存在しています。開発者プラットフォームへの最新の追加機能の1つとして、Workers + Pagesとシームレスに動作ししつつ、真にアクセシブルとするため、REST APIを活用しプラットフォームに依存しない設計によりどこでも稼働するようにしました。

お馴染みのモデルたち

当社では、幅広い推論タスクをカバーする、人気の高いオープンソースのモデルを厳選して発表しています:

  • テキスト生成(大規模言語モデル):meta/llama-2-7b-chat-int8
  • 自動音声認識(ASR): openai/whisper
  • 翻訳: meta/m2m100-1.2
  • テキスト分類: huggingface/distilbert-sst-2-int8
  • 画像分類: microsoft/resnet-50
  • エンベッディング: baai/bge-base-ja-v1.5

これらのモデルは、Cloudflareのダッシュボードで利用可能なものをすべて閲覧でき、間もなくモデルごとにログや分析にアクセスできるようになります。

これは始まりに過ぎず、当社では壮大なプランを持っています。ローンチ後も、コミュニティからのフィードバックに基づいて拡張を続けていきます。さらに期待が募るのは、当社でのサービスラインナップをゼロから60にするにあたり、AIコミュニティおよびハブにおけるけん引役的存在であるHugging Faceとの提携を発表します。このパートナーシップは多面的なもので、詳しくはこちらでご覧いただけます。一方、まもなくWorkers AIで直接Hugging Faceカタログのサブセットを閲覧、実行できるようになります。

誰でもアクセス可能

当社の開発者プラットフォームの使命の一つは、開発者にとって夢のアプリケーションを構築するために必要なすべてのビルディングブロックを提供することです。適切なブロックにアクセスできることは、その一部分に過ぎません。開発者としての仕事は、それらをアプリケーションにまとめることになります。当社が目指すのは、それをできるだけ簡単にすることです。

エントリーポイントに関係なく簡単にWorkers AIを使えるようにするため、Cloudflareエコシステム内で簡単に使用できるようにWorkersまたはPagesのいずれか、および現在のスタックでWorkers AIを使用したい場合はREST API経由でのアクセスを実現しています。

英語からフランス語にテキストを翻訳する簡素なCURLの例を見てみます:

curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/meta/m2m100-1.2b \
-H "Authorization: Bearer {API_TOKEN}" \
	-d '{ "text": "I'll have an order of the moule frites", "target_lang": "french" }'

レスポンスは、次のようになります:

{
  "result": {
    "answer": "Je vais commander des moules frites"
  },
  "success": true,
  "errors":[],
  "messages":[]
}

お好きなJamstackフレームワーク、Python + Django/Flask、Node.js、Ruby on Railsなど、あらゆるスタックでどこでも使え、その可能性は無限です。そしてもちろん、デプロイできます。

開発者のためのデザイン

当社では、開発者にとっての使い勝手を非常に重んじています。実際、この記事の大半はそれについてのものとなってきました。そのままの状態ですぐに使えるようにする、きちんと動作する人気の高いモデルを提供する、そしてCloudflareでビルドおよびデプロイするかどうかにかかわらず、すべての開発者がアクセスできるようにすることを重んじています。しかし、それ以上に重要なのは、わずらわしさのない体験となること、ゼロから本番までが迅速であること、そしてその過程で心地よさを感じられることなのです。

別の例で、どれほど使いやすいかを説明します。Workerでの、Metaによってオープンソース化された人気のある大規模言語モデル、Llama 2を見てみましょう。

ここでは、基本(Cloudflareアカウント、Node、NPMなど)はすでに対応済みと仮定します。梅移転があれば、こちらのガイドで適切なセットアップをご案内しています。

1. Workersプロジェクトを作成する

workers-aiという新しいプロジェクトを作る:

$ npm create cloudflare@latest

workers-ai workerのセットアップの際、セットアップの質問に以下のように答えてください:

  • アプリ名をworkers-aiと入力
  • アプリケーションのタイプに合わせてHello Worldスクリプトを選択
  • TypeScriptの使用に「はい」を選択
  • Gitの使用に「はい」を選択
  • デプロイは「いいえ」を選択

最後に、新しいアプリのディレクトリに移動します:

cd workers-ai

2. Workers AIをWorkerに接続

Workers AIバインディングを作成し、APIキーを自分で管理することなく、Worker 、Workers AIサービスにアクセスできるようにします。

Workers AIをWorke にバインドするには、Wrangler.tomlファイルの最後に以下を追加してください:

[ai]
binding = "AI" #available in your worker via env.AI

また、Workers AIをCloudflare Pages Functionにバインドすることもできます。詳しくは関数のバインディングを参照してください。

3. Workers AI クライアントライブラリをインストール

npm install @cloudflare/ai

4. 推論タスクをWorkerで実行

source/index.tsを以下のコードに更新してください:

import { Ai } from '@cloudflare/ai'
export default {
  async fetch(request, env) {
    const ai = new Ai(env.AI);
    const input = { prompt: "What's the origin of the phrase 'Hello, World'" };
    const output = await ai.run('@cf/meta/llama-2-7b-chat-int8', input );
    return new Response(JSON.stringify(output));
  },
};

5. Wranglerでローカル開発

プロジェクトディレクトリで、Workers AIをローカルでテストします:

$ npx wrangler dev --remote

注意 - これらのモデルは現在、CloudflareのGPUネットワーク上でのみ(ローカルではない)実行されるため 、上記の--remoteの設定は必須であり、この時点でログインを促されます。

Wranglerは、URL(おそらくlocalhost:8787となります)を返します。そのURLにアクセスすると、次のような応答が表示されます。

{
  "response": "Hello, World is a common phrase used to test the output of a computer program, particularly in the early stages of programming. The phrase "Hello, World!" is often the first program that a beginner learns to write, and it is included in many programming language tutorials and textbooks as a way to introduce basic programming concepts. The origin of the phrase "Hello, World!" as a programming test is unclear, but it is believed to have originated in the 1970s. One of the earliest known references to the phrase is in a 1976 book called "The C Programming Language" by Brian Kernighan and Dennis Ritchie, which is considered one of the most influential books on the development of the C programming language.
}

6. Workerをデプロイ

最後に、Workerをデプロイし、インターネット上でプロジェクトにアクセスできるようにします:

$ npx wrangler deploy
# Outputs: https://workers-ai.<YOUR_SUBDOMAIN>.workers.dev

これだけです。文字通り、ゼロから数分でAIをデプロイできます。これは極端に単純な例ですが、どのプロジェクトからでもWorkers AIを実行することがいかに簡単かを示していると言えます。

デフォルトのプライバシー

Cloudflareの設立時、当社の価値提案は、より安全で、より信頼性が高く、よりパフォーマンスが高いとの3つの柱となっていました。時間が経つにつれ、より優れたインターネットとはよりプライベートなインターネットでもあることに気づき、当社はその構築の一翼を担いたいと思うようになりました。

これが、Workers AIがデフォルトでプライベートである理由です。LLMであろうとなかろうと、ユーザーからのデータや会話で当社のモデルをトレーニングすることはなく、さらに当社のモデルがユーザーの使用状況から学習することもありません。個人としてでも、企業としてでも、データの漏洩を心配することなく安心してWorkers AIをご利用いただけます。他のプロバイダーは、この基本的な機能をエンタープライズ版でのみ提供しています。当社でなら、組み込み済の機能として誰にでもご利用いただけます。

また、将来的にはデータのローカライズもサポートする予定です。この実現のため、当社は野心的にGPUプランの展開を行っています。今日、既に7カ所でスタートしており、2023年末までにおよそ100カ所、そして2024年末までにほぼすべての場所で展開する予定です。最終的には、開発者はエンドユーザーのデータローカリゼーション要件に準拠しながら、AIのキラー機能をユーザーに提供し続けることができるようになります。

プラットフォームの力

ベクターデータベース - Vectorize

Workers AIは推論の実行に対応しその実践を非常に簡素化するものですが、推論が方程式の一部でしかないこともあります。大規模な言語モデルでは、過去の特定の時点のスナップショットに基づき固定されたデータセットでトレーニングされ、貴社の事業またはユースケースに関するコンテキストを持っていません。プロンプトを送信する際、貴社に固有の情報があれば、結果の質が高まり、より有用で関連性の高いものになります。だからこそ、Workers AIとシームレスに連動するように設計されたベクターデータベース、Vectorizeもあわせてリリースしています。ここでは、Workers AIとVectorizeの併用方法を簡単にご紹介します。

例:ユーザーがLLMとチャットする際、個別のデータ(知識ベース)を使ってLLMに追加でコンテキストを提供。

  1. 初期エンベッディングを生成する:エンベッディングモデルを用い、データをWorkers AIに通します。単語の数値表現としてのエンベッディングが出力されます。
  2. このエンベッディングデータをVectorizeに挿入します。これは基本的に、ベクトルデータベースに個別のデータをシードすることになり、ユーザーのクエリーに類似したエンベッディングを取得するために後から使えるものです。
  3. ユーザーの質問からエンベッディングを生成する:ユーザーがAIアプリに質問を投稿したら、まず、その質問をエンベッディングモデルを使ってWorkers AIを走らせます。
  4. Vectorizeからコンテキストを取得:そのエンベッディングを使用してVectorizeに問い合わせます。ユーザーの質問に似たエンベッディングが出力されるはずです。
  5. 文脈を意識したプロンプトを作成する:これらのエンベッディングに関連付けられた元のテキストを取り出し、ベクトル検索からのテキストと元の質問を組み合わせた新しいプロンプトを作成します。
  6. プロンプトの実行:LLMモデルを使ってWorkers AIでこのプロンプトを実行し、最終結果を得ます。

AI Gateway

これはより高度なユースケースをカバーしている。一方、他の場所でモデルを運用しているが、その経験をさらに活用したい場合、当社のAIゲートウェイを通してAPIを実行し、キャッシング、レート制限、分析、ロギングなどの機能を利用することができる。これらの機能は、エンドポイントの保護、コストの監視と最適化、データ損失の防止にも役立ちます。AIゲートウェイの詳細こちらをご覧ください。

本日構築を開始

実際にお試しいただき、ご感想をお聞かせください。本日、Workers AIをすべてのWorkersプラン(無料か有料かを問わず)向けにオープンベータとして開放します。とはいえ、まだごく初期段階であることはご了承ください。

注意 - 原状、初期ベータ版です

現在、本番アプリケーションでの使用は推奨しておりません。使用上の制限やアクセスは、変更される可能性があります。

制限

当初は、モデルごとに制限を設けてスタートします

  • cf/meta/llama-2-7b-chat-int8:グローバルで50リクエスト/分

等車で準備したドキュメントをご覧ください。

価格設定

本日公開したのは、今後の展開を先取りしていただくためのほんのわずかなプレビューに過ぎません(ぜひともお伝えしたかったのです)が、Workers AIの完全版を皆様のお手元にお届けできることを楽しみにしております。

当社では、お客様が何かを構築するに当たり把握したいことはコストであることを掴みました。特に、AIのコストは簡単に手に負えないものとなります。そこで、Workers AIの予定価格についてお伝えしたいと思います。

初日から料金が発生するわけではないものの、想定される料金体系をお伝えします。

Workers AIの実行方法は、2つから選べます:

  • RegularTwitch Neurons (RTN) - $0.01/1kニューロン、容量があればどこでも稼動
  • Fast Twitch Neurons (FTN) - 0.125ドル/1kニューロン、最寄りのユーザーロケーションでで稼動中

ニューロンとは何か、とお感じになるかもしれません。

ニューロンは、AIの出力を測定する方法であり、常にゼロにスケールダウンする(使用量がゼロの場合、0ニューロン分の料金が課金される)。 1,000個のニューロンで何ができるかというと、130個のLLM応答、830個の画像分類、1,250個の埋め込みを生成できる。

当社では、お客様が利用した分だけ支払い、料金や遅延などにおいてお客様のユースケースに最も適した価格設定を選択できるようにすることを目指しています。

ロードマップの内容

Workers AIは立ち上げたばかりであり、より優れたものにするため、皆様からのフィードバックを求めています。一方で、開発ロードマップは非常に期待に満ちたものとなっています。

さらに求められるモデル

当社では、しっかりと機能する堅実なモデルセットでローンチしていますが、皆様のフィードバックに基づき新しいモデルを展開し続ける予定です。Workers AIでご覧になりたい特定のモデルがあれば、当社Discordでのご意見をお待ちしています。

加えて、当社とHugging Faceとの提携も発表しており、近々Workers AIから直接Hugging Faceのラインナップの一部にアクセスして実行できるようになります。

分析と可観測性

現時点まで、当社ではひとつのことに集中してきました。それは、どんな開発者でも、わずか数行のコードで強力なAIモデルを本当に簡単に実行できるようにすることです。しかし、これは物語のほんの一部に過ぎません。次は、モデルごとの使用状況やパフォーマンス、支出に関する洞察を得るための分析・観測機能に取り組みます。

グローバルGPUへの道

当社が目指すのは、推論を実行するにあたり域内で最高の場所になることです。そのために、データセンターにGPUを可能な限り速やかに追加しています。

今年末までに100のデータセンターへの進出を計画

そして2024年末までには、ほぼすべての場所をカバー

当社では、お客様による構築を心待ちにしています。当社で用意したドキュメントをご覧になり、さっそく取り組みを始めてください。インスピレーションが必要な場合、お客様がお作りになっているものをシェアされたい場合、または質問がある場合、ぜひ当社開発者Discordへお越しください。

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
Birthday Week (JP)Cloudflare Workers (JP)AI (JP)Database (JP)Vectorize (JP)日本語

Follow on X

Phil Wittig|@pdwittig
Rita Kozlov|@ritakozlov_
Rebecca Weekly|@rebeccalipon
Celso Martinho|@celso
Cloudflare|@cloudflare

Related posts

October 02, 2023 1:00 PM

バースデーウィークの総括:当社のすべての発表、そしておよびスタートアップ企業にとってのAI活用の機会

今週のバースデーウィークの重要なニュースについての総括や復習が必要ですか?この要約で全てがわかります...

September 29, 2023 1:00 PM

Encrypted Client Hello - プライバシーのパズルの最後のピース

インターネット上のすべての人のプライバシーを向上させるための貢献を発表できることを嬉しく思います。ネットワークによりユーザーがどのWebサイトを訪問しているかを盗み見られることを防ぐ新しい規格となるEncrypted Client Helloが、現在すべてのCloudflareプランでご利用いただけます...