הפעלת מודלי LLM פתוחים עם שרת LLAMA-CPP: מדריך שלב אחר שלב

הפעלת מודלי שפה גדולים קוד פתוח עם שרת LLAMA-CPP: מדריך צעד-אחר-צעד. למד כיצד להתקין ולהגדיר את שרת LLAMA-CPP כדי להגיש מודלי שפה גדולים בקוד פתוח, תוך ביצוע בקשות באמצעות cURL, לקוח OpenAI ו-Python's requests package. אופטימיזציה להפעלה מקומית ומרוחקת.

14 בפברואר 2025

party-gif

שחרר את הכוח של דגמי שפה גדולים מקוד פתוח (LLMs) עם מדריך מקיף זה על הפעלת שרת LLAMA-CPP. גלה כיצד לשרת בצורה יעילה מספר משתמשים עם LLM יחיד, תוך אופטימיזציה של ביצועים ונגישות ליישומים המופעלים על ידי בינה מלאכותית שלך.

התקנת LLAMA-CPP

הדרך הקלה ביותר להתחיל עם LLAMA-CPP היא להשתמש בנהל החבילות Homebrew כדי להתקין אותו. זה יעבוד באופן טבעי הן על מכונות macOS והן על מכונות Linux. כדי להתקין LLAMA-CPP על מכונת Windows, תצטרך להשתמש ב-Windows Subsystem for Linux (WSL).

כדי להתקין LLAMA-CPP באמצעות Homebrew, הרץ את הפקודה הבאה בטרמינל שלך:

brew install llama-cpp

פקודה זו תוריד ותתקין את חבילת LLAMA-CPP במערכת שלך. לאחר השלמת ההתקנה, תוכל להתחיל להשתמש בפקודת llama-server כדי להגיש את דגמי LLM שלך.

הפעלת שרת LLAMA-CPP

כדי להתחיל את שרת LLAMA-CPP, פעל לפי השלבים הבאים:

  1. התקן את LLAMA-CPP באמצעות נהל החבילות Homebrew:

    brew install llama.cpp
    

    פקודה זו תתקין את LLAMA-CPP על המחשב שלך, Mac או Linux. למשתמשי Windows, תצטרך להשתמש ב-WSL (Windows Subsystem for Linux) כדי להתקין את LLAMA-CPP.

  2. הפעל את שרת LLAMA-CPP על-ידי הרצת הפקודה הבאה:

    llama-server --model <hugging-face-repo-id> --model-file <quantization-file>
    

    החלף את <hugging-face-repo-id> בזיהוי המאגר Hugging Face של הדגם שברצונך להגיש, ואת <quantization-file> בקובץ הכמות הספציפי שברצונך להשתמש בו (לדוגמה, הגרסה המכווננת ל-4 סיביות בתבנית GGML).

  3. שרת LLAMA-CPP יתחיל להאזין לבקשות נכנסות ב-localhost:8080 כברירת מחדל. תוכל להתאים את כתובת המארח והפורט באמצעות האפשרויות הזמינות, כמו --host ו---port.

  4. השרת תומך באפשרויות תצורה שונות, כולל הגדרת החלון הקונטקסטואלי המרבי, גודל אצווה, ועוד. תוכל לחקור את האפשרויות האלה על-ידי הרצת llama-server --help.

  5. לאחר הפעלת השרת, תוכל להתקשר אליו באמצעות שיטות שונות, כמו cURL, לקוח OpenAI או חבילת Python requests, כפי שהודגם בחלקים הקודמים.

ביצוע בקשות לשרת LLAMA-CPP

ישנן מספר דרכים להתקשר לשרת LLAMA-CPP ולבצע בקשות לדגם המוגש:

  1. שימוש בפקודת cURL:

    curl -X POST -H "Content-Type: application/json" -d '{"prompt": "שלום, מה שלומך?", "max_tokens": 50}' http://localhost:8080/v1/chat/completions
    

    זה יבצע בקשת POST לנקודת הקצה של השלמת הצ'אט הפועלת במארח המקומי בפורט 8080.

  2. שימוש בלקוח OpenAI:

    import openai
    
    openai.api_base = "http://localhost:8080/v1"
    openai.Model.list()
    
    response = openai.ChatCompletion.create(
        model="chat-gpt-3.5",
        messages=[
            {"role": "system", "content": "אתה עוזר מועיל."},
            {"role": "user", "content": "שלום, מה שלומך?"}
        ]
    )
    
    print(response.choices[0].message.content)
    

    זה משתמש בלקוח OpenAI כדי להתקשר לשרת LLAMA-CPP, שהוא תואם את ממשק API של OpenAI.

  3. שימוש בחבילת Requests של Python:

    import requests
    
    url = "http://localhost:8080/v1/chat/completions"
    headers = {"Content-Type": "application/json"}
    data = {
        "prompt": "שלום, מה שלומך?",
        "max_tokens": 50
    }
    
    response = requests.post(url, headers=headers, json=data)
    print(response.json())
    

    זה משתמש בחבילת Requests של Python כדי לבצע בקשת POST לנקודת הקצה של השלמת הצ'אט.

