Mi informacion de contacto
Correo[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
- Construya artificialmente un lote de indicaciones como semillas. (Comenzando con un pequeño conjunto inicial de tareas escritas por humanos)
- Cada vez, coloque algunas indicaciones generadas por la semilla en Entrada para crear ejemplos breves y use LLM para generar más indicaciones (usando LLM para generar nuevas instrucciones basadas en las tareas semilla);
- Filtrar los de mala calidad y corregir los que puedan ser necesarios (Filtrar y refinar las instrucciones generadas)
- Ingrese todas las indicaciones generadas en LLM para obtener los resultados de salida (Creación de instancias de entrada y salida para las nuevas instrucciones);
- Entrada Salida, creación de muestras de entrenamiento para LLM (uso del conjunto de datos generado para ajustar el LLM)
Paso 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}")
Paso 3 Filtrar:
Defina manualmente algunas reglas y filtre las que sean demasiado malas (LLM también se puede utilizar como árbitro);
Finalidad: asegurar la calidad y la diversidad;
- Filtrar las instrucciones que sean demasiado cortas o demasiado largas
- Filtrar instrucciones que contengan palabras clave no adecuadas para los modelos de lenguaje (por ejemplo, "imagen", "gráfico", "archivo", "trama")
- Filtrar instrucciones que comiencen con puntuación
- Filtrar instrucciones que comiencen con caracteres no ingleses
- Filtrar instrucciones que tengan una alta similitud ROUGE-L (por encima de 0,7) con cualquier instrucción existente en el grupo de tareas