Prompt Distillation - Tinker Documentation

Prompt Distillation

Prompt Distillation -- also known as context distillation -- is a training method that can "make an LLM internalize the prompt into its parameters". In this method, the model is fine-tuned to behave as if it had been provided with a long and complex prompt, even without actually accessing it.

For example, we want to internalize the following target prompt ppp:

Classify the language of the provided text into these labels: en, fr, zh, ja ...

After prompt distillation, the LLM will respond with only the language label after receiving a query without seeing the prompt ppp, e.g.,

Query: 一生、バンドしてくれる?
Response: ja

At a high level, this method involves two stages:

  1. Creating data for distillation: A teacher language model uses ppp to generate responses rrr on a set of queries qqq; i.e. r∼teacher(⋅∣p,q)r \sim \text{teacher}(\cdot|p, q)r∼teacher(⋅∣p,q)
  2. Training the student model: A student model is fine-tuned to predict the responses rrr to the query qqq but without accessing ppp, hence learning to behave as if the target prompt is in its context; i.e. student(⋅∣q)\text{student}(\cdot | q)student(⋅∣q) should predict rrr

Example

The Tinker Cookbook provides a prompt distillation recipe tailored for a language classification task. The objective is straightforward: given a text query, the model should predict a two-character code corresponding to the language of the input. The set of possible labels is:

ar (Arabic), de (German), el (Greek), en (English), es (Spanish), fr (French), hi (Hindi), ru (Russian), tr (Turkish), ur (Urdu), vi (Vietnamese), zh (Chinese - Simplified), ot (Other/Unknown).

The recipe in create_data.py also includes handling strategies for inputs containing code, numerical content, or multiple languages.

In the example below, the same model (Qwen/Qwen3.6-35B-A3B) is used as both teacher and student, though in general they need not be identical.

Step 1: Generate Training Data

Generate prompt distillation data using the teacher model with create_data.py:

mkdir -p /tmp/tinker-datasets
python -m tinker_cookbook.recipes.prompt_distillation.create_data 
  output_file=/tmp/tinker-datasets/prompt_distillation_lang.jsonl

This command will:

Step 2: Train the Student Model

Fine-tune a student model on the distillation data using train.py:

python -m tinker_cookbook.recipes.prompt_distillation.train

The training script will:

Step 3: Test Your Model

Once training is complete, you can test your distilled model by sampling from the trained model to verify its performance on language classification tasks.

Advanced Configuration

The prompt distillation recipe can be customized for different scenarios:

[1] Askell, A., Bai, Y., Chen, A., Drain, D., Ganguli, D., Henighan, T., Jones, A., Joseph, N., Mann, B., DasSarma, N., Elhage, N., Hatfield-Dodds, Z., Hernandez, D., Kernion, J., Ndousse, K., Olsson, C., Amodei, D., Brown, T., Clark, J., McCandlish, S., Olah, C., & Kaplan, J. (2021). A general language assistant as a laboratory for alignment. arXiv preprint arXiv:2112.00861.

[2] Snell, C., Klein, D., & Zhong, R. (2022). Learning by distilling context. arXiv preprint arXiv:2209.15189.