התאמה אישית של שרת LLAMA-CPP

LLAMA-CPP מספק שרת מותאם אישית מאוד המאפשר לך לכוונן את ההתנהגות של פריסת LLM שלך. להלן חלק מהאפשרויות העיקריות שניתן להגדיר:

  1. חלון הקשר המרבי: תוכל להגדיר את גודל חלון הקשר המרבי עבור ה-LLM, שקובע את אורך הרצף הקלט המרבי שהדגם יכול לעבד.

  2. גודל אצווה: LLAMA-CPP תומך באצווה של פרומפטים, מאפשר לך לעבד מספר קלטים בו-זמנית לשיפור הפרודוקטיביות. תוכל להגדיר את גודל האצווה כדי לאפשר ביצועים מיטביים.

  3. כתובת המארח: כברירת מחדל, שרת LLAMA-CPP מאזין ב-localhost, אך תוכל לשנות את כתובת המארח כדי להפוך את השרת לנגיש ממכונות אחרות ברשת שלך.

  4. פורט: השרת מאזין בברירת מחדל בפורט 8080, אך תוכל לציין פורט שונה אם נדרש.

  5. נתיב הדגם: LLAMA-CPP מאפשר לך להתאים אישית את הנתיב ממנו הוא טוען את קבצי דגם ה-LLM, מעניק לך גמישות בארגון נכסי הדגם שלך.

  6. דגמי הטמעה: בנוסף לדגמי שפה, LLAMA-CPP יכול גם להגיש דגמי הטמעה, מאפשר לך לשלב יכולות של יצירת טקסט וקידוד טקסט ביישומים שלך.

  7. מעקב מטריקות: שרת LLAMA-CPP יכול לעקוב אחר מטריקות שונות, כמו זמן תגובה ופרודוקטיביות, כדי לעזור לך לנטר ולאפשר ביצועים מיטביים של הפריסה שלך.

אינטראקציה עם שרת LLAMA-CPP באמצעים שונים

כדי להתקשר לשרת LLAMA-CPP, אנו יכולים להשתמש בשיטות שונות:

  1. שימוש בפקודת cURL:

    • בצע בקשת POST לנקודת הקצה של "השלמת הצ'אט" הפועלת ב-localhost.
    • ספק את הכותרות הנדרשות והאובייקט הנתונים המכיל את הפרומפט והמספר הרצוי של אסימונים לייצור.
    • התגובה תכלול את הטקסט שנוצר, וכן מידע על תהליך הייצור, כמו טמפרטורה, top-P, top-K ומספר אסימונים חזויים לשנייה.
  2. שימוש בלקוח OpenAI:

    • צור לקוח OpenAI עם כתובת ה-URL הבסיסית מוגדרת לכתובת שרת LLAMA-CPP המקומי.
    • השתמש בלקוח נקודת הקצה של השלמת הצ'אט והספק את שם הדגם (לדוגמה, chat-gpt-3.5).
    • הגדר את הפרומפט המערכתי והפרומפט המשתמש, ולאחר מכן בצע את הבקשה לשרת.
    • התגובה תוחזר בפורמט זהה לממשק API של OpenAI.
  3. שימוש בחבילת Requests (Python):

    • הגדר את ה-URL והכותרות עבור בקשת ה-POST.
    • העבר הודעות שונות לשרת והתבונן בדרך שבה הוא מעבד את הבקשות במקביל.
    • השרת יתמרן את הבקשות ויעבד אותן אחת לאחת, מבלי להיות מוצף.

באמצעות שיטות אלה, תוכל להתקשר לשרת LLAMA-CPP ולשרת משתמשים מרובים עם דגם LLM יחיד ומערכת GPU יחידה. השרת מספק דרך גמישה ומותאמת אישית לפרוס דגמי שפה קוד פתוח, מאפשר לך להתאים שונים פרמטרים כדי להתאים לצרכים הספציפיים שלך.

סיכום

בסרטון זה, חקרנו את ההתקנה והשימוש ב-LlamaCPP, פרויקט קוד פתוח עוצמתי לשירות דגמי שפה גדולים בקוד פתוח. למדנו כיצד להתקין את LlamaCPP במחשב המקומי שלנו, להפעיל את השרת ולהתקשר אליו באמצעות שיטות שונות, כולל cURL, לקוח OpenAI וחבילת Requests של Python.

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

לבסוף, נגענו ביישומים המעשיים של LlamaCPP, בפרט בהקשר של פריסת דגמי שפה גדולים למגוון שימושים. הזכרנו את מסגרת Rasa כיישום אפשרי, וסיפקנו קישור לקורס קשור בתיאור הסרטון.

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

שאלות נפוצות