Views
No views yet
| Metric | Value |
|---|---|
| Valid CadQuery generation | 98% (100-prompt benchmark) |
| Base model | Qwen/Qwen3.5-2B |
| Method | LoRA rank 32 |
| Adapter size | 129 MB |
| Training data | 1000 reasoning-augmented samples |
1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3import torch
4
5base = AutoModelForCausalLM.from_pretrained(
6 "Qwen/Qwen3.5-2B",
7 torch_dtype=torch.bfloat16,
8 trust_remote_code=True,
9 device_map="cuda",
10)
11model = PeftModel.from_pretrained(base, "raspbfox/cad-qw35-2b-0.1")
12tok = AutoTokenizer.from_pretrained("Qwen/Qwen3.5-2B", trust_remote_code=True)
13tok.pad_token = tok.eos_token
14
15prompt = "Create a 60x40x5mm enclosure base with snap-fit posts"
16messages = [{"role": "user", "content": prompt}]
17text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
18inputs = tok(text, return_tensors="pt", max_length=2048).to("cuda")
19out = model.generate(**inputs, max_new_tokens=600, temperature=0.3, top_p=0.9)
20print(tok.decode(out[0], skip_special_tokens=True)){prompt, reasoning, code} where:prompt is a natural language CAD request (e.g. "70x40x6mm enclosure lid")reasoning is a step-by-step reasoning trace generated by Qwen3.5-9Bcode is the corresponding CadQuery Python code from Zero-To-CAD-100k