Giới thiệu pplx-api

API nhanh và hiệu quả của Perplexity Lab cho các LLM mã nguồn mở

Introducing pplx-api by Perplexity Labs

Xin lưu ý: Các mục dưới đây đã ngừng hỗ trợ đối với các mô hình hiện tại. Tìm hiểu thêm về các API của chúng tôi

Chúng tôi rất vui mừng giới thiệu pplx-api, được thiết kế để trở thành một trong những cách nhanh nhất để truy cập các mô hình Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b. pplx-api giúp các nhà phát triển dễ dàng tích hợp các LLM mã nguồn mở tiên tiến vào các dự án của họ.

pplx-api của chúng tôi cung cấp:

Dễ sử dụng: các nhà phát triển có thể sử dụng các mô hình mã nguồn mở tiên tiến ngay lập tức và bắt đầu trong vòng vài phút với một REST API quen thuộc.

Tốc độ suy luận cực nhanh: hệ thống suy luận được thiết kế tỉ mỉ của chúng tôi rất hiệu quả và đạt độ trễ thấp hơn tới 2.9x so với Replicate và thấp hơn tới 3.1x so với Anyscale.

Hạ tầng được kiểm chứng qua thực tế: pplx-api đã được chứng minh là đáng tin cậy, phục vụ lưu lượng truy cập cấp độ sản xuất trong cả công cụ trả lời Perplexitymôi trường thử nghiệm Labs của chúng tôi.

Điểm đến duy nhất cho các LLM mã nguồn mở: đội ngũ của chúng tôi tận tâm bổ sung các mô hình mã nguồn mở mới ngay khi chúng ra mắt. Ví dụ: chúng tôi đã thêm các mô hình Llama và Mistral chỉ trong vài giờ sau khi phát hành mà không cần quyền truy cập trước khi phát hành.

pplx-api đang trong giai đoạn thử nghiệm công khai (public beta) và miễn phí cho người dùng có gói đăng ký Perplexity Pro.

Sử dụng pplx-api cho một sự kiện hackathon cuối tuần thông thường hoặc như một giải pháp thương mại để xây dựng các sản phẩm mới và sáng tạo. Chúng tôi hy vọng sẽ tìm hiểu cách mọi người có thể xây dựng các sản phẩm tuyệt vời và sáng tạo bằng API của chúng tôi thông qua bản phát hành này. Vui lòng liên hệ với api@perplexity.ai nếu bạn có trường hợp sử dụng kinh doanh cho pplx-api. Chúng tôi rất muốn lắng nghe ý kiến từ bạn!

Lợi ích của pplx-api

Dễ sử dụng

Việc triển khai và suy luận LLM đòi hỏi một lượng lớn cơ sở hạ tầng để làm cho việc phục vụ mô hình có hiệu suất cao và chi phí hợp lý. Các nhà phát triển có thể sử dụng API của chúng tôi ngay mà không cần kiến thức sâu về C++/CUDA hoặc quyền truy cập vào GPU, đồng thời vẫn tận hưởng hiệu suất tiên tiến. Việc suy luận LLM của chúng tôi cũng giúp trừu tượng hóa sự phức tạp và nhu cầu quản lý phần cứng của riêng bạn, qua đó giúp bạn sử dụng dễ dàng hơn nữa.


Tốc độ suy luận cực nhanh

API LLM của Perplexity được thiết kế cẩn thận và tối ưu hóa để suy luận nhanh. Để đạt được điều này, chúng tôi đã xây dựng một cơ sở hạ tầng suy luận LLM độc quyền xung quanh TensortRT-LLM của NVIDIA, được phục vụ trên các GPU A100 do AWS cung cấp. Tìm hiểu thêm trong phần Tổng quan về cơ sở hạ tầng pplx-api. Nhờ đó, pplx-api là một trong những API Llama và Mistral nhanh nhất có sẵn thương mại.

Để so sánh điểm chuẩn với các giải pháp hiện có, chúng tôi đã so sánh độ trễ của pplx-api với các thư viện suy luận LLM khác. Trong các thí nghiệm của chúng tôi, pplx-api đạt độ trễ tổng thể nhanh hơn tới 2.92x so với Text Generation Inference (TGI), và độ trễ phản hồi ban đầu nhanh hơn tới 4.35x. Đối với thí nghiệm này, chúng tôi đã so sánh TGI và suy luận của Perplexity cho các kịch bản luồng đơn và máy chủ trên 2 GPU A100 sử dụng mô hình Llama-2-13B-chat được phân đoạn trên cả hai GPU. Đối với kịch bản luồng đơn, máy chủ xử lý từng yêu cầu một. Trong kịch bản máy chủ, máy khách gửi các yêu cầu theo phân phối Poisson với các tốc độ yêu cầu khác nhau để mô phỏng tải thay đổi. Đối với tốc độ yêu cầu, chúng tôi thực hiện một lượt quét nhỏ lên đến tối đa 1 yêu cầu / giây, thông lượng tối đa mà TGI duy trì được. Chúng tôi đã sử dụng dữ liệu thực tế với nhiều độ dài token đầu vào và đầu ra khác nhau để mô phỏng hành vi sản xuất. Các yêu cầu trung bình có ~700 token đầu vào và ~550 token đầu ra.

