היכרות עם pplx-api

ה-API המהיר והיעיל של Perplexity Labs למודלי שפה בקוד פתוח

Introducing pplx-api by Perplexity Labs

שימו לב: המודלים שלהלן אינם נתמכים עוד עבור דגמים נוכחיים. למידע נוסף על ממשקי ה-API שלנו

אנו שמחים להכריז על pplx-api, שתוכנן להיות אחת הדרכים המהירות ביותר לגשת למודלים Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b. pplx-api מקל על מפתחים לשלב מודלי שפה גדולים (LLMs) בקוד פתוח ומתקדמים בפרויקטים שלהם.

ה-pplx-api שלנו מספק:

קלות שימוש: מפתחים יכולים להשתמש במודלי קוד פתוח מתקדמים היישר מהקופסה ולהתחיל בתוך דקות ספורות באמצעות ממשק REST API מוכר.

הסקה מהירה במיוחד (Inference): מערכת ההסקה שתכננו בקפידה היא יעילה ומשיגה השהיה (latency) נמוכה עד פי 2.9 בהשוואה ל-Replicate ופי 3.1 בהשוואה ל-Anyscale.

תשתית שנבחנה בקרב: pplx-api הוכיח את אמינותו, והוא משרת תעבורה ברמת ייצור הן במנוע החיפוש Perplexity והן בסביבת Labs שלנו.

כתובת אחת למודלי LLM בקוד פתוח: הצוות שלנו מחויב להוסיף מודלי קוד פתוח חדשים עם הגעתם. לדוגמה, הוספנו את מודלי Llama ו-Mistral בתוך שעות ספורות מההשקה ללא גישה מוקדמת.

pplx-api נמצא בבטא ציבורית והוא חינמי למשתמשים בעלי מנוי Perplexity Pro.

השתמשו ב-pplx-api להאקתון סוף שבוע קליל או כפתרון מסחרי לבניית מוצרים חדשים וחדשניים. אנו מקווים ללמוד כיצד אנשים יכולים לבנות מוצרים מגניבים וחדשניים באמצעות ה-API שלנו הודות להשקה זו. אנא פנו אל api@perplexity.ai אם יש לכם מקרה שימוש עסקי עבור pplx-api. נשמח לשמוע מכם!

היתרונות של pplx-api

קלות שימוש

פריסה והסקה של מודלי שפה דורשים מאמץ תשתיתי משמעותי כדי להפוך את הגשת המודל לביצועית וחסכונית. מפתחים יכולים להשתמש ב-API שלנו מיד עם פתיחתו, ללא ידע מעמיק ב-C++/CUDA או גישה ל-GPUs, תוך שהם נהנים מביצועים מתקדמים. ההסקה של מודלי ה-LLM שלנו גם מפשטת את המורכבות והצורך בניהול חומרה משלכם, מה שתורם עוד יותר לקלות השימוש.


הסקה מהירה במיוחד

ממשק ה-LLM API של Perplexity תוכנן ועבר אופטימיזציה בקפידה להסקה מהירה. כדי להשיג זאת, בנינו תשתית הסקה קניינית המבוססת על TensorRT-LLM של NVIDIA, המופעלת על גבי מעבדי A100 GPU המסופקים על ידי AWS. למידע נוסף בסעיף סקירה כללית של תשתית pplx-api. כתוצאה מכך, pplx-api הוא אחד מממשקי ה-API של Llama ו-Mistral המהירים ביותר הזמינים במסחר.

כדי לבצע השוואה מול פתרונות קיימים, השווינו את ההשהיה (latency) של pplx-api מול ספריות הסקה אחרות של LLM. בניסויים שלנו, pplx-api משיג השהיה כוללת מהירה פי 2.92 בהשוואה ל-Text Generation Inference (TGI), והשהיית תגובה ראשונית מהירה פי 4.35. עבור ניסוי זה, השווינו בין TGI לבין ההסקה של Perplexity עבור תרחישי זרם יחיד ותרחישי שרת על גבי 2 מעבדי A100 GPU תוך שימוש במודל Llama-2-13B-chat המחולק בין שני המעבדים. בתרחיש זרם יחיד, השרת מעבד בקשה אחר בקשה. בתרחיש השרת, הלקוח שולח בקשות בהתאם להתפלגות פואסון עם קצבי בקשות משתנים כדי לדמות עומס משתנה. עבור קצב הבקשות, אנו מבצעים סריקה קטנה עד למקסימום של בקשה אחת לשנייה, התפוקה המרבית הנתמכת על ידי TGI. השתמשנו בנתונים מהעולם האמיתי עם מגוון אורכי אסימונים (tokens) של קלט ופלט כדי לדמות התנהגות ייצור. הבקשות מורכבות בממוצע מ-~700 אסימוני קלט ו-~550 אסימוני פלט.

