Metaが公開した直後から、性能の高さで話題を席巻している最新のオープンソースLLM「Llama 3」だが、早速、そのLlama 3をAPIから利用可能なサービスも提供されている。
中でも、AIチップスタートアップの「Groq」が提供するクラウドコンピューティングサービスは、Llama 3の大型モデルである70B(700億)パラメータ版でも、テキスト生成の速度が信じられないほどに高速で、国内外で大きく話題になっている。
1秒あたりに生成できるトークン数を、「T/s (tokens per second)」という単位で測ってみると、Groqがブラウザ上で提供しているチャットで、Llama 3 8Bモデルで800トークン超/秒、Llama 3 70Bモデルで200トークン超/秒というスピードだ。
100トークンがざっくり英文の75単語だと考えると、8Bモデルなら600単語、70Bモデルなら150単語ものテキストを、わずか1秒で生成できることになる。
OpenAIのChatGPTでGPT-4 Turboを使ったり、AnthropicのClaude 3 Opusを使ったりすると、少しずつゆっくりテキストが表示されて、長文を生成する場合にじれったいと感じた経験がある人も多いのではないだろうか。
Groq Cloudで動かすLlama 3は、体感としても爆速で、リアルタイムのテキスト処理が必要なアプリや、超大規模なデータに対して一括でLlama 3によるテキスト処理を加えるなど、さまざまな応用が広がりそうだ。
「Groq」のLlama 3は何故こんなに速いのか?
Groqは、2016年に設立されたAIチップスタートアップで、CPUでもGPUでもない「LPU(Language Processing Unit)」で構成されたネットワークによって、高速な推論を可能にしている。
LPUは、GPUやCPUと比べて特に大規模言語モデル(LLM)に関して大きな計算能力を持ち、1ワードあたりの計算時間を短縮し、テキストを高速に生成できるという。
実際、LLMサービスプロバイダーの速度を比較したベンチマークである、LLMPerf Leaderboardによれば、1秒あたりのアウトプットトークン数の指標で、Amazon BedrockやTogether AIなどの主要なプロバイダと比較しても、3〜18倍もの差をつけてGroqが最上位になっている。
しかも、速いだけではなくコストが安いのも特徴だ。
Groq CloudのAPIでは、Llama 3シリーズの大型モデルであるLLama 3 70Bであっても、100万トークンあたり入力$0.59、出力$0.79とのこと。
この価格は、まさに価格破壊レベルで安い。
例えばAnthropic社のClaude 3のAPIは、最上位モデルのOpusで100万トークンあたり$15/$75、Llama 3 70Bモデルと類似の性能と思われるSonnetで$3/$15だ。
ざっくり出力トークンだけに絞って価格差を計算すると、GroqのLlama 3 70Bは、Claude 3 Opusの100分の1、Sonnetの20分の1の価格ということだ。
超高速で超安いときたら、多くのユーザー数を抱えたサービスでのチャットボットなど、日常生活に高性能なAIが溶け込む未来が、更に一気に近づいたように思える。
超高速のGroq × Llama 3 70Bをブラウザ上で無料で体感
GroqのWebサイトに行くと、サインインするだけで、Llama 3 70Bなどのモデルとのチャットが直ちに利用できるようになっている。
無料でGroqの超絶スピードを体感できるので、「Sign in to Groq」をクリックし、メールアドレスを入力して、一度使ってみることをお勧めする。
サインインした状態で、画面右上のプルダウンメニューをクリックすると、Llama 3や、Mistral、GemmaなどのオープンソースのLLM(大規模言語モデル)から、チャットの相手を選択することができる。
ひとまず、リリースされたばかりのLlama 3 70Bと、Llama 3 8Bを使ってみよう。
スピードを試す意味では、プロンプトはなんでもいいが、まずはLlama 3 70Bモデルに量子コンピューティングについて質問してみた。
すると、Groqが自動で1秒あたりのトークン数を計算して表示してくれる。
大型の70Bモデルであっても、秒間200トークンと爆速で、画面を見ていても、これまでのLLMでは体験したことがないほど一瞬でテキストが表示され、非常に驚かされる。
Llama 3 70Bよりも軽量なLlama 3 8Bモデルを使ってみると、更にそのスピードは跳ね上がる。
Llama 3 8Bモデルの場合、秒間800トークン超という驚異的なスピードで処理が完了した。
ちなみに、Llama 3は、OpenAIのChatGPT(GPT-4)などと比べて、日本語で質問した場合の回答も、英語になりやすいように思える。
日本語でGroq、Llama 3を利用したい場合には、画面右上にある歯車マークをクリックして、「System Prompt」を設定しておくと良い。
System Promptは、ユーザーからのプロンプトに対する回答生成にあたっての方針やルールを決めておくことができる機能だ。
例えば、「あなたは優れたAIアシスタントである。回答は常に日本語で行う。」などとSystem Promptをセットしておくと、回答が日本語になる。
日本語でLlama 3 70Bモデルに生成させた場合でも、約300トークン/秒と非常に高速で回答が表示された。
Groq CloudのAPIでもLlama 3 8B/70Bが無料で使用可能
GroqのWebブラウザ上で利用できるチャットは、あくまでもサンプルなので、実際に様々なアプリなどに埋め込んで使う場合には、APIを利用する必要がある。
APIキーさえあれば、ChatGPTのようなチャット画面を再現したアプリ(ChatbotUIや、Open WebUIなど)を使えば、GroqのAPIキーを入れて、Groq × Llama 3とのチャットも簡単に利用できるので、プログラミング知識がない人でも、Groqの恩恵に預かることが可能だ。
以下では、まずGroqのAPIの仕様や料金形態と、APIキーの作り方、そして実際に使って速度を測定した結果を紹介する。
その後、汎用的なチャットUIアプリである「ChatbotUI」にGroqのAPIキーを設定して、Llama 3 70Bモデルとの高速チャットを無料で利用可能にする方法も紹介する。
Groq APIは、OpenAIのAPIと互換性がある
ちなみに、GroqのAPIは、OpenAIと互換性を持つAPIの仕様となっているので、OpenAIのAPIを使うことのできるツールやアプリケーションは、基本的にすべてGroqのAPIでも動作する。
OpenAI互換APIの主な特徴は、OpenAIのChat Completions APIの仕様に準拠していることだ。例えば、リクエストパラメータ、レスポンスフォーマット、エラーハンドリングなどの仕様が同じになっているということだ。
OpenAIのAPIに対応したツールを、他のLLMでも使えるようになるため、LLMの選択肢が広がるのが嬉しい。
例えば、Groqの高速なAPIを、GPT-4がプログラミングを補助してくれるエディタであるCursorなどで使うこともできるし、OpenAIのAPIキーを使えるチャットUIアプリ(Open WebUIやChatbotUI)で使うこともできる。
Groq APIのベータ版はレート制限はあるが無料で使用可能
まず、APIサービスを提供している「Groq Cloud」の料金形態は、入力・出力トークンの量に応じた従量課金式だ。
記事執筆現在、Groqは「Free Beta」として無料のベータ版を提供しており、1分間に30リクエスト、1日に1.4万リクエストまでという制限付きではあるが、APIも無料で利用可能になっている。
個人が1人でチャット相手として利用している場合に、1日に1.4万回もチャットを送ることはないであろうから、ほぼ無制限で無料で利用できるようなものだ。
「On Demand」プランが、トークン数に応じた従量課金プランで、OpenAIやAthropic, Google GeminiなどのAPIと類似のものだが、現在はまだリリースされていない。
今回のLlama 3のリリースもきっかけに注目を集めたこともあり、急激に利用者が増えているので、Beta版の期間を延長中な模様だ。
レートリミット(上記のようなリクエスト数・量の制限)が緩和された有料プランのリリースにはもう少し時間がかかるとのことで、世の中のアプリやサービスへの実装が可能になるには時間がかかりそうだが、個人チャットとして楽しむ分には支障はない。
GroqのAPIキーの作り方
APIの利用方法もシンプルで、Groq Cloudのページにアクセスしたら左側のメニューから「API Keys」を選択し、「Create API Key」ボタンで新しいAPIキーを作成する。
今回は、この後ChatbotUIを使ってチャットアプリとして使用するので、分かりやすくchatbotuiという名前をつけておいた。
APIキーは一度しか表示されないので、後で使う時のためにどこかにメモしておこう。
メモを忘れてしまっても、すぐ作り直すことはできるので特に問題はないが、過去に作ったスクリプトや、キーを入力したアプリが使えなくなってしまうので若干面倒だ。
GroqならAPIのLlama 3 70Bも高速
実際にAPIキーを発行してみて、ひとまず、GroqのWebサイト上でのデモのような超ハイスピードが、APIでも本当に出るのかを確認してみた。
以下は、APIリクエストに対するレスポンスのスピードと、トークン数をカウントするPythonスクリプトを用意して、Groq APIのLlama 3 70Bモデルの1秒あたりのトークン数を測定してみた結果だ。
「Explain the importance of fast language models」というプロンプトで、高速な大規模言語モデルの重要性を英語で説明させてみたところ、以下のような結果となった。
- スピード: 137.94 トークン/秒
- 出力トークン数: 547
- 出力にかかった時間: 3.97 秒
リクエストのたびに、1秒あたりのトークン数は多少上下するが、秒間100トークン超〜100トークン後半くらいのレンジであり、200トークン/秒だったGroq Webサイト上の結果と、そこまで大きくは乖離しない結果となった。
これだけ高速であれば、APIを使ってサービスやアプリに埋め込んだ場合でも、他のAIサービスに比べれば、爆速のレスポンスが可能だろう。
なお、測定には以下のような筆者が自分で用意したPythonスクリプトを使用しており、トークン数や秒数の測定は、Groqが使用している測定方法とは異なる可能性がある。
このスクリプトのベースは、ユーザーからの入力を受け取り、その入力を使ってGroq CloudのLLaMA 3 70Bモデルのアウトプットを取得する単純なものだ。
これに、(1)テキストコンプリーションの開始時点と終了時点のタイムスタンプから秒数を計算し、また、(2)出力されたテキストをトークナイザーを使用してトークンに分割してトークンの総数を計算、最後に(3)トークンの総数を処理時間(秒)で割り、1秒あたりのトークン数を計算している。
(前提として、GroqのAPIキー、Hugging Faceのユーザートークンを環境変数にセットし、かつHugging Faceのmeta-llamaの利用規約に同意していないと動作しない)
from groq import Groq
import time
from transformers import AutoTokenizer
from huggingface_hub import login
import os
model_id = "meta-llama/Meta-Llama-3-70B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
client = Groq()
login(token=os.getenv("HF_TOKEN"))
# Prompt the user for input
user_input = input("Please enter your question: ")
start_time = time.time() # Start timing
completion = client.chat.completions.create(
model="llama3-70b-8192",
messages=[
{
"role": "user",
"content": user_input
}
],
temperature=1,
max_tokens=1024,
top_p=1,
stream=False,
stop=None,
)
elapsed_time = time.time() - start_time # Calculate elapsed time
# Calculate the total number of tokens in the output using the tokenizer
response_content = completion.choices[0].message.content
total_tokens = len(tokenizer.encode(response_content))
print(response_content)
# Display the speed of the output, total tokens, and elapsed time
if elapsed_time > 0: # Prevent division by zero
speed = total_tokens / elapsed_time
print(f"Speed: {speed:.2f} tokens per second")
print(f"Total tokens: {total_tokens}")
print(f"Elapsed time: {elapsed_time:.2f} seconds")
else:
print("Error: Elapsed time is zero.")
Groq CloudのAPIを汎用チャットUI「ChatbotUI」に実装する
ChatbotUIは、オープンソースで誰でも無料で利用することのできる、汎用チャットユーザーインターフェースだ。
OpenAIのGPT-4、AnthropicのClaude 3、GoogleのGeminiなどのAPI経由で利用できるLLMから、ローカルにOllamaでインストールしたLlamaやMistralなどのローカルLLMまで、ありとあらゆる大規模言語モデルを、共通のチャット画面で動かすことができるのが魅力だ。
ChatbotUIは、デフォルトでGroqのAPIにも対応しているので、設定でGroqのAPIキーを追加すれば、Groq経由でのLlamaモデルも利用できるというわけだ。
ChatbotUIのローカルへのインストール
まずは、自分のPC・Mac上でChatbotUIを利用可能にするため、Githubで公開されているChatbotUIのレポジトリに従って、ChatbotUIをインストールする。
Macの場合、ターミナルでコマンドを打ち込んでいくことで完結するが、HomebrewやNode.js、Docker Desktopなどが必要になるので、若干面倒ではある。
当ブログでは、ChatbotUIのインストール方法を詳細に解説した記事を用意しており、プログラミング経験がない初心者でも、インストールできるはずだ。
まずは以下の記事を参照して、ChatbotUIをインストールしよう。
ChatbotUIの環境変数にAPIキーを入力
ChatbotUIを起動した後に、設定からAPIキーを入力するだけでも、簡単にGroqのAPIを利用することは可能だが、一応、起動する前に、環境変数でAPIキーを設定しておく方法も紹介しておく。
初心者はこの部分は読み飛ばして、以下のLlama 3 70BをカスタムモデルとしてChatbotUIの設定で追加する方法を採れば良い。
ChatbotUIをインストールしたディレクトリにある.env.local
ファイルをテキストエディタで開き、「GROQ_API_KEY=」の横に、Groq Cloudで作成したgsk-で始まるAPIキーを入力しておく。
これを入力しておけば、ChatbotUIを起動するだけで、Groqで利用できるLlamaやMistralなどのモデルが、クラウドモデル一覧に追加された状態になり便利だ。
実際、ChatbotUIを起動して、右上のモデル選択画面から「Hosted」の中身を見ていくと、Groqが提供しているモデルの表示が追加されていることが分かる。
記事執筆時点(2024/4/21)では、Llama 3 8B/70Bモデルがリリースされた直後ということもあって、まだChatbotUIの画面に、Llama 3が出てこない。
今後のアップデートで追加されることに期待しつつ、ここではカスタムモデルとして、GroqのLlama 3 70Bを追加する方法を紹介する。
カスタムモデルとしてGroqのLlama 3 70Bを追加する方法
ChatbotUIには、OpenAI互換性のあるAPIを好きなだけ追加できる機能がある。
ChatbotUIを開いて左側のメニューから、星のマークのようなアイコンをクリックすると、「+ New Model」というボタンで、任意のAPI仕様を追加することができる。
GroqのLlama 3 70Bモデルを使用する場合には、以下のようにモデルID、APIリクエストのベースURL、自分のGroq APIキーを入力するだけで良い。
- Model ID: llama3-70b-8192
- Base URL: https://api.groq.com/openai/v1
今後、ChatbotUIのアップデートで、GroqのLlama 3モデルにもデフォルト対応してくれることを祈りつつ、一旦仮のカスタムモデルということで、「(Temp) Groq Llama 3 70B」という名前をつけて保存した。
こうした追加したカスタムモデルは、ChatbotUIの右上のモデル選択画面にすぐ出てくるので、これを選択することでGroqのLlama 3 70Bと簡単にチャットできるようになる。
システムプロンプトも設定可能なので、ここでもWeb版と同じく「あなたは優れたAIアシスタントである。回答は常に日本語で行う。」と記載して、日本語を使ってくれるように仕向けておく。
そして、折角なのでGroq Llama 3 70B君に、LPUについて質問してみると、しっかり日本語で回答を生成してくれた。
しかも、流石GroqのAPIキーだけあって爆速なので、一瞬で回答が表示されて改めて驚かされる。ChatbotUIで使用するOpenAIやAnthropic、GoogleのAPIとは、比べ物にならないほど早い。
これで、自分のPC上で、超高速で動作するLlama 3 70Bモデルを、無料で使えるようになった。
ChatGPTやClaude 3など、オンラインで利用する月額制のサブスクLLMしか使ったことがない人は、これを機会に、超高速かつ格安で利用できるLlama 3 70Bモデルを、ChatbotUIとともに使ってみてほしい。
Groq × Llama 3が産む新たなアプリの波に期待
Groq × Llama 3モデルの超高速なテキスト生成能力は、これまで不可能だったアプリケーションの実現を可能にするのではと期待が高まる。
中型の70Bモデルでも、日本語を秒間300トークンの超高速で生成できるとなると、リアルタイムの対話システム、大量コンテンツの自動生成、高速な機械翻訳や要約など、幅広い分野で使い道がありそうだ。
現在Metaがトレーニング中だとされるLlama 3の最大パラメータ数の400Bモデルがリリースされ、それもまたGroqに実装されれば、幅広い分野で超高性能かつ超安価なAIサービスが爆誕することだろう。
GroqのLPUを活用した新たなサービスやアプリケーションが次々と登場し、私たちの生活やビジネスに大きな変革をもたらす日も近そうだ。