Sử dụng cùng các đầu vào và gửi một luồng yêu cầu đơn, chúng tôi cũng đo lường độ trễ trung bình của các API của Replicate và Anyscale cho cùng mô hình này để thu thập cơ sở hiệu suất so với các API hiện có khác.

Perplexity Labs - Độ trễ token đầu tiên
Perplexity Labs - Tốc độ giải mã

Sử dụng thiết lập thí nghiệm tương tự, chúng tôi đã so sánh thông lượng tối đa của pplx-api với TGI, với tốc độ giải mã là giới hạn độ trễ. Trong các thí nghiệm của chúng tôi, pplx-api xử lý các token nhanh hơn 1.90x-6.75x so với TGI, và TGI hoàn toàn không đáp ứng được các giới hạn độ trễ nghiêm ngặt hơn của chúng tôi ở mức 6080 token/giây. Chúng tôi đánh giá TGI trong các điều kiện phần cứng và tải giống như chúng tôi đã sử dụng để đánh giá pplx-api. Việc so sánh số liệu này với Replicate và Anyscale là không thể vì chúng tôi không thể kiểm soát các yếu tố phần cứng và tải của họ.

Để tham khảo, tốc độ đọc trung bình của con người là 5 token/giây, nghĩa là pplx-api có khả năng phục vụ với tốc độ nhanh hơn mức đọc của một người.

Perplexity Labs - Thông lượng token trên mỗi GPU

Tổng quan về cơ sở hạ tầng pplx-api

Để đạt được các con số độ trễ này đòi hỏi sự kết hợp giữa phần mềm và phần cứng tiên tiến.

Các thực thể p4d của AWS được cung cấp sức mạnh bởi GPU NVIDIA A100 đặt nền móng là tùy chọn tiết kiệm chi phí và đáng tin cậy nhất để mở rộng quy mô GPU với tốc độ xung nhịp tốt nhất trong phân khúc.

Để phần mềm tận dụng tối đa phần cứng này, chúng tôi chạy TensorRT-LLM của NVIDIA, một thư viện mã nguồn mở giúp tăng tốc và tối ưu hóa việc suy luận LLM. TensorRT-LLM bao bọc trình biên dịch học sâu của TensorRT và bao gồm các kernel được tối ưu hóa mới nhất được tạo cho các triển khai tiên tiến của FlashAttention và chú ý đa đầu có mặt nạ (MHA) cho các giai đoạn ngữ cảnh và tạo sinh của việc thực thi mô hình LLM.

Từ đây, nền tảng của AWS và sự tích hợp chặt chẽ của nó với Kubernetes trao quyền cho chúng tôi mở rộng quy mô linh hoạt vượt qua hàng trăm GPU đồng thời giảm thiểu thời gian ngừng hoạt động và chi phí mạng.

Trường hợp sử dụng: API của chúng tôi trong sản xuất

pplx-api trong Perplexity: Giảm chi phí và độ tin cậy

API của chúng tôi đã và đang cung cấp sức mạnh cho một trong những tính năng sản phẩm cốt lõi của Perplexity. Chỉ riêng việc chuyển đổi một tính năng duy nhất từ API bên ngoài sang pplx-api đã giúp tiết kiệm chi phí 0,62 triệu USD/năm, giảm khoảng 4 lần chi phí. Chúng tôi đã chạy các bài kiểm tra A/B và theo dõi các chỉ số cơ sở hạ tầng để đảm bảo không bị suy giảm chất lượng. Trong suốt 2 tuần, chúng tôi không quan sát thấy sự khác biệt có ý nghĩa thống kê nào trong bài kiểm tra A/B. Ngoài ra, pplx-api có thể duy trì tải hàng ngày hơn một triệu yêu cầu, tổng cộng gần một tỷ token được xử lý hàng ngày.

