Puoi ottimizzare i modelli di base in IBM watsonx.ai in modo programmatico utilizzando la libreria Python .
Per ottimizzare rapidamente un foundation model , esegui un esperimento che utilizza i dati di addestramento da te forniti. L'esperimento è un processo di apprendimento automatico che mostra al foundation model l'output che ci si aspetta che il modello restituisca in risposta al prompt di input. Il processo di ottimizzazione è complesso e riguarda un asset di dati, un asset di training e uno di distribuzione.
La libreria python ha metodi e classi helper per l'ottimizzazione dei modelli di base. Per ulteriori informazioni sulla libreria, vedere Ottimizzazione dei prompt .
Utilizza le funzioni disponibili nella libreria watsonx.ai Python dai notebook in watsonx.ai per ottimizzare i modelli di base.
Notebook di esempio
Il notebook Python Usa watsonx per ottimizzare il modello IBM granite-13b-instruct-v2 con il documento di esempio sulla soddisfazione del cliente di una società di autonoleggio" contiene codice per i modelli di base di ottimizzazione rapida in watsonx.ai .
Il notebook di esempio consente di eseguire le due fasi principali di ottimizzazione:
- Ricerca dei valori dei parametri di ottimizzazione ottimali
- Richiesta al modello ottimizzato di valutare la qualità dell'output del modello ottimizzato
Il notebook di esempio è progettato per ottimizzare il modello granite-13b-instruct-v2 . Ma è possibile utilizzarlo anche per ottimizzare altri modelli di base. A tale scopo, sostituire i riferimenti base_model
come segue:
base_model='google/flan-t5-xl'
Se si modifica il foundation model , è necessario sostituire anche i dati di addestramento. Sostituire il percorso file nella sezione Caricamento dati del notebook.
url = "{path to your file}"
if not os.path.isfile(filename):
wget.download(url)
È inoltre possibile utilizzare un notebook di esempio che ottimizza gli altri modelli di base che possono essere ottimizzati.
Ottimizzare un modello per classificare i documenti CFPB in watsonx
Il notebook flan-t5 contiene passaggi per ottimizzare il foundation model , ma non include un passaggio per l'ottimizzazione degli iperparametri.
Utilizzo del notebook di esempio per ottimizzare i valori dei parametri di ottimizzazione
Il notebook di esempio ha codice che ottimizza il valore del parametro learning_rate
. Il notebook di esempio modifica sistematicamente il valore del tasso di apprendimento e riesegue l'esperimento 10 volte, in modo che la perdita possa essere confrontata tra le 10 esecuzioni. Il notebook di esempio calcola il valore del tasso di apprendimento ottimale.
Il notebook di esempio genera 10 esperimenti separati; non esegue lo stesso esperimento 10 volte.
Il parametro da ottimizzare è definito nella sezione Ottimizzazione e spazio di ricerca del notebook.
È possibile modificare o aggiungere al notebook di esempio per eseguire il codice automatizzato per ottimizzare i seguenti parametri in aggiunta al tasso di apprendimento:
accumulate_steps
batch_size
num_epochs
Per controllare i valori ottimali per molti parametri contemporaneamente, è possibile modificare il notebook di esempio per utilizzare il seguente codice, ad esempio:
SPACE = [
skopt.space.Real(0.001, 0.09, name='learning_rate', prior='log-uniform'),
skopt.space.Integer(1, 50, name='num_epochs', prior='uniform'),
skopt.space.Integer(1, 16, name='batch_size', prior='uniform')
]
L'ottimizzazione di molti parametri contemporaneamente può far risparmiare tempo perché i parametri lavorano insieme. I loro valori si influenzano l'un l'altro e il giusto equilibrio di valori tra loro porta ai migliori risultati.
Il notebook di esempio utilizza metodi della libreria scikit-optimize. Per ulteriori informazioni, vedere il riferimento API scikit-optimize .
Utilizzo del notebook di esempio per valutare il modello ottimizzato
Il notebook di esempio dispone di codice che distribuisce il modello ottimizzato, ne deduce il modello ottimizzato e quindi calcola l'accuratezza dell'output del modello ottimizzato. Inoltre, deduce il foundation model sottostante e calcola l'accuratezza dell'output del modello di base, in modo da poter visualizzare un confronto.
Se si desidera utilizzare il notebook di esempio per ottimizzare e valutare altri modelli, è possibile sostituire il valore del parametro model_id
nel seguente codice.
base_model = ModelInference(
model_id='ibm/granite-13b-instruct-v2',
params=generate_params,
api_client=client
)
Ad esempio, specificare google/flan-t5-xl
.
È inoltre necessario sostituire il testo del prompt con un prompt dal proprio dataset di addestramento.
response = tuned_model.generate_text(prompt="{your text here}")
Se il punteggio di precisione per il modello ottimizzato è basso, esaminare alcune idee per migliorare i dati di addestramento in Risolvere i problemi di qualità dei dati nell'output del modello ottimizzato.
L'ottimizzazione dei parametri di ottimizzazione è specifica per il modello e i dati di addestramento che si stanno utilizzando. Se si modifica il modello o i dati di addestramento, è necessario rivalutare l'esperimento di ottimizzazione. Regolare nuovamente i parametri di ottimizzazione per ottimizzarli per il dataset convertito.
Argomento principale: Python Python