pplx-apiの紹介

オープンソースLLMのためのPerplexity Labsの高速かつ効率的なAPI

Introducing pplx-api by Perplexity Labs

ご注意:以下は現在のモデルでは非推奨となっています。APIの詳細はこちら

Mistral 7BLlama2 13BCode Llama 34BLlama2 70Breplit-code-v1.5-3bといったモデルへアクセスするための最速の手段の一つとして設計されたpplx-apiを発表できることを大変嬉しく思います。pplx-apiにより、開発者は最先端のオープンソースLLMを自身のプロジェクトに容易に統合できるようになります。

当社のpplx-apiが提供するもの:

使いやすさ:開発者は最先端のオープンソースモデルをすぐに利用でき、使い慣れたREST APIを使用して数分で開発を開始できます。

超高速推論:当社が注意深く設計した推論システムは効率的であり、Replicateと比較して最大2.9倍、Anyscaleと比較して最大3.1倍の低遅延を実現しています。

実戦で鍛え抜かれたインフラ:pplx-apiは、当社のPerplexity answer engineおよびLabs playgroundの両方で本番レベルのトラフィックを処理しており、その信頼性は実証済みです。

オープンソースLLMのワンストップショップ:当社のチームは、新しいオープンソースモデルが登場するたびにそれらを追加することに尽力しています。例えば、LlamaおよびMistralの各モデルについては、事前リリースアクセスなしで、リリースから数時間以内に追加しました。

pplx-apiは現在パブリックベータ版であり、Perplexity Proサブスクリプションをご利用のユーザーは無料でお使いいただけます。

カジュアルな週末のハッカソンや、革新的な新製品を構築するための商用ソリューションとしてpplx-apiをご活用ください。今回のリリースを通じて、皆様が当社のAPIを使ってどのような優れた革新的な製品を構築されるのかを知ることを楽しみにしております。pplx-apiのビジネス利用に関するお問い合わせは、api@perplexity.aiまでご連絡ください。皆様からのご連絡をお待ちしております!

pplx-apiの利点

使いやすさ

LLMのデプロイメントと推論には、モデル提供を高性能かつ費用対効果の高いものにするために、多大なインフラの取り組みが必要です。開発者は、C++/CUDAに関する深い知識やGPUへのアクセス権がなくても、APIをそのまま使用して、最先端のパフォーマンスを享受できます。また、当社のLLM推論は独自のハードウェアを管理する複雑さと必要性を抽象化するため、さらに使いやすさが向上します。

超高速推論

PerplexityのLLM APIは、高速な推論のために注意深く設計および最適化されています。これを達成するために、当社はNVIDIAのTensortRT-LLMを中心に、AWSが提供するA100 GPU上で動作する独自のLLM推論インフラを構築しました。詳細は「pplx-apiインフラの概要」セクションをご覧ください。その結果、pplx-apiは商用利用可能なLlamaおよびMistral APIの中で最速のものの一つとなっています。

既存のソリューションと比較してベンチマークを行うため、当社はpplx-apiのレイテンシを他のLLM推論ライブラリと比較しました。実験の結果、pplx-apiはText Generation Inference (TGI) と比較して最大2.92倍の全体的なレイテンシの短縮を実現し、初期応答レイテンシでは最大4.35倍の短縮を実現しました。この実験では、Llama-2-13B-chatモデルを2つのA100 GPUに分割して配置し、TGIとPerplexityの推論をシングルストリームおよびサーバーの各シナリオで比較しました。シングルストリームシナリオでは、サーバーはリクエストを順番に処理します。サーバーシナリオでは、クライアントは様々な負荷を模倣するためにポアソン分布に従ってリクエストを送信します。リクエストレートについては、TGIが維持できる最大スループットである1秒あたり最大1リクエストまでの小さなスイープを実行しました。実稼働環境の動作をシミュレートするために、様々な入力および出力トークン長を持つ実際のデータを使用しました。リクエストの平均は、入力トークンが約700、出力トークンが約550です。

