Views
No views yet
Qwen/Qwen3.5-9B with the
vishwr/claim_drafter LoRA
adapter merged into the base weights, so it can be served directly — no PEFT or
adapter loading required.| Architecture | Qwen3_5ForConditionalGeneration (qwen3_5), 32 layers, hidden 4096 |
| Base model | Qwen/Qwen3.5-9B |
| Precision | bfloat16, 4 safetensors shards (~19.3 GB total) |
| Adapter (un-merged) | vishwr/claim_drafter (LoRA r=32, α=32) |
| Training data | vishwr/claim_drafter — SFT + examiner-labelled DPO |
| Training | SFT → DPO → GRPO, on Tinker |
Note on modality. The base checkpoint carries the Qwen3.5 vision/video stack (Qwen3VLProcessor, image/video tokens), so the merged model retains a multimodal architecture. It was fine-tuned on text only (patent-claim drafting); feed it text prompts. The vision path is untouched by fine-tuning.
vllm serve vishwr/claim_drafter-merged --max-model-len 16384 --port 8000transformers (the qwen3_5 architecture; ≥ 4.57).1from transformers import AutoProcessor, AutoModelForImageTextToText
2import torch
3
4repo = "vishwr/claim_drafter-merged"
5processor = AutoProcessor.from_pretrained(repo)
6model = AutoModelForImageTextToText.from_pretrained(
7 repo, torch_dtype=torch.bfloat16, device_map="auto")
8
9messages = [
10 {"role": "system", "content": "You are an expert US patent attorney. Draft a set of independent and dependent claims based on the invention disclosure."},
11 {"role": "user", "content": "<your plain-English invention disclosure here>"},
12]
13inputs = processor.apply_chat_template(
14 messages, add_generation_prompt=True, tokenize=True,
15 return_dict=True, return_tensors="pt").to(model.device)
16out = model.generate(**inputs, max_new_tokens=1024)
17print(processor.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0])claim_drafter/rewards.py in the code repo):1from claim_drafter.rewards import claim_reward
2if claim_reward(generated) < 0.9:
3 ... # numbering or dependency defect: regenerate or route to review