प्रौद्योगिकी साझेदारी

Self-Instruct constructing Prompt इत्यस्य उदाहरणम्

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

  1. बीजरूपेण प्रॉम्प्ट्-समूहस्य कृत्रिमरूपेण निर्माणं कुर्वन्तु । (मानवलिखितकार्यस्य लघुबीजसमूहात् आरभ्य)
  2. प्रत्येकं समये, कतिपय-शॉट्-उदाहरणानि निर्मातुं बीजेन उत्पन्नानि कानिचन Prompts-इत्येतत् Input मध्ये स्थापयन्तु, अपि च अधिकानि Prompts-जननार्थं LLM-इत्यस्य उपयोगं कुर्वन्तु (बीज-कार्यानाम् आधारेण नूतनानि निर्देशानि जनयितुं LLM-इत्यस्य उपयोगः);
  3. दुर्गुणवत्तायुक्तानि छानयन्तु, येषां आवश्यकता भवितुम् अर्हति तान् सम्यक् कुर्वन्तु (जनितनिर्देशान् छानयित्वा परिष्कृत्य);
  4. आउटपुट् परिणामान् प्राप्तुं LLM मध्ये सर्वाणि उत्पन्नानि Prompts प्रविशन्तु (नवीननिर्देशानां कृते input-output instances निर्मातुं);
  5. Input Output, 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}")

Step 3 फ़िल्टर: 1.1.

केचन नियमाः हस्तचलितरूपेण परिभाषयन्तु, ये अतिदुष्टाः सन्ति तान् छानयन्तु (LLM रेफरीरूपेण अपि उपयोक्तुं शक्यते)

उद्देश्यम् : गुणवत्तां विविधतां च सुनिश्चितं कर्तुं;

  • अतिलघुः अतिदीर्घः वा निर्देशाः छानन्तु
  • भाषाप्रतिरूपस्य कृते अनुपयुक्ताः कीवर्डयुक्ताः निर्देशाः छानयन्तु (उदा. "चित्रम्", "ग्राफः", "सञ्चिका", "प्लॉट्")
  • विरामचिह्नात् आरभ्य निर्देशान् छानयन्तु
  • अ-आङ्ग्लवर्णैः आरभ्य निर्देशान् छानयन्तु
  • कार्यपूले विद्यमानस्य कस्यचित् निर्देशस्य सह उच्चतरं ROUGE-L सादृश्यं (0.7 उपरि) येषां निर्देशानां फ़िल्टरं कुर्वन्तु