Dataproc מאפשר לצרף יחידות עיבוד גרפי (GPU) לצמתי ה-master וה-worker של Compute Engine באשכול Dataproc. אתם יכולים להשתמש במעבדי ה-GPU האלה כדי להאיץ עומסי עבודה ספציפיים במופעים, כמו למידת מכונה ועיבוד נתונים.
מידע נוסף על האפשרויות לשימוש ב-GPU ועל סוגי חומרת ה-GPU שזמינים אפשר לקרוא במאמר GPUs on Compute Engine.
לפני שמתחילים
- ל-GPU נדרשים דרייברים ותוכנה מיוחדים. הפריטים האלה מותקנים מראש בתמונות של Dataproc
-ml(מומלץ להשתמש בתמונות של-ml), ואפשר להתקין אותם באופן ידני כשצריך. - כדאי לקרוא על תמחור של יחידות GPU ב-Compute Engine כדי להבין את העלות של שימוש ביחידות GPU במופעים.
- כדי להבין איך המקרים האלה פועלים באופן שונה ממקרים ללא GPU, אפשר לקרוא על ההגבלות על מקרים עם GPU.
- כדי לוודא שיש לכם מכסת GPU מספקת (
NVIDIA_T4_GPUS, NVIDIA_P100_GPUSאוNVIDIA_V100_GPUS) בפרויקט, כדאי לעיין בדף המכסות של הפרויקט. אם יחידות ה-GPU לא מופיעות בדף המכסות או שאתם צריכים מכסת GPU נוספת, אתם יכולים לשלוח בקשה להגדלת המכסה.
סוגים של יחידות GPU
צמתי Dataproc תומכים בסוגי ה-GPU הבאים. כשמצרפים יחידות GPU לאשכול Dataproc, צריך לציין את סוג ה-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 -
nvidia-tesla-p4-vws- NVIDIA® Tesla® P4 תחנות עבודה וירטואליות -
nvidia-tesla-t4-vws- NVIDIA® Tesla® T4 Virtual Workstations
צירוף יחידות GPU לאשכול
כדי לצרף יחידות GPU לאשכול Dataproc, כשיוצרים את האשכול צריך לציין תמונת -ml (מומלץ) או להשתמש בפעולת אתחול כדי להתקין מנהלי התקנים של GPU.
בדוגמאות הבאות מצוינת תמונת 2.3-ml-ubuntu כשיוצרים אשכול.
Google Cloud CLI
כדי לצרף מעבדים גרפיים לצומתי העובד הראשיים והמשניים ולאשכול הראשי ב-Dataproc, יוצרים את האשכול באמצעות הדגלים 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 לצומתי העובדים הראשיים והמשניים ולאב בצומת הראשי באשכול Dataproc, ממלאים את השדות InstanceGroupConfig.AcceleratorConfig acceleratorTypeUri ו-acceleratorCount כחלק מבקשת ה-API cluster.create. הערכים האפשריים בשדות האלה:
- סוג ה-GPU לצירוף לצומת
- מספר ה-GPU לצירוף לצומת
המסוף
כדי לצרף GPU לצומתי העובדים הראשיים והמשניים ולצומת הראשי באשכול Dataproc, מבצעים את השלבים הבאים:
- פותחים את הדף Dataproc יצירת אשכול Dataproc ב-Compute Engine.
- בוחרים בחלונית Configure nodes.
- בקטעים Manager Node, Worker nodes ו-Secondary worker nodes, בקטע CPU platform and GPU > GPUs, מציינים את מספר יחידות ה-GPU ואת סוג ה-GPU של הצמתים.
התקנת דרייברים של GPU
כדי להשתמש ביחידות GPU שמצורפות לצמתים של Dataproc, צריך מנהלי התקנים (דרייברים) של GPU.
במקום להשתמש בדרייברים של ה-GPU שמותקנים בתמונות של Dataproc -ml, אפשר להשתמש בפעולות האתחול הבאות כדי להתקין דרייברים של ה-GPU כשיוצרים אשכול:
אימות ההתקנה של הדרייבר של ה-GPU
כדי לוודא שהתקנתם את מנהל ההתקן של ה-GPU באשכול, מתחברים באמצעות SSH לצומת הראשי של האשכול ומריצים את הפקודה הבאה:
nvidia-smi
אם מנהל ההתקן פועל בצורה תקינה, הפלט יציג את גרסת מנהל ההתקן ואת נתוני ה-GPU (ראו אימות ההתקנה של מנהל ההתקן של ה-GPU).
הגדרות אישיות של Spark
כששולחים עבודה ל-Spark, אפשר להשתמש במאפיין spark.executorEnv של הגדרת Spark, מאפיין סביבת זמן הריצה, עם משתנה הסביבה LD_PRELOAD כדי לטעון מראש את הספריות הנדרשות.
דוגמה:
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 ב-Dataproc, אפשר להריץ כל אחת מהמשימות הבאות, שמועילות כשמריצים אותן עם 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!")