Views
No views yet
adapter_v32_qwen35_9b_verilog_general is a standard PEFT LoRA adapter for Qwen/Qwen3.5-9B, trained as a first migration of the Verilog behavior discovered in the Qwen2.5-Coder v9/v30b line.| Model / system | Compile | Functional pass |
|---|---|---|
| v9 prior single adapter | — | 67/156 |
| v30b best Qwen2.5-Coder single adapter | 141/156 | 71/156 |
| v29 multi-adapter verifier selector | 150/156 | 84/156 |
| v32 Qwen3.5-9B migration | 71/156 | 60/156 |
scripts/build_v32_qwen35_migration_dataset.py1v9 pass anchor: 14x
2v30b pass anchor: 14x
3delta wins: 45x
4selector retention: 4x
5external general: 20x
6clean retention: 3x
7synthetic: 1x--drop-overlength; overlength rows were dropped, not truncated.1base model: Qwen/Qwen3.5-9B
2method: QLoRA/LoRA
3LoRA r: 32
4LoRA alpha: 64
5learning rate: 1e-5
6epochs: 0.80
7max length: 1536
8batch size: 1
9grad accum: 4
10warmup steps: 401import torch
2from transformers import AutoTokenizer, AutoModelForImageTextToText, BitsAndBytesConfig
3from peft import PeftModel
4
5base = "Qwen/Qwen3.5-9B"
6adapter = "Pablo-Flores-Mollinedo/verilog-qwen3.5-9b-v32-migration-lora"
7
8bnb = BitsAndBytesConfig(
9 load_in_4bit=True,
10 bnb_4bit_quant_type="nf4",
11 bnb_4bit_compute_dtype=torch.bfloat16,
12 bnb_4bit_use_double_quant=True,
13)
14
15tok = AutoTokenizer.from_pretrained(adapter, trust_remote_code=True)
16model = AutoModelForImageTextToText.from_pretrained(
17 base,
18 quantization_config=bnb,
19 device_map="auto",
20 trust_remote_code=True,
21)
22model = PeftModel.from_pretrained(model, adapter)
23model.eval()
24
25prompt = "Write module TopModule(input a, input b, output out); out should be a & b."
26messages = [
27 {"role": "system", "content": "You are a Verilog RTL designer. Return synthesizable Verilog."},
28 {"role": "user", "content": prompt},
29]
30text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
31inputs = tok(text, return_tensors="pt").to(model.device)
32with torch.no_grad():
33 out = model.generate(**inputs, max_new_tokens=1024, do_sample=False, pad_token_id=tok.eos_token_id)
34print(tok.decode(out[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))