同じ入力を使用し、リクエストの単一ストリームを送信して、他の既存のAPIに対するパフォーマンスの基準値を収集するために、この同じモデルについてReplicateおよびAnyscaleのAPIの平均レイテンシも測定しました。

Perplexity Labs - 初回トークンレイテンシ
Perplexity Labs - デコード速度

同じ実験設定を使用して、デコード速度をレイテンシの制約として、pplx-apiの最大スループットをTGIと比較しました。実験の結果、pplx-apiはTGIよりも1.90倍~6.75倍高速にトークンを処理し、TGIは60および80トークン/秒という厳格なレイテンシ制約を完全に満たせませんでした。当社は、pplx-apiの評価に使用したのと同じハードウェアおよび負荷条件下でTGIを評価しました。ReplicateおよびAnyscaleのハードウェアと負荷要因を制御できないため、この指標を彼らと比較することはできません。

参考までに、人間の平均読書速度は5トークン/秒です。つまり、pplx-apiは人が読む速度よりも速いレートで提供することが可能です。

Perplexity Labs - GPUあたりのトークンスループット

pplx-apiインフラの概要

これらのレイテンシ数値の達成には、最先端のソフトウェアとハードウェアの組み合わせが必要です。

NVIDIA A100 GPUを搭載したAWS p4dインスタンスは、クラス最高水準のクロック速度でGPUをスケールアウトするための、最も費用対効果が高く信頼性の高い選択肢として位置付けられています。

ソフトウェアがこのハードウェアを活用するために、当社はLLM推論を加速および最適化するオープンソースライブラリであるNVIDIAのTensorRT-LLMを実行しています。TensorRT-LLMはTensorRTの深層学習コンパイラをラップしており、LLMモデル実行のコンテキストフェーズおよび生成フェーズ向けに、FlashAttentionやマスク付きマルチヘッドアテンション (MHA) の最先端実装用に作成された最新の最適化済みカーネルが含まれています。

ここから、AWSのバックボーンとKubernetesとの強固な統合により、数百を超えるGPUに弾力的にスケールし、ダウンタイムとネットワークオーバーヘッドを最小限に抑えることが可能になります。

ユースケース:当社のAPIの本番運用

Perplexityにおけるpplx-api:コスト削減と信頼性

当社のAPIはすでにPerplexityの主要な製品機能の一つを支えています。単一の機能を外部APIからpplx-apiに切り替えただけで、年間62万ドルのコスト削減、つまりコストの約4倍の削減を達成しました。品質の低下がないことを確認するために、A/Bテストを実施し、インフラストラクチャのメトリクスを監視しました。2週間の過程で、A/Bテストにおいて統計的に有意な差は見られませんでした。さらに、pplx-apiは1日あたり100万件を超えるリクエストの負荷に耐えることができ、毎日合計で約10億トークンを処理しています。

この初期検討の結果は非常に勇気づけられるものであり、今後、当社のより多くの製品機能がpplx-apiによって支えられるようになると予想しています。

Perplexity Labsにおけるpplx-api:オープンソース推論エコシステム

また、当社は様々なオープンソースモデルを提供するモデルプレイグラウンドであるPerplexity Labsを動かすためにもpplx-apiを使用しています。

1日あたりの平均提供トークン数

当社のチームは、最新の最先端オープンソースLLMへのアクセスを提供することに尽力しています。Mistral 7B、Code Llama 34b、およびすべてのLlama 2モデルをリリースから数時間以内に統合しました。今後、より高性能なオープンソースLLMが利用可能になり次第、同様の対応を行う予定です。

PerplexityのAI APIを利用する

HTTPSリクエストを使用してpplx-api REST APIにアクセスできます。pplx-apiへの認証には、以下の手順が含まれます:

Perplexityアカウント設定ページからAPIキーを生成します。APIキーは、手動で更新または削除されるまで使用可能な長期アクセストークンです。

各pplx-apiリクエストのAuthorizationヘッダーに、ベアラートークンとしてAPIキーを送信します。

