Rivoluziona la soddisfazione del cliente con modelli di ricompensa personalizzati per la tua attività su Amazon SageMaker | Servizi Web di Amazon

Rivoluziona la soddisfazione del cliente con modelli di ricompensa personalizzati per la tua attività su Amazon SageMaker | Servizi Web di Amazon

Poiché vengono utilizzati modelli linguistici di grandi dimensioni (LLM) più potenti per eseguire una varietà di attività con maggiore precisione, il numero di applicazioni e servizi che vengono creati con intelligenza artificiale generativa (AI) sta anche crescendo. Da un grande potere deriva la responsabilità e le organizzazioni vogliono assicurarsi che questi LLM producano risposte in linea con i loro valori organizzativi e forniscano la stessa esperienza unica che hanno sempre previsto per i loro clienti finali.

La valutazione delle risposte generate dall’intelligenza artificiale presenta sfide. Questo post discute le tecniche per allinearli ai valori aziendali e creare un modello di ricompensa personalizzato utilizzando Amazon Sage Maker. In questo modo, puoi fornire esperienze cliente personalizzate che riflettono in modo univoco l'identità e l'etica del marchio della tua organizzazione.

Sfide con LLM fuori dagli schemi

Gli LLM pronti all'uso forniscono un'elevata precisione, ma spesso mancano di personalizzazione per le esigenze specifiche e gli utenti finali di un'organizzazione. Il feedback umano varia in termini di soggettività tra le organizzazioni e i segmenti di clientela. La raccolta di feedback umani diversi e soggettivi per perfezionare i LLM richiede molto tempo e non è scalabile.

Questo post mostra una tecnica di modellazione dei premi per personalizzare in modo efficiente gli LLM per un'organizzazione definendo a livello di codice funzioni di ricompensa che catturano le preferenze per il comportamento del modello. Dimostriamo un approccio per fornire risultati LLM su misura per un'organizzazione senza un giudizio umano intenso e continuo. Le tecniche mirano a superare le sfide di personalizzazione e scalabilità codificando gli standard di qualità soggettivi di un'organizzazione in un modello di ricompensa che guida il LLM a generare risultati preferibili.

Feedback umano oggettivo e soggettivo

Non tutti i feedback umani sono uguali. Possiamo classificare il feedback umano in due tipi: oggettivo e soggettivo.

Qualsiasi essere umano a cui fosse chiesto di giudicare il colore delle seguenti caselle confermerebbe che quella di sinistra è una scatola bianca e quella di destra è una scatola nera. Questo è oggettivo e non ci sono modifiche di sorta.

Revolutionize Customer Satisfaction with tailored reward models for your business on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Determinare se il risultato di un modello di intelligenza artificiale è “ottimo” è intrinsecamente soggettivo. Considera il seguente spettro di colori. Se venisse chiesto di descrivere i colori sulle estremità, le persone fornirebbero risposte varie e soggettive in base alle loro percezioni. Il bianco di una persona può essere il grigio di un'altra.

Revolutionize Customer Satisfaction with tailored reward models for your business on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Questa soggettività rappresenta una sfida per migliorare l’intelligenza artificiale attraverso il feedback umano. A differenza del feedback oggettivo giusto/sbagliato, le preferenze soggettive sono sfumate e personalizzate. Lo stesso risultato potrebbe suscitare elogi da una persona e critiche da un’altra. La chiave è riconoscere e tenere conto della soggettività fondamentale delle preferenze umane nella formazione sull’intelligenza artificiale. Piuttosto che cercare verità oggettive sfuggenti, dobbiamo fornire modelli che espongano la colorata diversità del giudizio soggettivo umano.

A differenza delle attività del modello tradizionale come la classificazione, che può essere accuratamente confrontata con set di dati di test, la valutazione della qualità di un agente conversazionale in espansione è altamente soggettiva. La prosa avvincente di un essere umano è la sciocchezza senza scopo di un altro. Quindi, come dovremmo perfezionare questi modelli linguistici espansivi quando gli esseri umani sono intrinsecamente in disaccordo sulle caratteristiche di una risposta “buona”?

