τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
- Κατασκευάστε τεχνητά μια παρτίδα προτροπών ως σπόρους. (Ξεκινώντας με ένα μικρό αρχικό σύνολο εργασιών που έχουν γραφτεί από τον άνθρωπο)
- Κάθε φορά, βάλτε μερικά Prompts που δημιουργούνται από το seed στο Input για να δημιουργήσετε μερικά παραδείγματα και χρησιμοποιήστε το LLM για να δημιουργήσετε περισσότερα Prompts (Χρησιμοποιώντας το LLM για τη δημιουργία νέων οδηγιών με βάση τις εργασίες του seed).
- Φιλτράρετε αυτά με κακή ποιότητα και διορθώστε αυτά που μπορεί να χρειαστούν (Φιλτράρισμα και τελειοποίηση των οδηγιών που δημιουργούνται)
- Εισαγάγετε όλα τα μηνύματα που δημιουργούνται στο LLM για να λάβετε τα αποτελέσματα εξόδου (Δημιουργία παρουσιών εισόδου-εξόδου για τις νέες οδηγίες)
- Εισαγωγή Έξοδος, δημιουργία δειγμάτων εκπαίδευσης για LLM (Χρησιμοποιώντας το σύνολο δεδομένων που δημιουργείται για να βελτιστοποιήσετε το LLM)
Βήμα 2, το LLM δημιουργεί:
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}")
Βήμα 3 Φίλτρο:
Ορίστε με μη αυτόματο τρόπο ορισμένους κανόνες και φιλτράρετε αυτούς που είναι πολύ κακοί (το LLM μπορεί επίσης να χρησιμοποιηθεί ως διαιτητής)
Σκοπός: εξασφάλιση ποιότητας και ποικιλομορφίας.
- Φιλτράρετε τις οδηγίες που είναι πολύ σύντομες ή πολύ μεγάλες
- Φιλτράρετε οδηγίες που περιέχουν λέξεις-κλειδιά ακατάλληλες για μοντέλα γλώσσας (π.χ. "εικόνα", "γράφημα", "αρχείο", "γραφική παράσταση")
- Φιλτράρετε τις οδηγίες που ξεκινούν με σημεία στίξης
- Φιλτράρετε τις οδηγίες ξεκινώντας με μη αγγλικούς χαρακτήρες
- Φιλτράρετε τις οδηγίες που έχουν υψηλή ομοιότητα ROUGE-L (πάνω από 0,7) με οποιαδήποτε υπάρχουσα εντολή στο χώρο συγκέντρωσης εργασιών