pplx-api 소개

오픈 소스 LLM을 위한 Perplexity Lab의 빠르고 효율적인 API

Introducing pplx-api by Perplexity Labs

참고: 아래 내용은 현재 모델에서 더 이상 지원되지 않습니다.API에 대해 더 알아보기

Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b 모델에 액세스하는 가장 빠른 방법 중 하나로 설계된 pplx-api를 발표하게 되어 매우 기쁩니다. pplx-api를 통해 개발자는 최첨단 오픈 소스 LLM을 자신의 프로젝트에 쉽게 통합할 수 있습니다.

pplx-api 제공 사항:

사용 편의성: 개발자는 최신 오픈 소스 모델을 즉시 사용할 수 있으며, 익숙한 REST API를 통해 몇 분 내에 시작할 수 있습니다.

초고속 추론: 당사가 신중하게 설계한 추론 시스템은 효율적이며 Replicate 대비 최대 2.9배, Anyscale 대비 최대 3.1배 낮은 지연 시간을 달성합니다.

검증된 인프라: pplx-api는 Perplexity 답변 엔진Labs 플레이그라운드에서 프로덕션 수준의 트래픽을 처리하며 그 신뢰성이 입증되었습니다.

오픈 소스 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는 빠른 추론을 위해 신중하게 설계되고 최적화되었습니다. 이를 위해 당사는 AWS에서 제공하는 A100 GPU에서 실행되는 NVIDIA의 TensortRT-LLM을 기반으로 하는 독자적인 LLM 추론 인프라를 구축했습니다. 자세한 내용은 pplx-api 인프라 개요 섹션에서 확인하실 수 있습니다. 그 결과, pplx-api는 상용화된 Llama 및 Mistral API 중 가장 빠른 성능을 자랑합니다.

기존 솔루션과의 벤치마크를 위해 pplx-api의 지연 시간을 다른 LLM 추론 라이브러리와 비교했습니다. 실험 결과, pplx-api는 TGI(Text Generation Inference) 대비 최대 2.92배 빠른 전체 지연 시간과 최대 4.35배 빠른 초기 응답 지연 시간을 달성했습니다. 이 실험에서는 양쪽 GPU에 분산된 Llama-2-13B-chat 모델을 사용하여 2개의 A100 GPU에서 단일 스트림 및 서버 시나리오에 대해 TGI와 Perplexity의 추론 성능을 비교했습니다. 단일 스트림 시나리오에서는 서버가 요청을 순차적으로 처리합니다. 서버 시나리오에서는 클라이언트가 가변적인 부하를 모방하기 위해 푸아송 분포에 따라 다양한 요청 속도로 요청을 전송합니다. 요청 속도의 경우, TGI가 유지할 수 있는 최대 처리량인 초당 최대 1개의 요청까지 소규모 스윕을 수행했습니다. 프로덕션 동작을 시뮬레이션하기 위해 다양한 입력 및 출력 토큰 길이를 가진 실제 데이터를 사용했습니다. 요청은 평균 약 700개의 입력 토큰과 550개의 출력 토큰으로 구성됩니다.

동일한 입력을 사용하고 단일 스트림의 요청을 전송하여, 다른 기존 API와의 성능 기준을 수집하기 위해 동일 모델에 대한 Replicate 및 Anyscale API의 평균 지연 시간도 측정했습니다.

Perplexity Labs - 첫 토큰 지연 시간
Perplexity Labs - 디코딩 속도

동일한 실험 설정을 사용하여 디코딩 속도를 지연 시간 제약 조건으로 설정하고 pplx-api의 최대 처리량을 TGI와 비교했습니다. 실험에서 pplx-api는 TGI보다 1.90배~6.75배 더 빠르게 토큰을 처리했으며, TGI는 초당 6080 토큰의 엄격한 지연 시간 제약 조건을 충족하지 못했습니다. 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과 masked MHA(multi-head attention)의 최첨단 구현을 위해 만들어진 최신 최적화 커널을 포함합니다.

여기에서 AWS의 백본과 Kubernetes와의 강력한 통합을 통해 수백 개의 GPU를 넘어 탄력적으로 확장하고 가동 중지 시간과 네트워크 오버헤드를 최소화할 수 있습니다.

사용 사례: 프로덕션에서의 API

Perplexity의 pplx-api: 비용 절감 및 안정성

당사의 API는 이미 Perplexity의 핵심 제품 기능 중 하나를 구동하고 있습니다. 외부 API에서 pplx-api로 단일 기능을 전환하는 것만으로도 연간 62만 달러의 비용 절감 효과를 거두었으며, 이는 비용의 약 4배 감소에 해당합니다. A/B 테스트를 실행하고 인프라 지표를 모니터링하여 품질 저하가 없음을 확인했습니다. 2주 동안 A/B 테스트에서 통계적으로 유의미한 차이는 관찰되지 않았습니다. 또한 pplx-api는 하루 100만 건 이상의 요청을 지속할 수 있으며, 일일 총 처리 토큰 수는 거의 10억 개에 달합니다.

이 초기 탐색 결과는 매우 고무적이며, 향후 더 많은 제품 기능에 pplx-api가 활용될 것으로 예상됩니다.

Perplexity Labs의 pplx-api: 오픈 소스 추론 생태계

또한 당사는 다양한 오픈 소스 모델을 서비스하는 모델 플레이그라운드인 Perplexity Labs를 구동하기 위해 pplx-api를 사용합니다.

일일 평균 제공 토큰 수

당사 팀은 최신 최첨단 오픈 소스 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 7B, Llama 13B, Code Llama 34B, Llama 70B를 지원하며, 기존 애플리케이션과 쉽게 통합할 수 있도록 OpenAI 클라이언트와 호환됩니다.

자세한 내용은 API 문서빠른 시작 가이드를 참조하십시오.

다음 단계

가까운 시일 내에 pplx-api에서 다음을 지원할 예정입니다:

맞춤형 Perplexity LLM 및 기타 오픈 소스 LLM.

맞춤형 Perplexity 임베딩 및 오픈 소스 임베딩.

퍼블릭 베타 종료 후 일반 액세스를 위한 전용 API 요금제.

사실 관계 및 인용을 위한 근거를 포함한 Perplexity RAG-LLM API.

이러한 사용 사례에 관심이 있으시면 api@perplexity.ai로 문의해 주십시오.

이는 Perplexity 블로그 게시물 시리즈의 시작이기도 합니다. 다음 게시물에서는 LLM 추론을 위한 A100과 H100 성능 비교에 대해 자세히 알아보겠습니다. 기대해 주세요!

채용 중! 대규모로 배포되는 제품을 작업하고 신중하게 설계되고 최적화된 생성형 및 대규모 언어 모델 인프라를 우리와 함께 구축하고 싶다면 함께해 주십시오.

Twitter, LinkedIn에서 우리를 팔로우하고 더 많은 토론을 위해 Discord에 참여하세요.

작성자:

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

데이터 개인정보 보호

pplx-api를 선택하면 LLM의 잠재력을 최대한 활용하는 동시에 사용자와 고객의 개인정보와 신뢰를 보호할 수 있습니다. 당사는 개인정보 보호의 중요성을 이해하며 사용자의 보안 및 개인정보를 유지하기 위해 최선을 다하고 있습니다. API 데이터는 30일 후 자동으로 삭제되며, pplx-api를 통해 전송된 데이터는 절대로 학습에 사용하지 않습니다. 사용자는 계정 설정에서 데이터 보존을 거부할 수 있습니다. API 개인정보 처리방침은 여기에서 확인하세요.