Die Bereitstellung von Modellen mit benutzerdefinierten Gewichten ist ein Vorschauangebot. Sie können Modelle auf Grundlage einer vordefinierten Gruppe von Basismodellen abstimmen und Ihre angepassten Modelle in Vertex AI Model Garden bereitstellen. Sie können Ihre benutzerdefinierten Modelle mit dem Import benutzerdefinierter Gewichte bereitstellen, indem Sie Ihre Modellartefakte in einen Cloud Storage-Bucket in Ihrem Projekt hochladen. In Vertex AI ist das mit nur einem Klick möglich.
Unterstützte Modelle
Die öffentliche Vorabversion von Modelle mit benutzerdefinierten Gewichten bereitstellen wird von den folgenden Basismodellen unterstützt:
Modellname | Version |
---|---|
Llama |
|
Gemma |
|
Qwen |
|
Deepseek |
|
Mistral und Mixtral |
|
Phi-4 |
|
OpenAI OSS |
|
Beschränkungen
Benutzerdefinierte Gewichte unterstützen den Import von quantisierten Modellen nicht.
Modelldateien
Sie müssen die Modelldateien im Hugging Face-Gewichtsformat angeben. Weitere Informationen zum Hugging Face-Gewichtsformat finden Sie unter Hugging Face-Modelle verwenden.
Wenn die erforderlichen Dateien nicht bereitgestellt werden, schlägt die Bereitstellung des Modells möglicherweise fehl.
In dieser Tabelle sind die Arten von Modelldateien aufgeführt, die von der Architektur des Modells abhängen:
Inhalte der Modelldatei | Dateityp |
---|---|
Modellkonfiguration |
|
Modellgewichtungen |
|
Gewichtsindex |
|
Tokenizer-Datei(en) |
|
Standorte
Sie können benutzerdefinierte Modelle in allen Regionen über Model Garden-Dienste bereitstellen.
Vorbereitung
In diesem Abschnitt wird gezeigt, wie Sie Ihr benutzerdefiniertes Modell bereitstellen.
Hinweise
- 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.
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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
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.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- REGION: Ihre Region. Beispiel:
uscentral1
- MODEL_GCS: Ihr Google Cloud -Modell. Beispiel:
gs://custom-weights-fishfooding/meta-llama/Llama-3.2-1B-Instruct
- PROJECT_ID: Ihre Projekt-ID.
- MODEL_ID: Ihre Modell-ID.
- MACHINE_TYPE: Ihr Maschinentyp. Beispiel:
g2-standard-12
. - ACCELERATOR_TYPE: Ihr Beschleunigertyp. Beispiel:
NVIDIA_L4
. - ACCELERATOR_COUNT: Die Anzahl der Beschleuniger.
PROMPT: Ihr Text-Prompt.
Rufen Sie in der Google Cloud Console die Seite Model Garden auf.
Klicken Sie auf Modell mit benutzerdefinierten Gewichten bereitstellen. Der Bereich Modell mit benutzerdefinierten Gewichten in Vertex AI bereitstellen wird angezeigt.
Führen Sie im Abschnitt Modellquelle folgende Schritte aus:
Klicken Sie auf Durchsuchen, wählen Sie den Bucket aus, in dem Ihr Modell gespeichert ist, und klicken Sie auf Auswählen.
Optional: Geben Sie den Namen Ihres Modells in das Feld Modellname ein.
Führen Sie im Abschnitt Bereitstellungseinstellungen die folgenden Schritte aus:
Wählen Sie im Feld Region Ihre Region aus und klicken Sie auf OK.
Wählen Sie im Feld Maschinenspezifikation die Maschinenspezifikation aus, die zum Bereitstellen Ihres Modells verwendet wird.
Optional: Im Feld Endpunktname wird standardmäßig der Endpunkt Ihres Modells angezeigt. Sie können jedoch einen anderen Endpunktnamen in das Feld eingeben.
Klicken Sie auf Modell mit benutzerdefinierten Gewichten bereitstellen.
Rufen Sie in der Google Cloud Console die Seite Model Garden auf.
Klicken Sie auf Meine Endpunkte und Modelle ansehen.
Wählen Sie in der Liste Region Ihre Region aus.
Wenn Sie die Endpunkt-ID und die Endpunkt-URL abrufen möchten, klicken Sie im Bereich Meine Endpunkte auf den gewünschten Endpunkt.
Ihre Endpunkt-ID wird im Feld Endpunkt-ID angezeigt.
Die URL Ihres öffentlichen Endpunkts wird im Feld Dedizierter Endpunkt angezeigt.
So rufen Sie die Modell-ID ab: Suchen Sie in der Liste Bereitgestellte Modelle nach Ihrem Modell und gehen Sie so vor:
- Klicken Sie im Feld Modell auf den Namen des bereitgestellten Modells.
- Klicken Sie auf Versionsdetails. Ihre Modell-ID wird im Feld Modell-ID angezeigt.
- Weitere Informationen zu selbst bereitgestellten Modellen finden Sie unter Übersicht über selbst bereitgestellte Modelle.
- Weitere Informationen zu Model Garden finden Sie unter Übersicht über Model Garden.
- Weitere Informationen zum Bereitstellen von Modellen finden Sie unter Modelle in Model Garden verwenden.
- Offene Gemma-Modelle verwenden
- Offene Llama-Modelle verwenden
- Offene Hugging Face-Modelle verwenden
In dieser Anleitung wird davon ausgegangen, dass Sie Cloud Shell zur Interaktion mit Google Cloudverwenden. Wenn Sie anstelle von Cloud Shell eine andere Shell nutzen möchten, führen Sie die folgende zusätzliche Konfiguration aus:
Benutzerdefiniertes Modell bereitstellen
In diesem Abschnitt wird gezeigt, wie Sie Ihr benutzerdefiniertes Modell bereitstellen.
Wenn Sie die Befehlszeile, Python oder JavaScript verwenden, ersetzen Sie die folgenden Variablen durch einen Wert, damit Ihre Codebeispiele funktionieren:
Console
In den folgenden Schritten wird beschrieben, wie Sie Ihr Modell mit benutzerdefinierten Gewichten über die Google Cloud -Konsole bereitstellen.
gcloud-CLI
Dieser Befehl zeigt, wie das Modell in einer bestimmten Region bereitgestellt wird.
gcloud ai model-garden models deploy --model=${MODEL_GCS} --region ${REGION}
Dieser Befehl zeigt, wie Sie das Modell mit seinem Maschinentyp, Beschleunigertyp und der Anzahl der Beschleuniger in einer bestimmten Region bereitstellen. Wenn Sie eine bestimmte Maschinenkonfiguration auswählen möchten, müssen Sie alle drei Felder festlegen.
gcloud ai model-garden models deploy --model=${MODEL_GCS} --machine-type=${MACHINE_TYE} --accelerator-type=${ACCELERATOR_TYPE} --accelerator-count=${ACCELERATOR_COUNT} --region ${REGION}
Python
import vertexai
from google.cloud import aiplatform
from vertexai.preview import model_garden
vertexai.init(project=${PROJECT_ID}, location=${REGION})
custom_model = model_garden.CustomModel(
gcs_uri=GCS_URI,
)
endpoint = custom_model.deploy(
machine_type="${MACHINE_TYPE}",
accelerator_type="${ACCELERATOR_TYPE}",
accelerator_count="${ACCELERATOR_COUNT}",
model_display_name="custom-model",
endpoint_display_name="custom-model-endpoint")
endpoint.predict(instances=[{"prompt": "${PROMPT}"}], use_dedicated_endpoint=True)
Alternativ müssen Sie keinen Parameter an die Methode custom_model.deploy()
übergeben.
import vertexai
from google.cloud import aiplatform
from vertexai.preview import model_garden
vertexai.init(project=${PROJECT_ID}, location=${REGION})
custom_model = model_garden.CustomModel(
gcs_uri=GCS_URI,
)
endpoint = custom_model.deploy()
endpoint.predict(instances=[{"prompt": "${PROMPT}"}], use_dedicated_endpoint=True)
curl
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:deploy" \
-d '{
"custom_model": {
"gcs_uri": "'"${MODEL_GCS}"'"
},
"destination": "projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'",
"model_config": {
"model_user_id": "'"${MODEL_ID}"'",
},
}'
Alternativ können Sie den Maschinentyp explizit über die API festlegen.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${REGION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${REGION}:deploy" \
-d '{
"custom_model": {
"gcs_uri": "'"${MODEL_GCS}"'"
},
"destination": "projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'",
"model_config": {
"model_user_id": "'"${MODEL_ID}"'",
},
"deploy_config": {
"dedicated_resources": {
"machine_spec": {
"machine_type": "'"${MACHINE_TYPE}"'",
"accelerator_type": "'"${ACCELERATOR_TYPE}"'",
"accelerator_count": '"${ACCELERATOR_COUNT}"'
},
"min_replica_count": 1
}
}
}'
Abfrage erstellen
Nachdem Ihr Modell bereitgestellt wurde, werden benutzerdefinierte Gewichte für den öffentlichen dedizierten Endpunkt unterstützt. Sie können Abfragen über die API oder das SDK senden.
Bevor Sie Anfragen senden können, müssen Sie die Endpunkt-URL, die Endpunkt-ID und die Modell-ID abrufen. Diese sind in der Google Cloud Console verfügbar.
So rufen Sie die Informationen ab:
Nachdem Sie die Informationen zu Ihrem Endpunkt und bereitgestellten Modell erhalten haben, finden Sie in den folgenden Codebeispielen Informationen zum Senden einer Inferenzanfrage. Alternativ können Sie auch Online-Inferenzanfrage an einen dedizierten öffentlichen Endpunkt senden lesen.
API
Die folgenden Codebeispiele zeigen verschiedene Möglichkeiten, die API basierend auf Ihrem Anwendungsfall zu verwenden.
Chat-Vervollständigung (unär)
Bei dieser Beispielanfrage wird eine vollständige Chatnachricht an das Modell gesendet und eine Antwort in einem einzigen Chunk empfangen, nachdem die gesamte Antwort generiert wurde. Das ist ähnlich wie beim Senden einer SMS und dem Erhalten einer einzelnen vollständigen Antwort.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${ENDPOINT_URL}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}/chat/completions" \
-d '{
"model": "'"${MODEL_ID}"'",
"temperature": 0,
"top_p": 1,
"max_tokens": 154,
"ignore_eos": true,
"messages": [
{
"role": "user",
"content": "How to tell the time by looking at the sky?"
}
]
}'
Chat-Vervollständigung (Streaming)
Diese Anfrage ist die Streaming-Version der unären Chat-Vervollständigungsanfrage. Wenn Sie der Anfrage "stream": true
hinzufügen, sendet das Modell seine Antwort nach und nach, während sie generiert wird. Dies ist nützlich, um in einer Chatanwendung einen Echtzeit-Effekt zu erzeugen, der an eine Schreibmaschine erinnert.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \ "https://${ENDPOINT_URL}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}/chat/completions" \
-d '{
"model": "'"${MODEL_ID}"'",
"stream": true,
"temperature": 0,
"top_p": 1,
"max_tokens": 154,
"ignore_eos": true,
"messages": [
{
"role": "user",
"content": "How to tell the time by looking at the sky?"
}
]
}'
Vorhersagen
Bei dieser Anfrage wird ein direkter Prompt gesendet, um eine Inferenz von einem Modell zu erhalten. Dies wird häufig für Aufgaben verwendet, die nicht unbedingt dialogorientiert sind, z. B. Textzusammenfassung oder ‑klassifizierung.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${ENDPOINT_URL}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}:predict" \
-d '{
"instances": [
{
"prompt": "How to tell the time by looking at the sky?",
"temperature": 0,
"top_p": 1,
"max_tokens": 154,
"ignore_eos": true
}
]
}'
Raw Predict
Diese Anfrage ist eine Streaming-Version der Predict-Anfrage. Wenn Sie den :streamRawPredict
-Endpunkt verwenden und "stream": true
einfügen, wird mit dieser Anfrage ein direkter Prompt gesendet und die Ausgabe des Modells als kontinuierlicher Datenstrom empfangen, während sie generiert wird. Das ähnelt der Streaming-Chat-Completion-Anfrage.
curl -X POST \
-N \
--output - \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${ENDPOINT_URL}/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}:streamRawPredict" \
-d '{
"instances": [
{
"prompt": "How to tell the time by looking at the sky?",
"temperature": 0,
"top_p": 1,
"max_tokens": 154,
"ignore_eos": true,
"stream": true
}
]
}'
SDK
In diesem Codebeispiel wird das SDK verwendet, um eine Anfrage an ein Modell zu senden und eine Antwort von diesem Modell zu erhalten.
from google.cloud import aiplatform
project_id = ""
location = ""
endpoint_id = "" # Use the short ID here
aiplatform.init(project=project_id, location=location)
endpoint = aiplatform.Endpoint(endpoint_id)
prompt = "How to tell the time by looking at the sky?"
instances=[{"text": prompt}]
response = endpoint.predict(instances=instances, use_dedicated_endpoint=True)
print(response.predictions)
Ein weiteres Beispiel für die Verwendung der API finden Sie im Notebook zum Importieren benutzerdefinierter Gewichte.