le mie informazioni di contatto
Posta[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
- Costruisci artificialmente un lotto di suggerimenti come semi. (Iniziando con un piccolo insieme di attività scritte da esseri umani)
- Ogni volta, inserisci alcuni prompt generati dal seed in Input per creare esempi di pochi scatti e utilizzare LLM per generare più prompt (utilizzando LLM per generare nuove istruzioni basate sulle attività seed);
- Filtra quelli di scarsa qualità e correggi quelli che possono essere necessari (filtrando e perfezionando le istruzioni generate)
- Immettere tutti i prompt generati in LLM per ottenere i risultati di output (creazione di istanze di input-output per le nuove istruzioni)
- Input Output, creazione di campioni di formazione per LLM (utilizzando il set di dati generato per mettere a punto il LLM)
Passaggio 2, LLM genera:
import random from transformers import AutoTokenizer, AutoModelForCausalLM # Load a pre-trained language model model_name = "bigcode/starcoderbase-1b" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) # Seed tasks (simplified for demonstration) seed_tasks = [ "Write a function to calculate the factorial of a number.", "Create a class to represent a bank account.", "Implement a binary search algorithm." ] def generate_instruction(prompt): inputs = tokenizer(prompt, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=50) return tokenizer.decode(outputs[0], skip_special_tokens=True) def self_instruct(num_iterations): generated_tasks = [] for _ in range(num_iterations): # Sample existing tasks sampled_tasks = random.sample(seed_tasks generated_tasks, min(3, len(seed_tasks) len(generated_tasks))) # Create a prompt for generating new instructions prompt = "Generate a new programming task based on these examples:nn" prompt = "n".join(sampled_tasks) prompt = "nnNew task:" # Generate a new instruction new_task = generate_instruction(prompt) # In practice, you would filter and refine the generated task here generated_tasks.append(new_task) return generated_tasks # Run Self-Instruct new_tasks = self_instruct(5) for i, task in enumerate(new_tasks, 1): print(f"Task {i}: {task}")
Passaggio 3 Filtra:
Definire manualmente alcune regole e filtrare quelle troppo cattive (LLM può anche essere utilizzato come arbitro)
Scopo: garantire qualità e diversità;
- Filtra le istruzioni troppo brevi o troppo lunghe
- Filtra le istruzioni contenenti parole chiave non adatte ai modelli linguistici (ad esempio "immagine", "grafico", "file", "trama")
- Filtra le istruzioni che iniziano con la punteggiatura
- Filtra le istruzioni che iniziano con caratteri non inglesi
- Filtrare le istruzioni che hanno un'elevata similarità ROUGE-L (superiore a 0,7) con qualsiasi istruzione esistente nel task pool