Perplexity Labsによるpplx-apiの紹介
Perplexity Labsによるpplx-apiの紹介
Perplexity Labsによるpplx-apiの紹介

手書き

AIチーム

公開日

2023/10/04

私たちは、Mistral 7BLlama2 13BCode Llama 34BLlama2 70Breplit-code-v1.5-3bモデルに最速でアクセスできる設計になった pplx-api を発表することを喜んでお知らせします。pplx-api は、最新のオープンソースLLMsを開発者が簡単にプロジェクトに統合できるようにすることを容易にします。

当社の pplx-api は以下を提供します:

  • 使いやすさ: 開発者は最新のオープンソースモデルをそのまま使用し、なじみのあるREST APIで数分以内に始めることができます。

  • 高速な推論: 我々の慎重に設計された推論システムは効率的で、Replicateよりも最大2.9倍、Anyscaleよりも最大3.1倍低い遅延を実現しています。

  • 実戦経験豊富なインフラ: pplx-api は信頼性があり、当社のパープレキシティ回答エンジンおよびLabs playgroundの両方で、本番レベルのトラフィックを提供しています。

  • オープンソースLLMsのワンストップショップ: 当社のチームは、新しいオープンソースモデルが到着するたびに追加することを保証しています。例えば、LlamaやMistralモデルは、先行アクセスなしに数時間以内に追加されました。

pplx-api はパブリックベータ版であり、Perplexity Pro サブスクリプションをお持ちのユーザーには無料で提供されます。

pplx-api を利用して、カジュアルな週末のハッカソンや新しい革新的な製品を構築するための商用ソリューションとしてご利用いただけます。このリリースを通じて、当社のAPIを使用してどのようにクールで革新的な製品を構築できるかを学ぶことを願っています。pplx-apiにビジネスユースケースがある場合は、api@perplexity.ai までご連絡ください。お聞かせいただければ幸いです。

pplx-apiの利点

使いやすさ

LLMの展開と推論には、モデル提供のパフォーマンスを高速かつコスト効率的にするための重要なインフラの導入が必要です。開発者は当社のAPIを即座に使用でき、C++/CUDAの深い知識やGPUへのアクセスなしに、最新の性能を楽しむことができます。また、当社のLLM推論は、独自のハードウェアの管理と複雑さを抽象化し、さらに利便性を高めています。

高速な推論

PerplexityのLLM APIは、高速な推論のために慎重に設計され、最適化されています。これを実現するために、当社はNVIDIAのTensorRT-LLMに基づいた独自のLLM推論インフラを構築しました。これは、A100 GPUsを提供しているAWSにサービス提供しています。詳細は、「pplx-apiインフラクに関する概要」セクションでご確認ください。その結果、pplx-api は商業的に利用可能なLlamaとMistralのAPIの中で最も速いAPIの一つです。

既存のソリューションとの比較のために、当社はpplx-apiの遅延を他のLLM推論ライブラリと比較しました。当社の実験では、TGIに比べてpplx-apiは、テキスト生成推論(TGI)と比較して、全体的な遅延が最大2.92倍、初期応答遅延が最大4.35倍速いことが示されました。この実験では、1つのリクエストを次々に処理するシングルストリームシナリオと、クライアントが変動する負荷を模倣するためにポアソン分布に従ってリクエストを送信するサーバーシナリオにおいて、2つのA100 GPUs上でLlama-2-13B-chatモデルを使用して、TGIとPerplexityの推論を比較しました。同じ入力を使用してシングルストリームのリクエストを送信し、ReplicateおよびAnyscaleのAPIの平均遅延も測定し、他の既存のAPIとのパフォーマンスベースラインを収集しました。

Perplexity Labs - First Token Latency Perplexity Labs - Decoding Speed

