È possibile distribuire un modello di Decision Optimization, creare e monitorare lavori e ottenere soluzioni utilizzando l'API REST diwatsonx.ai Runtime.
Prima di iniziare
- Accedi a IBM Cloud.
- Creare la tua chiave API. Copiatela o scaricatela dalla finestra aperta della chiave API creata con successo (non è possibile accedervi di nuovo quando si chiude questa finestra).
- Opzionale: Creare un serviziowatsonx.ai Runtime.
- Selezionare un'istanza di watsonx.ai Runtime dall'elenco dei servizi di AI/MachineMachine Learning nella vista dell'elenco delle risorseIBM Cloud.
Copiare il nome, il GUID e il CRN dal riquadro informazioni dell'istanza di watsonx.ai Runtime. (Per aprire il riquadro delle informazioni, fare clic su un punto qualsiasi della riga accanto al nome del servizio watsonx.ai Runtime, ma non sul nome stesso. Il riquadro delle informazioni si apre nella stessa finestra)
- Opzionale: Creare un Cloud Object Storage.
- Selezionare un'istanza di Cloud Object Storage dall'elenco delle risorse di storage nella vista dell'elenco delle risorseIBM Cloud.
Copiare il nome e il CRN dal riquadro informazioni dell'istanza di storage.
- Opzionale: Creare uno spazio di distribuzione dall'interfaccia utente https://dataplatform.cloud.ibm.com. È possibile creare uno spazio di distribuzione anche utilizzando l'API REST. Vedere Creare uno spazio di distribuzione usando l'API REST.
- Selezionate uno spazio di installazione client dall'elenco delle installazioni client.
Copiare il GUID dello spazio dalla scheda Gestione > Generale. Per ulteriori informazioni, vedere Spazi di distribuzione.
Informazioni su questa attività
Per gli utenti Windows , utilizzare ^ invece di \ per il separatore multi - line e virgolette doppie " in tutti questi esempi di codice. Gli utenti di Windows devono inoltre utilizzare l'indentazione di almeno uno spazio di carattere nelle righe di intestazione.
Per chiarezza, alcuni esempi di codice in questa procedura sono stati inseriti in un file json per rendere i comandi più leggibili e più facili da utilizzare.
Una volta creata un'installazione client tramite l'API REST, è possibile visualizzarla e inviarle lavori dalla pagina Deployments > Spaces dell'interfaccia utente https://dataplatform.cloud.ibm.com.
Procedura
- Generare un token IAM utilizzando il vostro 'IBM Cloud Chiave API come segue.
curl "https://iam.cloud.ibm.com/identity/token" \ -d "apikey=YOUR_API_KEY_HERE&grant_type=urn%3Aibm%3Aparams%3Aoauth%3Agrant-type%3Aapikey" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic Yng6Yng="
Esempio di output:{ "access_token": "****** obtained IAM token ******************************", "refresh_token": "**************************************", "token_type": "Bearer", "expires_in": 3600, "expiration": 1554117649, "scope": "ibm openid" }
Utilizzare il token ottenuto (valore access_token) prepenato dalla parola
Bearer
nell'intestazioneAuthorization
e l'watsonx.ai Runtime service GUID
nell'intestazioneML-Instance-ID
, in tutte le chiamate API. - Optional: Se non hai ottenuto il tuo SPACE - ID dall'interfaccia utente come descritto in precedenza, è possibile creare uno spazio utilizzando l'API REST come segue. Utilizza il token precedentemente ottenuto preceduto dalla parola
bearer
nell'intestazioneAuthorization
in tutte le chiamate API.curl --location --request POST \ "https://api.dataplatform.cloud.ibm.com/v2/spaces" \ -H "Authorization: Bearer TOKEN-HERE" \ -H "ML-Instance-ID: MACHINE-LEARNING-SERVICE-GUID-HERE" \ -H "Content-Type: application/json" \ --data-raw "{ "name": "SPACE-NAME-HERE", "description": "optional description here", "storage": { "resource_crn": "COS-CRN-ID-HERE" }, "compute": [{ "name": "MACHINE-LEARNING-SERVICE-NAME-HERE", "crn": "MACHINE-LEARNING-SERVICE-CRN-ID-HERE" }] }"
Per gli utenti Windows , inserire il comando--data-raw
su una riga e sostituire tutti"
con\"
all'interno di questo comando come segue:
In alternativa inserire i dati in un file separato.curl --location --request POST ^ "https://api.dataplatform.cloud.ibm.com/v2/spaces" ^ -H "Authorization: Bearer TOKEN-HERE" ^ -H "ML-Instance-ID: MACHINE-LEARNING-SERVICE-GUID-HERE" ^ -H "Content-Type: application/json" ^ --data-raw "{\"name\": "SPACE-NAME-HERE",\"description\": \"optional description here\",\"storage\": {\"resource_crn\": \"COS-CRN-ID-HERE\" },\"compute\": [{\"name\": "MACHINE-LEARNING-SERVICE-NAME-HERE\",\"crn\": \"MACHINE-LEARNING-SERVICE-CRN-ID-HERE\" }]}"
Un SPACE - ID viene restituito inid
campo della sezionemetadata
.Esempio di output:
{ "entity": { "compute": [ { "crn": "MACHINE-LEARNING-SERVICE-CRN", "guid": "MACHINE-LEARNING-SERVICE-GUID", "name": "MACHINE-LEARNING-SERVICE-NAME", "type": "machine_learning" } ], "description": "string", "members": [ { "id": "XXXXXXX", "role": "admin", "state": "active", "type": "user" } ], "name": "name", "scope": { "bss_account_id": "account_id" }, "status": { "state": "active" } }, "metadata": { "created_at": "2020-07-17T08:36:57.611Z", "creator_id": "XXXXXXX", "id": "SPACE-ID", "url": "/v2/spaces/SPACE-ID" } }
È necessario attendere che lo stato dello spazio di distribuzione sia
"active"
prima di continuare. È possibile effettuare il sondaggio per verificarlo come segue.curl --location --request GET "https://api.dataplatform.cloud.ibm.com/v2/spaces/SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json"
- Creare un nuovo modello Decision Optimization
Tutte le richieste API richiedono un parametro di versione che prenda una data nel formato
version=YYYY-MM-DD
. Questo esempio di codice carica un modello che utilizza il filecreate_model.json
. L'URL varia a seconda della regione/località scelta per il servizio watsonx.ai Runtime. Vedere URL del punto finale.
Il file create_model.json contiene il codice seguente:curl --location --request POST \ "https://us-south.ml.cloud.ibm.com/ml/v4/models?version=2020-08-01" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json" \ -d @create_model.json
{ "name": "ModelName", "description": "ModelDescription", "type": "do-docplex_22.1", "software_spec": { "name": "do_22.1" }, "custom": { "decision_optimization": { "oaas.docplex.python": "3.11" } }, "space_id": "SPACE-ID-HERE" }
La versione Python viene dichiarata esplicitamente qui in un blocco
custom
. Questo è facoltativo. Senza di essa il modello userà la versione predefinita, che attualmente è Python 3.11. Poiché la versione predefinita evolverà nel tempo, l'affermazione della versione Python ti consente esplicitamente di modificarla facilmente in un secondo momento o di continuare a utilizzare una versione supportata precedente quando viene aggiornata la versione predefinita. Le versioni attualmente supportate sono 3.11 e 3.10 (deprecata).Se si desidera essere in grado di eseguire lavori per questo modello dall'interfaccia utente, invece di utilizzare solo le API REST, è necessario definire lo schema per i dati di input e di output. Se non si definisce lo schema quando si crea il modello, è possibile eseguire solo lavori utilizzando l'API REST e non dall'interfaccia utente.
È inoltre possibile utilizzare lo schema specificato per l'input e l'output nel modello di ottimizzazione:
{ "name": "Diet-Model-schema", "description": "Diet", "type": "do-docplex_22.1", "schemas": { "input": [ { "id": "diet_food_nutrients", "fields": [ { "name": "Food", "type": "string" }, { "name": "Calories", "type": "double" }, { "name": "Calcium", "type": "double" }, { "name": "Iron", "type": "double" }, { "name": "Vit_A", "type": "double" }, { "name": "Dietary_Fiber", "type": "double" }, { "name": "Carbohydrates", "type": "double" }, { "name": "Protein", "type": "double" } ] }, { "id": "diet_food", "fields": [ { "name": "name", "type": "string" }, { "name": "unit_cost", "type": "double" }, { "name": "qmin", "type": "double" }, { "name": "qmax", "type": "double" } ] }, { "id": "diet_nutrients", "fields": [ { "name": "name", "type": "string" }, { "name": "qmin", "type": "double" }, { "name": "qmax", "type": "double" } ] } ], "output": [ { "id": "solution", "fields": [ { "name": "name", "type": "string" }, { "name": "value", "type": "double" } ] } ] }, "software_spec": { "name": "do_22.1" }, "space_id": "SPACE-ID-HERE" }
Quando si pubblica un modello si forniscono informazioni relative al suo tipo di modello e alla specifica software da utilizzare.I tipi di modello possono essere, ad esempio:do-opl_22.1
per i modelli OPLdo-cplex_22.1
per i modelli CPLEXdo-cpo_22.1
per i modelli CPdo-docplex_22.1
per i modelli Python
La Versione 20.1 può essere utilizzata anche per questi modelli.
Per la specifica softwareè possibile utilizzare le specifiche predefinite utilizzando i loro nomi
do_22.1
odo_20.1
. Consultare anche Estendere il notebook di specifica software che mostra come estendere la specifica software Decision Optimization (runtime con ulteriori librerie Python per i modelli DOcplex).Un MODEL - ID viene restituito in
id
campo nelmetadata
.Esempio di output:{ "entity": { "software_spec": { "id": "SOFTWARE-SPEC-ID" }, "type": "do-docplex_20.1" }, "metadata": { "created_at": "2020-07-17T08:37:22.992Z", "description": "ModelDescription", "id": "MODEL-ID", "modified_at": "2020-07-17T08:37:22.992Z", "name": "ModelName", "owner": "***********", "space_id": "SPACE-ID" } }
- Carica una formulazione modello Decision Optimization pronto per la distribuzione.Per prima cosa comprimere il modello in un file (
tar.gz, .zip or .jar
) e caricarlo per essere distribuito dal servizio watsonx.ai Runtime.Questo esempio di codice carica un modello chiamato diet.zip che contiene un modello Python e nessun dato anagrafico:curl --location --request PUT \ "https://us-south.ml.cloud.ibm.com/ml/v4/models/MODEL-ID-HERE/content?version=2020-08-01&space_id=SPACE-ID-HERE&content_format=native" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/gzip" \ --data-binary "@diet.zip"
È possibile scaricare questo esempio e altri modelli dal sito DO-samples. Selezionare la sottocartella relativa al prodotto e alla versione. - Distribuisci il tuo modelloCrea un riferimento al tuo modello. Utilizzare il SPACE - ID, il MODEL - ID ottenuto quando hai creato il tuo modello pronto per la distribuzione e la specifica hardware. Ad esempio:
curl --location --request POST "https://us-south.ml.cloud.ibm.com/ml/v4/deployments?version=2020-08-01" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json" \ -d @deploy_model.json
The deploy_model.json file contains the following code:
{ "name": "Test-Diet-deploy", "space_id": "SPACE-ID-HERE", "asset": { "id": "MODEL-ID-HERE" }, "hardware_spec": { "name": "S" }, "batch": {} }
Il DEPLOYMENT - ID viene restituito inid
campo nellametadata
. Esempio di output:{ "entity": { "asset": { "id": "MODEL-ID" }, "custom": {}, "description": "", "hardware_spec": { "id": "HARDWARE-SPEC-ID", "name": "S", "num_nodes": 1 }, "name": "Test-Diet-deploy", "space_id": "SPACE-ID", "status": { "state": "ready" } }, "metadata": { "created_at": "2020-07-17T09:10:50.661Z", "description": "", "id": "DEPLOYMENT-ID", "modified_at": "2020-07-17T09:10:50.661Z", "name": "test-Diet-deploy", "owner": "**************", "space_id": "SPACE-ID" } }
- Una volta distribuito, è possibile monitorare lo stato di distribuzione del proprio modello. Utilizzare il DEPLOYMENT - ID.Ad esempio:
curl --location --request GET "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/DEPLOYMENT-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json"
Esempio di output:
{ "entity": { "asset": { "id": "MODEL-ID" }, "custom": {}, "description": "", "hardware_spec": { "id": "HARDWARE-SPEC-ID", "name": "S", "num_nodes": 1 }, "name": "Test-Diet-deploy", "space_id": "SPACE-ID", "status": { "state": "ready" } }, "metadata": { "created_at": "2020-11-04T16:22:14.442Z", "description": "", "id": "DEPLOYMENT-ID", "modified_at": "2020-11-04T16:22:14.442Z", "name": "test-Diet-deploy", "owner": "**************", "space_id": "SPACE-ID" } }
- Si possono quindi Submit jobs per il proprio modello distribuito che definisce i dati di input e l'output (risultati della risoluzione di ottimizzazione) e il file di log.Ad esempio, il seguente mostra il contenuto di un file chiamato
myjob.json
. Contiene i dati di input (in linea), alcuni parametri di risoluzione e specifica che l'output sarà un file .csv. Per ulteriori informazioni, consultate Decision Optimization batch deployment and model execution.
Questo esempio di codice carica un lavoro che utilizza questo file{ "name":"test-job-diet", "space_id": "SPACE-ID-HERE", "deployment": { "id": "DEPLOYMENT-ID-HERE" }, "decision_optimization" : { "solve_parameters" : { "oaas.logAttachmentName":"log.txt", "oaas.logTailEnabled":"true" }, "input_data": [ { "id":"diet_food.csv", "fields" : ["name","unit_cost","qmin","qmax"], "values" : [ ["Roasted Chicken", 0.84, 0, 10], ["Spaghetti W/ Sauce", 0.78, 0, 10], ["Tomato,Red,Ripe,Raw", 0.27, 0, 10], ["Apple,Raw,W/Skin", 0.24, 0, 10], ["Grapes", 0.32, 0, 10], ["Chocolate Chip Cookies", 0.03, 0, 10], ["Lowfat Milk", 0.23, 0, 10], ["Raisin Brn", 0.34, 0, 10], ["Hotdog", 0.31, 0, 10] ] }, { "id":"diet_food_nutrients.csv", "fields" : ["Food","Calories","Calcium","Iron","Vit_A","Dietary_Fiber","Carbohydrates","Protein"], "values" : [ ["Spaghetti W/ Sauce", 358.2, 80.2, 2.3, 3055.2, 11.6, 58.3, 8.2], ["Roasted Chicken", 277.4, 21.9, 1.8, 77.4, 0, 0, 42.2], ["Tomato,Red,Ripe,Raw", 25.8, 6.2, 0.6, 766.3, 1.4, 5.7, 1], ["Apple,Raw,W/Skin", 81.4, 9.7, 0.2, 73.1, 3.7, 21, 0.3], ["Grapes", 15.1, 3.4, 0.1, 24, 0.2, 4.1, 0.2], ["Chocolate Chip Cookies", 78.1, 6.2, 0.4, 101.8, 0, 9.3, 0.9], ["Lowfat Milk", 121.2, 296.7, 0.1, 500.2, 0, 11.7, 8.1], ["Raisin Brn", 115.1, 12.9, 16.8, 1250.2, 4, 27.9, 4], ["Hotdog", 242.1, 23.5, 2.3, 0, 0, 18, 10.4] ] }, { "id":"diet_nutrients.csv", "fields" : ["name","qmin","qmax"], "values" : [ ["Calories", 2000, 2500], ["Calcium", 800, 1600], ["Iron", 10, 30], ["Vit_A", 5000, 50000], ["Dietary_Fiber", 25, 100], ["Carbohydrates", 0, 300], ["Protein", 50, 100] ] } ], "output_data": [ { "id":".*\\.csv" } ] } }
myjob.json
.curl --location --request POST "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs?version=2020-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json" \ -H "cache-control: no-cache" \ -d @myjob.json
Viene restituito un JOB - ID . Esempio di output: (il lavoro è accostato){ "entity": { "decision_optimization": { "input_data": [{ "id": "diet_food.csv", "fields": ["name", "unit_cost", "qmin", "qmax"], "values": [["Roasted Chicken", 0.84, 0, 10], ["Spaghetti W/ Sauce", 0.78, 0, 10], ["Tomato,Red,Ripe,Raw", 0.27, 0, 10], ["Apple,Raw,W/Skin", 0.24, 0, 10], ["Grapes", 0.32, 0, 10], ["Chocolate Chip Cookies", 0.03, 0, 10], ["Lowfat Milk", 0.23, 0, 10], ["Raisin Brn", 0.34, 0, 10], ["Hotdog", 0.31, 0, 10]] }, { "id": "diet_food_nutrients.csv", "fields": ["Food", "Calories", "Calcium", "Iron", "Vit_A", "Dietary_Fiber", "Carbohydrates", "Protein"], "values": [["Spaghetti W/ Sauce", 358.2, 80.2, 2.3, 3055.2, 11.6, 58.3, 8.2], ["Roasted Chicken", 277.4, 21.9, 1.8, 77.4, 0, 0, 42.2], ["Tomato,Red,Ripe,Raw", 25.8, 6.2, 0.6, 766.3, 1.4, 5.7, 1], ["Apple,Raw,W/Skin", 81.4, 9.7, 0.2, 73.1, 3.7, 21, 0.3], ["Grapes", 15.1, 3.4, 0.1, 24, 0.2, 4.1, 0.2], ["Chocolate Chip Cookies", 78.1, 6.2, 0.4, 101.8, 0, 9.3, 0.9], ["Lowfat Milk", 121.2, 296.7, 0.1, 500.2, 0, 11.7, 8.1], ["Raisin Brn", 115.1, 12.9, 16.8, 1250.2, 4, 27.9, 4], ["Hotdog", 242.1, 23.5, 2.3, 0, 0, 18, 10.4]] }, { "id": "diet_nutrients.csv", "fields": ["name", "qmin", "qmax"], "values": [["Calories", 2000, 2500], ["Calcium", 800, 1600], ["Iron", 10, 30], ["Vit_A", 5000, 50000], ["Dietary_Fiber", 25, 100], ["Carbohydrates", 0, 300], ["Protein", 50, 100]] }], "output_data": [ { "id": ".*\\.csv" } ], "solve_parameters": { "oaas.logAttachmentName": "log.txt", "oaas.logTailEnabled": "true" }, "status": { "state": "queued" } }, "deployment": { "id": "DEPLOYMENT-ID" }, "platform_job": { "job_id": "", "run_id": "" } }, "metadata": { "created_at": "2020-07-17T10:42:42.783Z", "id": "JOB-ID", "name": "test-job-diet", "space_id": "SPACE-ID" } }
- Si possono anche monitorare gli stati di lavoro. Utilizzare il JOB - IDAd esempio:
curl --location --request GET \ "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs/JOB-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE" \ -H "Content-Type: application/json"
Esempio di output: (il lavoro è completato){ "entity": { "decision_optimization": { "input_data": [{ "id": "diet_food.csv", "fields": ["name", "unit_cost", "qmin", "qmax"], "values": [["Roasted Chicken", 0.84, 0, 10], ["Spaghetti W/ Sauce", 0.78, 0, 10], ["Tomato,Red,Ripe,Raw", 0.27, 0, 10], ["Apple,Raw,W/Skin", 0.24, 0, 10], ["Grapes", 0.32, 0, 10], ["Chocolate Chip Cookies", 0.03, 0, 10], ["Lowfat Milk", 0.23, 0, 10], ["Raisin Brn", 0.34, 0, 10], ["Hotdog", 0.31, 0, 10]] }, { "id": "diet_food_nutrients.csv", "fields": ["Food", "Calories", "Calcium", "Iron", "Vit_A", "Dietary_Fiber", "Carbohydrates", "Protein"], "values": [["Spaghetti W/ Sauce", 358.2, 80.2, 2.3, 3055.2, 11.6, 58.3, 8.2], ["Roasted Chicken", 277.4, 21.9, 1.8, 77.4, 0, 0, 42.2], ["Tomato,Red,Ripe,Raw", 25.8, 6.2, 0.6, 766.3, 1.4, 5.7, 1], ["Apple,Raw,W/Skin", 81.4, 9.7, 0.2, 73.1, 3.7, 21, 0.3], ["Grapes", 15.1, 3.4, 0.1, 24, 0.2, 4.1, 0.2], ["Chocolate Chip Cookies", 78.1, 6.2, 0.4, 101.8, 0, 9.3, 0.9], ["Lowfat Milk", 121.2, 296.7, 0.1, 500.2, 0, 11.7, 8.1], ["Raisin Brn", 115.1, 12.9, 16.8, 1250.2, 4, 27.9, 4], ["Hotdog", 242.1, 23.5, 2.3, 0, 0, 18, 10.4]] }, { "id": "diet_nutrients.csv", "fields": ["name", "qmin", "qmax"], "values": [["Calories", 2000, 2500], ["Calcium", 800, 1600], ["Iron", 10, 30], ["Vit_A", 5000, 50000], ["Dietary_Fiber", 25, 100], ["Carbohydrates", 0, 300], ["Protein", 50, 100]] }], "output_data": [{ "fields": ["Name", "Value"], "id": "kpis.csv", "values": [["Total Calories", 2000], ["Total Calcium", 800.0000000000001], ["Total Iron", 11.278317739831891], ["Total Vit_A", 8518.432542485823], ["Total Dietary_Fiber", 25], ["Total Carbohydrates", 256.80576358904455], ["Total Protein", 51.17372234135308], ["Minimal cost", 2.690409171696264]] }, { "fields": ["name", "value"], "id": "solution.csv", "values": [["Spaghetti W/ Sauce", 2.1551724137931036], ["Chocolate Chip Cookies", 10], ["Lowfat Milk", 1.8311671008899097], ["Hotdog", 0.9296975991385925]] }], "output_data_references": [], "solve_parameters": { "oaas.logAttachmentName": "log.txt", "oaas.logTailEnabled": "true" }, "solve_state": { "details": { "KPI.Minimal cost": "2.690409171696264", "KPI.Total Calcium": "800.0000000000001", "KPI.Total Calories": "2000.0", "KPI.Total Carbohydrates": "256.80576358904455", "KPI.Total Dietary_Fiber": "25.0", "KPI.Total Iron": "11.278317739831891", "KPI.Total Protein": "51.17372234135308", "KPI.Total Vit_A": "8518.432542485823", "MODEL_DETAIL_BOOLEAN_VARS": "0", "MODEL_DETAIL_CONSTRAINTS": "7", "MODEL_DETAIL_CONTINUOUS_VARS": "9", "MODEL_DETAIL_INTEGER_VARS": "0", "MODEL_DETAIL_KPIS": "[\"Total Calories\", \"Total Calcium\", \"Total Iron\", \"Total Vit_A\", \"Total Dietary_Fiber\", \"Total Carbohydrates\", \"Total Protein\", \"Minimal cost\"]", "MODEL_DETAIL_NONZEROS": "57", "MODEL_DETAIL_TYPE": "LP", "PROGRESS_CURRENT_OBJECTIVE": "2.6904091716962637" }, "latest_engine_activity": [ "[2020-07-21T16:37:36Z, INFO] Model: diet", "[2020-07-21T16:37:36Z, INFO] - number of variables: 9", "[2020-07-21T16:37:36Z, INFO] - binary=0, integer=0, continuous=9", "[2020-07-21T16:37:36Z, INFO] - number of constraints: 7", "[2020-07-21T16:37:36Z, INFO] - linear=7", "[2020-07-21T16:37:36Z, INFO] - parameters: defaults", "[2020-07-21T16:37:36Z, INFO] - problem type is: LP", "[2020-07-21T16:37:36Z, INFO] Warning: Model: \"diet\" is not a MIP problem, progress listeners are disabled", "[2020-07-21T16:37:36Z, INFO] objective: 2.690", "[2020-07-21T16:37:36Z, INFO] \"Spaghetti W/ Sauce\"=2.155", "[2020-07-21T16:37:36Z, INFO] \"Chocolate Chip Cookies\"=10.000", "[2020-07-21T16:37:36Z, INFO] \"Lowfat Milk\"=1.831", "[2020-07-21T16:37:36Z, INFO] \"Hotdog\"=0.930", "[2020-07-21T16:37:36Z, INFO] solution.csv" ], "solve_status": "optimal_solution" }, "status": { "completed_at": "2020-07-21T16:37:36.989Z", "running_at": "2020-07-21T16:37:35.622Z", "state": "completed" } }, "deployment": { "id": "DEPLOYMENT-ID" } }, "metadata": { "created_at": "2020-07-21T16:37:09.130Z", "id": "JOB-ID", "modified_at": "2020-07-21T16:37:37.268Z", "name": "test-job-diet", "space_id": "SPACE-ID" } }
- Optional: è possibile eliminare i lavori come segue:
curl --location --request DELETE "https://us-south.ml.cloud.ibm.com/ml/v4/deployment_jobs/JOB-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE&hard_delete=true" \ -H "Authorization: bearer TOKEN-HERE"
Se si elimina un lavoro utilizzando l'API, verrà comunque visualizzato nell'interfaccia utente. - Optional: è possibile eliminare le distribuzioni come segue:
curl --location --request DELETE "https://us-south.ml.cloud.ibm.com/ml/v4/deployments/DEPLOYMENT-ID-HERE?version=2020-08-01&space_id=SPACE-ID-HERE" \ -H "Authorization: bearer TOKEN-HERE"
Se si elimina una distribuzione che contiene lavori che utilizzano l'API, i lavori verranno comunque visualizzati nello spazio di distribuzione nell'interfaccia utente.
Risultati
Una volta che il tuo modello è stato distribuito e il lavoro eseguito, i risultati della soluzione vengono forniti o inline o nel file e nella posizione che hai specificato, ad esempio utilizzando un riferimento S3 . È possibile pubblicare nuovi lavori utilizzando il deployment - ID senza dover ridistribuire il proprio modello.