Le déploiement de modèles avec des pondérations personnalisées est une offre en version Preview. Vous pouvez affiner des modèles en fonction d'un ensemble prédéfini de modèles de base et déployer vos modèles personnalisés sur Vertex AI Model Garden. Vous pouvez déployer vos modèles personnalisés à l'aide de l'importation de poids personnalisés en important vos artefacts de modèle dans un bucket Cloud Storage de votre projet. Cette opération s'effectue en un clic dans Vertex AI.
Modèles compatibles
La version bêta publique de la fonctionnalité Déployer des modèles avec des pondérations personnalisées est compatible avec les modèles de base suivants :
Nom du modèle | Version |
---|---|
Llama |
|
Gemma |
|
Qwen |
|
Deepseek |
|
Mistral et Mixtral |
|
Phi-4 |
|
OpenAI OSS |
|
Limites
Les pondérations personnalisées ne sont pas compatibles avec l'importation de modèles quantifiés.
Fichiers de modèle
Vous devez fournir les fichiers de modèle au format de pondérations Hugging Face. Pour en savoir plus sur le format des poids Hugging Face, consultez Utiliser des modèles Hugging Face.
Si les fichiers requis ne sont pas fournis, le déploiement du modèle peut échouer.
Ce tableau liste les types de fichiers de modèle, qui dépendent de l'architecture du modèle :
Contenu du fichier modèle | Type de fichier |
---|---|
Configuration du modèle |
|
Pondérations de modèle |
|
Indice de pondération |
|
Fichier(s) du tokenizer |
|
Emplacements
Vous pouvez déployer des modèles personnalisés dans toutes les régions à partir des services Model Garden.
Prérequis
Cette section explique comment déployer votre modèle personnalisé.
Avant de commencer
- 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 : votre région. Par exemple,
uscentral1
. - MODEL_GCS : votre modèle Google Cloud . Par exemple,
gs://custom-weights-fishfooding/meta-llama/Llama-3.2-1B-Instruct
. - PROJECT_ID : ID de votre projet.
- MODEL_ID : ID de votre modèle.
- MACHINE_TYPE : type de votre machine. Exemple :
g2-standard-12
. - ACCELERATOR_TYPE : type d'accélérateur. Exemple :
NVIDIA_L4
. - ACCELERATOR_COUNT : nombre d'accélérateurs.
PROMPT : votre requête textuelle.
Dans la console Google Cloud , accédez à la page Model Garden.
Cliquez sur Déployer un modèle avec des pondérations personnalisées. Le volet Déployer un modèle avec des pondérations personnalisées sur Vertex AI s'affiche.
Dans la section Source du modèle, procédez comme suit :
Cliquez sur Parcourir, puis sélectionnez le bucket dans lequel votre modèle est stocké et cliquez sur Sélectionner.
Facultatif : Saisissez le nom de votre modèle dans le champ Nom du modèle.
Dans la section Paramètres de déploiement, procédez comme suit :
Dans le champ Région, sélectionnez votre région, puis cliquez sur OK.
Dans le champ Spécifications de la machine, sélectionnez les spécifications de la machine qui seront utilisées pour déployer votre modèle.
Facultatif : Dans le champ Nom du point de terminaison, le point de terminaison de votre modèle s'affiche par défaut. Toutefois, vous pouvez saisir un autre nom de point de terminaison dans le champ.
Cliquez sur Déployer un modèle avec des pondérations personnalisées.
Dans la console Google Cloud , accédez à la page Model Garden.
Cliquez sur Afficher mes points de terminaison et modèles.
Sélectionnez votre région dans la liste Région.
Pour obtenir l'ID et l'URL du point de terminaison, cliquez sur votre point de terminaison dans la section Mes points de terminaison.
L'ID de votre point de terminaison s'affiche dans le champ ID du point de terminaison.
L'URL de votre point de terminaison public s'affiche dans le champ Point de terminaison dédié.
Pour obtenir l'ID du modèle, recherchez votre modèle dans la section Modèles déployés, puis procédez comme suit :
- Cliquez sur le nom de votre modèle déployé dans le champ Modèle.
- Cliquez sur Détails de la version. L'ID de votre modèle s'affiche dans le champ ID du modèle.
- Pour en savoir plus sur les modèles déployés par vous-même, consultez Présentation des modèles déployés par vous-même.
- Pour en savoir plus sur Model Garden, consultez Présentation de Model Garden.
- Pour en savoir plus sur le déploiement de modèles, consultez Utiliser des modèles dans Model Garden.
- Utiliser les modèles ouverts Gemma
- Utiliser les modèles ouverts Llama
- Utiliser les modèles ouverts Hugging Face
Ce tutoriel suppose que vous utilisez Cloud Shell pour interagir avec Google Cloud. Si vous souhaitez utiliser un autre shell au lieu de Cloud Shell, exécutez la configuration supplémentaire suivante :
Déployer le modèle personnalisé
Cette section explique comment déployer votre modèle personnalisé.
Si vous utilisez l'interface de ligne de commande (CLI), Python ou JavaScript, remplacez les variables suivantes par une valeur pour que vos exemples de code fonctionnent :
Console
Les étapes suivantes vous expliquent comment utiliser la console Google Cloud pour déployer votre modèle avec des pondérations personnalisées.
CLI gcloud
Cette commande montre comment déployer le modèle dans une région spécifique.
gcloud ai model-garden models deploy --model=${MODEL_GCS} --region ${REGION}
Cette commande montre comment déployer le modèle dans une région spécifique avec son type de machine, son type d'accélérateur et son nombre d'accélérateurs. Si vous souhaitez sélectionner une configuration de machine spécifique, vous devez définir les trois champs.
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)
Vous pouvez également ne pas transmettre de paramètre à la méthode custom_model.deploy()
.
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}"'",
},
}'
Vous pouvez également utiliser l'API pour définir explicitement le type de machine.
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
}
}
}'
Effectuer une requête
Une fois votre modèle déployé, les pondérations personnalisées sont compatibles avec le point de terminaison public dédié. Vous pouvez envoyer des requêtes à l'aide de l'API ou du SDK.
Avant d'envoyer des requêtes, vous devez obtenir l'URL, l'ID et l'ID de modèle de votre point de terminaison, qui sont disponibles dans la console Google Cloud .
Pour obtenir ces informations, procédez comme suit :
Une fois que vous avez obtenu les informations sur votre point de terminaison et votre modèle déployé, consultez les exemples de code suivants pour savoir comment envoyer une requête d'inférence ou consultez Envoyer une requête d'inférence en ligne à un point de terminaison public dédié.
API
Les exemples de code suivants montrent différentes façons d'utiliser l'API en fonction de votre cas d'utilisation.
Complétion de chat (unaire)
Cet exemple de requête envoie un message de chat complet au modèle et obtient une réponse en un seul bloc une fois la réponse entière générée. Cela revient à envoyer un message et à recevoir une réponse complète unique.
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?"
}
]
}'
Complétion de chat (streaming)
Cette requête est la version de streaming de la requête de complémentation de chat unaire. En ajoutant "stream": true
à la requête, le modèle envoie sa réponse fragment par fragment à mesure qu'elle est générée. Cela peut être utile pour créer un effet de machine à écrire en temps réel dans une application de chat.
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?"
}
]
}'
Prédire
Cette requête envoie une invite directe pour obtenir une inférence à partir d'un modèle. Il est souvent utilisé pour des tâches qui ne sont pas nécessairement conversationnelles, comme la synthèse ou la classification de texte.
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
}
]
}'
Prédiction brute
Cette requête est une version de flux de la requête Predict. En utilisant le point de terminaison :streamRawPredict
et en incluant "stream": true
, cette requête envoie une requête directe et reçoit la sortie du modèle sous forme de flux de données continu à mesure qu'il est généré, ce qui est semblable à la requête de streaming de complément de discussion.
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
Cet exemple de code utilise le SDK pour envoyer une requête à un modèle et obtenir une réponse de ce modèle.
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)
Pour obtenir un autre exemple d'utilisation de l'API, consultez le notebook d'importation de pondérations personnalisées.