La chiave è raccogliere feedback da un pubblico diversificato. Con punti di vista soggettivi sufficienti, emergono modelli su discorsi coinvolgenti, coerenza logica e contenuti innocui. I modelli possono quindi essere ottimizzati in base a preferenze umane più ampie. Esiste la percezione generale che i modelli di ricompensa siano spesso associati solo all’apprendimento per rinforzo dal feedback umano (RLHF). La modellazione delle ricompense, infatti, va oltre l'RLHF e può essere un potente strumento per allineare le risposte generate dall'intelligenza artificiale con i valori specifici e l'identità del marchio di un'organizzazione.

Modellazione delle ricompense

Puoi scegliere un LLM e fare in modo che generi numerose risposte a diversi suggerimenti, quindi i tuoi etichettatori umani classificheranno tali risposte. È importante avere diversità negli etichettatori umani. Linee guida chiare sull’etichettatura sono fondamentali. Senza criteri espliciti, i giudizi possono diventare arbitrari. Le dimensioni utili includono coerenza, pertinenza, creatività, correttezza fattuale, coerenza logica e altro ancora. Gli etichettatori umani inseriscono queste risposte in categorie e le etichettano da preferite a meno preferite, come mostrato nell'esempio seguente. Questo esempio mostra come diversi esseri umani percepiscono queste possibili risposte dal LLM in termini di loro più preferite (etichettate come 1 in questo caso) e meno preferite (etichettate come 3 in questo caso). Ogni colonna è etichettata 1, 2 o 3 da ciascun essere umano per indicare la risposta più preferita e meno preferita dal LLM.

Revolutionize Customer Satisfaction with tailored reward models for your business on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Compilando queste valutazioni soggettive, emergono modelli su ciò che risuona tra i lettori. Il feedback umano aggregato forma essenzialmente un modello di ricompensa separato sulle qualità di scrittura che piacciono alle persone. Questa tecnica di distillazione delle prospettive della folla in una funzione di ricompensa dell'IA si chiama modellazione della ricompensa. Fornisce un metodo per migliorare la qualità dell'output LLM basato su diversi punti di vista soggettivi.

Panoramica della soluzione

In questo post, descriviamo in dettaglio come addestrare un modello di ricompensa basato sul feedback sull'etichettatura umana specifico dell'organizzazione raccolto per vari prompt testati sul FM di base. Il diagramma seguente illustra l'architettura della soluzione.

Revolutionize Customer Satisfaction with tailored reward models for your business on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Per maggiori dettagli consultare l'allegato taccuino.

Prerequisiti

Per addestrare con successo un modello di ricompensa, è necessario quanto segue:

Avvia SageMaker Studio

Completa i seguenti passaggi per avviare SageMaker Studio:

  1. Sulla console di SageMaker, scegli Studio nel pannello di navigazione.
  2. Nella pagina di destinazione di Studio, seleziona il dominio e il profilo utente per avviare Studio.
  3. Scegli Apri Studio.
  4. Per avviare SageMaker Studio, scegli Avvia Studio personale.

Vediamo come creare un modello di ricompensa localmente in un ambiente notebook SageMaker Studio utilizzando un modello preesistente dall'hub del modello Hugging Face.

Preparare un set di dati etichettato come umano e addestrare un modello di ricompensa

Quando si esegue la modellazione delle ricompense, ottenere dati di feedback dagli esseri umani può essere costoso. Questo perché la modellazione delle ricompense necessita del feedback di altri lavoratori umani invece di utilizzare solo i dati raccolti durante l’uso regolare del sistema. Il comportamento del tuo modello di ricompensa dipende dalla qualità e dalla quantità di feedback da parte degli esseri umani.

Ti consigliamo di utilizzare offerte gestite da AWS come Amazon SageMaker verità fondamentale. Offre il set più completo di funzionalità human-in-the-loop, consentendoti di sfruttare la potenza del feedback umano durante il ciclo di vita del machine learning (ML) per migliorare l'accuratezza e la pertinenza dei modelli. Puoi completare una serie di attività umane con SageMaker Ground Truth, dalla generazione di dati e annotazioni alla revisione, personalizzazione e valutazione dei modelli, tramite un'offerta self-service o gestita da AWS.

Per questo post, utilizziamo il set di dati IMDB per addestrare un modello di ricompensa che fornisce un punteggio più alto per il testo che gli esseri umani hanno etichettato come positivo e un punteggio più basso per il testo negativo.

Prepariamo il dataset con il seguente codice:

