COLORS.chat network
colorschat.com · YouTube colors.chat · Order now terminal.glass · Deploy
🧙 Microsoft Research · May 2023

WizardLM: Evol-Instruct and the
Complexity Problem

Most instruction-tuned models are trained on human-written prompts — which cluster around simple, common requests. WizardLM asked a different question: what if you used an LLM to automatically rewrite those instructions into progressively more complex variants, then trained on the harder versions? The result was a model that outperformed ChatGPT on complex instruction-following tasks despite being a fraction of the size. Run it locally — no cloud, no API fees, no data leaving your machine.

🏢 Creator: Microsoft Research
📅 Released: May 2023 (v1); Dec 2023 (v2)
⚖️ Licence: Llama 2 Community (non-commercial)
🧠 Base: Llama 2 (WizardLM-2 uses Mistral/Mixtral)
📏 Context: 4K (v1) · 32K (WizardLM-2)
💾 Min RAM: 8GB (7B) · 48GB (70B)
⚠️
Licence: non-commercial only

WizardLM versions based on Llama 2 inherit the Llama 2 Community Licence, which prohibits commercial use without Meta's authorisation (required for services with over 700 million monthly active users). For most individual researchers, hobbyists, and small businesses this is not a practical restriction — but if you are building a product, use Nous Hermes 2 (Apache 2.0) or OpenChat 3.5 (Apache 2.0) instead.

8.01
MT-Bench (WizardLM-2 7B)
7B–70B
Available sizes
250K
Evol-Instruct training pairs
32K
Context window (WizardLM-2)
5
Evolution depth rounds
88.3%
Win rate vs ChatGPT (complex tasks)

Evol-Instruct: The Core Innovation

The central insight behind WizardLM is that the complexity distribution of human-written instructions is heavily skewed toward simple tasks. When you train only on those, you get a model that handles easy requests well but struggles with multi-step, technically demanding prompts. Evol-Instruct solves this by using an LLM (GPT-4 in the original research) to automatically transform simple instructions into harder variants through a defined evolution process.

Step 1
Seed Instructions
Start with a set of relatively simple human-written instructions — similar to the Alpaca 52K dataset.
Step 2
In-Depth Evolution
Rewrite each instruction to be more complex: add constraints, increase reasoning steps, require domain expertise, or deepen specificity.
Step 3
In-Breadth Evolution
Generate entirely new instructions that cover different topics — expanding coverage rather than deepening existing ones.
Step 4
Filter & Score
Remove evolutions that are too similar to the seed, too short, or that the LLM refuses to answer. Keep only substantive improvements.
Step 5
Repeat (5 rounds)
Apply evolution repeatedly. After 5 rounds, the 52K seed becomes ~250K instruction pairs spanning a wide complexity range.

The key result: models trained on the Evol-Instruct dataset outperform models trained on the original simple instructions on complex tasks, even when total training data volume is similar. The difficulty distribution of training data matters as much as its volume.

🧙
Why this matters for local use

If you are running a 7B model locally and need it to handle genuinely complex tasks — multi-step code generation, structured analysis, technical writing with specific constraints — WizardLM's training approach gives it an edge over comparably-sized models trained on simpler instruction sets. You get more reasoning capability per parameter than a naive fine-tune.

Version History

May 2023
WizardLM 7B v1.0
First release. Fine-tuned Llama 1 (7B) on 250K Evol-Instruct pairs. Demonstrated that evolved instructions produce better complex-task performance than simple instruction sets. Showed 88.3% win rate over ChatGPT on complex instructions in human evaluation.
June 2023
WizardLM 13B v1.1 + 30B
Extended to larger Llama 1 bases. 30B variant competitive with early GPT-4 on structured task benchmarks. Evol-Instruct refined to include more code-focused evolutions.
August 2023
WizardLM 70B v1.0 (Llama 2)
Rebased on Llama 2. 70B variant achieves strong scores on TruthfulQA, MMLU, and HumanEval. The 70B is the last version to use Llama 2 for the largest size. Context window: 4K.
October 2023
WizardCoder Python 34B
Specialised code variant using Code Llama 34B as base. Achieves 73.2% on HumanEval — briefly the best-performing open-source code model at that size. This is a separate model family from chat-focused WizardLM.
April 2024
WizardLM-2 (8x22B, 70B, 7B) ★ Current
Major architecture shift. Uses Mistral 7B (7B variant) and Mixtral 8x22B (largest variant) as bases instead of Llama. Context extended to 32K. Competitive with GPT-4 on several benchmarks. The 7B variant scores 8.01 on MT-Bench. Note: Microsoft briefly withdrew WizardLM-2 from release for safety review before reposting. Mistral-based variants have more permissive licensing.

