# yongliang-wu/dft architecture

> Architecture diagram of the GitHub repository yongliang-wu/dft, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yongliang-wu/dft
- Repository: https://github.com/yongliang-wu/dft

## Overview

This repository implements Dynamic Fine-Tuning (DFT) experiments on top of VERL: the documented path is to prepare math data, train a model with the FSDP DFT trainer, then generate and grade benchmark answers. VERL also contains distributed RL training, rollout, checkpointing, and model support. The graph combines README-documented workflow with source-index references and shown excerpts; links involving unsampled trainer or evaluation internals are omitted or marked unverified.

Main entry points: [`verl/verl/workers/fsdp_workers.py`](https://github.com/yongliang-wu/dft/blob/master/verl/verl/workers/fsdp_workers.py) (FSDP Workers), [`verl/verl/trainer/fsdp_dft_trainer.py`](https://github.com/yongliang-wu/dft/blob/master/verl/verl/trainer/fsdp_dft_trainer.py) (DFT Trainer), [`verl/eval/math500/predict_results_16.py`](https://github.com/yongliang-wu/dft/blob/master/verl/eval/math500/predict_results_16.py) (Benchmark Generation), [`math_evaluation/evaluate.py`](https://github.com/yongliang-wu/dft/blob/master/math_evaluation/evaluate.py) (Math Evaluation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_training["DFT Training"]
  node_dft_trainer["DFT Trainer"]
  node_training_data["Training Data<br/>[rl_dataset.py]"]
end

subgraph group_runtime["VERL Runtime"]
  node_fsdp_workers["FSDP Workers<br/>[fsdp_workers.py]"]
  node_model_loading["Model Loading<br/>[model.py]"]
  node_rollout["Generation Rollout"]
  node_dispatch["Worker Dispatch<br/>[decorator.py]"]
  node_protocol["Batch Protocol<br/>[protocol.py]"]
  node_checkpoint["FSDP Checkpoints"]
  node_model_support["Model Support<br/>[monkey_patch.py]"]
end

subgraph group_evaluation["Math Evaluation"]
  node_benchmark_generation["Benchmark Generation"]
  node_math_eval["Math Evaluation<br/>[evaluate.py]"]
  node_answer_parser["Answer Parser<br/>[parser.py]"]
  node_latex_parser["LaTeX Parser<br/>[latex2sympy2.py]"]
  node_grader["Math Grader<br/>[grader.py]"]
  node_benchmark_results["Benchmark Results<br/>[eval_verify.py]"]
end

node_researcher(("Researcher"))
node_eval_user(("Evaluator"))

node_researcher -->|"launches"| node_dft_trainer
node_dft_trainer -.->|"uses data"| node_training_data
node_dft_trainer -.->|"dispatches training"| node_fsdp_workers
node_fsdp_workers -->|"loads model"| node_model_loading
node_fsdp_workers -->|"creates rollout"| node_rollout
node_fsdp_workers -->|"uses checkpoints"| node_checkpoint
node_fsdp_workers -->|"registers methods"| node_dispatch
node_dispatch -->|"dispatches batches"| node_protocol
node_model_loading -->|"uses model support"| node_model_support
node_eval_user -->|"runs evaluation"| node_benchmark_generation
node_benchmark_generation -->|"uses model support"| node_model_support
node_math_eval -.->|"parses answers"| node_answer_parser
node_answer_parser -->|"converts LaTeX"| node_latex_parser
node_math_eval -.->|"grades answers"| node_grader
node_benchmark_generation -.->|"produces predictions"| node_benchmark_results

click node_dft_trainer "https://github.com/yongliang-wu/dft/blob/master/verl/verl/trainer/fsdp_dft_trainer.py"
click node_training_data "https://github.com/yongliang-wu/dft/blob/master/verl/verl/utils/dataset/rl_dataset.py"
click node_fsdp_workers "https://github.com/yongliang-wu/dft/blob/master/verl/verl/workers/fsdp_workers.py"
click node_model_loading "https://github.com/yongliang-wu/dft/blob/master/verl/verl/utils/model.py"
click node_rollout "https://github.com/yongliang-wu/dft/blob/master/verl/verl/workers/rollout/vllm_rollout/vllm_rollout_spmd.py"
click node_dispatch "https://github.com/yongliang-wu/dft/blob/master/verl/verl/single_controller/base/decorator.py"
click node_protocol "https://github.com/yongliang-wu/dft/blob/master/verl/verl/protocol.py"
click node_checkpoint "https://github.com/yongliang-wu/dft/blob/master/verl/verl/utils/checkpoint/fsdp_checkpoint_manager.py"
click node_model_support "https://github.com/yongliang-wu/dft/blob/master/verl/verl/models/transformers/monkey_patch.py"
click node_benchmark_generation "https://github.com/yongliang-wu/dft/blob/master/verl/eval/math500/predict_results_16.py"
click node_math_eval "https://github.com/yongliang-wu/dft/blob/master/math_evaluation/evaluate.py"
click node_answer_parser "https://github.com/yongliang-wu/dft/blob/master/math_evaluation/parser.py"
click node_latex_parser "https://github.com/yongliang-wu/dft/blob/master/math_evaluation/latex2sympy/latex2sympy2.py"
click node_grader "https://github.com/yongliang-wu/dft/blob/master/math_evaluation/grader.py"
click node_benchmark_results "https://github.com/yongliang-wu/dft/blob/master/verl/eval/math500/eval_verify.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dft_trainer,node_training_data toneBlue
class node_fsdp_workers,node_model_loading,node_rollout,node_dispatch,node_protocol,node_checkpoint,node_model_support toneAmber
class node_benchmark_generation,node_math_eval,node_answer_parser,node_latex_parser,node_grader,node_benchmark_results toneMint
class node_researcher,node_eval_user toneIndigo
```

## Components

### DFT Training

- [DFT Trainer](https://github.com/yongliang-wu/dft/blob/master/verl/verl/trainer/fsdp_dft_trainer.py): `verl/verl/trainer/fsdp_dft_trainer.py`
- [Training Data](https://github.com/yongliang-wu/dft/blob/master/verl/verl/utils/dataset/rl_dataset.py): `verl/verl/utils/dataset/rl_dataset.py`

### VERL Runtime

- [FSDP Workers](https://github.com/yongliang-wu/dft/blob/master/verl/verl/workers/fsdp_workers.py): `verl/verl/workers/fsdp_workers.py`
- [Model Loading](https://github.com/yongliang-wu/dft/blob/master/verl/verl/utils/model.py): `verl/verl/utils/model.py`
- [Generation Rollout](https://github.com/yongliang-wu/dft/blob/master/verl/verl/workers/rollout/vllm_rollout/vllm_rollout_spmd.py): `verl/verl/workers/rollout/vllm_rollout/vllm_rollout_spmd.py`
- [Worker Dispatch](https://github.com/yongliang-wu/dft/blob/master/verl/verl/single_controller/base/decorator.py): `verl/verl/single_controller/base/decorator.py`
- [Batch Protocol](https://github.com/yongliang-wu/dft/blob/master/verl/verl/protocol.py): `verl/verl/protocol.py`
- [FSDP Checkpoints](https://github.com/yongliang-wu/dft/blob/master/verl/verl/utils/checkpoint/fsdp_checkpoint_manager.py): `verl/verl/utils/checkpoint/fsdp_checkpoint_manager.py`
- [Model Support](https://github.com/yongliang-wu/dft/blob/master/verl/verl/models/transformers/monkey_patch.py): `verl/verl/models/transformers/monkey_patch.py`

### Math Evaluation

- [Benchmark Generation](https://github.com/yongliang-wu/dft/blob/master/verl/eval/math500/predict_results_16.py): `verl/eval/math500/predict_results_16.py`
- [Math Evaluation](https://github.com/yongliang-wu/dft/blob/master/math_evaluation/evaluate.py): `math_evaluation/evaluate.py`
- [Answer Parser](https://github.com/yongliang-wu/dft/blob/master/math_evaluation/parser.py): `math_evaluation/parser.py`
- [LaTeX Parser](https://github.com/yongliang-wu/dft/blob/master/math_evaluation/latex2sympy/latex2sympy2.py): `math_evaluation/latex2sympy/latex2sympy2.py`
- [Math Grader](https://github.com/yongliang-wu/dft/blob/master/math_evaluation/grader.py): `math_evaluation/grader.py`
- [Benchmark Results](https://github.com/yongliang-wu/dft/blob/master/verl/eval/math500/eval_verify.py): `verl/eval/math500/eval_verify.py`

### Other components

- **Researcher**
- **Evaluator**

## Connections

- Researcher → DFT Trainer: launches
- DFT Trainer → Training Data: uses data
- DFT Trainer → FSDP Workers: dispatches training
- FSDP Workers → Model Loading: loads model (evidence: `verl/verl/workers/fsdp_workers.py`)
- FSDP Workers → Generation Rollout: creates rollout (evidence: `verl/verl/workers/fsdp_workers.py`)
- FSDP Workers → FSDP Checkpoints: uses checkpoints (evidence: `verl/verl/workers/fsdp_workers.py`)
- FSDP Workers → Worker Dispatch: registers methods (evidence: `verl/verl/workers/fsdp_workers.py`)
- Worker Dispatch → Batch Protocol: dispatches batches (evidence: `verl/verl/single_controller/base/decorator.py`)
- Model Loading → Model Support: uses model support
- Evaluator → Benchmark Generation: runs evaluation
- Benchmark Generation → Model Support: uses model support
- Math Evaluation → Answer Parser: parses answers
- Answer Parser → LaTeX Parser: converts LaTeX (evidence: `math_evaluation/parser.py`)
- Math Evaluation → Math Grader: grades answers
- Benchmark Generation → Benchmark Results: produces predictions
