Distribuzione e gestione dei modelli di fondazione su richiesta con REST API
La distribuzione di un modello di fondazione su richiesta lo rende disponibile su hardware dedicato per l'uso esclusivo della tua organizzazione. IBM fornisce una serie di modelli curati che sono disponibili per essere distribuiti su richiesta. È possibile distribuire modelli di fondazione su richiesta in modo programmatico con REST API.
Prima di iniziare
- È necessario impostare o abilitare le credenziali dell'attività per distribuire i modelli di fondazione su richiesta. Per ulteriori informazioni, vedere Gestione delle credenziali delle attività.
- Esamina i requisiti e le considerazioni per la distribuzione di un modello di fondazione su richiesta.
Creazione di una risorsa modello
È possibile utilizzare l'endpoint /ml/v4/models
per creare una risorsa per il modello di fondazione che si desidera distribuire su richiesta.
Il seguente frammento di codice mostra come creare una risorsa nel repository Runtime di watsonx.ai per distribuire il modello di base su richiesta. Utilizza l' asset ID
e generato da questo codice quando distribuisci il tuo modello.
curl -X POST "https://<cluster 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"
}
}'
Creazione di un'implementazione per un modello di fondazione on-demand
È possibile utilizzare l'endpoint /ml/v4/deployments
per distribuire un modello di base su richiesta all'interno del proprio spazio di distribuzione. Utilizza l' asset ID
e generato quando hai creato la risorsa modello per la distribuzione. Per ulteriori informazioni, vedere Creazione di un asset modello.
Il seguente frammento di codice mostra come creare un'implementazione online per distribuire il modello di base su richiesta:
curl -X POST "https://<cluster 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>
}'
Polling per lo stato di distribuzione
È possibile verificare lo stato dell'installazione client utilizzando l'ID dell'installazione client. Quando lo stato passa da inizializzazione a pronto, la distribuzione è pronta per l'uso.
Il seguente esempio di codice mostra come usare l'API REST per interrogare lo stato di distribuzione:
curl -X GET "https://<replace with your cloud hostname>/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>"
Uscita:
"deployed_asset_type": "curated_foundation_model"
Modelli di fondazione di test distribuiti on-demand
È possibile testare un modello di fondazione che viene distribuito su richiesta per l'inferenza online.
Generazione di risposte testuali
Il seguente esempio di codice mostra come generare una risposta di testo utilizzando l'endpoint API dell' /ml/v1/deployments/<deployment ID>/text/generation
:
Il seguente frammento di codice mostra come testare un modello di fondazione che viene distribuito su richiesta per l'inferenza online:
curl -X POST "https://{region}.ml.cloud.ibm.com/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
}
}'
È inoltre possibile utilizzare l'API della chat per richiedere il modello di fondazione personalizzato distribuito. Per abilitare il supporto delle API di chat, il contenuto del modello (filetokenizer_config.json
nel contenuto del modello) deve includere un modello di chat. Il supporto delle API di chat può essere utilizzato solo per i modelli che utilizzano il runtime vLLM per la distribuzione, quindi devono essere distribuiti con la specifica software watsonx-cfm-caikit-1.1
.
È possibile utilizzare l'API della chat solo per richiedere una nuova distribuzione. L'API della chat non può essere utilizzata per modificare il supporto delle implementazioni esistenti.
Il seguente esempio di codice mostra come generare una risposta di testo utilizzando l'endpoint API dell' /ml/v1/deployments/<deployment ID>/text/chat
:
curl --request POST\
--url'https://{region}.ml.cloud.ibm.com/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"
}
]
}
]
}'
Generazione della risposta del flusso
È possibile utilizzare l'API della chat per richiedere il modello di fondazione personalizzato distribuito, che implementa metodi per interagire con i modelli di fondazione in modo conversazionale. Per abilitare il supporto delle API di chat, il contenuto del modello (filetokenizer_config.json
nel contenuto del modello) deve includere un modello di chat. Il supporto delle API di chat può essere utilizzato solo per i modelli che utilizzano il runtime vLLM per la distribuzione, quindi devono essere distribuiti con la specifica software watsonx-cfm-caikit-1.1
.
È possibile utilizzare l'API della chat solo per richiedere una nuova distribuzione. L'API della chat non può essere utilizzata per modificare il supporto delle implementazioni esistenti.
Il seguente esempio di codice mostra come generare una risposta di testo utilizzando l'endpoint API dell' /ml/v1/deployments/<deployment ID>/text/chat_stream
:
curl --request POST \
--url 'https://{region}.ml.cloud.ibm.com/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"
}
]
}
]
}'
Gestione dei modelli di fondazione distribuiti on-demand
Accedi, aggiorna, ridimensiona o elimina i modelli di fondazione che vengono distribuiti su richiesta con l'API REST.
Accesso al modello distribuito
Per recuperare l'elenco di tutti i modelli di fondazione che sono distribuiti on-demand in uno spazio di distribuzione con l'API REST, è possibile impostare il parametro di query 'type=curated_foundation_model
.
Il seguente esempio di codice mostra come utilizzare l'API REST per accedere a tutti i modelli di fondazione distribuiti su richiesta in uno spazio di distribuzione:
curl -X GET "https://<replace with yourcloud hostname>/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>"
Aggiornamento della distribuzione
Aggiornare i metadati di distribuzione richiesti per l'installazione client, come nome, descrizione, tag e altro.
Il seguente esempio di codice mostra come aggiornare il nome del modello di fondazione distribuito su richiesta:
curl -X PATCH "https://<replace with your cloud hostname>//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>"
}]'
Scalare la distribuzione
È possibile distribuire solo un'istanza di un modello di fondazione su richiesta in uno spazio di distribuzione. Per gestire l'aumento della domanda, è possibile scalare la distribuzione creando copie aggiuntive.
Il seguente esempio di codice mostra come scalare il numero di repliche per la distribuzione:
curl -X PATCH "<replace with your cloud hostname>/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}
}]'
- Se si desidera scalare le risorse hardware, utilizzare l'operazione '
PATCH
con il parametro '/hardware_request
e aggiornare il numero di nodi hardware fornendo un valore per il parametro 'num_nodes
. Non è possibile utilizzare il parametro 'size
con '/hardware_request
. - Non è possibile utilizzare l'operazione "
PATCH
" per aggiornare i parametri del modello di fondazione (/online/parameters/foundation_model
).
Eliminazione di una distribuzione
Puoi cancellare il modello di fondazione distribuito quando non ti serve più per interrompere gli addebiti di fatturazione.
Il seguente esempio di codice mostra come eliminare un modello di fondazione distribuito su richiesta con l'API REST:
curl -vk -X DELETE "https://<replace with your cloud hostname>/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>"
Notebook di esempio
Il seguente notebook di esempio mostra la richiesta di modelli di fondazione che vengono distribuiti programmaticamente su richiesta. È necessario distribuire il modello di base su richiesta prima di avviare il notebook.
Blocco appunti | Descrizione |
---|---|
Inferenza con i modelli Text-to-SQL Granite | Setup Creare un prompt per il modello Schema Linking Eseguire un'inferenza sul modello Schema Linking utilizzando l'endpoint WX.AI Postare il processo dell'output del modello Schema Linking Creare un prompt per il modello SQL Geneneration Eseguire un'inferenza sul modello SQL Generation utilizzando l'endpoint WX.AI |
Ulteriori informazioni
- Modelli di fondazione supportati
- Prompt Lab
- Distribuzione dei modelli di fondazione su richiesta da Resource hub.
- Tariffe di fatturazione oraria per i modelli deploy on-demand
Argomento principale: Distribuzione di modelli di fondazione dedicati