Model Comparison

Model Base Size MT-Bench Context RAM (INT4) Licence
WizardLM 7B v1 Llama 1 7B N/A 2K 5–6 GB Non-commercial
WizardLM 13B v1.2 Llama 2 13B 7.20 4K 9–10 GB Non-commercial
WizardLM 70B v1 Llama 2 70B 7.71 4K 40–48 GB Non-commercial
WizardLM-2 7B ★ Mistral 7B 7B 8.01 32K 5–6 GB Apache 2.0*
WizardLM-2 70B Llama 2 70B ~8.7 32K 40–48 GB Non-commercial
WizardLM-2 8x22B Mixtral 141B MoE ~9.0 64K ~80 GB Apache 2.0*

* WizardLM-2 Mistral/Mixtral-based variants use Apache 2.0. Llama 2-based variants use the non-commercial Llama 2 Community Licence. MT-Bench scores from LMSYS leaderboard.

WizardLM vs Comparable Models

Model MT-Bench Complex Tasks Context Licence Best Fit
WizardLM-2 7B 8.01 Strong 32K Apache 2.0 Multi-step reasoning, technical tasks
OpenChat 3.5 7.81 Good 8K Apache 2.0 Fast, conversational, commercial use
Starling 7B 8.09 Good 8K Apache 2.0 Helpfulness, conversational quality
Nous Hermes 2 7.54 Strong 4K Apache 2.0 Commercial use, structured output
Vicuna 1.5 7.92 Moderate 4K Non-commercial Conversational, well-rounded
Llama 3.1 8B Instruct 8.22 Strong 128K Llama 3.1 (broadly usable) Long-context, modern baseline
ℹ️
WizardLM-2 7B vs Llama 3.1 8B in 2025

WizardLM-2 7B was released in April 2024 and scores 8.01 on MT-Bench — impressive for its size. However, Llama 3.1 8B Instruct (July 2024) scores 8.22 and offers a 128K context window, broader language support, and a more permissive licence. For most new deployments in 2025, Llama 3.1 8B is the stronger default. WizardLM-2 7B remains relevant if you specifically want the Evol-Instruct training methodology's characteristics on complex instruction tasks, or if you are already using Mistral-family models and want consistency.

Where WizardLM Excels

🔢

Multi-step reasoning

Tasks requiring sequential reasoning steps: "Given X, derive Y, then use Y to evaluate Z under constraints A and B." The Evol-Instruct training specifically targets this pattern.

📐

Constrained instruction following

Instructions with multiple simultaneous constraints: format requirements, content restrictions, length limits, and specific terminology — all honoured together.

💻

Technical writing with requirements

Documentation, specifications, and technical content where you provide detailed requirements and expect them to be fully addressed — not just partially.

🧩

Structured data tasks

Generating JSON, YAML, or other structured output that must conform to a schema. WizardLM handles format constraints well due to diversity of evolved training examples.

📊

Analysis tasks

Breaking down a complex problem, examining it from multiple angles, and providing a structured conclusion. The model was specifically trained on this instruction pattern.

🔬

Research assistance

Summarising literature, identifying gaps in arguments, comparing multiple sources against a set of criteria. Benefits from the model's exposure to expert-level instruction patterns.

Running WizardLM Locally

Via Ollama (recommended)

bash — Ollama
# Install Ollama first: https://ollama.com

# WizardLM-2 7B — recommended starting point
ollama pull wizardlm2:7b

# WizardLM-2 8x22B — requires ~80GB RAM (MoE architecture)
ollama pull wizardlm2:8x22b

# Start a chat session
ollama run wizardlm2:7b

Python API via Ollama

python — Ollama Python client
import ollama

