Examples
Here are some practical examples showing how to use LLM Samplers in various scenarios.
Basic Text Generation
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from llm_samplers import TemperatureSampler
# Load model and tokenizer
model_name = "gpt2"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Initialize sampler
sampler = TemperatureSampler(temperature=0.7)
# Setup input
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
# Generate text
max_length = 50
output_ids = sampler.sample(model, input_ids, max_new_tokens=max_length)
# Decode and print result
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(generated_text)
Comparing Different Samplers
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from llm_samplers import (
TemperatureSampler,
TopKSampler,
TopPSampler,
MinPSampler
)
# Load model and tokenizer
model_name = "gpt2-medium"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Initialize samplers
samplers = {
"Temperature (0.7)": TemperatureSampler(temperature=0.7),
"Top-K (40)": TopKSampler(k=40),
"Top-P (0.95)": TopPSampler(p=0.95),
"Min-P (0.05)": MinPSampler(min_p=0.05),
}
# Setup input
input_text = "The future of artificial intelligence is"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
# Generate text with each sampler
max_length = 100
results = {}
for name, sampler in samplers.items():
output_ids = sampler.sample(model, input_ids, max_new_tokens=max_length)
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
results[name] = generated_text
# Print results
for name, text in results.items():
print(f"\n=== {name} ===")
print(text)
Customizing Generation Parameters
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from llm_samplers import TopPSampler
# Load model and tokenizer
model_name = "gpt2-large"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Initialize sampler with custom parameters
sampler = TopPSampler(
p=0.92,
temperature=0.8, # You can combine Top-P with temperature
repetition_penalty=1.2 # Penalize repeated tokens
)
# Setup input
input_text = "Write a short poem about"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
# Generate with custom parameters
output_ids = sampler.sample(
model,
input_ids,
max_new_tokens=150,
min_new_tokens=50, # Force minimum generation length
no_repeat_ngram_size=3 # Prevent repeating 3-grams
)
# Decode and print result
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(generated_text)
Using Anti-Slop for Higher Quality
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from llm_samplers import AntiSlopSampler
# Load model and tokenizer
model_name = "gpt2-xl"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Initialize Anti-Slop sampler
sampler = AntiSlopSampler(
word_level=True, # Enable word-level backtracking
backtrack_threshold=0.4, # Threshold for backtracking
max_retries=3 # Maximum number of retries
)
# Setup input
input_text = "Explain the concept of quantum computing in simple terms:"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
# Generate text
output_ids = sampler.sample(model, input_ids, max_new_tokens=200)
# Decode and print result
generated_text = tokenizer.decode(output_ids[0], skip_special_tokens=True)
print(generated_text)