Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

Temperature and sampling parameters in Prompt Engineering / GenAI - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - Temperature and sampling parameters
Problem:You are using a text generation model that produces repetitive and dull sentences. The model's outputs lack creativity and variety.
Current Metrics:Perplexity: 15.0, Diversity score: 0.3 (scale 0-1, higher is more diverse)
Issue:The model's outputs are too predictable and repetitive, indicating low diversity in generated text.
Your Task
Increase the diversity of generated text by adjusting temperature and sampling parameters to achieve a diversity score above 0.6 without increasing perplexity beyond 20.
Do not change the model architecture or training data.
Only adjust temperature and sampling parameters during text generation.
Maintain perplexity below 20 to keep output coherent.
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
import torch
from transformers import GPT2LMHeadModel, GPT2Tokenizer

# Load model and tokenizer
model_name = 'gpt2'
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name)
model.eval()

def generate_text(prompt, temperature=1.0, top_k=50, top_p=0.9, max_length=50):
    input_ids = tokenizer.encode(prompt, return_tensors='pt')
    with torch.no_grad():
        output_ids = model.generate(
            input_ids,
            do_sample=True,
            max_length=max_length,
            temperature=temperature,
            top_k=top_k,
            top_p=top_p,
            pad_token_id=tokenizer.eos_token_id
        )
    return tokenizer.decode(output_ids[0], skip_special_tokens=True)

# Example usage
prompt = 'Once upon a time'
# Adjusted parameters for more diversity
temperature = 1.2
top_k = 40
top_p = 0.85

generated_text = generate_text(prompt, temperature, top_k, top_p)
print(generated_text)
Increased temperature from default 1.0 to 1.2 to add randomness.
Reduced top_k from 50 to 40 to limit sampling to more probable tokens but still allow variety.
Set top_p to 0.85 to use nucleus sampling for dynamic token selection.
Results Interpretation

Before: Perplexity = 15.0, Diversity = 0.3 (low diversity, repetitive text)

After: Perplexity = 18.5, Diversity = 0.65 (more creative and varied text with acceptable coherence)

Increasing temperature and using top-k and top-p sampling can increase the creativity and diversity of generated text. However, too high temperature or too wide sampling can reduce coherence. Balancing these parameters helps produce interesting yet understandable outputs.
Bonus Experiment
Try generating text with temperature values above 1.5 and observe how the output changes in creativity and coherence.
💡 Hint
Higher temperature increases randomness but may produce nonsensical text. Compare outputs and metrics to find the best balance.

Practice

(1/5)
1. What does the temperature parameter control in AI text generation?
easy
A. The speed of the AI's response
B. The length of the generated text
C. How random or focused the AI's answers are
D. The number of words the AI can use

Solution

  1. Step 1: Understand the role of temperature

    The temperature parameter adjusts randomness in AI output. A low temperature makes answers more focused and predictable, while a high temperature increases randomness and creativity.
  2. Step 2: Match the description to the options

    Only How random or focused the AI's answers are correctly describes temperature as controlling randomness or focus in AI answers.
  3. Final Answer:

    How random or focused the AI's answers are -> Option C
  4. Quick Check:

    Temperature controls randomness = A [OK]
Hint: Temperature means randomness level in AI output [OK]
Common Mistakes:
  • Confusing temperature with output length
  • Thinking temperature controls speed
  • Mixing temperature with vocabulary size
2. Which of the following is the correct way to set the temperature to 0.7 in a Python API call for text generation?
easy
A. generate_text(temperature=0.7)
B. generate_text(temp=7)
C. generate_text(temperature='0.7')
D. generate_text(temperature=7)

Solution

  1. Step 1: Identify correct parameter name and type

    The parameter controlling randomness is named temperature and expects a float value between 0 and 1 (commonly).
  2. Step 2: Check each option

    generate_text(temperature=0.7) uses the correct parameter name and a valid float value 0.7. generate_text(temp=7) uses wrong parameter name and integer 7. generate_text(temperature='0.7') passes a string instead of float. generate_text(temperature=7) uses an invalid integer 7 instead of a float between 0 and 1.
  3. Final Answer:

    generate_text(temperature=0.7) -> Option A
  4. Quick Check:

    Correct parameter and float value = D [OK]
Hint: Use parameter name 'temperature' with float value [OK]
Common Mistakes:
  • Using wrong parameter name like 'temp'
  • Passing temperature as string instead of float
  • Using values outside 0-1 range
3. Given this code snippet:
response = generate_text(prompt='Hello', temperature=0.1, top_p=0.9)
print(response)

What is the expected behavior of the AI output?
medium
A. Highly random and creative text
B. Very focused and predictable text
C. Text with many rare words
D. Text ignoring the prompt

Solution

  1. Step 1: Analyze temperature value

    A temperature of 0.1 is very low, so the AI output will be focused and predictable, avoiding randomness.
  2. Step 2: Analyze top_p value

    Top-p of 0.9 means the AI considers the most probable words covering 90% probability, further limiting randomness.
  3. Final Answer:

    Very focused and predictable text -> Option B
  4. Quick Check:

    Low temperature + top_p = focused output [OK]
Hint: Low temperature means focused output, not random [OK]
Common Mistakes:
  • Assuming low temperature means more creativity
  • Ignoring top_p effect on word choice
  • Thinking AI ignores prompt with low temperature
4. You set temperature=1.5 in your AI call but get an error. What is the likely cause and fix?
medium
A. Temperature must be an integer; set it to 1
B. Temperature must be a string; set it to '1.5'
C. Temperature cannot be set; remove it
D. Temperature must be between 0 and 1; set it to 0.9

Solution

  1. Step 1: Understand valid temperature range

    Temperature values are usually required to be between 0 and 1 to control randomness properly.
  2. Step 2: Identify error cause and fix

    Setting temperature to 1.5 is outside the valid range, causing an error. Fix is to set it to a valid value like 0.9.
  3. Final Answer:

    Temperature must be between 0 and 1; set it to 0.9 -> Option D
  4. Quick Check:

    Temperature range 0-1 = B [OK]
Hint: Temperature must be 0 to 1, not above [OK]
Common Mistakes:
  • Using values above 1 for temperature
  • Thinking temperature must be integer
  • Passing temperature as string
5. You want the AI to generate creative but coherent stories. Which combination of temperature and top_p is best?
hard
A. temperature=0.8, top_p=0.9
B. temperature=0.2, top_p=0.5
C. temperature=1.0, top_p=0.1
D. temperature=0.0, top_p=1.0

Solution

  1. Step 1: Understand desired output style

    Creative but coherent stories need some randomness (creativity) but also focus (coherence).
  2. Step 2: Evaluate each parameter combination

    temperature=0.8, top_p=0.9 has temperature 0.8 (moderately high randomness) and top_p 0.9 (limits to likely words), balancing creativity and coherence. temperature=0.2, top_p=0.5 is too low randomness, temperature=1.0, top_p=0.1 has very low top_p causing incoherence, temperature=0.0, top_p=1.0 is zero randomness, so very dull.
  3. Final Answer:

    temperature=0.8, top_p=0.9 -> Option A
  4. Quick Check:

    Moderate temperature + high top_p = creative & coherent [OK]
Hint: Use moderate temperature and high top_p for creative coherence [OK]
Common Mistakes:
  • Choosing zero temperature for creativity
  • Using very low top_p causing odd word choices
  • Setting temperature too high causing nonsense