# georgeaaron7/codereview-finetuning-proj architecture

> Architecture diagram of the GitHub repository georgeaaron7/codereview-finetuning-proj, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/georgeaaron7/codereview-finetuning-proj
- Repository: https://github.com/georgeaaron7/codereview-finetuning-proj

## Overview

This repository fine-tunes and serves a QLoRA-based code-review model, then evaluates its generated reviews against reference reviews. The main workflow is preparing review examples, formatting them for supervised training, producing an adapter, and generating reviews through inference or the API. Evaluation adds overlap metrics and optional LLM judging. The README describes data preparation, but that module is absent from the supplied tree, so its implementation is represented only at the enclosing `src` path; relationships are limited to those indicated by the inspected callers and README.

Main entry points: [`src/infer.py`](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/infer.py) (Review inference), [`src/eval.py`](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/eval.py) (Evaluation runner), [`src/train.py`](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/train.py) (QLoRA trainer), [`src`](https://github.com/georgeaaron7/codereview-finetuning-proj/tree/master/src) (Data preparation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Review data"]
  node_data_converter["Dataset converter"]
  node_data_prep["Data preparation"]
  node_dataset_source[("Review dataset")]
end

subgraph group_training["Model training"]
  node_training_format["SFT formatting<br/>[formatting.py]"]
  node_trainer["QLoRA trainer<br/>[train.py]"]
  node_base_model[("Qwen base model")]
  node_adapter["LoRA adapter"]
end

subgraph group_serving["Review generation"]
  node_inference["Review inference<br/>[infer.py]"]
  node_api["Review API<br/>[serve.py]"]
  node_formatting["Prompt formatting<br/>[formatting.py]"]
end

subgraph group_evaluation["Evaluation"]
  node_evaluation["Evaluation runner<br/>[eval.py]"]
  node_metrics["BLEU/ROUGE metrics<br/>[metrics.py]"]
  node_judge["LLM judge<br/>[judge.py]"]
  node_judge_service(("Judge model API"))
  node_eval_output["Evaluation results"]
end

node_developer(("Model developer"))
node_reviewer(("Review requester"))

node_developer -->|"converts dumps"| node_data_converter
node_data_converter -->|"writes JSONL"| node_dataset_source
node_dataset_source -->|"loads records"| node_data_prep
node_trainer -->|"prepares splits"| node_data_prep
node_trainer -->|"formats examples"| node_training_format
node_trainer -->|"loads weights"| node_base_model
node_trainer -->|"saves adapter"| node_adapter
node_reviewer -->|"requests review"| node_api
node_api -->|"generates review"| node_inference
node_reviewer -->|"provides code"| node_inference
node_inference -->|"builds prompt"| node_formatting
node_inference -->|"loads weights"| node_base_model
node_inference -.->|"loads adapter"| node_adapter
node_evaluation -->|"regenerates split"| node_data_prep
node_evaluation -->|"generates predictions"| node_inference
node_evaluation -->|"computes scores"| node_metrics
node_evaluation -.->|"requests scoring"| node_judge
node_judge -.->|"sends prompts"| node_judge_service
node_evaluation -->|"writes results"| node_eval_output

click node_data_converter "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/scripts/convert_codereviewer.py"
click node_data_prep "https://github.com/georgeaaron7/codereview-finetuning-proj/tree/master/src"
click node_training_format "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/formatting.py"
click node_trainer "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/train.py"
click node_inference "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/infer.py"
click node_api "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/serve.py"
click node_formatting "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/formatting.py"
click node_evaluation "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/eval.py"
click node_metrics "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/metrics.py"
click node_judge "https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/judge.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_data_converter,node_data_prep,node_dataset_source,node_reviewer toneBlue
class node_training_format,node_trainer,node_base_model,node_adapter toneAmber
class node_inference,node_api,node_formatting toneMint
class node_evaluation,node_metrics,node_judge,node_judge_service,node_eval_output toneRose
class node_developer toneIndigo
```

## Components

### Review data

- [Dataset converter](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/scripts/convert_codereviewer.py): `scripts/convert_codereviewer.py`
- [Data preparation](https://github.com/georgeaaron7/codereview-finetuning-proj/tree/master/src): `src`
- **Review dataset**

### Model training

- [SFT formatting](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/formatting.py): `src/formatting.py`
- [QLoRA trainer](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/train.py): `src/train.py`
- **Qwen base model**
- **LoRA adapter**

### Review generation

- [Review inference](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/infer.py): `src/infer.py`
- [Review API](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/serve.py): `src/serve.py`
- [Prompt formatting](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/formatting.py): `src/formatting.py`

### Evaluation

- [Evaluation runner](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/eval.py): `src/eval.py`
- [BLEU/ROUGE metrics](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/metrics.py): `src/metrics.py`
- [LLM judge](https://github.com/georgeaaron7/codereview-finetuning-proj/blob/master/src/judge.py): `src/judge.py`
- **Judge model API**
- **Evaluation results**

### Other components

- **Model developer**
- **Review requester**

## Connections

- Model developer → Dataset converter: converts dumps
- Dataset converter → Review dataset: writes JSONL
- Review dataset → Data preparation: loads records
- QLoRA trainer → Data preparation: prepares splits
- QLoRA trainer → SFT formatting: formats examples
- QLoRA trainer → Qwen base model: loads weights
- QLoRA trainer → LoRA adapter: saves adapter
- Review requester → Review API: requests review
- Review API → Review inference: generates review
- Review requester → Review inference: provides code
- Review inference → Prompt formatting: builds prompt
- Review inference → Qwen base model: loads weights
- Review inference → LoRA adapter: loads adapter
- Evaluation runner → Data preparation: regenerates split
- Evaluation runner → Review inference: generates predictions
- Evaluation runner → BLEU/ROUGE metrics: computes scores
- Evaluation runner → LLM judge: requests scoring
- LLM judge → Judge model API: sends prompts
- Evaluation runner → Evaluation results: writes results
