Views
No views yet
dola_layers="high")dola_layers="low")DoLa functionality present in transformers<4.53.0.dola_layers (str or List[int], optional):
Which earlier layers to contrast with the final layer. Can be:"low" — lower half of layers (recommended for long answers)"high" — upper half of layers (recommended for short answers)[18, 20])| # Layers | "low" range | "high" range |
|---|---|---|
| > 40 | (0, 20, 2) | (N - 20, N, 2) |
| ≤ 40 | range(0, N//2, 2) | range(N//2, N, 2) |
repetition_penalty (float, optional, defaults to None):
Helps reduce repetition. A value of 1.2 is recommended.generate method output remains the same as default transformers generation,
but logits are post-processed using the DoLa contrastive scoring before token selection.1# requires `transformers>=4.56.0`, previously, it was part of the library
2import torch
3from transformers import AutoModelForCausalLM, AutoTokenizer, infer_device
4
5device = infer_device()
6
7tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
8model = AutoModelForCausalLM.from_pretrained(
9 "Qwen/Qwen3-0.6B", torch_dtype=torch.float16
10).to(device)
11
12inputs = tokenizer("What is the highest peak in the world?", return_tensors="pt").to(device)
13
14outputs = model.generate(
15 **inputs,
16 max_new_tokens=50,
17 do_sample=False,
18 custom_generate="transformers-community/dola",
19 trust_remote_code=True,
20 dola_layers="high"
21)
22
23print(tokenizer.batch_decode(outputs, skip_special_tokens=True))1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer, infer_device
3
4device = infer_device()
5
6tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
7model = AutoModelForCausalLM.from_pretrained(
8 "Qwen/Qwen3-0.6B", torch_dtype=torch.float16
9).to(device)
10
11inputs = tokenizer("What is the highest peak in the world?", return_tensors="pt").to(device)
12
13outputs = model.generate(
14 **inputs,
15 max_new_tokens=50,
16 do_sample=False,
17 repetition_penalty=1.2,
18 custom_generate="transformers-community/dola",
19 trust_remote_code=True,
20 dola_layers=[18, 20]
21)
22
23# Only decode the newly generated tokens
24print(tokenizer.batch_decode(outputs[:, inputs.input_ids.shape[-1]:], skip_special_tokens=True))