Llama 3 ist ein Open-Source Large Language Model (LLM) von Meta. In diesem Leitfaden erfahren Sie, wie Sie ein Llama 3-LLM mit Tensor Processing Units (TPUs) mit mehreren Hosts auf Vertex AI Prediction mit Saxml bereitstellen.
In dieser Anleitung laden Sie die Llama 3 70B-Modellgewichtungen und Tokenizer herunter und stellen Sie sie in Vertex AI Prediction bereit, das Saxml auf TPUs ausführt.
Hinweise
Wir empfehlen die Verwendung einer speicheroptimierten M2-VM zum Herunterladen des Modells und zum Konvertieren in Saxml. Das liegt daran, dass der Konvertierungsprozess des Modells viel Arbeitsspeicher erfordert und fehlschlagen kann, wenn der Maschinentyp nicht genügend Arbeitsspeicher hat.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI and Artifact Registry APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI and Artifact Registry APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Installieren Sie Docker gemäß der Dokumentation zu Artifact Registry.
- Achten Sie darauf, dass Sie genügend Kontingente für 16 TPU v5e-Chips für Vertex AI Prediction haben.
In dieser Anleitung wird davon ausgegangen, dass Sie Cloud Shell zur Interaktion mit Google Cloud verwenden. Wenn Sie anstelle von Cloud Shell eine andere Shell nutzen möchten, führen Sie die folgende zusätzliche Konfiguration aus:
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Wenn Sie für die Modellbereitstellung eine andere Shell anstelle von Cloud Shell verwenden, prüfen Sie, ob die Google Cloud CLI die Version 475.0.0
oder höher hat. Sie können die Google Cloud CLI aktualisieren, indem Sie den Befehl gcloud components update ausführen.
Wenn Sie Ihr Modell mit dem Vertex AI SDK bereitstellen, müssen Sie dafür sorgen, dass Sie die Version 1.50.0
oder höher haben.
Zugriff auf das Modell erhalten und die Modellgewichte herunterladen
Die folgenden Schritte gelten für eine Vertex AI Workbench-Instanz mit einer speicheroptimierten M2-VM. Informationen zum Ändern des Maschinentyps einer Vertex AI Workbench-Instanz finden Sie unter Maschinentyp einer Vertex AI Workbench-Instanz ändern.
Rufen Sie die Seite zur Einwilligung für das Llama-Modell auf.
Wählen Sie „Llama 3“ aus, füllen Sie die Einverständniserklärung aus und akzeptieren Sie die Nutzungsbedingungen.
Sie sollten eine E-Mail mit einer signierten URL erhalten haben.
Laden Sie das
download.sh
-Script von GitHub mit dem folgenden Befehl herunter:wget https://raw.githubusercontent.com/meta-llama/llama3/main/download.sh chmod +x download.sh
Zum Herunterladen der Modellgewichtungen führen Sie das Skript
download.sh
aus, das Sie von GitHub heruntergeladen haben.Wenn Sie dazu aufgefordert werden, geben Sie die signierte URL aus der E-Mail ein, die Sie im vorherigen Abschnitt erhalten haben.
Geben Sie
70B
ein, wenn Sie aufgefordert werden, die Modelle auszuwählen, die heruntergeladen werden sollen.
Modellgewichte in das Saxml-Format konvertieren
Führen Sie den folgenden Befehl aus, um Saxml herunterzuladen:
git clone https://github.com/google/saxml.git
Führen Sie die folgenden Befehle aus, um eine virtuelle Python-Umgebung zu konfigurieren:
python -m venv . source bin/activate
Führen Sie die folgenden Befehle aus, um die Abhängigkeiten zu installieren:
pip install --upgrade pip pip install paxml pip install praxis pip install torch
Führen Sie den folgenden Befehl aus, um die Modellgewichte in das Saxml-Format zu konvertieren:
python3 saxml/saxml/tools/convert_llama_ckpt.py \ --base PATH_TO_META_LLAMA3 \ --pax PATH_TO_PAX_LLAMA3 \ --model-size llama3_70b
Ersetzen Sie Folgendes:
PATH_TO_META_LLAMA3
: der Pfad zu dem Verzeichnis, das die heruntergeladenen Modellgewichtungen enthält.PATH_TO_PAX_LLAMA3
: der Pfad zu dem Verzeichnis, in dem die konvertierten Modellgewichtungen gespeichert werden sollen.
Umgewandelte Modelle werden in den Ordner „
$PATH_TO_PAX_LLAMA3/checkpoint_00000000
“ gelegt.Kopieren Sie die Tokenizer-Datei aus dem ursprünglichen Verzeichnis in einen Unterordner mit dem Namen
vocabs
folgendermaßen:cp $PATH_TO_META_LLAMA3/tokenizer.model $PATH_TO_PAX_LLAMA3/vocabs/tokenizer.model
Fügen Sie eine leere Datei „
commit_success.txt
“ in den Ordner$PATH_TO_PAX_LLAMA3
hinzu und fügen Sie auch die Unterordnermetadata
undstate
in diesen Ordner hinzu:touch $PATH_TO_PAX_LLAMA3/checkpoint_00000000/commit_success.txt touch $PATH_TO_PAX_LLAMA3/checkpoint_00000000/metadata/commit_success.txt touch $PATH_TO_PAX_LLAMA3/checkpoint_00000000/state/commit_success.txt
Der Ordner
$PATH_TO_PAX_LLAMA3
enthält jetzt die folgenden Ordner und Dateien:$PATH_TO_PAX_LLAMA3/checkpoint_00000000/commit_success.txt $PATH_TO_PAX_LLAMA3/checkpoint_00000000/metadata/ $PATH_TO_PAX_LLAMA3/checkpoint_00000000/metadata/commit_success.txt $PATH_TO_PAX_LLAMA3/checkpoint_00000000/state/ $PATH_TO_PAX_LLAMA3/checkpoint_00000000/state/commit_success.txt $PATH_TO_PAX_LLAMA3/vocabs/tokenizer.model
Cloud Storage-Bucket erstellen
Erstellen Sie einen Cloud Storage-Bucket zum Speichern der umgewandelten Modellgewichte.
Führen Sie in der Cloud Shell die folgenden Befehle aus und ersetzen Sie dabei PROJECT_ID durch Ihre Projekt-ID:
projectid=PROJECT_ID gcloud config set project ${projectid}
Führen Sie den folgenden Befehl aus, um den Bucket zu erstellen:
gcloud storage buckets create gs://WEIGHTS_BUCKET_NAME
Ersetzen Sie WEIGHTS_BUCKET_NAME durch den gewünschten Namen, der für den Bucket verwendet werden soll.
Modellgewichte in den Cloud Storage-Bucket kopieren
Führen Sie den folgenden Befehl aus, um die Modellgewichte in Ihren Bucket zu kopieren:
gcloud storage cp PATH_TO_PAX_LLAMA3/* gs://WEIGHTS_BUCKET_NAME/llama3/pax_70b/ --recursive
Modell hochladen
Ein vordefinierter Saxml-Container ist unter us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest
verfügbar.
Zum Hochladen einer Model
-Ressource in Vertex AI Prediction mit dem vordefinierten SAxml-Container, führen Sie den Befehl gcloud ai models upload
aus:
gcloud ai models upload \
--region=LOCATION \
--display-name=MODEL_DISPLAY_NAME \
--container-image-uri=us-docker.pkg.dev/vertex-ai/prediction/sax-tpu:latest \
--artifact-uri='gs://WEIGHTS_BUCKET_NAME/llama3/pax_70b' \
--container-args='--model_path=saxml.server.pax.lm.params.lm_cloud.LLaMA3_70BFP16x16' \
--container-args='--platform_chip=tpuv5e' \
--container-args='--platform_topology=4x4' \
--container-args='--ckpt_path_suffix=checkpoint_00000000' \
--container-deployment-timeout-seconds=2700 \
--container-ports=8502 \
--project=PROJECT_ID
Ersetzen Sie die folgenden Werte:
LOCATION
: Die Region, in der Sie Vertex AI verwenden. TPUs sind nur inus-west1
verfügbar.MODEL_DISPLAY_NAME
: Der gewünschte Anzeigename für Ihr ModellPROJECT_ID
ist die ID Ihres Google Cloud-Projekts
Endpunkt für Onlinevorhersagen erstellen
Führen Sie folgenden Befehl aus, um den Endpunkt zu erstellen:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_DISPLAY_NAME \
--project=PROJECT_ID
Ersetzen Sie ENDPOINT_DISPLAY_NAME
durch den Anzeigenamen für
Ihren Endpunkt.
Modell für den Endpunkt bereitstellen
Wenn der Endpunkt bereit ist, stellen Sie das Modell für den Endpunkt bereit.
In dieser Anleitung stellen Sie ein Llama 3 70B-Modell bereit, das für 16 Cloud TPU v5e-Chips mit 4x4-Topologie fragmentiert ist. Sie können jedoch auch alle folgenden unterstützten Cloud TPU-Topologien mit mehreren Hosts angeben:
Maschinentyp | Topologie | Anzahl der TPU-Chips | Anzahl der Hosts |
---|---|---|---|
ct5lp-hightpu-4t |
4x4 | 16 | 2 |
ct5lp-hightpu-4t |
4x8 | 32 | 4 |
ct5lp-hightpu-4t |
8x8 | 64 | 8 |
ct5lp-hightpu-4t |
8x16 | 128 | 16 |
ct5lp-hightpu-4t |
16x16 | 256 | 32 |
Wenn Sie ein anderes Llama-Modell bereitstellen, das im Saxml-GitHub-Repository definiert ist, stellen Sie sicher, dass die Partitionierung der Anzahl der Geräte entspricht und die Cloud TPU ausreichend Speicher zum Laden des Modells hat.
Informationen zum Bereitstellen eines Modells auf Cloud TPUs mit einem einzelnen Host finden Sie unter Modell bereitstellen.
Weitere Informationen zu Cloud TPU v5e-Typen finden Sie unter TPU v5e.
Rufen Sie die Endpunkt-ID für den Endpunkt der Onlinevorhersage ab:
ENDPOINT_ID=$(gcloud ai endpoints list \ --region=LOCATION \ --filter=display_name=ENDPOINT_NAME \ --format="value(name)")
Rufen Sie die Modell-ID für Ihr Modell ab:
MODEL_ID=$(gcloud ai models list \ --region=LOCATION \ --filter=display_name=DEPLOYED_MODEL_NAME \ --format="value(name)")
Stellen Sie das Modell für den Endpunkt bereit:
gcloud ai endpoints deploy-model $ENDPOINT_ID \ --region=LOCATION \ --model=$MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=ct5lp-hightpu-4t \ --tpu-topology=4x4 \ --traffic-split=0=100
Ersetzen Sie DEPLOYED_MODEL_NAME durch einen Namen für das Bereitgestellte. Dieser kann mit dem Anzeigenamen des Modells (MODEL_DISPLAY_NAME) identisch sein.
Bei der Bereitstellung kann es zu einer Zeitüberschreitung kommen.
Der Befehl
deploy-model
gibt eine Vorgangs-ID zurück, mit der geprüft werden kann, ob der Vorgang abgeschlossen ist. Sie können den Status des Vorgangs abfragen, bis in der Antwort"done": true
angegeben wird. Mit dem folgenden Befehl können Sie den Status abfragen:gcloud ai operations describe \ --region=LOCATION \ OPERATION_ID
Ersetzen Sie OPERATION_ID durch die mit dem vorherigen Befehlzurückgegebene Vorgangs-ID.
Onlinevorhersagen aus dem bereitgestellten Modell abrufen
Zum Abrufen von Onlinevorhersagen vom Vertex AI Prediction-Endpunkt führen Sie den Befehl gcloud ai endpoints predict
aus.
Führen Sie den folgenden Befehl aus, um eine
request.json
-Datei mit einem Beispiel für eine Vorhersageanfrage zu erstellen:cat << EOF > request.json {"instances": [{"text_batch": "the distance between Earth and Moon is "}]} EOF
Führen Sie folgenden Befehl aus, um die Onlinevorhersageanfrage an den Endpunkt zu senden:
gcloud ai endpoints predict $ENDPOINT_ID \ --project=PROJECT_ID \ --region=LOCATION \ --json-request=request.json
Bereinigen
Um weitere Vertex AI-Kosten zu vermeiden, löschen Sie die Google Cloud-Ressourcen, die Sie in dieser Anleitung erstellt haben:
So heben Sie die Bereitstellung des Modells am Endpunkt auf und löschen den Endpunkt. Führen Sie die folgenden Befehle aus:
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 \ --quiet
Führen Sie die folgenden Befehle 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 \ --quiet