באמצעות אותם קלטים ושליחת זרם בקשות יחיד, מדדנו גם את ההשהיות הממוצעות של ממשקי ה-API של Replicate ו-Anyscale עבור אותו מודל כדי ליצור בסיס ביצועים להשוואה מול ממשקי API קיימים אחרים.

באמצעות אותה תצורת ניסוי, השווינו את התפוקה המרבית של pplx-api מול TGI, כאשר מהירות הפענוח משמשת כאילוץ השהיה. בניסויים שלנו, pplx-api מעבד אסימונים מהר פי 1.90-6.75 מאשר TGI, ו-TGI נכשל לחלוטין בעמידה באילוצי ההשהיה המחמירים שלנו בקצב של 60 ו-80 אסימונים בשנייה. אנו מעריכים את TGI תחת אותם תנאי חומרה ועומס שבהם השתמשנו להערכת pplx-api. השוואת מדד זה עם Replicate ו-Anyscale אינה אפשרית מאחר שאין ביכולתנו לשלוט בגורמי החומרה והעומס שלהם.

לשם ההשוואה, מהירות הקריאה הממוצעת של בני אדם היא 5 אסימונים בשנייה, מה שאומר ש-pplx-api מסוגל להגיש נתונים בקצב מהיר יותר מהיכולת לקרוא אותם.

סקירה כללית של תשתית pplx-api

השגת נתוני השהיה אלו דורשת שילוב של תוכנה וחומרה מתקדמות.

מופעי AWS p4d המופעלים על ידי מעבדי NVIDIA A100 GPU מהווים את הבסיס כאופציה החסכונית והאמינה ביותר להרחבת מעבדי GPU עם מהירויות שעון מובילות בתחום.

כדי שתוכנה תוכל לנצל חומרה זו, אנו מריצים את TensorRT-LLM של NVIDIA, ספריית קוד פתוח המאיצה ומבצעת אופטימיזציה להסקת LLM. TensorRT-LLM עוטפת את מהדר הלמידה העמוקה של TensorRT וכוללת את ליבות האופטימיזציה העדכניות ביותר שנוצרו עבור יישומים מתקדמים של FlashAttention ו-masked multi-head attention (MHA) לשלבי ההקשר והיنצור של ביצוע מודל ה-LLM.

מכאן, הבסיס של AWS והאינטגרציה החזקה שלה עם Kubernetes מאפשרים לנו להתאים את עצמנו בגמישות מעבר למאות מעבדי GPU ולמזער זמני השבתה ותקורת רשת.

מקרה שימוש: ה-API שלנו בסביבת ייצור

pplx-api ב-Perplexity: הפחתת עלויות ואמינות

ה-API שלנו כבר מפעיל אחת מתכונות המוצר המרכזיות של Perplexity. החלפה בלבד של תכונה אחת מממשק API חיצוני ל-pplx-api הביאה לחיסכון בעלויות של 0.62 מיליון דולר בשנה, שהם בערך הפחתה של פי 4 בעלויות. הרצנו בדיקות A/B ופיקחנו על מדדי התשתית כדי לוודא שאין ירידה באיכות. במשך שבועיים, לא הבחנו בהבדל מובהק סטטיסטית בבדיקת ה-A/B. בנוסף, pplx-api יכול לתמוך בעומס יומי של למעלה ממיליון בקשות, המסתכמות בכמעט מיליארד אסימונים מעובדים מדי יום.