同じ実験設定を使用して、pplx-apiの最大スループットをTGIと比較し、デコード速度を遅延の制約としています。当社の実験では、pplx-apiのトークン処理速度はTGIよりも1.90〜6.75倍高速であり、TGIは60および80トークン/秒で当社のより厳しい遅延制約を満たすことができないことが完全に示されました。このメトリクスをReplicateおよびAnyscaleと比較することはできません。彼らのハードウェアと負荷要因を制御できないためです。

参考までに、平均的な人間の読書速度は1秒間に5トークンです。つまり、pplx-apiは読む速さを超える速さでサービスを提供できます。

Perplexity Labs - Token Throughput per GPU

pplx-apiインフラの概要

これらの遅延数値を達成するためには、最新のソフトウェアとハードウェアの組み合わせが必要です。

最高のクロック速度を持つNVIDIA A100 GPと組み合わされたAWSのp4dインスタンスが、最も費用対効果の高く信頼性のあるGPUのスケーリングオプションとして活躍しています。

このハードウェアを活用するために、当社はTensorRTのディープラーニングコンパイラを含む最新の最適化カーネルをラップした、LLM推論を加速化および最適化するためのオープンソースライブラリであるTensorRT-LLMを実行しています。TensorRT-LLMは、FlashAttentionとマスクされたマルチヘッドアテンション(MHA)の最新の最適化カーネルを備えた、最先端のFlashAttentionとマスクされたマルチヘッドアテンション(MHA)の実装用に最適化されたカーネルを含んでいます。

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


ユースケース: 当社のAPIが本番環境で運用

Perplexity内のpplx-api: コスト削減と信頼性

当社のAPIは、既にPerplexityのコア製品の1つを駆動しています。単一の機能を外部APIからpplx-apiに切り替えるだけで、年間62万ドルのコスト削減、約4倍の費用削減が実現しました。A/Bテストを実施し、インフラメトリクスを監視して品質の低下がないことを確認しました。2週間の間、A/Bテストにおいて統計的に有意な差異は観測されませんでした。さらに、pplx-apiは1日に100万件を超えるリクエストの負荷を持続させ、合計で1日にほぼ10億トークンを処理しました。

この初期の調査の結果は非常に励みになっており、pplx-apiが今後も当社の製品の機能をより多く駆動することを期待しています。

Perplexity Labs内のpplx-api: オープンソース推論エコシステム

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

Daily Average Token Served

当社のチームは、最新の最先端のオープンソースLLMsへのアクセスを提供することに専念しています。Mistral 7B、Code Llama 34b、およびすべてのLlama 2モデルをそれらのリリース後数時間で統合し、能力の高いオープンソースLLMsが利用可能になるたびに同様の取り組みを計画しています。


PerplexityのAI APIの利用を開始する

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

  1. Perplexityアカウント設定ページを介してAPIキーを生成します。APIキーは手動で更新または削除されるまで使用できる長寿命のアクセストークンです。

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

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

curl -X POST \
     --url https://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を持つ応答が提供されます。

{
  "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の例です:

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://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は既存のアプリケーションと簡単に統合できるようになっています。

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


次は何か

近い将来、pplx-apiは以下をサポートします:

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

  • カスタムPerplexityエンベディングおよびオープンソースエンベディング。

  • パブリックベータ版が終了した後の一般アクセスを伴う、専用API価格体系。

  • 事実と引用に関するPplexity RAG-LLM APIのグラウンディングを伴うAPI。

これらのいずれかにご興味がある場合は、api@perplexity.aiまでご連絡ください。

これはまた、Perplexityブログ記事シリーズの始まりです。次回の記事では、LLM推論のA100 vs H100の性能比較について深く掘り下げて共有します。お楽しみに!

採用中です!大規模なスケールで展開された製品で働き、慎重に最適化された発生的および大規模言語モデルインフラを構築したい方は、是非参加してください


データプライバシー

pplx-apiを選択することで、利用者やお客様のプライバシーと信頼性を保護しながら、LLMsのフルポテンシャルを活用することができます。当社は、利用者の個人情報を保護すること