以下の例では、PERPLEXITY_API_KEYは上記の手順で生成されたキーにバインドされた環境変数です。チャット完了リクエストを送信するためにCURLを使用します。

bash
curl -X POST \ --url https://perplexity.coolkeypoint.com/__p/api.perplexity.ai/chat/completions \ --header 'accept: application/json' \ --header 'content-type: application/json' \ --header "Authorization: Bearer ${PERPLEXITY_API_KEY}" \ --data '{ "model": "mistral-7b-instruct", "stream": false, "max_tokens": 1024, "frequency_penalty": 1, "temperature": 0.0, "messages": [ { "role": "system", "content": "Be precise and concise in your responses." }, { "role": "user", "content": "How many stars are there in our galaxy?" } ] }'

その結果、以下のレスポンスが得られます(content-type: application/json)

json
{ "id": "3fbf9a47-ac23-446d-8c6b-d911e190a898", "model": "mistral-7b-instruct", "object": "chat.completion", "created": 1765322, "choices": [ { "index": 0, "finish_reason": "stop", "message": { "role": "assistant", "content": " The Milky Way galaxy contains an estimated 200-400 billion stars.." }, "delta": { "role": "assistant", "content": " The Milky Way galaxy contains an estimated 200-400 billion stars.." } } ], "usage": { "prompt_tokens": 40, "completion_tokens": 22, "total_tokens": 62 } }

以下はPythonでの呼び出し例です:

python
from openai import OpenAI YOUR_API_KEY = "INSERT API KEY HERE" messages = [ { "role": "system", "content": ( "You are an artificial intelligence assistant and you need to " "engage in a helpful, detailed, polite conversation with a user." ), }, { "role": "user", "content": ( "Count to 100, with a comma between each number and no newlines. " "E.g., 1, 2, 3, ..." ), }, ] client = OpenAI(api_key=YOUR_API_KEY, base_url="https://perplexity.coolkeypoint.com/__p/api.perplexity.ai") # demo chat completion without streaming response = client.chat.completions.create( model="mistral-7b-instruct", messages=messages, ) print(response) # demo chat completion with streaming response_stream = client.chat.completions.create( model="mistral-7b-instruct", messages=messages, stream=True, ) for response in response_stream: print(response)

現在、Mistral 7BLlama 13BCode Llama 34BLlama 70Bをサポートしており、APIはOpenAIクライアントと互換性があるため、既存のアプリケーションへの統合が容易です。

詳細については、当社のAPIドキュメントおよびクイックスタートガイドをご覧ください。

今後の展望

近い将来、pplx-apiは以下をサポートする予定です:

カスタムPerplexity LLMおよびその他のオープンソースLLM。

カスタムPerplexity埋め込みおよびオープンソース埋め込み。

パブリックベータ終了後の一般アクセスを伴う専用API料金体系。

事実確認と引用元明示機能を備えたPerplexity RAG-LLM API。

これらのユースケースに関心がある場合は、api@perplexity.aiまでご連絡ください。

これは、Perplexityブログ投稿シリーズの開始でもあります。次回の投稿では、LLM推論におけるA100とH100のパフォーマンス比較について詳しく解説します。どうぞお楽しみに!

当社では採用活動を行っています!大規模にデプロイされた製品に取り組み、注意深く設計および最適化された生成AIおよび大規模言語モデルのインフラを当社と共に構築したい方は、ぜひご応募ください

TwitterLinkedInで当社をフォローし、Discordに参加して議論を深めましょう。

著者:

Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats

データプライバシー

pplx-apiを選択することで、ユーザーと顧客のプライバシーと信頼を保護しながら、LLMの可能性を最大限に引き出すことができます。当社は個人情報を保護することの重要性を理解しており、ユーザーのセキュリティとプライバシーの維持に取り組んでいます。APIデータは30日後に自動的に削除され、pplx-apiを通じて送信されたデータでトレーニングを行うことは一切ありません。ユーザーは、アカウント設定からデータ保持を無効にするオプションを選択できます。APIプライバシーポリシーはこちらをご覧ください。