def create_custom_dataset(raw_dataset):
    df = raw_dataset.to_pandas()
    negative_df = df[df['label']==0]
    positive_df = df[df['label']==1]
    negative_df = negative_df.drop(
        columns=['label']).rename(
        columns={'text': 'rejected'})
    # shuffle the data
    positive_df = positive_df.sample(
        frac=1, random_state=0).reset_index(
        drop=True).drop(columns=['label']).rename(
        columns={'text': 'chosen'})
    joined_df = negative_df.join(positive_df)

    def tokenize_fn(texts, max_length=args.seq_length):
        encoded = tokenizer(
            texts,
            padding='max_length',
            max_length=max_length,
            truncation=True,
            add_special_tokens=False,
        )
        return encoded

    rejected_encoded = tokenize_fn(joined_df.rejected.values.tolist())
    joined_df['rejected_input_ids'] = rejected_encoded['input_ids']
    joined_df['rejected_attention_mask'] = rejected_encoded['attention_mask']
    encoded_chosen = tokenize_fn(joined_df.chosen.values.tolist())
    joined_df['chosen_input_ids'] = encoded_chosen['input_ids']
    joined_df['chosen_attention_mask'] = encoded_chosen['attention_mask']
    
    train_dataset = Dataset.from_pandas(joined_df, preserve_index=False)
    
    return train_dataset.with_format("torch")

L'esempio seguente mostra un record di esempio dal set di dati preparato, che include riferimenti alle risposte rifiutate e scelte. Abbiamo anche incorporato l'ID di input e la maschera di attenzione per le risposte scelte e rifiutate.

{'rejected': "If only to avoid making this type of film in the future. This film is interesting as an experiment but tells no cogent story.<br /><br />One might feel virtuous for sitting thru it because it touches on so many IMPORTANT issues but it does so without any discernable motive. The viewer comes away with no new perspectives (unless one comes up with one while one's mind wanders, as it will invariably do during this pointless film).<br /><br />One might better spend one's time staring out a window at a tree growing.<br /><br />",
 'chosen': "This is a great movie. I love it more each time i watch. Most comedies can get pretty lame because you know all the gags, but mystery men has so much integrity in the writing and characterization that watching once again -- as Ben Stiller tears at the hood ornament of the limo, or Hank Azaria says good-bye to Louise Lasser, or Geoffrey Rush flashes his fuhrer choreography, or Tom Waits mumbles while he watches the news report, or Janeane Garofalo refuses a kiss from Paul Reubens -- is a pleasure. This is pitch perfect ensemble acting. The story develops directly and consistently, the action sequences are creative and not too dominant, all the set-ups payoff by the end. Seriously, if you've seen it and it's been a while, watch it again, and if you haven't then get started. You can't watch it again until you've seen it the first time. (Wes Studi, William H. Macy, the tryouts scene. Too much good stuff!)",
 'rejected_input_ids': tensor([1106,  129,    7,  ...,    1,    1,    1]),
 'rejected_attention_mask': tensor([1, 1, 1,  ..., 0, 0, 0]),
 'chosen_input_ids': tensor([713,  16,  10,  ...,   1,   1,   1]),
 'chosen_attention_mask': tensor([1, 1, 1,  ..., 0, 0, 0])}

Caricare il modello pre-addestrato

In questo caso utilizziamo il file OPZIONE-1.3b (Open Pre-addestrato Transformer Language Model) modello in JumpStart di Amazon SageMaker da Il viso che abbraccia. Se desideri eseguire tutta la formazione localmente sul tuo notebook invece della formazione distribuita, devi utilizzare un'istanza con memoria dell'acceleratore sufficiente. Eseguiamo la seguente formazione su un notebook in esecuzione sul tipo di istanza ml.g4dn.xlarge:

from transformers import( 
      AutoModelForSequenceClassification, 
      AutoTokenizer, 
      set_seed, 
      ) 
from datasets import Dataset, load_dataset 
import torch
       
model = AutoModelForSequenceClassification.from_pretrained( 
       'facebook/opt-1.3b',
       torch_dtype=torch.bfloat16, 
       device_map="auto", 
       num_labels=1, 
 )

Definire la funzione trainer personalizzata

Nel seguente frammento di codice creiamo un trainer personalizzato che calcola il rendimento di un modello in un'attività:

from torch import nn 
from transformers import Trainer 
import torch.nn.functional as F 

class CustomTrainer(Trainer): 
def compute_loss(self, model, inputs, return_outputs=False): 

