In dieser Anleitung erfahren Sie, wie Sie ein Large Language Model (LLM) von offenen Gemma-Modellen mit Tensor Processing Units (TPUs) auf der Gemini Enterprise Agent Platform mit Saxml bereitstellen. In diesem Leitfaden laden Sie die abgestimmten Gemma-Modelle für 2B- und 7B-Parameteranweisungen in Cloud Storage herunter und stellen sie in der Gemini Enterprise Agent Platform bereit, die Saxml auf TPUs ausführt.
Hintergrund
Gemma mit TPUs auf der Gemini Enterprise Agent Platform mit Saxml bereitstellen Sie können eine verwaltete KI-Lösung nutzen, die sich um die Infrastruktur auf der untersten Ebene kümmert und eine kostengünstige Möglichkeit zur Bereitstellung von LLMs bietet. In diesem Abschnitt werden die in dieser Anleitung verwendeten Schlüsseltechnologien beschrieben.
Gemma
Gemma ist eine Reihe offen verfügbarer, einfacher und auf generativer KI basierender Modelle, die unter einer offenen Lizenz veröffentlicht wurden. Diese KI-Modelle können in Ihren Anwendungen, Geräten, Mobilgeräten oder gehosteten Diensten ausgeführt werden. Sie können die Gemma-Modelle zur Textgenerierung verwenden. Sie können diese Modelle jedoch auch für spezielle Aufgaben optimieren.
Weitere Informationen finden Sie in der Gemma-Dokumentation.
Saxml
Saxml ist ein experimentelles System, das Paxml-, JAX- und PyTorch-Modelle zur Inferenz bereitstellt. Für dieses Tutorial erklären wir, wie Sie Gemma auf TPUs bereitstellen, die für Saxml kosteneffizienter sind. Die Einrichtung für GPUs ist ähnlich. Saxml bietet Scripts zum Erstellen von Containern für die Gemini Enterprise Agent Platform, die wir in dieser Anleitung verwenden werden.
TPUs
TPUs sind von Google speziell entwickelte anwendungsspezifische integrierte Schaltkreise (ASICs), die verwendet werden, um Datenverarbeitungs-Frameworks wie TensorFlow, PyTorch und JAX zu beschleunigen.
In dieser Anleitung werden die Modelle Gemma 2B und Gemma 7B bereitgestellt. Die Gemini Enterprise Agent Platform hostet diese Modelle auf den folgenden TPU v5e-Knotenpools mit nur einem Host:
- Gemma 2B: Wird in einem TPU v5e-Knotenpool mit
1x1-Topologie gehostet, die einen TPU-Chip darstellt. Der Maschinentyp für die Knoten istct5lp-hightpu-1t. - Gemma 7B: in einem TPU v5e-Knotenpool mit
2x2- Topologie gehostet, die vier TPU-Chips darstellt. Der Maschinentyp für die Knoten istct5lp-hightpu-4t.
Hinweis
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Agent Platform API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Aktivieren Sie Cloud Shell in der Cloud de Confiance Console.
Unten in der Cloud de Confiance Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
In dieser Anleitung wird davon ausgegangen, dass Sie Cloud Shell zur Interaktion mit Cloud de Confiance by S3NSverwenden. Wenn Sie anstelle von Cloud Shell eine andere Shell nutzen möchten, führen Sie die folgende zusätzliche Konfiguration aus:
-
Installieren Sie die Google Cloud CLI.
-
Konfigurieren Sie die gcloud CLI für die Verwendung Ihrer föderierten Identität.
Weitere Informationen finden Sie unter Mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init - Achten Sie darauf, dass Sie genügend Kontingente für TPU v5e-Chips für die
Gemini Enterprise Agent Platform haben. Standardmäßig ist dieses Kontingent auf 0 festgelegt.
Bei einer
1x1-Topologie muss der Wert 1 sein. Für2x2muss der Wert 4 sein. Damit beide Topologien ausgeführt werden können, muss der Wert 5 sein. - Erstellen Sie ein Kaggle-Konto, falls Sie noch keines haben.
Zugriff auf das Modell erhalten
Cloud Shell hat möglicherweise nicht genügend Ressourcen, um Modellgewichte herunterzuladen. In diesem Fall können Sie eine Gemini Enterprise Agent Platform Workbench-Instanz zum Ausführen dieser Aufgabe erstellen.
Damit Sie auf die Gemma-Modelle für die Bereitstellung in der Gemini Enterprise Agent Platform zugreifen können, müssen Sie sich in der Kaggle-Plattform anmelden, die Lizenz-Einwilligungsvereinbarung unterzeichnen und ein Kaggle-API-Token erwerben. In dieser Anleitung verwenden Sie ein Kubernetes Secret für die Kaggle-Anmeldedaten.
Lizenz-Einwilligungsvereinbarung unterzeichnen
Sie müssen die Einwilligungsvereinbarung unterzeichnen, um Gemma verwenden zu können. Gehen Sie dazu so vor:
- Rufen Sie die Seite zur Modelleinwilligung auf Kaggle.com auf.
- Melden Sie sich bei Kaggle an, falls Sie dies noch nicht getan haben.
- Klicken Sie auf Zugriffsanfrage.
- Wählen Sie im Abschnitt Konto zur Einwilligung die Option Über Kaggle-Konto verifizieren aus, um Ihr Kaggle-Konto für die Einwilligung zu verwenden.
- Akzeptieren Sie die Nutzungsbedingungen des Modells.
Zugriffstoken erstellen
Für den Zugriff auf das Modell über Kaggle benötigen Sie ein Kaggle API-Token.
Führen Sie die folgenden Schritte aus, um ein neues Token zu generieren, falls Sie noch keines haben:
- Rufen Sie in Ihrem Browser die Kaggle-Einstellungen auf.
Klicken Sie im Abschnitt API auf Neues Token erstellen.
Eine Datei mit dem Namen
kaggle.jsonwird heruntergeladen.
Zugriffstoken in Cloud Shell hochladen
In Cloud Shell können Sie das Kaggle API-Token in Ihr Cloud de Confiance by S3NS-Projekt hochladen:
- Klicken Sie in Cloud Shell auf Mehr > Hochladen.
- Wählen Sie "Datei" aus und klicken Sie auf Dateien auswählen.
- Öffnen Sie die Datei
kaggle.json. - Klicken Sie auf Hochladen.
Cloud Storage-Bucket erstellen
Erstellen Sie einen Cloud Storage-Bucket zum Speichern der Modell-Checkpoints.
Führen Sie in Cloud Shell folgenden Befehl aus:
gcloud storage buckets create gs://CHECKPOINTS_BUCKET_NAME
Ersetzen Sie CHECKPOINTS_BUCKET_NAME durch den Namen des Cloud Storage-Buckets, in dem die Modellprüfpunkte gespeichert sind.
Modell in Cloud Storage-Bucket kopieren
Führen Sie in Cloud Shell folgenden Befehl aus:
pip install kaggle --break-system-packages
# For Gemma 2B
mkdir -p /data/gemma_2b-it
kaggle models instances versions download google/gemma/pax/2b-it/1 --untar -p /data/gemma_2b-it
gcloud storage cp /data/gemma_2b-it/* gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/ --recursive
# For Gemma 7B
mkdir -p /data/gemma_7b-it
kaggle models instances versions download google/gemma/pax/7b-it/1 --untar -p /data/gemma_7b-it
gcloud storage cp /data/gemma_7b-it/* gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/ --recursive
Modell bereitstellen
Modell hochladen
Führen Sie folgenden gcloud ai models upload-Befehl aus, um eine Model-Ressource hochzuladen, die Ihren Saxml-Container verwendet:
Gemma 2B-it
gcloud ai models upload \
--region=LOCATION \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://CHECKPOINTS_BUCKET_NAME/gemma_2b-it/' \
--container-args='--model_path=saxml.server.pax.lm.params.gemma.Gemma2BFP16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=2x2' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-ports=8502
Gemma 7B-it
gcloud ai models upload \
--region=LOCATION \
--display-name=DEPLOYED_MODEL_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://CHECKPOINTS_BUCKET_NAME/gemma_7b-it/' \
--container-args='--model_path=saxml.server.pax.lm.params.gemma.Gemma7BFP16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=2x2' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-ports=8502
Ersetzen Sie Folgendes:
- PROJECT_ID: die ID Ihres Cloud de Confiance-Projekts
- LOCATION_ID: Die Region, in der Sie die Agent Platform verwenden. TPUs sind nur in us-west1 verfügbar.
-
DEPLOYED_MODEL_NAME: Ein Name für
DeployedModel. Sie können auch den Anzeigenamen vonModelfürDeployedModelverwenden.
Endpunkt erstellen
Sie müssen das Modell auf einem Endpunkt bereitstellen, bevor es zum Bereitstellen von Onlineinferenzen verwendet werden kann. Wenn Sie ein Modell auf einem vorhandenen Endpunkt bereitstellen, können Sie diesen Schritt überspringen. Im folgenden Beispiel wir der Befehl gcloud ai endpoints create verwendet:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
Ersetzen Sie Folgendes:
- LOCATION_ID: Die Region, in der Sie die Agent Platform verwenden.
- ENDPOINT_NAME: Der Anzeigename für den Endpunkt.
Es kann einige Sekunden dauern, bis das Google Cloud CLI den Endpunkt erstellt.
Modell auf dem Endpunkt bereitstellen
Wenn der Endpunkt bereit ist, stellen Sie das Modell für den Endpunkt bereit.
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
MODEL_ID=$(gcloud ai models list \
--region=LOCATION \
--filter=display_name=DEPLOYED_MODEL_NAME \
--format="value(name)")
gcloud ai endpoints deploy-model $ENDPOINT_ID \
--region=LOCATION \
--model=$MODEL_ID \
--display-name=DEPLOYED_MODEL_NAME \
--machine-type=ct5lp-hightpu-4t \
--traffic-split=0=100
Ersetzen Sie Folgendes:
- LOCATION_ID: Die Region, in der Sie die Agent Platform verwenden.
- ENDPOINT_NAME: Der Anzeigename für den Endpunkt.
-
DEPLOYED_MODEL_NAME: Ein Name für
DeployedModel. Sie können auch den Anzeigenamen vonModelfürDeployedModelverwenden.
Gemma 2B kann auf einer kleineren ct5lp-hightpu-1t-Maschine bereitgestellt werden.
Dann sollten Sie beim Hochladen des Modells --platform_topology=1x1 angeben.
Es kann einige Sekunden dauern, bis die Google Cloud CLI das Modell am Endpunkt bereitstellt. Wenn das Modell erfolgreich bereitgestellt wurde, gibt dieser Befehl die folgende Ausgabe aus:
Deployed a model to the endpoint xxxxx. Id of the deployed model: xxxxx.
Onlineinferenzen aus dem bereitgestellten Modell abrufen
Wenn Sie das Modell über den Gemini Enterprise Agent Platform-Endpunkt aufrufen möchten, formatieren Sie die Inferenzanfrage mithilfe eines Standard-JSON-Objekts für die Inferenzanfrage .
Im folgenden Beispiel wir der Befehl gcloud ai endpoints predict verwendet:
ENDPOINT_ID=$(gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME \
--format="value(name)")
gcloud ai endpoints predict $ENDPOINT_ID \
--region=LOCATION \
--http-headers=Content-Type=application/json \
--json-request instances.json
Ersetzen Sie Folgendes:
- LOCATION_ID: Die Region, in der Sie die Agent Platform verwenden.
- ENDPOINT_NAME: Der Anzeigename für den Endpunkt.
- instances.json hat das folgende Format:
{"instances": [{"text_batch": "<your prompt>"},{...}]}
Bereinigen
Löschen Sie die in dieser Anleitung erstellten Cloud de Confiance Ressourcen, damit keine weiteren Kosten für die Gemini Enterprise Agent Platform und Artifact Registry anfallen:
Führen Sie den folgenden Befehl in der Shell aus, um die Bereitstellung des Modells beim Endpunkt aufzuheben und den Endpunkt zu löschen:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)") DEPLOYED_MODEL_ID=$(gcloud ai endpoints describe $ENDPOINT_ID \ --region=LOCATION \ --format="value(deployedModels.id)") gcloud ai endpoints undeploy-model $ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=$DEPLOYED_MODEL_ID gcloud ai endpoints delete $ENDPOINT_ID \ --region=LOCATION \ --quietErsetzen Sie dabei LOCATION durch die Region, in der Sie das Modell in einem vorherigen Abschnitt erstellt haben.
Führen Sie den folgenden Befehl in der Shell aus, um das Modell zu löschen:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)") gcloud ai models delete $MODEL_ID \ --region=LOCATION \ --quietErsetzen Sie dabei LOCATION durch die Region, in der Sie das Modell in einem vorherigen Abschnitt erstellt haben.
Beschränkungen
- Auf der Gemini Enterprise Agent Platform werden Cloud TPUs nur in
us-west1unterstützt. Weitere Informationen finden Sie unter Standorte.