Auf dieser Seite wird erläutert, wie eine Apache Beam-Pipeline in Dataflow mit GPUs ausgeführt wird. Für Jobs, die GPUs verwenden, fallen Gebühren an, wie unter Preise für Dataflow beschrieben.
Weitere Informationen zur Verwendung von GPUs mit Dataflow finden Sie unter Dataflow-Unterstützung für GPUs. Weitere Informationen zum Entwickler-Workflow beim Erstellen von Pipelines mit GPUs finden Sie unter Mit GPUs entwickeln.
Apache Beam-Notebooks verwenden
Wenn Sie bereits eine Pipeline haben, die Sie mit GPUs in Dataflow ausführen möchten, können Sie diesen Abschnitt überspringen.
Apache Beam-Notebooks bieten eine bequeme Möglichkeit, Prototypen zu erstellen und Ihre Pipeline mit GPUs iterativ zu entwickeln, ohne eine Entwicklungsumgebung einzurichten. Lesen Sie zuerst die Anleitung Mit Apache Beam-Notebooks entwickeln, starten Sie eine Apache Beam-Notebookinstanz und folgen Sie dem Beispiel-Notebook GPUs mit Apache Beam verwenden.
GPU-Kontingent bereitstellen
GPU-Geräte unterliegen der Kontingentverfügbarkeit Ihres Google Cloud-Projekts. Fordern Sie das GPU-Kontingent in der Region Ihrer Wahl an.
GPU-Treiber installieren
Weisen Sie Dataflow an, NVIDIA-Treiber auf den Workern zu installieren, indem Sie install-nvidia-driver
an die Option worker_accelerator
anhängen. Wenn die Option install-nvidia-driver
angegeben ist, installiert Dataflow NVIDIA-Treiber auf den Dataflow-Workern mit dem Dienstprogramm cos-extensions von Container-Optimized OS. Durch die Angabe von install-nvidia-driver
stimmen Sie der NVIDIA-Lizenzvereinbarung zu.
Binärprogramme und Bibliotheken der NVIDIA-Treiberinstallation werden unter /usr/local/nvidia/
bereitgestellt.
Die GPU-Treiberversion hängt von der Version von Container-Optimized OS ab, die derzeit von Dataflow verwendet wird. Suchen Sie in den Dataflow-Schrittlogs des Jobs nach GPU driver
, um die GPU-Treiberversion für einen bestimmten Dataflow-Job zu ermitteln.
Benutzerdefiniertes Container-Image erstellen
Für die Interaktion mit den GPUs benötigen Sie möglicherweise zusätzliche NVIDIA-Software, z. B. GPU-beschleunigte Bibliotheken und CUDA Toolkit. Stellen Sie diese Bibliotheken einem Docker-Container bereit, in dem Nutzercode ausgeführt wird.
Sie können das Container-Image anpassen, indem Sie ein Image bereitstellen, das den Container-Image-Vertrag des Apache Beam SDK erfüllt und über die erforderlichen GPU-Bibliotheken verfügt.
Wenn Sie ein benutzerdefiniertes Container-Image bereitstellen möchten, müssen Sie Dataflow Runner v2 verwenden und das Container-Image mit der Pipeline-Option worker_harness_container_image
bereitstellen. Wenn Sie Apache Beam 2.30.0 oder höher verwenden, können Sie der Einfachheit halber einen kürzeren Optionsnamen sdk_container_image
verwenden.
Weitere Informationen finden Sie unter Benutzerdefinierte Container verwenden.
Ansatz 1. Vorhandenes Image verwenden, das für die GPU-Nutzung konfiguriert ist
Sie können ein Docker-Image erstellen, das den Apache Beam SDK-Containervertrag aus einem vorhandenen Basis-Image erfüllt, das für die GPU-Nutzung vorkonfiguriert ist. Zum Beispiel sind TensorFlow-Docker-Images und NVIDIA-Container-Images für die GPU-Nutzung vorkonfiguriert.
Ein Beispiel-Dockerfile, das auf dem Docker-Image von TensorFlow mit Python 3.6 aufbaut, sieht so aus:
ARG BASE=tensorflow/tensorflow:2.5.0-gpu
FROM $BASE
# Check that the chosen base image provides the expected version of Python interpreter.
ARG PY_VERSION=3.6
RUN [[ $PY_VERSION == `python -c 'import sys; print("%s.%s" % sys.version_info[0:2])'` ]] \
|| { echo "Could not find Python interpreter or Python version is different from ${PY_VERSION}"; exit 1; }
RUN pip install --upgrade pip \
&& pip install --no-cache-dir apache-beam[gcp]==2.29.0 \
# Verify that there are no conflicting dependencies.
&& pip check
# Copy the Apache Beam worker dependencies from the Beam Python 3.6 SDK image.
COPY --from=apache/beam_python3.6_sdk:2.29.0 /opt/apache/beam /opt/apache/beam
# Apache Beam worker expects pip at /usr/local/bin/pip by default.
# Some images have pip in a different location. If necessary, make a symlink.
# This line can be omitted in Beam 2.30.0 and later versions.
RUN [[ `which pip` == "/usr/local/bin/pip" ]] || ln -s `which pip` /usr/local/bin/pip
# Set the entrypoint to Apache Beam SDK worker launcher.
ENTRYPOINT [ "/opt/apache/beam/boot" ]
Wenn Sie TensorFlow-Docker-Images verwenden, verwenden Sie TensorFlow 2.5.0 oder höher. In früheren TensorFlow-Docker-Images wird das Paket tensorflow-gpu
anstelle des Pakets tensorflow
installiert. Die Unterscheidung ist nach TensorFlow 2.1.0 nicht wichtig, für mehrere nachgelagerte Pakete wie tfx
ist jedoch das Paket tensorflow
erforderlich.
Große Container verlangsamen die Worker-Startzeit. Diese Leistungsänderung kann auftreten, wenn Sie Container wie Deep Learning Container verwenden.
Bestimmte Python-Version installieren
Wenn Sie strenge Anforderungen für die Python-Version haben, können Sie das Image aus einem NVIDIA-Basis-Image erstellen, das erforderliche GPU-Bibliotheken hat. Anschließend installieren Sie den Python-Interpreter.
Im folgenden Beispiel wird gezeigt, wie Sie ein NVIDIA-Image aus dem CUDA-Container-Image-Katalog auswählen, das den Python-Interpreter nicht enthält. Sie können das Beispiel anpassen, um die gewünschte Version von Python 3 und pip zu installieren. In diesem Beispiel wird TensorFlow verwendet. Achten Sie deshalb bei der Auswahl eines Images darauf, dass die CUDA- und cuDNN-Versionen im Basis-Image die Anforderungen für die TensorFlow-Version erfüllen.
Beispiel für ein Dockerfile:
# Select an NVIDIA base image with desired GPU stack from https://ngc.nvidia.com/catalog/containers/nvidia:cuda
FROM nvidia/cuda:11.0.3-cudnn8-runtime-ubuntu20.04
RUN \
# Add Deadsnakes repository that has a variety of Python packages for Ubuntu.
# See: https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F23C5A6CF475977595C89F51BA6932366A755776 \
&& echo "deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main" >> /etc/apt/sources.list.d/custom.list \
&& echo "deb-src http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main" >> /etc/apt/sources.list.d/custom.list \
&& apt-get update \
&& apt-get install -y curl \
python3.8 \
# With python3.8 package, distutils need to be installed separately.
python3-distutils \
&& rm -rf /var/lib/apt/lists/* \
&& update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10 \
&& curl https://bootstrap.pypa.io/get-pip.py | python \
&& pip install --upgrade pip \
# Install Apache Beam and Python packages that will interact with GPUs.
&& pip install --no-cache-dir apache-beam[gcp]==2.29.0 tensorflow==2.4.0 \
# Verify that there are no conflicting dependencies.
&& pip check
# Copy the Apache Beam worker dependencies from the Beam Python 3.8 SDK image.
COPY --from=apache/beam_python3.8_sdk:2.29.0 /opt/apache/beam /opt/apache/beam
# Set the entrypoint to Apache Beam SDK worker launcher.
ENTRYPOINT [ "/opt/apache/beam/boot" ]
Bei einigen Betriebssystem-Distributionen ist es möglicherweise schwierig, bestimmte Python-Versionen mit dem Betriebssystem-Paketmanager zu installieren. In diesem Fall können Sie den Python-Interpreter mit Tools wie Miniconda oder pyenv installieren.
Beispiel für ein Dockerfile:
FROM nvidia/cuda:11.0.3-cudnn8-runtime-ubuntu20.04
# The Python version of the Dockerfile must match the Python version you use
# to launch the Dataflow job.
ARG PYTHON_VERSION=3.8
# Update PATH so we find our new Conda and Python installations.
ENV PATH=/opt/python/bin:/opt/conda/bin:$PATH
RUN apt-get update \
&& apt-get install -y wget \
&& rm -rf /var/lib/apt/lists/* \
# The NVIDIA image doesn't come with Python pre-installed.
# We use Miniconda to install the Python version of our choice.
&& wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
&& bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda \
&& rm Miniconda3-latest-Linux-x86_64.sh \
# Create a new Python environment with desired version, and install pip.
&& conda create -y -p /opt/python python=$PYTHON_VERSION pip \
# Remove unused Conda packages, install necessary Python packages via pip
# to avoid mixing packages from pip and Conda.
&& conda clean -y --all --force-pkgs-dirs \
&& pip install --upgrade pip \
# Install Apache Beam and Python packages that will interact with GPUs.
&& pip install --no-cache-dir apache-beam[gcp]==2.29.0 tensorflow==2.4.0 \
# Verify that there are no conflicting dependencies.
&& pip check \
# Apache Beam worker expects pip at /usr/local/bin/pip by default.
# You can omit this line when using Beam 2.30.0 and later versions.
&& ln -s $(which pip) /usr/local/bin/pip
# Copy the Apache Beam worker dependencies from the Apache Beam SDK for Python 3.8 image.
COPY --from=apache/beam_python3.8_sdk:2.29.0 /opt/apache/beam /opt/apache/beam
# Set the entrypoint to Apache Beam SDK worker launcher.
ENTRYPOINT [ "/opt/apache/beam/boot" ]
Ansatz 2. Apache Beam-Container-Images verwenden
Sie können ein Container-Image für die GPU-Nutzung konfigurieren, ohne vorkonfigurierte Images zu verwenden. Dieser Ansatz wird nur empfohlen, wenn vorkonfigurierte Images nicht für Sie geeignet sind. Wenn Sie ein eigenes Container-Image einrichten, müssen Sie kompatible Bibliotheken auswählen und deren Ausführungsumgebung konfigurieren.
Beispiel für ein Dockerfile:
FROM apache/beam_python3.7_sdk:2.24.0
ENV INSTALLER_DIR="/tmp/installer_dir"
# The base image has TensorFlow 2.2.0, which requires CUDA 10.1 and cuDNN 7.6.
# You can download cuDNN from NVIDIA website
# https://developer.nvidia.com/cudnn
COPY cudnn-10.1-linux-x64-v7.6.0.64.tgz $INSTALLER_DIR/cudnn.tgz
RUN \
# Download CUDA toolkit.
wget -q -O $INSTALLER_DIR/cuda.run https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run && \
# Install CUDA toolkit. Print logs upon failure.
sh $INSTALLER_DIR/cuda.run --toolkit --silent || (egrep '^\[ERROR\]' /var/log/cuda-installer.log && exit 1) && \
# Install cuDNN.
mkdir $INSTALLER_DIR/cudnn && \
tar xvfz $INSTALLER_DIR/cudnn.tgz -C $INSTALLER_DIR/cudnn && \
cp $INSTALLER_DIR/cudnn/cuda/include/cudnn*.h /usr/local/cuda/include && \
cp $INSTALLER_DIR/cudnn/cuda/lib64/libcudnn* /usr/local/cuda/lib64 && \
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* && \
rm -rf $INSTALLER_DIR
# A volume with GPU drivers will be mounted at runtime at /usr/local/nvidia.
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nvidia/lib64:/usr/local/cuda/lib64
Treiberbibliotheken in /usr/local/nvidia/lib64
müssen durch Freigabe der Umgebungsvariable LD_LIBRARY_PATH
im Container als geteilte Bibliotheken sichtbar sein.
Wenn Sie TensorFlow verwenden, müssen Sie eine kompatible Kombination aus CUDA Toolkit- und cuDNN-Versionen auswählen. Weitere Informationen finden Sie unter Softwareanforderungen und Getestete Build-Konfigurationen.
Typ und Anzahl der GPUs für Dataflow-Worker auswählen
Mit Dataflow können Sie den Typ und die Anzahl der GPUs konfigurieren, die mit dem Parameter worker_accelerator
an Dataflow-Worker angehängt werden. Sie können den Typ und die Anzahl der GPUs je nach Anwendungsfall auswählen und festlegen, wie die GPUs in der Pipeline verwendet werden sollen.
Die folgenden GPU-Typen werden mit Dataflow unterstützt:
- NVIDIA® A100
- NVIDIA® Tesla® T4
- NVIDIA® Tesla® P4
- NVIDIA® Tesla® V100
- NVIDIA® Tesla® P100
- NVIDIA® Tesla® K80
Ausführlichere Informationen zu den einzelnen GPU-Typen, einschließlich Leistungsdaten, finden Sie in der GPU-Vergleichstabelle.
Job mit GPUs ausführen
Führen Sie den folgenden Befehl aus, um einen Dataflow-Job mit GPUs auszuführen:
Python
python PIPELINE \
--runner "DataflowRunner" \
--project "PROJECT" \
--temp_location "gs://BUCKET/tmp" \
--region "REGION" \
--worker_harness_container_image "IMAGE" \
--disk_size_gb "DISK_SIZE_GB" \
--dataflow_service_options "worker_accelerator=type:GPU_TYPE;count:GPU_COUNT;install-nvidia-driver" \
--experiments "use_runner_v2"
Dabei gilt:
- PIPELINE: Ihre Quellcode-Pipelinedatei
- PROJECT: der Name des Google Cloud-Projekts
- BUCKET: der Cloud Storage-Bucket
- REGION: ein regionaler Endpunkt, z. B.
us-central1
- IMAGE: Container Registry-Pfad für das Docker-Image
- DISK_SIZE_GB: Größe des Bootlaufwerks für jede Worker-VM, z. B.
50
- GPU_TYPE: ein verfügbarer GPU-Typ, z. B.
nvidia-tesla-t4
- GPU_COUNT: Anzahl der GPUs, die an jede Worker-VM angehängt werden, z. B.
1
Folgendes ist für die Ausführung eines Dataflow-Jobs mit GPUs zu beachten:
- Wenn Sie einen benutzerdefinierten Container mit GPUs bereitstellen möchten, müssen Sie Dataflow Runner Version 2 verwenden.
- Wählen Sie eine
REGION
aus, die Zonen enthält, die denGPU_TYPE
unterstützen. Dataflow weist Worker einer Zone mit GPUs in dieser Region automatisch zu. - Da GPU-Container in der Regel groß sind, sollten Sie die Standardgröße des Bootlaufwerks auf mindestens 50 Gigabyte erhöhen, um zu vermeiden, dass irgendwann kein Speicherplatz mehr verfügbar ist.
Wenn Sie TensorFlow verwenden, sollten Sie die Worker so konfigurieren, dass sie einen einzelnen Prozess verwenden. Dazu legen Sie eine Pipelineoption --experiments=no_use_multiple_sdk_containers
fest oder verwenden Worker mit einer einzigen vCPU. Wenn n1-standard-1
nicht genügend Arbeitsspeicher bietet, können Sie einen benutzerdefinierten Maschinentyp wie n1-custom-1-NUMBER_OF_MB
oder n1-custom-1-NUMBER_OF_MB-ext
für den erweiterten Speicher in Betracht ziehen.
Weitere Informationen finden Sie unter GPUs und Worker-Parallelität.
Dataflow-Job prüfen
So prüfen Sie, ob der Job Worker-VMs mit GPUs verwendet:
- Überprüfen Sie, ob Dataflow-Worker für den Job gestartet wurden.
- Suchen Sie während der Jobausführung nach einer Worker-VM, die dem Job zugeordnet ist.
- Fügen Sie die Job-ID in die Eingabeaufforderung Produkte und Ressourcen suchen ein.
- Wählen Sie die dem Job zugeordnete Compute Engine-VM-Instanz aus.
Sie können in der Compute Engine-Konsole auch eine Liste aller ausgeführten Instanzen aufrufen.
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie auf VM-Instanzdetails.
Prüfen Sie, ob auf der Detailseite ein Abschnitt GPUs vorhanden ist und dass Ihre GPUs angehängt sind.
Wenn Ihr Job nicht mit GPUs gestartet wurde, prüfen Sie, ob die worker_accelerator
-Dienstoption richtig konfiguriert und in der Dataflow-Monitoring-Oberfläche in dataflow_service_options
angezeigt wird. Die Reihenfolge der Tokens in den Accelerator-Metadaten ist wichtig.
Die Pipelineoption dataflow_service_options
in der Dataflow-Monitoring-Oberfläche könnte beispielsweise so aussehen:
['worker_accelerator=type:nvidia-tesla-t4;count:1;install-nvidia-driver', ...]
GPU-Auslastung ansehen
So rufen Sie die GPU-Auslastung auf den Worker-VMs ab:
Wählen Sie in der Google Cloud Console Monitoring aus oder verwenden Sie die folgende Schaltfläche:
Klicken Sie im Navigationsbereich von Monitoring auf Metrics Explorer.
Geben Sie
Dataflow Job
als Ressourcentyp undGPU utilization
oderGPU memory utilization
als Messwert an, je nachdem, welchen Messwert Sie überwachen möchten.
Weitere Informationen finden Sie im Leitfaden zu Metrics Explorer.
GPUs mit Dataflow Prime verwenden
Mit Dataflow Prime können Sie Beschleuniger für einen bestimmten Schritt Ihrer Pipeline anfordern.
Verwenden Sie die Pipelineoption --dataflow-service_options=worker_accelerator
nicht, um GPUs mit Dataflow Prime zu verwenden. Fordern Sie stattdessen die GPUs mit dem Ressourcenhinweis accelerator
an.
Weitere Informationen finden Sie unter Ressourcenhinweise verwenden.
Fehlerbehebung bei Dataflow-Jobs
Wenn beim Ausführen Ihres Dataflow-Jobs mit GPUs Probleme auftreten, folgen Sie diesen Schritten zur Fehlerbehebung.
Worker starten nicht
Wenn Ihr Job hängen bleibt und die Dataflow-Worker nie mit der Verarbeitung von Daten beginnen, besteht wahrscheinlich ein Problem mit der Verwendung eines benutzerdefinierten Containers mit Dataflow. Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung für benutzerdefinierte Container.
Prüfen Sie als Python-Nutzer, ob die folgenden Bedingungen erfüllt sind:
- Die Nebenversion des Python-Interpreters in Ihrem Container-Image ist dieselbe Version, die Sie auch beim Starten der Pipeline verwenden. Wenn es eine Abweichung gibt, werden möglicherweise Fehler wie
SystemError: unknown opcode
mit einem Stacktrace mitapache_beam/internal/pickler.py
angezeigt. - Wenn Sie das Apache Beam SDK 2.29.0 oder niedriger verwenden, muss
pip
für das Image in/usr/local/bin/pip
zugänglich sein.
Wir empfehlen, die Anpassungen der Arbeitskonfiguration zu minimieren, wenn Sie zum ersten Mal ein benutzerdefiniertes Image verwenden. Verwenden Sie die benutzerdefinierten Container-Images, die in den Beispielen auf dieser Seite bereitgestellt sind. Achten Sie darauf, dass Sie mit diesem Container-Image eine einfache Dataflow-Pipeline ausführen können, ohne GPUs anzufordern. Entwickeln Sie dann die Lösung weiter.
Achten Sie darauf, dass die Worker über genügend Speicherplatz verfügen, um das Container-Image herunterzuladen. Passen Sie die Laufwerkgröße bei Bedarf an. Der Download großer Images dauert länger, was die Worker-Startzeit verlängert.
Job schlägt beim Start sofort fehl
Wenn der Fehler ZONE_RESOURCE_POOL_EXHAUSTED
oder ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS
auftritt, können Sie so vorgehen:
Geben Sie die Worker-Zone nicht an, damit Dataflow die optimale Zone für Sie auswählt.
Starten Sie die Pipeline in einer anderen Zone oder mit einem anderen Beschleunigertyp.
Job schlägt zur Laufzeit fehl
Wenn der Job zur Laufzeit fehlschlägt, schließen Sie OOM-Fehler (Out-of-Memory) auf dem Worker-Computer und der GPU aus. GPU-OOM-Fehler können als cudaErrorMemoryAllocation out of memory
-Fehler in Worker-Logs sichtbar werden. Wenn Sie TensorFlow verwenden, achten Sie darauf, dass Sie nur einen TensorFlow-Prozess verwenden, um auf ein GPU-Gerät zuzugreifen.
Weitere Informationen finden Sie unter GPUs und Worker-Parallelität.
Keine GPU-Nutzung
Wenn die Pipeline erfolgreich ausgeführt wird, aber GPUs nicht verwendet werden, überprüfen Sie Folgendes:
- Im Container-Image installierte NVIDIA-Bibliotheken entsprechen den Anforderungen des Pipeline-Nutzercodes und der verwendeten Bibliotheken.
- Installierte NVIDIA-Bibliotheken in Container-Images sind als gemeinsam genutzte Bibliotheken zugänglich.
Wenn die Geräte nicht verfügbar sind, verwenden Sie möglicherweise eine inkompatible Softwarekonfiguration. Wenn Sie beispielsweise TensorFlow verwenden, achten Sie darauf, dass Sie eine kompatible Kombination von TensorFlow, cuDNN und CUDA Toolkit haben.
Zum Prüfen der Image-Konfiguration sollten Sie eine einfache Pipeline ausführen, die überprüft, ob GPUs verfügbar und für die Worker zugänglich sind.
Fehler mit einer eigenständigen VM beheben
Während Sie ein Container-Image entwerfen und weiterentwickeln, das für Sie geeignet ist, kann es schneller sein, die Feedbackschleife zu verringern. Testen Sie dazu das Container-Image auf einer eigenständigen VM.
Sie können Ihren benutzerdefinierten Container auf einer eigenständigen VM mit GPUs debuggen, indem Sie eine Compute Engine-VM erstellen, auf der GPUs unter Container-Optimized OS ausgeführt, Treiber installiert und Ihr Container folgendermaßen gestartet wird.
Erstellen Sie eine VM-Instanz.
gcloud compute instances create INSTANCE_NAME \ --project "PROJECT" \ --image-family cos-stable \ --image-project=cos-cloud \ --zone=us-central1-f \ --accelerator type=nvidia-tesla-t4,count=1 \ --maintenance-policy TERMINATE \ --restart-on-failure \ --boot-disk-size=200G \ --scopes=cloud-platform
Stellen Sie mit
ssh
eine Verbindung zur VM her.gcloud compute ssh INSTANCE_NAME --project "PROJECT"
Installieren Sie die GPU-Treiber. Nachdem Sie mit
ssh
eine Verbindung zur VM hergestellt haben, führen Sie auf der VM die folgenden Befehle aus:# Run these commands on the virtual machine cos-extensions install gpu sudo mount --bind /var/lib/nvidia /var/lib/nvidia sudo mount -o remount,exec /var/lib/nvidia /var/lib/nvidia/bin/nvidia-smi
Starten Sie Ihren benutzerdefinierten Container.
Apache Beam SDK-Container verwenden den Einstiegspunkt
/opt/apache/beam/boot
. Für die Fehlerbehebung können Sie Ihren Container manuell mit einem anderen Einstiegspunkt starten:docker-credential-gcr configure-docker docker run --rm \ -it \ --entrypoint=/bin/bash \ --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \ --volume /var/lib/nvidia/bin:/usr/local/nvidia/bin \ --privileged \ IMAGE
Ersetzen Sie IMAGE durch den Container Registry-Pfad des Docker-Images.
Prüfen Sie, ob die im Container installierten GPU-Bibliotheken auf GPU-Geräte zugreifen können.
Wenn Sie TensorFlow verwenden, können Sie verfügbare Geräte im Python-Interpreter folgendermaßen drucken:
>>> import tensorflow as tf >>> print(tf.config.list_physical_devices("GPU"))
Wenn Sie PyTorch verwenden, können Sie die verfügbaren Geräte im Python-Interpreter so prüfen:
>>> import torch >>> print(torch.cuda.is_available()) >>> print(torch.cuda.device_count()) >>> print(torch.cuda.get_device_name(0))
Für eine Iteration in Ihrer Pipeline können Sie sie in Direct Runner starten. In dieser Umgebung können Sie auch Pipelines in Dataflow Runner starten.
Weitere Informationen finden Sie unter:
- Erste Schritte: GPUs auf Container-Optimized OS ausführen
- Eigenständiger Credential Helper für Container Registry
- Container-Optimized OS-Toolbox
- Zugriffsbereiche für Dienstkonten
Nächste Schritte
- Weitere Informationen zu GPU-Unterstützung in Dataflow
- Landsat-Satellitenbilder mit GPUs verarbeiten