במדריך הזה נסביר איך להשתמש ב-vLLM TPU serving framework כדי להפעיל את המודל Qwen/Qwen2-7B-Instruct במכונה וירטואלית של v6e TPU.
מטרות
- מגדירים את הסביבה.
- מריצים את vLLM עם Qwen2-7B-Instruct.
- שליחת בקשת הסקה.
- מריצים עומס עבודה להשוואה.
- מנקים את הבית.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Google Cloud שחלים עליהם חיובים, כולל:
כדי ליצור הערכת עלויות על סמך השימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
לפני שמתחילים
לפני שממשיכים במדריך הזה, צריך לפעול לפי ההוראות בדף הגדרת סביבת Cloud TPU. ההוראות מנחות אתכם בשלבים הנדרשים ליצירת פרויקט ולהגדרה שלו לשימוש ב-Cloud TPU. Google Cloudאפשר גם להשתמש בפרויקט קיים שלGoogle Cloud . אם אתם רוצים, אתם יכולים לדלג על השלב של יצירת פרויקטGoogle Cloud ולהתחיל עם הגדרת הסביבה לשימוש ב-Cloud TPU.
כדי להשתמש במדריך הזה, צריך אסימון גישה של Hugging Face. אפשר להירשם לחשבון בחינם ב-Hugging Face. אחרי שיש לכם חשבון, יוצרים אסימון גישה:
- בדף Welcome to Hugging Face, לוחצים על הדמות שמייצגת את החשבון ובוחרים באפשרות Access tokens.
- בדף Access Tokens (אסימוני גישה), לוחצים על Create new token (יצירת אסימון חדש).
- בוחרים את סוג הטוקן Read (קריאה) ומזינים שם לטוקן.
- טוקן הגישה יוצג. שומרים את האסימון במקום בטוח.
מגדירים את הסביבה
משאבים בתור
יצירת מכונה וירטואלית של Cloud TPU v6e באמצעות queued resources API. ל-qwen2-7b-instruct, מומלץ להשתמש ב-TPU מדגם v6e-1.
מגדירים את המשתנים:
- PROJECT – שם הפרויקט.
- TPU_NAME – השם של מכונת TPU VM שתיצרו.
- ZONE – אזור הענן שבו יוצרים את המכונה הווירטואלית החדשה.
- TPU_TYPE – סוג ה-TPU VM שיוצרים. לדוגמה:
v6e-1אוv6e-4. - QR_ID – השם של משאב התורים שיוצרים.
יוצרים את בקשת המשאב בתור:
בודקים שהמכונה הווירטואלית של ה-TPU מוכנה.
לדוגמה, כשהסטטוס הוא ACTIVE:
name: projects/your-project-id/locations/your-zone/queuedResources/your-queued-resource-id
state:
state: ACTIVE
tpu:
nodeSpec:
- node:
acceleratorType: v6e-1
bootDisk: {}
networkConfig:
enableExternalIps: true
queuedResource: projects/your-project-number/locations/your-zone/queuedResources/your-queued-resource-id
runtimeVersion: v2-alpha-tpuv6e
schedulingConfig: {}
serviceAccount: {}
shieldedInstanceConfig: {}
useTpuVm: true
nodeId: your-node-id
parent: projects/your-project-number/locations/your-zone
הזמנה
יצירת מכונה וירטואלית של Cloud TPU v6e באמצעות בקשה לשמירת מקום. ל-qwen2-7b-instruct, מומלץ להשתמש ב-TPU מדגם v6e-1. מתחילים בהגדרת משתני סביבה:
מגדירים את המשתנים:
- PROJECT – שם הפרויקט.
- TPU_NAME – השם של מכונת TPU VM שתיצרו.
- ZONE – אזור הענן שבו יוצרים את המכונה הווירטואלית החדשה.
- TPU_TYPE – סוג ה-TPU VM שיוצרים. לדוגמה:
v6e-1אוv6e-4. - RESERVATION – שם ההזמנה עם מעבדי ה-TPU.
יוצרים את מכונת ה-TPU הווירטואלית באמצעות ההזמנה:
מתחברים ל-TPU VM.
הפעלת vLLM עם Qwen2-7B-instruct
מגדירים את האסימון של Hugging Face ואת משתני שם המודל.
export HF_TOKEN="YOUR_HF_TOKEN" export MODEL_NAME="Qwen/Qwen2-7B-Instruct"בתוך מכונת ה-TPU הווירטואלית, מריצים את מאגר ה-Docker של vLLM במצב מנותק ומפעילים את שרת vLLM. בפקודה הזו נעשה שימוש בגודל זיכרון משותף של 10GB.
כדי לוודא שהיא פועלת, צריך לבדוק את יומני השרת.
כשהשרת vLLM פועל, מוצג פלט שדומה לזה שמופיע בהמשך. אחרי שהפלט מוצג, לוחצים על
CTRL+Cכדי לחזור למסוף.(APIServer pid=7) INFO: Started server process [7] (APIServer pid=7) INFO: Waiting for application startup. (APIServer pid=7) INFO: Application startup complete.
שליחת בקשת הסקה
אחרי שהשרת vLLM פועל, אפשר לשלוח בקשות ל-API. מידע נוסף מופיע במאמרי העזרה של vLLM API.
שולחים בקשת בדיקה לשרת באמצעות
curl.
התגובה מוחזרת בפורמט JSON.
הפעלת עומס עבודה של נקודת השוואה
אפשר להריץ נקודות השוואה מול השרת הפועל מהטרמינל השני.
בתוך המאגר, מתקינים את ספריית
datasets.בתוך המאגר, מריצים את הפקודה
vllm bench serve.
תוצאות ההשוואה לשוק נראות כך:
============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 45.35
Total input tokens: 1024000
Total generated tokens: 126848
Request throughput (req/s): 22.05
Output token throughput (tok/s): 2797.15
Peak output token throughput (tok/s): 4258.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 25377.57
---------------Time to First Token----------------
Mean TTFT (ms): 21332.46
Median TTFT (ms): 21330.37
P99 TTFT (ms): 42436.47
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 37.36
Median TPOT (ms): 38.56
P99 TPOT (ms): 38.69
---------------Inter-token Latency----------------
Mean ITL (ms): 37.35
Median ITL (ms): 38.55
P99 ITL (ms): 39.43
==================================================
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- בטרמינל, מקלידים exit כדי להתנתק ממכונת ה-TPU.
מחיקת המשאבים
אתם יכולים למחוק את הפרויקט, וכך למחוק את כל המשאבים, או להשאיר את הפרויקט ולמחוק רק את המשאבים.
מחיקת פרויקט
כדי למחוק את הפרויקט שלכם ב- Google Cloud ואת כל המשאבים שמשויכים אליו, מריצים את הפקודה:
gcloud projects delete $PROJECT_ID
מחיקת משאבי TPU
משאבים בתור
מוחקים את משאבי Cloud TPU. הפקודה הבאה מוחקת גם את בקשת המשאב שנוספה לתור וגם את מכונת ה-TPU הוירטואלית באמצעות הפרמטר --force.
הזמנה
מחיקת מכונת ה-VM של Cloud TPU. משתמשים בפקודה הבאה כדי להפסיק את מכונת ה-VM, וכך משחררים את יחידות ה-TPU בחזרה להזמנה.