# erictan7/videoveritas architecture

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

- Interactive diagram: https://gitdiagram.com/erictan7/videoveritas
- Repository: https://github.com/erictan7/videoveritas

## Overview

VideoVeritas is presented as a video-authenticity detector built around fine-grained perception and fact-based reasoning, with Perception Pretext RL and MintVid as its training and evaluation contributions. The documented user path is deploying the model and submitting a video for inference; a second path covers dataset evaluation and RLHF training. The tree is largely the ms-swift framework, so some VideoVeritas-specific wiring is not identifiable. The sampled engine sources confirm inference backends, but not the model’s detection logic.

Main entry points: [`swift/llm/infer/infer_engine/infer_engine.py`](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/infer_engine.py) (Inference engine), [`swift/llm/train/rlhf.py`](https://github.com/erictan7/videoveritas/blob/main/swift/llm/train/rlhf.py) (RLHF training), [`swift/llm/dataset/loader.py`](https://github.com/erictan7/videoveritas/blob/main/swift/llm/dataset/loader.py) (Dataset loading), [`swift/llm/infer/infer_engine/vllm_engine.py`](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/vllm_engine.py) (vLLM backend)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Video workflow"]
  node_single_infer["Single-video inference"]
  node_infer_cli["Inference commands<br/>[infer.py]"]
  node_deploy["Model deployment<br/>[deploy.py]"]
  node_result["Detection response"]
end

subgraph group_data["Data and evaluation"]
  node_mintvid[("MintVid dataset")]
  node_dataset_prep["Dataset preparation<br/>[data_utils.py]"]
  node_dataset_loader["Dataset loading<br/>[loader.py]"]
  node_evaluation["Model evaluation<br/>[eval.py]"]
end

subgraph group_training["Training"]
  node_rlhf_cli["RLHF commands<br/>[rlhf.py]"]
  node_rlhf_train["RLHF training<br/>[rlhf.py]"]
  node_rlhf_trainer["Preference trainers"]
end

subgraph group_runtime["Inference runtime"]
  node_model{{"VideoVeritas model"}}
  node_infer_engine["Inference engine<br/>[infer_engine.py]"]
  node_vllm["vLLM backend<br/>[vllm_engine.py]"]
  node_pt_engine["PyTorch backend<br/>[pt_engine.py]"]
  node_lmdeploy["LMDeploy backend<br/>[lmdeploy_engine.py]"]
end

node_user(("Video user"))

node_user -->|"submits video"| node_single_infer
node_single_infer -->|"requests inference"| node_infer_engine
node_infer_cli -->|"runs inference"| node_infer_engine
node_deploy -->|"serves model"| node_vllm
node_infer_engine -->|"selects backend"| node_vllm
node_infer_engine -->|"selects backend"| node_pt_engine
node_infer_engine -->|"selects backend"| node_lmdeploy
node_vllm -->|"runs model"| node_model
node_pt_engine -->|"runs model"| node_model
node_lmdeploy -->|"runs model"| node_model
node_infer_engine -->|"returns response"| node_result
node_mintvid -->|"provides videos"| node_dataset_prep
node_dataset_prep -->|"prepares data"| node_dataset_loader
node_dataset_loader -->|"loads samples"| node_evaluation
node_user -->|"runs benchmark"| node_evaluation
node_user -->|"starts training"| node_rlhf_cli
node_rlhf_cli -->|"dispatches training"| node_rlhf_train
node_rlhf_train -->|"uses trainer"| node_rlhf_trainer
node_dataset_loader -->|"supplies training data"| node_rlhf_train
node_rlhf_train -->|"updates model"| node_model

click node_single_infer "https://github.com/erictan7/videoveritas/blob/main/self_scripts/infer/infer_vllm_single.py"
click node_infer_cli "https://github.com/erictan7/videoveritas/blob/main/swift/cli/infer.py"
click node_deploy "https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/deploy.py"
click node_dataset_prep "https://github.com/erictan7/videoveritas/blob/main/swift/llm/dataset/dataset/data_utils.py"
click node_dataset_loader "https://github.com/erictan7/videoveritas/blob/main/swift/llm/dataset/loader.py"
click node_evaluation "https://github.com/erictan7/videoveritas/blob/main/swift/llm/eval/eval.py"
click node_rlhf_cli "https://github.com/erictan7/videoveritas/blob/main/swift/cli/rlhf.py"
click node_rlhf_train "https://github.com/erictan7/videoveritas/blob/main/swift/llm/train/rlhf.py"
click node_rlhf_trainer "https://github.com/erictan7/videoveritas/tree/main/swift/trainers/rlhf_trainer"
click node_infer_engine "https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/infer_engine.py"
click node_vllm "https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/vllm_engine.py"
click node_pt_engine "https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/pt_engine.py"
click node_lmdeploy "https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/lmdeploy_engine.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_single_infer,node_infer_cli,node_deploy,node_result,node_user toneBlue
class node_mintvid,node_dataset_prep,node_dataset_loader,node_evaluation toneAmber
class node_rlhf_cli,node_rlhf_train,node_rlhf_trainer toneMint
class node_model,node_infer_engine,node_vllm,node_pt_engine,node_lmdeploy toneRose
```

## Components

### Video workflow

- [Single-video inference](https://github.com/erictan7/videoveritas/blob/main/self_scripts/infer/infer_vllm_single.py): `self_scripts/infer/infer_vllm_single.py`
- [Inference commands](https://github.com/erictan7/videoveritas/blob/main/swift/cli/infer.py): `swift/cli/infer.py`
- [Model deployment](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/deploy.py): `swift/llm/infer/deploy.py`
- **Detection response**

### Data and evaluation

- **MintVid dataset**
- [Dataset preparation](https://github.com/erictan7/videoveritas/blob/main/swift/llm/dataset/dataset/data_utils.py): `swift/llm/dataset/dataset/data_utils.py`
- [Dataset loading](https://github.com/erictan7/videoveritas/blob/main/swift/llm/dataset/loader.py): `swift/llm/dataset/loader.py`
- [Model evaluation](https://github.com/erictan7/videoveritas/blob/main/swift/llm/eval/eval.py): `swift/llm/eval/eval.py`

### Training

- [RLHF commands](https://github.com/erictan7/videoveritas/blob/main/swift/cli/rlhf.py): `swift/cli/rlhf.py`
- [RLHF training](https://github.com/erictan7/videoveritas/blob/main/swift/llm/train/rlhf.py): `swift/llm/train/rlhf.py`
- [Preference trainers](https://github.com/erictan7/videoveritas/tree/main/swift/trainers/rlhf_trainer): `swift/trainers/rlhf_trainer`

### Inference runtime

- **VideoVeritas model**
- [Inference engine](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/infer_engine.py): `swift/llm/infer/infer_engine/infer_engine.py`
- [vLLM backend](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/vllm_engine.py): `swift/llm/infer/infer_engine/vllm_engine.py`
- [PyTorch backend](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/pt_engine.py): `swift/llm/infer/infer_engine/pt_engine.py`
- [LMDeploy backend](https://github.com/erictan7/videoveritas/blob/main/swift/llm/infer/infer_engine/lmdeploy_engine.py): `swift/llm/infer/infer_engine/lmdeploy_engine.py`

### Other components

- **Video user**

## Connections

- Video user → Single-video inference: submits video
- Single-video inference → Inference engine: requests inference
- Inference commands → Inference engine: runs inference
- Model deployment → vLLM backend: serves model
- Inference engine → vLLM backend: selects backend
- Inference engine → PyTorch backend: selects backend
- Inference engine → LMDeploy backend: selects backend
- vLLM backend → VideoVeritas model: runs model
- PyTorch backend → VideoVeritas model: runs model
- LMDeploy backend → VideoVeritas model: runs model
- Inference engine → Detection response: returns response
- MintVid dataset → Dataset preparation: provides videos
- Dataset preparation → Dataset loading: prepares data
- Dataset loading → Model evaluation: loads samples
- Video user → Model evaluation: runs benchmark
- Video user → RLHF commands: starts training
- RLHF commands → RLHF training: dispatches training
- RLHF training → Preference trainers: uses trainer
- Dataset loading → RLHF training: supplies training data
- RLHF training → VideoVeritas model: updates model
