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.
- Gestione progetti Azure Un’analisi approfondita sulle operazioni e la distribuzione efficiente
- Ricerca di similarità per l’incorporamento una rivoluzione nel campo dell’analisi dei dati
- Ridimensionare immagini al volo
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.