התוצאות של הבדיקה הראשונית הזו מעודדות מאוד, ואנו צופים ש-pplx-api יפעיל תכונות נוספות של המוצר שלנו לאורך זמן.

pplx-api ב-Perplexity Labs: אקולוגיית הסקה בקוד פתוח

אנו משתמשים ב-pplx-api גם כדי להפעיל את Perplexity Labs, סביבת הפיתוח שלנו המציעה מגוון מודלי קוד פתוח.

הצוות שלנו מחויב לספק גישה למודלי ה-LLM העדכניים והמתקדמים ביותר בקוד פתוח. שילבנו את Mistral 7B, Code Llama 34b ואת כל מודלי Llama 2 בתוך שעות ספורות מרגע השקתם, ואנו מתכננים לעשות זאת ככל שיהיו זמינים מודלי LLM מתקדמים ופתוחים יותר.

התחילו לעבוד עם ה-API מבוסס הבינה המלאכותית של Perplexity

ניתן לגשת לממשק ה-REST API של pplx-api באמצעות בקשות HTTPS. אימות מול pplx-api כולל את השלבים הבאים:

הפק מפתח API דרך עמוד הגדרות החשבון של Perplexity. מפתח ה-API הוא אסימון גישה בעל אורך חיים ארוך שניתן להשתמש בו עד לרענונו או מחיקתו הידנית.

שלח את מפתח ה-API כאסימון נושא (bearer token) בכותרת Authorization עם כל בקשת pplx-api.

בדוגמה הבאה, PERPLEXITY_API_KEY הוא משתנה סביבה המקושר למפתח שנוצר באמצעות ההוראות לעיל. נעשה שימוש ב-CURL כדי לשלוח בקשת השלמת צ׳אט.

bash
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

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://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, וממשק ה-API תואם בצורה נוחה ללקוח OpenAI לשילוב קל עם יישומים קיימים.

למידע נוסף, בקרו בתיעוד ה-API ובמדריך ההתחלה המהירה שלנו.

מה הלאה

בעתיד הקרוב, pplx-api יתמוך ב:

מודלי LLM מותאמים אישית של Perplexity ומודלי LLM אחרים בקוד פתוח.

הטמעות (embeddings) מותאמות אישית של Perplexity והטמעות בקוד פתוח.

מבנה תמחור ייעודי ל-API עם גישה כללית לאחר סיום הבטא הציבורית.

API מסוג Perplexity RAG-LLM הכולל ביסוס על עובדות וציטוטים.

פנו אל api@perplexity.ai אם אתם מתעניינים באחד ממקרי השימוש הללו.

זוהי גם תחילתה של סדרת פפוסטים בבלוג של Perplexity. בפוסט הבא שלנו, נשתף ניתוח מעמיק על השוואת הביצועים בין A100 ל-H100 עבור הסקת LLM. הישארו מעודכנים!

אנחנו מגייסים! אם אתם רוצים לעבוד על מוצר הפרוס בקנה מידה עצום ולבנות איתנו תשתית מודלי שפה גדולים וגנרטיביים מתוכננת היטב ועוברת אופטימיזציה מדוקדקת, אנא הצטרפו אלינו.

עקבו אחרינו בטוויטר, בלינקדאין והצטרפו לדיסקורד שלנו לדיונים נוספים.

מחברים:

לורן יאנג, קווין הו, אראש היידארי, ויליאם ז'אנג, דמיטרי פרבוחין, גריגורי אלכסייב, אלכסנדר יארטס

פרטיות נתונים

על ידי בחירה ב-pplx-api, תוכלו למצות את מלוא הפוטנציאל של מודלי שפה תוך שמירה על הפרטיות והאמון של המשתמשים והלקוחות שלכם. אנו מבינים את החשיבות של הגנה על המידע האישי שלכם ומחויבים לשמירה על אבטחה ופרטיות של המשתמשים שלנו. נתוני ה-API נמחקים אוטומטית לאחר 30 יום, ואנו לעולם איنا מתאמנים על נתונים כלשהם המועברים באמצעות pplx-api. למשתמשים יש אפשרות לבטל את שמירת הנתונים בהגדרות החשבון שלהם. תוכלו למצוא את מדיניות הפרטיות של ה-API כאן.