Déploiement et gestion des modèles de base à la demande avec l'API REST
Le déploiement d'un modèle de base à la demande le rend disponible sur un matériel dédié à l'usage exclusif de votre organisation. IBM fournit un ensemble de modèles sélectionnés que vous pouvez déployer à la demande. Vous pouvez déployer des modèles de base à la demande par programmation avec l'API REST.
Avant de commencer
- Vous devez configurer ou activer vos identifiants de tâches pour déployer les modèles de fondation à la demande. Pour plus d'informations, voir Gestion des informations d'identification des tâches.
- Examiner les exigences et les considérations relatives au déploiement d'un modèle de fondation à la demande.
Création d'une ressource modèle
Vous pouvez utiliser le point de terminaison /ml/v4/models
pour créer un actif pour le modèle de base que vous souhaitez déployer à la demande.
L'extrait de code suivant montre comment créer un actif dans le référentiel d'exécution d' watsonx.ai, afin de déployer votre modèle de base à la demande. Utilisez l' asset ID
e générée par ce code lorsque vous déployez votre modèle.
curl -X POST "<Your watsonx URL>/ml/v4/models?version=2024-01-29" \
-H "Authorization: Bearer <replace with your token>" \
-H "content-type: application/json" \
--data '{
"type": "curated_foundation_model_1.0",
"version": "1.0",
"name": "granite",
"space_id": "<Space id for deployment>",
"foundation_model": {
"model_id": "ibm/granite-13b-chat-v2-curated"
}
}'
Création d'un déploiement pour un modèle de fondation à la demande
Vous pouvez utiliser le point de terminaison /ml/v4/deployments
pour déployer un modèle de base à la demande dans votre espace de déploiement. Utilisez l' asset ID
e générée lors de la création de la ressource modèle pour le déploiement. Pour plus d'informations, voir Création d'un modèle.
L'extrait de code suivant montre comment créer un déploiement en ligne pour déployer votre modèle de base à la demande :
curl -X POST "<Your watsonx URL>/ml/v4/deployments?version=2024-01-29" \
-H "Authorization: Bearer <replace with your token>" \
-H "content-type: application/json" \
--data '{
"asset": {
"id": <Asset id created>
},
"online": {
"parameters": {
"serving_name": "llma"
}
},
"description": "<Description>,
"name": "mi",
"space_id": <Space id for deployment>
}'
Interrogation sur l'état du déploiement
Vous pouvez demander l'état du déploiement en utilisant l'identifiant du déploiement. Lorsque le statut passe de « initialisation » à « prêt », votre déploiement est prêt à être utilisé.
L'exemple de code suivant montre comment utiliser l'API REST pour demander l'état du déploiement :
curl -X GET "<Your watsonx URL>/ml/v4/deployments/<replace with your deployment ID>?version=2024-01-29&project_id=<replace with your project ID>" \
-H "Authorization: Bearer <replace with your token>"
Sortie :
"deployed_asset_type": "curated_foundation_model"
Des modèles de base de test déployés à la demande
Vous pouvez tester un modèle de base déployé à la demande pour l'inférence en ligne.
Génération de la réponse textuelle
L'exemple de code suivant montre comment générer une réponse texte à l'aide du point de terminaison de l'API /ml/v1/deployments/<deployment ID>/text/generation
:
L'extrait de code suivant montre comment tester un modèle de base déployé à la demande pour l'inférence en ligne :
curl -X POST "<Your watsonx URL>/ml/v1/deployments/<replace with your deployment ID>/text/generation?version=2024-01-29" \
-H "Authorization: Bearer <replace with your token>" \
-H "content-type: application/json" \
--data '{
"input": "Hello, what is your name",
"parameters": {
"max_new_tokens": 200,
"min_new_tokens": 20
}
}'
Vous pouvez également utiliser l'API de chat pour solliciter le modèle de fondation personnalisé que vous avez déployé. Pour activer la prise en charge de l'API de chat, le contenu du modèle (fichiertokenizer_config.json
dans le contenu du modèle) doit inclure un modèle de chat. La prise en charge de l'API de chat ne peut être utilisée que pour inviter les modèles qui utilisent le moteur d'exécution vLLM pour le déploiement, et qui doivent donc être déployés avec la spécification logicielle watsonx-cfm-caikit-1.1
.
Vous ne pouvez utiliser l'API de chat que pour demander un nouveau déploiement. L'API de chat ne peut pas être utilisée pour corriger la prise en charge des déploiements existants.
L'exemple de code suivant montre comment générer une réponse texte à l'aide du point de terminaison de l'API /ml/v1/deployments/<deployment ID>/text/chat
:
curl --request POST\
--url'<Your watsonx URL>/ml/v1/deployments/<deployment-id>/text/chat?version=2020-10-10'\
--header'Authorization: Bearer$token'\
--header'Content-Type: application/json'\
--data'{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the capital of India"
}
]
},
{
"role": "assistant",
"content": "New Delhi."
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "Which continent"
}
]
}
]
}'
Génération d'une réponse au flux
Vous pouvez utiliser l'API de chat pour inviter votre modèle de fondation personnalisé déployé, qui met en œuvre des méthodes pour interagir avec les modèles de fondation de manière conversationnelle. Pour activer la prise en charge de l'API de chat, le contenu du modèle (fichiertokenizer_config.json
dans le contenu du modèle) doit inclure un modèle de chat. La prise en charge de l'API de chat ne peut être utilisée que pour inviter les modèles qui utilisent le moteur d'exécution vLLM pour le déploiement, et qui doivent donc être déployés avec la spécification logicielle watsonx-cfm-caikit-1.1
.
Vous ne pouvez utiliser l'API de chat que pour demander un nouveau déploiement. L'API de chat ne peut pas être utilisée pour corriger la prise en charge des déploiements existants.
L'exemple de code suivant montre comment générer une réponse texte à l'aide du point de terminaison de l'API /ml/v1/deployments/<deployment ID>/text/chat_stream
:
curl --request POST \
--url '<Your watsonx URL>/ml/v1/deployments/<deployment-id>/text/chat_stream?version=2020-10-10' \
--header 'Authorization: Bearer$token' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the capital of USA"
}
]
}
]
}'
Gestion des modèles de base déployés à la demande
Accédez, mettez à jour, redimensionnez ou supprimez les modèles de base déployés à la demande avec l'API REST.
Accès au modèle déployé
Pour récupérer la liste de tous les modèles de fondation qui sont déployés à la demande dans un espace de déploiement avec l'API REST, vous pouvez définir le paramètre de requête " type=curated_foundation_model
.
L'exemple de code suivant montre comment utiliser l'API REST pour accéder à tous les modèles de fondation déployés à la demande dans un espace de déploiement :
curl -X GET "<Your watsonx URL>/ml/v4/deployments?version=2024-01-29&space_id=<replace with your space ID>&type=curated_foundation_model" \
-H "Authorization: Bearer <replace with your token>"
Mise à jour du déploiement
Mettez à jour les métadonnées de déploiement requises pour votre déploiement, telles que le nom, la description, les balises, etc.
L'exemple de code suivant montre comment mettre à jour le nom de votre modèle de fondation déployé à la demande :
curl -X PATCH "<Your watsonx URL>/ml/v4/deployments/<replace with your deployment ID>?version=2024-01-29&project_id=<replace with your space ID>" \
-H "Authorization: Bearer <replace with your token>" \
-H "content-type: application/json" \
--data '[{
"op": "replace",
"path": "/name",
"value": "<replace with updated deployment name>"
}]'
Mise à l'échelle du déploiement
Vous ne pouvez déployer qu'une seule instance d'un modèle de base sur demande dans un espace de déploiement. Pour faire face à une demande accrue, vous pouvez faire évoluer le déploiement en créant des copies supplémentaires.
L'exemple de code suivant montre comment augmenter le nombre de répliques pour votre déploiement :
curl -X PATCH "<Your watsonx URL>/ml/v4/deployments/<replace with your deployment ID>?version=2024-01-29&space_id=<replace with your space ID>" \
-H "Authorization: Bearer $token" \
-H "content-type: application/json" \
--data '[{
"op": "replace",
"path": "/hardware_request",
"value": {"num_nodes": 2}
}]'
- Si vous souhaitez faire évoluer les ressources matérielles, utilisez l'opération "
PATCH
avec le paramètre "/hardware_request
et mettez à jour le nombre de nœuds matériels en fournissant une valeur pour le paramètre "num_nodes
Vous ne pouvez pas utiliser le paramètre "size
avec "/hardware_request
. - Vous ne pouvez pas utiliser l'opération d'
PATCH
s pour mettre à jour les paramètres du modèle de base (/online/parameters/foundation_model
).
Suppression du déploiement
Vous pouvez supprimer votre modèle de base déployé lorsque vous n'en avez plus besoin pour arrêter les frais de facturation.
L'exemple de code suivant montre comment supprimer un modèle de fondation déployé à la demande avec l'API REST :
curl -vk -X DELETE "<Your watsonx URL>/ml/v4/deployments/<replace with your deployment ID>?version=2024-01-29&space_id=<replace with your space ID>" -H "Authorization: Bearer <replace with your token>"
Exemple de bloc-notes
L'exemple de carnet de notes suivant présente les invites pour les modèles de fondation qui sont déployés à la demande de manière programmatique. Vous devez déployer votre modèle de base à la demande avant d'exécuter le bloc-notes.
Pour accéder au carnet, ouvrez le centre de ressources et cherchez Inferencing with Granite Text-to-SQL Models.
Vous pouvez accéder au Centre de ressources en sélectionnant Centre de ressources dans le menu de navigation principal.
En savoir plus
- Modèles de fondations soutenus
- Prompt Lab
- Déploiement de modèles de fondation à la demande à partir du centre de ressources.
- Taux de facturation horaire pour les modèles de déploiement à la demande
Sujet parent : Déployer des modèles de fondation dédiés