Mit der watsonx.ai Runtime REST API können Sie ein Decision Optimization bereitstellen, Aufträge erstellen und überwachen und Lösungen abrufen.
Vorbereitende Schritte
- Melden Sie sich bei IBM Cloud an.
- Erstellen Sie Ihren API-Schlüssel. Kopieren Sie ihn oder laden Sie ihn aus dem geöffneten Fenster mit dem erfolgreich erstellten API-Schlüssel herunter (Sie können nicht mehr darauf zugreifen, wenn Sie dieses Fenster schließen).
- Optional: Erstellen Sie einen ' watsonx.ai Laufzeit Dienst.
- Wählen Sie eine watsonx.ai Runtime-Instanz aus der Liste der AI/MachineMachine Learning in der IBM Cloud Resource-Listenansicht aus.
Kopieren Sie den Namen, die GUID und die CRN aus dem Informationsfenster für Ihre watsonx.ai Runtime-Instanz. (Um das Informationsfenster zu öffnen, klicken Sie auf eine beliebige Stelle in der Zeile neben dem Namen Ihres watsonx.ai Runtime-Dienstes, aber nicht auf den Namen selbst. Der Informationsbereich öffnet sich dann im selben Fenster)
- Optional: Erstellen Sie einen Cloud Object Storage.
- Wählen Sie eine Cloud Object Storage aus der Liste der Speicherressourcen in der Listenansicht derIBM Cloud aus.
Kopieren Sie den Namen und die CRN aus dem Informationsfenster für Ihre Speicherinstanz.
- Optional: Erstellen Sie über die Benutzeroberfläche https://dataplatform.cloud.ibm.com einen Bereitstellungsbereich. Sie können einen Bereitstellungsbereich auch über die REST-API erstellen. Siehe Erstellen eines Bereitstellungsraums mithilfe der REST-API.
- Wählen Sie einen Einsatzraum aus der Liste der Einsätze aus.
Kopieren Sie die Space GUID von der Registerkarte Verwalten > Allgemein. Weitere Informationen finden Sie in Bereitstellungsbereiche.
Informationen zu dieser Task
Verwenden Sie unter Windows das Zeichen ^ anstelle von \ als Trennzeichen bei mehreren Zeilen und Anführungszeichen (") in allen Codebeispielen. Windows-Benutzer müssen in den Kopfzeilen außerdem eine Einrückung von mindestens einer Zeichenbreite verwenden.
Zur Verdeutlichung wurden einige Codebeispiele in dieser Prozedur in eine Datei json eingefügt, um die Befehle lesbarer und benutzerfreundlicher zu machen.
Sobald Sie eine Bereitstellung über die REST-API erstellt haben, können Sie sie auch über die Seite "Bereitstellungen > Räume" in der Benutzeroberfläche https://dataplatform.cloud.ibm.com anzeigen und Aufträge an sie senden.
Prozedur
- Generieren Sie ein IAM-Token mit Ihrem IBM Cloud API-Schlüssel wie folgt.
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="
Ausgabebeispiel:{ "access_token": "****** obtained IAM token ******************************", "refresh_token": "**************************************", "token_type": "Bearer", "expires_in": 3600, "expiration": 1554117649, "scope": "ibm openid" }
Verwenden Sie das abgerufene Token (Wert access_token), dem das Wort
Bearer
im HeaderAuthorization
vorangestellt ist, und daswatsonx.ai Runtime service GUID
im HeaderML-Instance-ID
in allen API-Aufrufen. - Optional: Wenn Sie Ihre SPACE-ID nicht wie zuvor beschrieben über die Benutzerschnittstelle abgerufen haben, können Sie wie folgt einen Bereich mit der REST-API erstellen. Verwenden Sie das zuvor abgerufene Token, dem das Wort
bearer
im HeaderAuthorization
in allen API-Aufrufen vorangestellt ist.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" }] }"
Geben Sie für Windows-Benutzer den Befehl--data-raw
in einer Zeile ein und ersetzen Sie alle"
durch\"
in diesem Befehl wie folgt:
Alternativ können Sie die Daten in eine separate Datei stellen.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\" }]}"
Ein SPACE-ID wird im Feldid
des Abschnittsmetadata
zurückgegeben.Ausgabebeispiel:
{ "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" } }
Sie müssen warten, bis Ihr Bereitstellungsbereichsstatus
"active"
lautet, bevor Sie fortfahren. Um dies zu überprüfen, können Sie eine Abfrage durchführen.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"
- Neues Decision Optimization -Modell erstellen
Alle API-Anforderungen erfordern einen Versionsparameter, der ein Datum im Format
version=YYYY-MM-DD
annimmt. Dieses Codebeispiel übergibt ein Modell, das die Dateicreate_model.json
verwendet. Die URL variiert je nach gewählter Region/Standort für Ihren watsonx.ai Runtime Service. Siehe Endpunkt-URLs.
Die Datei create_model.json enthält den folgenden Code: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" }
Die Python-Version wird hier explizit in einem
custom
-Block angegeben. Dies ist optional. Ohne sie wird Ihr Modell die Standardversion verwenden, die derzeit Python 3.11 ist. Da sich die Standardversion im Laufe der Zeit weiterentwickelt, ermöglicht Ihnen die Angabe der Python-Version explizit, sie später ohne großen Aufwand zu ändern oder eine ältere unterstützte Version zu verwenden, wenn die Standardversion aktualisiert wird. Derzeit unterstützte Versionen sind 3.11 und 3.10 (veraltet).Wenn Sie in der Lage sein möchten, Jobs für dieses Modell über die Benutzerschnittstelle auszuführen statt nur über die REST-API, müssen Sie das Schema für die Eingabe- und Ausgabedaten definieren. Wenn Sie das Schema während der Erstellung des Modells nicht definieren, können Sie Jobs nur über die REST-API ausführen und nicht über die Benutzerschnittstelle.
Sie können auch das für die Eingabe und Ausgabe angegebene Schema in Ihrem Optimierungsmodell verwenden:
{ "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" }
Beim Übertragen eines Modells geben Sie Informationen zu seinem Modelltyp und der zu verwendenden Softwarespezifikation an.Beispiele für mögliche Modelltypen:do-opl_22.1
für OPL-Modelledo-cplex_22.1
für CPLEX-Modelledo-cpo_22.1
für CP-Modelledo-docplex_22.1
für Python-Modelle
Version 20.1 kann auch für diese Modelltypen verwendet werden.
Für die Softwarespezifikationkönnen Sie die Standardspezifikationen mit ihren Namen
do_22.1
oderdo_20.1
verwenden. Siehe auch Notebook 'Softwarespezifikation erweitern' , das zeigt, wie Sie die Softwarespezifikation Decision Optimization (Laufzeiten mit zusätzlichen Python -Bibliotheken für DOcplex-Modelle) erweitern können.Ein MODELL-ID wird im Feld
id
in dermetadata
zurückgegeben.Ausgabebeispiel:{ "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" } }
- Laden Sie eine Decision Optimization Modellformulierung hoch, die für die Bereitstellung bereit ist.Komprimieren Sie Ihr Modell zunächst in eine Datei (
tar.gz, .zip or .jar
) und laden Sie diese hoch, damit sie vom watsonx.ai Runtime Service bereitgestellt werden kann.Dieses Codebeispiel lädt ein Modell mit dem Namen diet.zip hoch, das ein Python-Modell und keine Masterdaten enthält: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"
Sie können dieses Beispiel und andere Modelle von den DO-Samples herunterladen. Wählen Sie den für Sie zutreffenden Unterordner für das jeweilige Produkt und die Version aus. - Modell bereitstellenErstellen Sie einen Verweis auf Ihr Modell. Verwenden Sie die SPACE-ID, die MODEL-ID, die Sie beim Erstellen Ihres Modells abgerufen haben, bereit zur Bereitstellung, und die Hardwarespezifikation. Beispiel:
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": {} }
Die IMPLEMENTIERUNGS-ID wird im Feldid
in dermetadata
zurückgegeben. Ausgabebeispiel:{ "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" } }
- Nach der Implementierung können Sie den Bereitstellungszustand Ihres Modells überwachen . Verwenden Sie die DEPLOYMENT-ID.Beispiel:
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"
Ausgabebeispiel:
{ "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" } }
- Sie können dann Jobs übergeben für Ihr bereitgestelltes Modell, das die Eingabedaten und die Ausgabe (Ergebnisse der Optimierungslösung) und die Protokolldatei definiert.Das folgende Beispiel zeigt den Inhalt einer Datei mit dem Namen
myjob.json
. Sie enthält (Inline-)Eingabedaten und einige Lösungsparameter und sie gibt an, dass die Ausgabe eine CSV-Datei sein wird. Für weitere Informationen siehe " Decision Optimization Batch-Bereitstellung und Modellausführung.
Dieses Codebeispiel veröffentlicht einen Job, der diese Datei{ "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
verwendet.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
Eine JOB-ID wird zurückgegeben. Ausgabebeispiel: (Der Job wird in die Warteschlange gestellt).{ "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" } }
- Sie können auch Jobstatus überwachen. Verwenden Sie die JOB-IDBeispiel:
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"
Ausgabebeispiel: (Job wurde abgeschlossen){ "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: Sie können Jobs wie folgt löschen:
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"
Wenn Sie einen Job mithilfe der API löschen, wird er weiterhin in der Benutzerschnittstelle angezeigt. - Optional: Sie können Bereitstellungen wie folgt löschen:
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"
Wenn Sie eine Bereitstellung, die Jobs enthält, mithilfe der API löschen, werden die Jobs weiterhin im Bereitstellungsbereich in der Benutzerschnittstelle angezeigt.
Ergebnisse
Nachdem Ihr Modell bereitgestellt und der Job ausgeführt wurde, werden die Lösungsergebnisse entweder inline oder in der von Ihnen angegebenen Datei/Position bereitgestellt (z. B. mit einer S3-Referenz). Sie können neue Jobs mithilfe der Bereitstellungs-ID (deployment-ID) veröffentlichen, ohne Ihr Modell erneut bereitstellen zu müssen.