svg-gen-weights / README.md
kaleidoscopicwhether's picture
Upload README.md with huggingface_hub
038c760 verified
|
Raw History Blame Contribute Delete
2.72 kB
---
language:
- en
license: mit
tags:
- svg
- text-to-svg
- qwen2
- qlora
- lora
- fine-tuning
- code-generation
base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
pipeline_tag: text-generation
library_name: transformers
---
# SVG Generation Model Weights
Model weights for the DL Spring 2026 Kaggle Competition — Text-to-SVG Generation.
**Author:** Ivan Aristy (NYU Tandon, CS-GY 9223 / ECE-GY 7123)
**Base Model:** [Qwen/Qwen2.5-Coder-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct)
**Best Public Score:** 16.87 / 100
**GitHub:** [ivanearisty/svg-gen](https://github.com/ivanearisty/svg-gen)
## Models
| Model | Type | Public Score | Description |
|---|---|---|---|
| [componly-r32-adapter](./componly-r32-adapter) | LoRA adapter | **16.87** | **Best model.** Requires `merged-1.5b-r16` as base. LoRA r=32, alpha=64, trained on 45k competition-only samples. |
| [merged-1.5b-r16](./merged-1.5b-r16) | Full model | — | Qwen2.5-Coder-1.5B with Round 1 LoRA r=16 adapter permanently merged into weights. Base for the best adapter. |
| [refined-7000](./refined-7000) | Full model | 16.26 | Full fine-tune from merged base, checkpoint 7000, CE loss 0.308. Standalone model. |
| [r16-3epoch](./r16-3epoch) | LoRA adapter | 15.47 | Round 1 adapter. LoRA r=16, 3 epochs on 46k competition data. Load on `Qwen/Qwen2.5-Coder-1.5B-Instruct`. |
| [mixed-r32-adapter](./mixed-r32-adapter) | LoRA adapter | 14.64 | LoRA r=32, trained on 76k mixed data (competition + external). External data hurt performance. |
| [codegen-1.5b](./codegen-1.5b) | Full model | 12.26 | Code generation experiment — model outputs Python code instead of raw SVG. |
## Training Strategy
We use an iterative **merge-and-retrain** approach:
1. **Round 1:** LoRA r=16 on Qwen2.5-Coder-1.5B (46k competition data, 3 epochs)
2. **Merge** adapter into base weights
3. **Round 2:** Fresh LoRA r=32 on merged base (45k competition data, 2 epochs) — **best model**
4. **Round 3:** Merge Round 2 adapter, full fine-tune on DGX Spark
## Key Findings
- **System prompt is critical:** Removing it drops score from 53.8 to 18.8 (local ablation)
- **Less is more:** Minimal system prompt ("Output valid SVG code only.") outperforms verbose prompts
- **LoRA > Full fine-tune:** Despite lower CE loss, full fine-tuning scores worse than LoRA
- **Competition data only:** External datasets (SVGX, OmniSVG) degraded performance
- **Greedy decoding optimal:** Any sampling or penalty variation hurts structured SVG output
## Hardware
- **Training (QLoRA):** NVIDIA RTX 2000 Ada (16GB VRAM)
- **Training (Full FT):** NVIDIA DGX Spark (128GB unified memory)
- **Inference:** RTX 2000 Ada, 4-bit quantized, ~20s per SVG