Kết quả của cuộc khảo sát ban đầu này rất đáng khích lệ và chúng tôi dự đoán pplx-api sẽ cung cấp sức mạnh cho nhiều tính năng sản phẩm của chúng tôi hơn theo thời gian.

pplx-api trong Perplexity Labs: Hệ sinh thái suy luận mã nguồn mở

Chúng tôi cũng sử dụng pplx-api để cung cấp sức mạnh cho Perplexity Labs, môi trường thử nghiệm mô hình của chúng tôi phục vụ các mô hình mã nguồn mở khác nhau.

Trung bình số token phục vụ hàng ngày

Đội ngũ của chúng tôi cam kết cung cấp quyền truy cập vào các LLM mã nguồn mở tiên tiến nhất mới nhất. Chúng tôi đã tích hợp Mistral 7B, Code Llama 34b và tất cả các mô hình Llama 2 chỉ trong vòng vài giờ sau khi phát hành và có kế hoạch làm như vậy khi các LLM mã nguồn mở có năng lực hơn xuất hiện.

Bắt đầu với API AI của Perplexity

Bạn có thể truy cập REST API của pplx-api bằng các yêu cầu HTTPS. Việc xác thực vào pplx-api bao gồm các bước sau:

Tạo khóa API thông qua Trang cài đặt tài khoản Perplexity. Khóa API là một token truy cập có tuổi thọ dài có thể được sử dụng cho đến khi nó được làm mới hoặc xóa thủ công.

Gửi khóa API dưới dạng bearer token trong tiêu đề Authorization với mỗi yêu cầu pplx-api.

Trong ví dụ sau, PERPLEXITY_API_KEY là một biến môi trường được liên kết với một khóa được tạo bằng các hướng dẫn ở trên. CURL được sử dụng để gửi yêu cầu hoàn tất trò chuyện.

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?" } ] }'

Cho kết quả phản hồi sau, có 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 } }

Dưới đây là một ví dụ lệnh gọi 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)

Hiện tại chúng tôi hỗ trợ Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B và API tương thích thuận tiện với máy khách OpenAI để tích hợp dễ dàng với các ứng dụng hiện có.

Để biết thêm thông tin, vui lòng truy cập tài liệu APIHướng dẫn bắt đầu nhanh của chúng tôi.

Tiếp theo là gì

Trong tương lai gần, pplx-api sẽ hỗ trợ:

Các LLM Perplexity tùy chỉnh và các LLM mã nguồn mở khác.

Các biểu diễn nhúng (embeddings) Perplexity tùy chỉnh và biểu diễn nhúng mã nguồn mở.

Cấu trúc định giá API chuyênδ dụng với quyền truy cập chung sau khi giai đoạn thử nghiệm công khai kết thúc.

Perplexity RAG-LLM API với tính năng căn cứ cho các sự kiện và trích dẫn.

Liên hệ với api@perplexity.ai nếu bạn quan tâm đến bất kỳ trường hợp sử dụng nào sau đây.

Đây cũng là sự khởi đầu cho chuỗi bài viết trên Blog Perplexity của chúng tôi. Trong bài viết tiếp theo, chúng tôi sẽ chia sẻ một phân tích chuyên sâu về so sánh hiệu suất A100 và H100 cho việc suy luận LLM. Hãy chú ý theo dõi!

Chúng tôi đang tuyển dụng! Nếu bạn muốn làm việc trên một sản phẩm được triển khai ở quy mô lớn và xây dựng cơ sở hạ tầng mô hình ngôn ngữ lớn và tạo sinh được thiết kế tỉ mỉ, tối ưu hóa cẩn thận cùng chúng tôi, vui lòng tham gia cùng chúng tôi.

Theo dõi chúng tôi trên Twitter, LinkedIn và tham gia Discord của chúng tôi để thảo luận thêm.

Tác giả:

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

Bảo mật dữ liệu

Bằng cách chọn pplx-api, bạn có thể khai thác toàn bộ tiềm năng của các LLM đồng thời bảo vệ quyền riêng tư và niềm tin của người dùng và khách hàng của bạn. Chúng tôi hiểu tầm quan trọng của việc bảo vệ thông tin cá nhân của bạn và cam kết duy trì tính bảo mật và quyền riêng tư cho người dùng của chúng tôi. Dữ liệu API sẽ tự động bị xóa sau 30 ngày và chúng tôi không bao giờ huấn luyện trên bất kỳ dữ liệu nào được truyền qua pplx-api. Người dùng có tùy chọn từ chối việc giữ lại dữ liệu trong phần cài đặt tài khoản của họ. Tìm chính sách quyền riêng tư API của chúng tôi tại đây.