Views
No views yet
steering_config.json with default parametersalpha_max: 500.0 (maximum steering strength)max_entropy: 10.0 (entropy normalization factor)pip install torch transformers huggingface_hubstandalone_steering_inference.py module is included in this repository.1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3# Download the repository (includes standalone_steering_inference.py)
4from huggingface_hub import snapshot_download
5import sys
6repo_path = snapshot_download(repo_id="YOUR_HF_USERNAME/qwen3-8b-gold-steered-teacher-500")
7sys.path.insert(0, repo_path)
8
9from standalone_steering_inference import (
10 load_steering_vectors,
11 load_gate,
12 EntropyTracker,
13 MultiLayerSteeringHook
14)
15
16# Load model and tokenizer
17model = AutoModelForCausalLM.from_pretrained(
18 "YOUR_HF_USERNAME/qwen3-8b-gold-steered-teacher-500",
19 torch_dtype="auto",
20 device_map="auto",
21 trust_remote_code=True
22)
23tokenizer = AutoTokenizer.from_pretrained(
24 "YOUR_HF_USERNAME/qwen3-8b-gold-steered-teacher-500",
25 trust_remote_code=True
26)
27
28# Load steering components from the repository
29model_path = model.config._name_or_path # Or your local path
30
31steering_vectors, _ = load_steering_vectors(
32 f"{model_path}/steering_vectors",
33 device="cpu"
34)
35gate = load_gate(f"{model_path}/adaptive_gate.pt", device="cpu")
36entropy_tracker = EntropyTracker(max_entropy=10.0)
37
38# Create multi-layer steering hook
39lm_head = model.get_output_embeddings()
40multi_hook = MultiLayerSteeringHook(
41 steering_vectors,
42 gate,
43 entropy_tracker,
44 lm_head,
45 alpha_max=500.0
46)
47
48# Register hooks on model layers
49layers = model.model.layers
50hook_handles = []
51for layer_idx in steering_vectors.keys():
52 if layer_idx < len(layers):
53 hook_fn = multi_hook.create_hook(layer_idx)
54 handle = layers[layer_idx].register_forward_hook(hook_fn)
55 hook_handles.append(handle)
56
57print(f"Registered {len(hook_handles)} steering hooks")
58
59# Generate with steering
60prompt = "Solve this problem: What is 2+2?"
61inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
62
63# Reset entropy tracker for new sequence
64entropy_tracker.reset(initial_token_count=inputs["input_ids"].shape[-1])
65
66# Generate
67outputs = model.generate(
68 **inputs,
69 max_new_tokens=512,
70 temperature=0.7,
71 do_sample=True
72)
73
74response = tokenizer.decode(outputs[0], skip_special_tokens=True)
75print(response)
76
77# Cleanup hooks when done
78for handle in hook_handles:
79 handle.remove()1# Modify alpha_max to control steering intensity
2# Higher values = stronger steering
3multi_hook = MultiLayerSteeringHook(
4 steering_vectors,
5 gate,
6 entropy_tracker,
7 lm_head,
8 alpha_max=100.0 # Increase for stronger effect
9)(1 - lambda) * alpha_max1@misc{steered_teacher_model,
2 title={Adaptive Steering with MLP Gate for Language Models},
3 author={Your Name},
4 year={2026},
5 publisher={Hugging Face},
6 howpublished={\url{https://huggingface.co/YOUR_USERNAME/qwen3-8b-gold-steered-teacher-500}}
7}