chosen_input_ids = inputs['chosen_input_ids'] chosen_attention_mask = inputs['chosen_attention_mask'] rejected_input_ids = inputs['rejected_input_ids'] rejected_attention_mask = inputs['rejected_attention_mask'] 
r_w = model(chosen_input_ids, chosen_attention_mask).logits 
r_l = model(rejected_input_ids, rejected_attention_mask).logits outputs = (r_w, r_l) 
loss = -F.logsigmoid(r_w - r_l).mean() 
return (loss, outputs) if return_outputs else loss

Confronta i risultati del modello per due serie di dati di input: una serie scelta e un'altra serie rifiutata. Il formatore utilizza quindi questi risultati per capire quanto è efficace il modello nel distinguere tra i dati scelti e quelli rifiutati. Ciò aiuta il formatore ad adattare il modello per migliorare le sue prestazioni nel compito. IL CustomTrainer La classe viene utilizzata per creare un trainer specializzato che calcola la funzione di perdita per un'attività specifica che coinvolge sequenze di input scelte e rifiutate. Questo trainer personalizzato estende le funzionalità della classe Trainer standard fornita dalla libreria dei trasformatori, consentendo un approccio su misura alla gestione degli output del modello e al calcolo delle perdite in base ai requisiti specifici dell'attività. Vedere il seguente codice:

from transformers import TrainingArguments

training_args = TrainingArguments(output_dir="reward_model",
                                  overwrite_output_dir=True,
                                 do_train=True,
                                 do_eval=False,
                                 do_predict=False,
                                 evaluation_strategy="no",
                                 learning_rate=5e-5,
                                 num_train_epochs=1,
                                 per_device_train_batch_size=2,
                                 gradient_accumulation_steps=32,
                                 remove_unused_columns=False)
trainer = CustomTrainer( 
          model=model, 
          args=training_args, 
          train_dataset=train_dataset 
          )
trainer.train()
trainer.save_model()

I TrainingArguments nello snippet di codice fornito vengono utilizzati per configurare vari aspetti del processo di training per un modello ML. Analizziamo lo scopo di ciascun parametro e il modo in cui possono influenzare il risultato della formazione:

  • dir_output – Specifica la directory in cui verranno salvati il ​​modello addestrato e i file associati. Questo parametro aiuta a organizzare e archiviare il modello addestrato per un uso futuro.
  • sovrascrivi_dir_output – Determina se sovrascrivere la directory di output se già esiste. Impostandolo su True è possibile riutilizzare la stessa directory senza eliminazione manuale.
  • fare_allenare – Indica se eseguire la formazione. Se impostato su True, il modello verrà addestrato utilizzando il set di dati di addestramento fornito.
  • do_eval e do_predict – Controllare se eseguire rispettivamente attività di valutazione e previsione. In questo caso, entrambi sono impostati su False, il che significa che verrà condotta solo la formazione.
  • valutazione_strategia – Definisce quando deve essere eseguita la valutazione durante la formazione. Impostandolo su "no" significa che la valutazione non verrà eseguita durante la formazione.
  • tasso_di_apprendimento – Specifica la velocità di apprendimento per l'ottimizzatore, influenzando la velocità o la lentezza con cui il modello apprende dai dati.
  • num_treno_epoche – Imposta il numero di volte in cui il modello esaminerà l'intero set di dati di addestramento durante l'addestramento. Un'epoca significa un passaggio completo attraverso tutti i campioni di addestramento.
  • per_dispositivo_treno_dimensione_batch – Determina il numero di campioni elaborati in ciascun batch durante l'addestramento su ciascun dispositivo (ad esempio, GPU). Una dimensione batch più piccola può portare a un addestramento più lento ma più stabile.
  • gradient_accumulation_steps – Controlla la frequenza con cui vengono accumulati i gradienti prima di aggiornare i parametri del modello. Ciò può aiutare a stabilizzare l'addestramento con batch di grandi dimensioni.
  • rimuovi_colonne_nonutilizzate – Specifica se le colonne inutilizzate nel set di dati devono essere rimosse prima dell'elaborazione, ottimizzando l'utilizzo della memoria.

Configurando questi parametri nel file TrainingArguments, puoi influenzare vari aspetti del processo di formazione, come le prestazioni del modello, la velocità di convergenza, l'utilizzo della memoria e il risultato complessivo della formazione in base ai tuoi requisiti e vincoli specifici.

