Ein Fundament programmatisch abstimmen
Sie können eine Reihe von Grundmodellen in watsonx.ai programmgesteuert abstimmen, um sie dann für Ihren Anwendungsfall anzupassen.
Entwicklungsmöglichkeiten
Sie können Foundation-Modelle mithilfe dieser Programmiermethoden abstimmen:
Alternativ können Sie grafische Tools aus der Benutzeroberfläche von watsonx.ai verwenden, um Fundamentmodelle zu optimieren. Siehe Tuning Studio.
REST-API
Prompt-Tuning ist veraltet und wird in Zukunft entfernt werden.
Die schnelle Abstimmung eines Fundamentmodells mithilfe der API ist eine komplexe Aufgabe. Die Musterhefte von Python vereinfachen den Prozess. Sie können ein Musternotizbuch als Vorlage für Ihre eigenen Notizbücher verwenden, um sie schnell abstimmen zu können. Siehe "Ein Fundamentmodell programmatisch abstimmen ".
Unterstützte Stiftungsmodelle
Siehe "Auswahl eines Fundamentmodells zum Abstimmen ".
Um eine Liste der Grundlagenmodelle zu erhalten, die eine schnelle Abstimmung programmgesteuert unterstützen, können Sie die folgende Anfrage verwenden:
curl -X GET \
'https://{hostname}/ml/v1/foundation_model_specs?version=2025-02-20&filters=function_prompt_tune_trainable'
Vorgehensweise
Auf hoher Ebene umfasst die schnelle Abstimmung eines Fundamentmodells mithilfe der API die folgenden Schritte:
Erstellen Sie eine Aufgabe mit Berechtigung.
Ein Aufgaben-Berechtigungsnachweis ist ein API-Schlüssel, der zur Authentifizierung von lang andauernden Aufträgen verwendet wird, die durch die Schritte gestartet werden, die Sie in diesem Verfahren ausführen. Sie müssen die Berechtigung für die Aufgabe nicht in der API-Anfrage angeben. Ein von Ihnen erstellter Aufgaben-Berechtigungsnachweis muss im Berechtigungsnachweis-Dienst für Ihre
user_id
undaccount_id
vorhanden sein. Siehe "Erstellen von Aufgaben-Berechtigungen ".Erstellen Sie eine Trainingsdatendatei, die Sie zur Feinabstimmung des Grundmodells verwenden können.
Weitere Informationen zu den Anforderungen an die Trainingsdatendatei finden Sie unter "Datenformate für Tuning-Foundation-Modelle ".
Laden Sie Ihre Trainingsdatendatei hoch.
Sie können die Datei hinzufügen, indem Sie einen der folgenden Asset-Typen erstellen:
Verbindungsasset
Hinweis : Für das Prompt-Tuning-Training wird derzeit nur der Verbindungstyp Cloud Object Storage unterstützt.
Siehe "Dateien aus der API referenzieren ".
Sie verwenden die Verbindungs-ID und die Details der Trainingsdatendatei, wenn Sie den Abschnitt
training_data_references
zur Dateirequest.json
hinzufügen, die Sie im nächsten Schritt erstellen.Datenasset
Um ein Daten-Asset zu erstellen, verwenden Sie die Data and AI Common Core API, um ein Daten-Asset zu definieren.
Sie werden die Asset-ID und die Details der Trainingsdatendatei verwenden, wenn Sie den Abschnitt
training_data_references
der REST-Anfrage hinzufügen, die Sie im nächsten Schritt erstellen.
Weitere Informationen zu den unterstützten Möglichkeiten, auf eine Trainingsdatendatei zu verweisen, finden Sie unter Datenreferenzen.
Verwenden Sie die API watsonx.ai, um ein Schulungsexperiment zu erstellen.
Siehe "Schulung erstellen ".
Sie können Parameter für das Experiment in der
TrainingResource
-Nutzlast angeben. Weitere Informationen zu verfügbaren Parametern finden Sie unter "Parameter für die Abstimmung von Fundamentmodellen ".Geben Sie für
task_id
eine der Aufgaben an, die in der Antwort auf die Methode "Liste der verfügbaren Stiftungsmodelle" als für das Stiftungsmodell unterstützt aufgeführt sind.Speichern Sie das optimierte Modell im Repository-Dienst, um eine
asset_id
zu generieren, die auf das optimierte Modell verweist.Um das abgestimmte Modell zu speichern, verwenden Sie die watsonx.ai Runtime (ehemals Watson Machine Learning ) API, um ein neues Modell zu erstellen.
Verwenden Sie die API watsonx.ai, um eine Bereitstellung für das optimierte Modell zu erstellen.
Siehe "Einsatz erstellen "
Um ein angepasstes Modell abzuleiten, müssen Sie den Inferenzendpunkt verwenden, der die eindeutige ID der Bereitstellung enthält, die das angepasste Modell hostet. Weitere Informationen finden Sie in den Inferenzmethoden im Abschnitt "Einsätze ".
Feinabstimmung eines Basismodells mit Hilfe der REST-API
Sie können die watsonx.ai REST API verwenden, um ein Basismodell mit den folgenden Techniken fein abzustimmen:
- Feinabstimmung der Anpassung auf niedriger Ebene
Unterstützte Stiftungsmodelle
Siehe "Auswahl eines Fundamentmodells zum Abstimmen ".
Um eine Liste der Stiftungsmodelle zu erhalten, die eine programmatische Feinabstimmung der Low-Rank-Adaption ( LoRA ) unterstützen, können Sie die folgende Anfrage verwenden:
curl -X GET \
'https://{region}.ml.cloud.ibm.com/ml/v1/foundation_model_specs?version=2025-02-20&filters=function_lora_fine_tune_trainable'
Sie können LoRA nur mit nicht-quantisierten Modellen verwenden.
Vorgehensweise
Die grundlegenden Schritte, die Sie befolgen, sind für jede Technik weitgehend gleich. Die wichtigsten Unterschiede sind die Werte, die in den Anforderungskörper für den Feinabstimmungs-Trainingsauftrag aufgenommen werden müssen, und werden in diesem Verfahren hervorgehoben.
Erstellen Sie eine Trainingsdatendatei, die Sie zur Feinabstimmung des Grundmodells verwenden können.
Weitere Informationen zu den Anforderungen an die Trainingsdatendatei finden Sie unter "Datenformate für Tuning-Foundation-Modelle ".
Stellen Sie Ihre Trainingsdatendatei für die API zur Verfügung.
Sie können eine der folgenden Aktionen ausführen:
- UI-Methode
Um Ihre.json oder.jsonl-Datei hochzuladen, folgen Sie den Schritten unter Hinzufügen von Dateien, auf die von der API verwiesen wird.
API-Methode
Erstellen Sie ein Daten-Asset, indem Sie die Data and AI Common Core API verwenden, um ein Daten-Asset zu definieren.
Sie werden die Asset-ID und die Details der Trainingsdatendatei verwenden, wenn Sie den Abschnitt
training_data_references
des Anfragekörpers hinzufügen, den Sie im nächsten Schritt erstellen.Verwenden Sie die API watsonx.ai, um ein Schulungsexperiment zu erstellen.
Siehe "Schulung erstellen ".
Senden Sie die POST-Anfrage an diesen Endpunkt:
curl --request POST 'https://{region}.ml.cloud.ibm.com/ml/v1/fine_tunings?version=2025-02-14'
Passen Sie das Experiment an, indem Sie die Werte für die Parameter in der Nutzlast
TrainingResource
ändern. Weitere Informationen finden Sie in den folgenden Ressourcen:- Unterstützte Gründungsmodelle, siehe Auswahl eines zu optimierenden Modells.
- Veränderbare Parameter, siehe Parameter zur Abstimmung von Gründungsmodellen.
Setzen Sie
auto_update_model
auftrue
, um die generierte Ausgabe als Asset zu speichern, das Sie verwenden können, wenn Sie das abgestimmte Basismodell später einsetzen. Andernfalls müssen Sie das abgestimmte Modell oder die Adapter, die durch das Experiment generiert werden, im Repository-Dienst speichern, um eineasset_id
zu generieren, bevor Sie sie für die Bereitstellung verwenden können.Der folgende Beispielanforderungstext erstellt ein LoRA Feinabstimmungsexperiment.
{ "project_id": "4e34d515-c61f-4f18-92b4-758be78d0a58", "name": "my LoRA experiment", "auto_update_model": true, "tuned_model_name": "my-lora-tuned-model", "parameters": { "base_model": { "model_id": "ibm/granite-3-1-8b-base" }, "task_id": "classification", "num_epochs": 10, "learning_rate": 0.00001, "batch_size": 5, "max_seq_length": 4096, "accumulate_steps": 1, "gpu": { "num": 1 }, "peft_parameters": { "type": "lora", "rank": 8, "lora_alpha": 32, "lora_dropout": 0.05, "target_modules": ["all-linear"] } }, "results_reference": { "location": { "path": "fine_tuning/results" }, "type": "container" }, "training_data_references": [ { "location": { "href":"/v2/assets/1e6591a2-c69d-4716-92e3-73e8c2270956project_id=4e34d515-c61f-4f18-92b4-758be78d0a58", "id":"1e6591a2-c69d-4716-92e3-73e8c2270956" }, "type": "data_asset" } ] }
Die Ausgabe der Anfrage sieht etwa so aus:
{ "entity": { "auto_update_model": true, "parameters": { "accumulate_steps": 1, "base_model": { "model_id": "ibm/granite-3-1-8b-base" }, "batch_size": 5, "gpu": { "num": 4 }, "learning_rate": 0.00001, "max_seq_length": 1024, "num_epochs": 10, "peft_parameters": { "lora_alpha": 32, "lora_dropout": 0.05, "rank": 8, "target_modules": [ "all-linear" ], "type": "lora" }, "response_template": "\n### Response:", "task_id": "classification", "verbalizer": "### Input: \n\n### Response: " }, "results_reference": { "location": { "path": "/projects/4e34d515-c61f-4f18-92b4-758be78d0a58/assets/fine_tuning/results", "notebooks_path": "/projects/4e34d515-c61f-4f18-92b4-758be78d0a58/assets/fine_tuning/results/2491b2d9-bf96-4d3f-9ea7-8604861471e1/notebooks", "training": "/projects/4e34d515-c61f-4f18-92b4-758be78d0a58/assets/fine_tuning/results/2491b2d9-bf96-4d3f-9ea7-8604861471e1", "training_status": "/projects/4e34d515-c61f-4f18-92b4-758be78d0a58/assets/fine_tuning/results/2491b2d9-bf96-4d3f-9ea7-8604861471e1/training-status.json", "assets_path": "/projects/4e34d515-c61f-4f18-92b4-758be78d0a58/assets/fine_tuning/results/2491b2d9-bf96-4d3f-9ea7-8604861471e1/assets" }, "type": "container" }, "status": { "state": "pending" }, "training_data_references": [ { "location": { "href": "/v2/assets/1e6591a2-c69d-4716-92e3-73e8c2270956?project_id=4e34d515-c61f-4f18-92b4-758be78d0a58", "id": "1e6591a2-c69d-4716-92e3-73e8c2270956" }, "type": "data_asset" } ], "tuned_model": { "name": "my-lora-tuned-model-2491b2d9-bf96-4d3f-9ea7-8604861471e1" } }, "metadata": { "created_at": "2025-02-14T19:47:36.629Z", "id": "2491b2d9-bf96-4d3f-9ea7-8604861471e1", "modified_at": "2025-02-14T19:47:36.629Z", "name": "My LoRA experiment", "project_id": "4e34d515-c61f-4f18-92b4-758be78d0a58" } }
Um den Status eines Trainingsauftrags zu überprüfen, können Sie die folgende Anfrage verwenden.
Verwenden Sie die
metadata.id
, die in der POST-Anforderung zurückgegeben wird, um sie als Wert desID
Pfadparameters in die Anforderung aufzunehmen.curl --request GET 'https://{region}.ml.cloud.ibm.com/ml/v1/fine_tunings/2491b2d9-bf96-4d3f-9ea7-8604861471e1?project_id=4e34d515-c61f-4f18-92b4-758be78d0a58&version=2025-02-14'
Die API-Referenz finden Sie unter Feinabstimmungsauftrag abrufen.
Der Abstimmungsversuch ist beendet, wenn der Zustand
completed
ist.Wenn Sie
"auto_update_model": true
in die Anfrage aufgenommen haben, wird die Modell-Asset-ID des abgestimmten Modells oder Adapters im Feldentity.tuned_model.id
der Antwort der GET-Anfrage aufgeführt. Notieren Sie sich die Asset-ID des Modells.Verwenden Sie die watsonx.ai API, um Ihr abgestimmtes Modell bereitzustellen.
Um Ihr abgestimmtes Modell einzusetzen, müssen Sie die entsprechenden Schritte für die verwendete Abstimmungsmethode ausführen.
Niederrangige Anpassung: Erledigen Sie die folgenden Aufgaben:
Erstellen Sie ein Basisfundamentmodell-Asset.
Das Modell-Asset definiert Metadaten für das Grundmodell, das als Basismodell verwendet werden soll. Siehe Erstellen des Modell-Assets.
Stellen Sie das Basisfundamentmodell bereit.
Sie benötigen eine eigene Instanz des Basismodells, die zum Zeitpunkt der Inferenz verwendet werden kann. Siehe Bereitstellen des Basismodells.
Setzen Sie das Low-Rank-Adapter-Asset ein, das durch das Tuning-Experiment erzeugt wurde.
Einsatz von Adaptern, die die Gewichte des Basismodells zum Zeitpunkt der Inferenz anpassen können, um die Ausgabe an die Aufgabe anzupassen. Siehe Bereitstellen des LoRA adapter model asset.
Vollständige Feinabstimmung: Siehe Einsatz von Feinabstimmungsmodellen.
Ableitung des abgestimmten Gründungsmodells.
Um ein abgestimmtes Modell zu inferenzieren, verwenden Sie einen Inferenzendpunkt, der die eindeutige ID der Bereitstellung enthält, die das abgestimmte Modell hostet.
- Niederrangige Anpassung: Siehe Inferencing eingesetzter PEFT-Modelle.
- Vollständige Feinabstimmung: Siehe Inferencing des eingesetzten Modells.
Übergeordnetes Thema: Abstimmung von Gründungsmodellen