Managed Service for Apache Spark מאפשר לצרף יחידות לעיבוד גרפי (GPU) לצמתי ה-master וה-worker ב-Compute Engine באשכול Managed Service for Apache Spark. אתם יכולים להשתמש במעבדי ה-GPU האלה כדי להאיץ עומסי עבודה ספציפיים במופעים, כמו למידת מכונה ועיבוד נתונים.
מידע נוסף על האפשרויות לשימוש ב-GPU ועל סוגי חומרת ה-GPU שזמינים אפשר לקרוא במאמר GPU ב-Compute Engine.
לפני שמתחילים
- ל-GPU נדרשים דרייברים ותוכנה מיוחדים. הפריטים האלה מותקנים מראש בתמונות של Managed Service for Apache Spark
-ml(מומלץ להשתמש בתמונות של-ml), ואפשר להתקין אותם באופן ידני כשצריך. - כדאי לקרוא על תמחור של יחידות GPU ב-Compute Engine כדי להבין את העלות של שימוש ביחידות GPU במופעים.
- כדי להבין איך המקרים האלה פועלים באופן שונה ממקרים ללא GPU, אפשר לקרוא על הגבלות על מקרים עם GPU.
- כדי לוודא שיש לכם מכסת GPU מספקת (
NVIDIA_T4_GPUS, NVIDIA_P100_GPUSאוNVIDIA_V100_GPUS) בפרויקט, כדאי לעיין בדף המכסות של הפרויקט. אם יחידות ה-GPU לא מופיעות בדף המכסות או שאתם צריכים מכסת GPU נוספת, שולחים בקשה להגדלת המכסה.
סוגים של יחידות GPU
השירות Managed Service for Apache Spark תומך בסוגי ה-GPU הבאים. כשמצרפים יחידות GPU לאשכול Managed Service for Apache Spark, צריך לציין את סוג ה-GPU.
-
nvidia-tesla-l4- NVIDIA® Tesla® L4 -
nvidia-tesla-a100- NVIDIA® Tesla® A100 -
nvidia-tesla-p100- NVIDIA® Tesla® P100 -
nvidia-tesla-v100- NVIDIA® Tesla® V100 -
nvidia-tesla-p4- NVIDIA® Tesla® P4 -
nvidia-tesla-t4- NVIDIA® Tesla® T4 -
nvidia-rtx-pro-6000- NVIDIA® RTX® PRO 6000 -
nvidia-tesla-p100-vws- NVIDIA® Tesla® P100 Virtual Workstations -
nvidia-tesla-p4-vws- NVIDIA® Tesla® P4 תחנות עבודה וירטואליות -
nvidia-tesla-t4-vws- NVIDIA® Tesla® T4 Virtual Workstations
צירוף יחידות GPU לאשכול
כדי לצרף יחידות GPU לאשכול Managed Service for Apache Spark, כשיוצרים את האשכול צריך לציין תמונת -ml (מומלץ) או להשתמש בפעולת אתחול כדי להתקין מנהלי התקנים של GPU.
בדוגמאות הבאות מצוין או מניחים שימוש בתמונה 2.3-ml-ubuntu כשיוצרים אשכול.
מסוףGoogle Cloud
כדי לצרף יחידות GPU לאשכול Managed Service for Apache Spark, מבצעים את השלבים הבאים:
- פותחים את הדף Create cluster.
- בקטע Worker configuration (הגדרות של Worker), לוחצים על הכרטיסייה GPUs (מעבדים גרפיים) ומציינים את הסוג והמספר של המעבדים הגרפיים.
- כברירת מחדל, ההגדרות של צומת ה-driver (הראשי) זהות להגדרות של העובד הראשי. בקטע Additional configuration (הגדרות נוספות), אפשר ללחוץ על Driver node (צומת של מנהל התקן) כדי לבטל את הסימון של התיבה Default driver node to the same as primary worker (צומת ברירת המחדל של מנהל ההתקן זהה לצומת העובד הראשי) ולציין את סוג המכונה לצומת של מנהל ההתקן.
CLI של gcloud
כדי לצרף מעבדים גרפיים לצומת הראשי ולצומתי העובדים הראשיים והמשניים באשכול Managed Service for Apache Spark, צריך ליצור את האשכול באמצעות הדגלים gcloud dataproc clusters create
‑‑master-accelerator,
‑‑worker-accelerator ו-
‑‑secondary-worker-accelerator. הדגלים האלה מקבלים את הערכים הבאים:
- סוג ה-GPU לצירוף לצומת
- מספר ה-GPU לצירוף לצומת
חובה לציין את סוג ה-GPU, ומספר ה-GPU הוא אופציונלי (ברירת המחדל היא GPU אחד).
לדוגמה:
gcloud dataproc clusters create cluster-name \ --image-version=2.3-ml-ubuntu \ --region=region \ --master-accelerator type=nvidia-tesla-t4 \ --worker-accelerator type=nvidia-tesla-t4,count=4 \ --secondary-worker-accelerator type=nvidia-tesla-t4,count=4 \ ... other flags
API בארכיטקטורת REST
כדי לצרף יחידות GPU לצומת הראשי ולצומתי העובדים הראשיים והמשניים באשכול Managed Service for Apache Spark, ממלאים את השדות InstanceGroupConfig.AcceleratorConfig acceleratorTypeUri ו-acceleratorCount כחלק מבקשת ה-API cluster.create. הערכים האפשריים בשדות האלה הם:
- סוג ה-GPU לצירוף לצומת
- מספר ה-GPU לצירוף לצומת
התקנת דרייברים של GPU
כדי להשתמש ב-GPU שמצורפים לצמתים של Managed Service for Apache Spark, צריך להתקין דרייברים של GPU.
במקום להשתמש בדרייברים של GPU שמותקנים בתמונות של Managed Service for Apache Spark
-ml, אפשר להשתמש בפעולות האתחול הבאות כדי להתקין דרייברים של GPU כשיוצרים אשכול:
אימות ההתקנה של הדרייבר של ה-GPU
כדי לוודא שהתקנתם את מנהל ההתקן של ה-GPU באשכול, מתחברים באמצעות SSH לצומת הראשי של האשכול ומריצים את הפקודה הבאה:
nvidia-smi
אם מנהל ההתקן פועל בצורה תקינה, בתוצאה יוצגו הגרסה של מנהל ההתקן ונתונים סטטיסטיים של ה-GPU (ראו אימות ההתקנה של מנהל ההתקן של ה-GPU).
הגדרות של Spark
כששולחים עבודה ל-Spark, אפשר להשתמש במשתנה הסביבה LD_PRELOAD עם המאפיין spark.executorEnv של הגדרות Spark runtime environment property כדי לטעון מראש את הספריות הנדרשות.
דוגמה:
gcloud dataproc jobs submit spark --cluster=CLUSTER_NAME \ --region=REGION \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --properties=spark.executorEnv.LD_PRELOAD=libnvblas.so,spark.task.resource.gpu.amount=1,spark.executor.resource.gpu.amount=1,spark.executor.resource.gpu.discoveryScript=/usr/lib/spark/scripts/gpu/getGpusResources.sh
דוגמה למשימת GPU
אתם יכולים לבדוק את ה-GPU ב-Managed Service for Apache Spark על ידי הפעלת אחת מהמשימות הבאות, שמרוויחות מהפעלה עם GPU:
- מריצים אחת מהדוגמאות של Spark ML.
- כדי להריץ חישוב מטריצה, מריצים את הדוגמה הבאה עם
spark-shell:
import org.apache.spark.mllib.linalg._
import org.apache.spark.mllib.linalg.distributed._
import java.util.Random
def makeRandomSquareBlockMatrix(rowsPerBlock: Int, nBlocks: Int): BlockMatrix = {
val range = sc.parallelize(1 to nBlocks)
val indices = range.cartesian(range)
return new BlockMatrix(
indices.map(
ij => (ij, Matrices.rand(rowsPerBlock, rowsPerBlock, new Random()))),
rowsPerBlock, rowsPerBlock, 0, 0)
}
val N = 1024 * 4
val n = 2
val mat1 = makeRandomSquareBlockMatrix(N, n)
val mat2 = makeRandomSquareBlockMatrix(N, n)
val mat3 = mat1.multiply(mat2)
mat3.blocks.persist.count
println("Processing complete!")