Quando esegui questo codice, addestra il modello di ricompensa in base alla rappresentazione numerica del feedback soggettivo raccolto dagli etichettatori umani. Un modello di ricompensa addestrato assegnerà un punteggio più alto alle risposte LLM che gli esseri umani hanno maggiori probabilità di preferire.

Utilizza il modello di ricompensa per valutare il LLM di base

Ora puoi alimentare la risposta del tuo LLM a questo modello di ricompensa e il punteggio numerico prodotto come output ti informa di quanto bene la risposta del LLM si sta allineando alle preferenze organizzative soggettive incorporate nel modello di ricompensa. Il diagramma seguente illustra questo processo. È possibile utilizzare questo numero come soglia per decidere se la risposta di LLM può essere condivisa o meno con l'utente finale.

Revolutionize Customer Satisfaction with tailored reward models for your business on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Ad esempio, supponiamo di aver creato un modello di ricompensa per evitare contenuti tossici, dannosi o inappropriati. Se un chatbot alimentato da un LLM produce una risposta, il modello di ricompensa può quindi valutare le risposte del chatbot. Le risposte con punteggi superiori a una soglia predeterminata sono ritenute accettabili da condividere con gli utenti. I punteggi inferiori alla soglia indicano che il contenuto dovrebbe essere bloccato. Ciò ci consente di filtrare automaticamente i contenuti del chatbot che non soddisfano gli standard che vogliamo applicare. Per saperne di più, vedere l'allegato taccuino.

ripulire

Per evitare di incorrere in addebiti futuri, elimina tutte le risorse che hai creato. Elimina i modelli SageMaker distribuiti, se presente, e arresta il notebook SageMaker Studio avviato per questo esercizio.

Conclusione

In questo post, abbiamo mostrato come addestrare un modello di ricompensa che prevede un punteggio di preferenza umana dalla risposta del LLM. Ciò viene fatto generando diversi output per ciascun prompt con LLM, quindi chiedendo agli annotatori umani di classificare o assegnare un punteggio alle risposte a ciascun prompt. Il modello di ricompensa viene quindi addestrato per prevedere il punteggio delle preferenze umane dalla risposta del LLM. Dopo aver addestrato il modello di ricompensa, è possibile utilizzare il modello di ricompensa per valutare le risposte di LLM rispetto ai propri standard organizzativi soggettivi.

Man mano che un’organizzazione si evolve, le funzioni di ricompensa devono evolversi insieme al cambiamento dei valori organizzativi e delle aspettative degli utenti. Ciò che definisce un “grande” risultato dell’intelligenza artificiale è soggettivo e trasformante. Le organizzazioni necessitano di pipeline ML flessibili che riqualificano continuamente i modelli di ricompensa con premi aggiornati che riflettono le priorità e le esigenze più recenti. Questo spazio è in continua evoluzione: ottimizzazione diretta delle politiche basate sulle preferenze, modellazione della ricompensa aumentata da strumentie controllo basato su esempi sono altre tecniche alternative popolari per allineare i sistemi di intelligenza artificiale ai valori e agli obiettivi umani.

Ti invitiamo a fare il passo successivo nella personalizzazione delle tue soluzioni IA, confrontandoti con le diverse e soggettive prospettive del feedback umano. Sfrutta il potere della modellazione dei premi per garantire che i tuoi sistemi di intelligenza artificiale siano in sintonia con l'identità del tuo marchio e offrano le esperienze eccezionali che i tuoi clienti meritano. Inizia oggi stesso a perfezionare i tuoi modelli di intelligenza artificiale con Amazon SageMaker e unisciti all'avanguardia delle aziende che stabiliscono nuovi standard nelle interazioni personalizzate con i clienti. Se hai domande o feedback, lasciali nella sezione commenti.


L'autore

Revolutionize Customer Satisfaction with tailored reward models for your business on Amazon SageMaker | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dinesh Kumar Subramani è un Senior Solutions Architect con sede a Edimburgo, Scozia. È specializzato in intelligenza artificiale e apprendimento automatico ed è membro della comunità tecnica di Amazon. Dinesh lavora a stretto contatto con i clienti del governo centrale del Regno Unito per risolvere i loro problemi utilizzando i servizi AWS. Al di fuori del lavoro, Dinesh ama trascorrere del tempo di qualità con la sua famiglia, giocare a scacchi ed esplorare una vasta gamma di musica.

Timestamp:

Di più da Apprendimento automatico di AWS