Perfezionare LLM su Slack Messages

Perfezionare la comunicazione LLM su Slack Messages

Nota dell’editore: Eli Chen è relatore per ODSC West dal 30 ottobre al 2 novembre. Assicurati di dare un’occhiata alla sua presentazione, “Affinamento dei LLM su messaggi di Slack,” lì!

L’affinamento dei LLM è estremamente facile, grazie alle librerie di HuggingFace. Questo tutorial ti guiderà nell’adattamento di un modello pre-addestrato per generare testo che emula conversazioni di chat da un canale Slack. Dovresti essere a tuo agio con Python per trarre il massimo da questa guida.

Ottenere i dati

Per prima cosa, ottieni i dati da Slack utilizzando l’API. Prima di iniziare, assicurati di avere a portata di mano il token del tuo bot, l’ID utente e l’ID del canale. Se non sei sicuro di come acquisirli, qui c’è una guida rapida.

Inizializza il WebClient di Slack e definisci una funzione, fetch_messages, per recuperare specifiche chat filtrate tramite ID utente.

token = "YOUR_SLACK_BOT_TOKEN"channel_id = "CHANNEL_ID"user_id = "USER_ID"client = WebClient(token=token)def fetch_messages(channel_id):    messages = []    cursor = None    while True:        try:            response = client.conversations_history(channel=channel_id, cursor=cursor)            assert response["ok"]            for message in response['messages']:                if 'user' in message and message['user'] == user_id:                    messages.append(message['text'])            cursor = response.get('response_metadata',{}).get('next_cursor')            if not cursor:                break        except SlackApiError as e:            print(f"Errore: {e.response['error']}")            break    return messagesall_messages = fetch_messages(channel_id)

La funzione fetch_messages restituisce una lista all_messages contenente i messaggi dall’utente specificato nel canale indicato per affinare i LLMs.

EVENTO – ODSC West 2023

Conferenza In-Person e Virtuale

30 ottobre al 2 novembre

Unisciti a noi per un approfondimento sulle ultime tendenze, strumenti e tecniche di data science e intelligenza artificiale, dai LLM all’analisi dei dati e dal machine learning all’IA responsabile.

Affinamento del modello

Dopo aver raccolto i messaggi, il passaggio successivo è affinare un modello di linguaggio pre-addestrato per imitare i specifici modelli linguistici di questo utente in particolare. Il codice di seguito utilizza la libreria transformers di HuggingFace per semplificare questo processo.

# Inizializza il tokenizer e il modellotokenizer = AutoTokenizer.from_pretrained("gpt2")tokenizer.pad_token = tokenizer.eos_token  # Imposta il token di padding su eos_tokenmodel = AutoModelForCausalLM.from_pretrained("gpt2")# Tokenizza le stringhe e crea un oggetto Datasettokens = tokenizer(all_messages, padding=True, truncation=True, return_tensors="pt")dataset = Dataset.from_dict(tokens)# Crea il data collatordata_collator = DataCollatorForLanguageModeling(    tokenizer=tokenizer,    mlm=False,)# Imposta gli argomenti dell'addestramento(training_args = TrainingArguments(    output_dir="./output",    learning_rate=2e-4,)# Inizializza Trainertrainer = Trainer(    model=model,    args=training_args,    data_collator=data_collator,    train_dataset=dataset,)# Affinamentotrainer.train()

Eseguendo questo codice, affinerai un modello GPT-2 per generare testo che imita i messaggi dell’utente. Sentiti libero di sperimentare con modelli e tassi di apprendimento diversi per adattarli meglio alle tue esigenze.

Testing Your Model

Dopo il raffinamento, vorrai testare la capacità del modello di imitare i messaggi del tuo utente. Il codice di seguito mostra come generare del testo basato sul prompt “Ciao”.

# Genera del testoinput_text = "Ciao "input_ids = tokenizer.encode(input_text, return_tensors="pt")# Genera un esempio di testooutput = model.generate(input_ids, max_length=50, num_return_sequences=1, temperature=1.0)# Decodifica e stampa il testo generatogenerated_text = tokenizer.decode(output[0], skip_special_tokens=True)print(generated_text)

Per valutazioni più rigorose, considera l’aggiunta di metriche di performance come il punteggio BLEU o la perplessità.

Conclusion

In conclusione, hai eseguito i passaggi di base per il raffinamento di un modello linguistico pre-addestrato sui messaggi di un utente su Slack. Questa è solo un’introduzione e ci sono numerose strade per migliorare, tra cui il download incrementale, il raffinamento degli iperparametri, lo sviluppo di modelli conversazionali per utente e l’incorporazione di metodi di valutazione più approfonditi per il bias.

Per approfondire, unisciti a me al mio talk ODSC West. Discuterò esperienze di addestramento del mondo reale, comportamenti interessanti e strani che abbiamo osservato nel corso di un anno e condividerò informazioni su rischi associati e strategie di mitigazione.

Informazioni sull’autore

Eli è il CTO e Co-Fondatore di Credo AI. Ha guidato team nella costruzione di software sicuri e scalabili presso aziende come Netflix e Twitter. Eli ha una passione per comprendere come funzionano le cose e risolvere problemi complessi. Che si tratti di utilizzare la crittografia per proteggere i sistemi software o progettare architetture di sistemi distribuiti, è sempre entusiasta di imparare e affrontare nuove sfide. Eli è laureato in Ingegneria Elettrica e Informatica presso U.C. Berkeley.