---
title: svgicons-curriculum-sft-v2
canonical_url: "https://www.modelscope.cn/datasets/moeKedama/svgicons-curriculum-sft-v2"
md_url: "https://www.modelscope.cn/datasets/moeKedama/svgicons-curriculum-sft-v2.md"
repository: moeKedama/svgicons-curriculum-sft-v2
chinese_name: "SVG Icons 课程学习 SFT 数据集 v2"
last_updated: 2026-04-27
license: "Apache License 2.0"
storage_size: "8.3 GB"
downloads: 235
stars: 0
---

# svgicons-curriculum-sft-v2

> svgicons-curriculum-sft-v2 - moeKedama 在 ModelScope 开源的数据集。SVG icon generation SFT dataset v2: 2 prompt variants × 6 scales × 3 strategies + full images + VLM scores

moeKedama/svgicons-curriculum-sft-v2 是 ModelScope 魔搭社区上的数据集，存储大小 8.3 GB，采用 Apache License 2.0 许可。

- **Repository**: moeKedama/svgicons-curriculum-sft-v2
- **License**: Apache License 2.0
- **Storage size**: 8.3 GB
- **Downloads**: 235
- **Stars**: 0
- **Last updated**: 2026-04-27

Source: https://www.modelscope.cn/datasets/moeKedama/svgicons-curriculum-sft-v2

---

# SVG Icons Curriculum SFT Dataset v2

Processed from [StarVector/svg-icons](https://huggingface.co/datasets/starvector/svg-icons) for SVG icon generation with **two-stage curriculum learning**.

Two prompt variants × six data scales × three training strategies = **36 training configurations**.

## Quick Start

```bash
# Download
pip install modelscope
modelscope download --dataset moeKedama/svgicons-curriculum-sft-v2 --local_dir ./svgicons
cd svgicons && tar xzf images.tar.gz

# Copy dataset_info.json to your LlamaFactory data directory
cp dataset_info.json /path/to/LlamaFactory/data/

# Train (example: old_prompt, full scale, stage1)
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 llamafactory-cli train examples/qwen3vl_8b_stage1_lora.yaml
```

## Dataset Structure

```
├── images.tar.gz                    # ~5 GB, 807k PNGs (320×320), shared across all experiments
├── val.json                         # 6,098 eval samples (shared)
├── test.json                        # 2,595 test samples (shared)
├── dataset_info.json                # 36 LlamaFactory dataset entries (ready to use)
│
├── old_prompt/                      # VLM scoring WITH path-count anchors in rubric
│   ├── {scale}_{strategy}_train.json
│   └── pool_summary.json
│
├── new_prompt/                      # VLM scoring WITHOUT path-count anchors
│   ├── {scale}_{strategy}_train.json
│   └── pool_summary.json
│
├── scores/                          # Raw VLM difficulty scores
│   ├── old_prompt/{train,val,test}_scores.jsonl
│   └── new_prompt/{train,val,test}_scores.jsonl
│
└── examples/
    ├── qwen3vl_8b_stage1_lora.yaml
    └── qwen3vl_8b_stage2_lora.yaml
```

## Experiment Matrix

### Scales

| Scale | Train Samples | Description |
|---|---:|---|
| `10k` | 10,000 | Fixed count, small-scale validation |
| `10pct` | 7,840 | 10% of full dataset |
| `20pct` | 15,680 | 20% |
| `50pct` | 39,201 | 50% |
| `80pct` | 62,722 | 80% |
| `full` | 78,403 | 100% (all processed samples) |

### Strategies

| Strategy | Description | File |
|---|---|---|
| `baseline` | Original samples only, no augmentation | `{scale}_baseline_train.json` |
| `stage1` | Easiest 30% of augmented pool (curriculum warm-up) | `{scale}_stage1_train.json` |
| `stage2` | Full augmented pool ⊇ stage1 (curriculum main) | `{scale}_stage2_train.json` |

### Prompt Variants

| Variant | Scoring Rubric | Effect |
|---|---|---|
| `old_prompt` | Explicit path-count anchors ("1-2 paths = Very Easy", etc.) | score↔path Spearman r≈0.51 |
| `new_prompt` | No path-count references, pure visual complexity | score↔path Spearman r≈0.27 |

### Full Training Sizes (old_prompt)

| Scale | Baseline | Stage1 | Stage2 | Aug Ratio |
|---|---:|---:|---:|---:|
| 10k | 10,000 | 5,806 | 19,355 | 1.94× |
| 10pct | 7,840 | 4,536 | 15,123 | 1.93× |
| 20pct | 15,680 | 9,064 | 30,215 | 1.93× |
| 50pct | 39,201 | 22,835 | 76,118 | 1.94× |
| 80pct | 62,722 | 36,540 | 121,800 | 1.94× |
| full | 78,403 | 45,812 | 152,707 | 1.95× |

## Record Format (LlamaFactory ShareGPT)

```json
{
  "messages": [
    {"role": "user", "content": "Generate the SVG code for the icon...\n<image>"},
    {"role": "assistant", "content": "<svg xmlns=\"...\" viewBox=\"0 0 320 320\">...</svg>"}
  ],
  "images": ["images/12345.png"],
  "_uid": "orig::12345",
  "_source": "orig",
  "_score": 4,
  "_n_paths": 7,
  "_k": 7, "_N": 7, "_kn": 1.0,
  "_eff_diff": 4.0
}
```

Fields prefixed with `_` are metadata (ignored by LlamaFactory).

## Curriculum Design

### Augmentation
- Path-count octiles (8 equal-frequency bins) → top 10% hardest per bin → prefix decomposition (k=1..N-1)
- ~1.94× data expansion, balanced coverage across all complexity levels

### Effective Difficulty
```
eff_diff = score × (k/N)    # score: VLM rating 1-5; k/N: prefix completion ratio
```

### Stage Split
- **Stage 1**: easiest 30% by eff_diff (warm-up: "learn to draw first strokes")
- **Stage 2**: full pool ⊇ Stage 1 (main training, inherits Stage 1 model weights)

## Training Examples

### Baseline
```bash
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 llamafactory-cli train examples/qwen3vl_8b_stage1_lora.yaml \
    dataset=svgicons_old_prompt_full_baseline
```

### Two-Stage Curriculum
```bash
# Stage 1
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 llamafactory-cli train examples/qwen3vl_8b_stage1_lora.yaml \
    dataset=svgicons_old_prompt_full_stage1

# Stage 2 (inherits Stage 1 LoRA weights)
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 llamafactory-cli train examples/qwen3vl_8b_stage2_lora.yaml \
    dataset=svgicons_old_prompt_full_stage2
```

## Scores

Raw VLM difficulty scores are provided in `scores/` for users who want to customize augmentation strategies.

## License

Apache License 2.0