# WizardLM-2 handles complex, multi-part instructions well
response = ollama.chat(
    model='wizardlm2:7b',
    messages=[{
        'role': 'user',
        'content': """Analyse the following business scenario and provide:
1. A SWOT analysis in a 2x2 grid (use ASCII art)
2. Three strategic recommendations, each with:
   - The recommendation (max 20 words)
   - Rationale (2-3 sentences)
   - Key risk and mitigation
   - Success metric
3. A prioritisation matrix ranking the recommendations by 
   impact vs implementation difficulty

Scenario: A regional law firm with 50 lawyers is considering 
launching an AI-assisted contract review service for SMEs."""
    }]
)

print(response['message']['content'])

OpenAI-compatible API

python — OpenAI-compatible (Ollama serves on port 11434)
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"
)

# System prompt tuning for WizardLM-2
response = client.chat.completions.create(
    model="wizardlm2:7b",
    messages=[
        {
            "role": "system",
            "content": "You are a precise technical assistant. Follow all instructions exactly. When given a numbered list of requirements, address each one explicitly and in order."
        },
        {
            "role": "user",
            "content": "Your instruction here..."
        }
    ],
    temperature=0.7
)

print(response.choices[0].message.content)

Getting the Best from WizardLM-2

Use numbered requirements

WizardLM-2 was trained on instructions with explicit numbered constraints. When you have multiple requirements, list them explicitly rather than embedding them in prose. The model is more likely to address each requirement in turn.

prompt — numbered requirements pattern
# Less effective:
"Write a short product description for a standing desk 
that mentions the height range and is suitable for LinkedIn."

# More effective (mirrors Evol-Instruct patterns):
"Write a product description for an adjustable standing desk. 
Requirements:
1. Length: exactly 80–100 words
2. Must include: height range (65–130 cm), 
   electric motor speed, and warranty period (5 years)
3. Tone: professional but approachable; suitable for LinkedIn
4. End with a single call-to-action sentence
5. Do not use the words 'innovative' or 'revolutionary'"

Specify output structure explicitly

prompt — structured output
"Evaluate the following argument for logical consistency. 
Return your response as valid JSON with this exact structure:
{
  'verdict': 'valid' | 'invalid' | 'partially_valid',
  'premises': [{'claim': str, 'sound': bool, 'note': str}],
  'logical_gaps': [str],
  'overall_score': int (1-10),
  'one_line_summary': str
}

Argument: [paste argument here]"

Honest Assessment

✓ Genuine Strengths

  • Evol-Instruct training genuinely improves complex instruction handling vs naive fine-tunes
  • WizardLM-2 7B scores 8.01 MT-Bench — strong for its size class
  • 32K context in WizardLM-2 (up from 4K in v1)
  • Mistral-based WizardLM-2 variants under Apache 2.0
  • Handles simultaneous constraints better than many comparable models
  • WizardCoder variants strong for code tasks
  • Available via Ollama — simple local deployment
  • Active research lineage — Evol-Instruct concepts adopted widely

✗ Real Limitations

  • Llama 2-based variants (most sizes) are non-commercial
  • Superseded in overall benchmarks by Llama 3.1 8B for most use cases
  • WizardLM-2 was briefly withdrawn for safety review — history worth noting
  • 4K context in older versions is very limiting
  • 70B and 8x22B variants require substantial hardware (40–80GB RAM)
  • Less active development compared to Llama 3 or Mistral families in 2025
  • Evol-Instruct data generated by GPT-4 — inherits any biases or errors from that process
  • Not designed for multilingual use; primarily English

🧙 When to choose WizardLM vs alternatives

You need complex multi-step instruction following on a 7B model
→ Try WizardLM-2 7B and compare to Llama 3.1 8B on your specific task
Commercial use required
→ Nous Hermes 2 (Apache 2.0) or OpenChat 3.5 (Apache 2.0)
Long-context tasks (>8K tokens)
→ Llama 3.1 8B (128K context) beats WizardLM-2's 32K for most long-doc tasks
Code generation specifically
→ WizardCoder 34B or consider OpenChat with DeepSeek Coder
Best 7B conversation quality
→ Starling 7B (8.09 MT-Bench, Apache 2.0) or OpenChat 3.5
Researching training methodology
→ Read the original WizardLM paper; Evol-Instruct concepts are widely cited