# paddlepaddle/ernie architecture

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

- Interactive diagram: https://gitdiagram.com/paddlepaddle/ernie
- Repository: https://github.com/paddlepaddle/ernie

## Overview

ERNIEKit is PaddlePaddle’s toolkit for configuring, fine-tuning, evaluating, serving, and exporting ERNIE text and vision-language models. A typical user starts with the CLI and training arguments, prepares text or multimodal examples, and trains a model using ERNIE’s model and distributed-computing layers. The toolkit also provides evaluation, export, chat/server, and WebUI routes. The graph combines README capability statements with indexed source references; several links to unsampled implementations are documented or left dashed rather than treated as inspected call paths.

Main entry points: [`ernie/modeling.py`](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/modeling.py) (ERNIE models), [`erniekit/train/tuner.py`](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/train/tuner.py) (Training workflows), [`tools/inference/infer_vl.py`](https://github.com/paddlepaddle/ernie/blob/release/v1.5/tools/inference/infer_vl.py) (VL inference), [`erniekit/cli.py`](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/cli.py) (CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_kit["Toolkit entrypoints"]
  node_cli["CLI<br/>[cli.py]"]
  node_arguments["Arguments<br/>[parser.py]"]
  node_webui["WebUI<br/>[webui.py]"]
end

subgraph group_data["Data preparation"]
  node_preprocess["Data processing"]
  node_image["Image processing"]
  node_datasets["Training datasets<br/>[finetuning.py]"]
end

subgraph group_model["Model runtime"]
  node_tokenizer["Text and VL tokenizers<br/>[tokenizer_vl.py]"]
  node_configuration["Model configuration<br/>[configuration.py]"]
  node_models["ERNIE models<br/>[modeling.py]"]
  node_moe["MoE models<br/>[modeling_moe.py]"]
  node_vision["Vision encoder<br/>[modeling.py]"]
  node_distributed["Distributed layers"]
end

subgraph group_train["Training and evaluation"]
  node_training["Training workflows<br/>[tuner.py]"]
  node_sft["SFT trainer<br/>[trainer.py]"]
  node_evaluation["Evaluation<br/>[eval.py]"]
end

subgraph group_serve["Serving and delivery"]
  node_inference["VL inference<br/>[infer_vl.py]"]
  node_chat["Chat interface<br/>[chat.py]"]
  node_server["Model server<br/>[server.py]"]
  node_export["Model export<br/>[export.py]"]
end

node_user(("Toolkit user"))
node_runtime["FastDeploy runtime"]

node_user -->|"runs commands"| node_cli
node_cli -->|"parses options"| node_arguments
node_cli -->|"dispatches training"| node_training
node_user -->|"uses interface"| node_webui
node_arguments -.->|"configures training"| node_training
node_training -.->|"runs fine-tuning"| node_sft
node_training -.->|"loads examples"| node_datasets
node_datasets -.->|"processes examples"| node_preprocess
node_preprocess -->|"uses tokenizer"| node_tokenizer
node_preprocess -.->|"adapts images"| node_image
node_training -.->|"trains models"| node_models
node_models -->|"uses configuration"| node_configuration
node_moe -->|"uses parallel layers"| node_distributed
node_moe -->|"extends model layers"| node_models
node_vision -.->|"provides vision features"| node_models
node_user -.->|"requests evaluation"| node_evaluation
node_evaluation -->|"loads model"| node_models
node_user -->|"runs prediction"| node_inference
node_inference -->|"tokenizes input"| node_tokenizer
node_inference -->|"preprocesses images"| node_image
node_inference -->|"loads VL model"| node_moe
node_user -.->|"starts conversation"| node_chat
node_chat -.->|"uses server"| node_server
node_server -->|"launches runtime"| node_runtime
node_user -.->|"requests export"| node_export
node_export -.->|"exports weights"| node_models

click node_cli "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/cli.py"
click node_arguments "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/hparams/parser.py"
click node_webui "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/webui/webui.py"
click node_preprocess "https://github.com/paddlepaddle/ernie/blob/release/v1.5/data_processor/steps/input_ids_messaging/example_to_feature.py"
click node_image "https://github.com/paddlepaddle/ernie/blob/release/v1.5/data_processor/image_preprocessor/image_preprocessor_adaptive.py"
click node_datasets "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/dataset/finetuning.py"
click node_tokenizer "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/tokenizer_vl.py"
click node_configuration "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/configuration.py"
click node_models "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/modeling.py"
click node_moe "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/modeling_moe.py"
click node_vision "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/siglip/modeling.py"
click node_distributed "https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/distributed/common_dist_utils.py"
click node_training "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/train/tuner.py"
click node_sft "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/train/sft/trainer.py"
click node_evaluation "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/eval/eval.py"
click node_inference "https://github.com/paddlepaddle/ernie/blob/release/v1.5/tools/inference/infer_vl.py"
click node_chat "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/chat/chat.py"
click node_server "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/chat/server.py"
click node_export "https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/export/export.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_cli,node_arguments,node_webui,node_user toneBlue
class node_preprocess,node_image,node_datasets toneAmber
class node_tokenizer,node_configuration,node_models,node_moe,node_vision,node_distributed toneMint
class node_training,node_sft,node_evaluation toneRose
class node_inference,node_chat,node_server,node_export,node_runtime toneIndigo
```

## Components

### Toolkit entrypoints

- [CLI](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/cli.py): `erniekit/cli.py`
- [Arguments](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/hparams/parser.py): `erniekit/hparams/parser.py`
- [WebUI](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/webui/webui.py): `erniekit/webui/webui.py`

### Data preparation

- [Data processing](https://github.com/paddlepaddle/ernie/blob/release/v1.5/data_processor/steps/input_ids_messaging/example_to_feature.py): `data_processor/steps/input_ids_messaging/example_to_feature.py`
- [Image processing](https://github.com/paddlepaddle/ernie/blob/release/v1.5/data_processor/image_preprocessor/image_preprocessor_adaptive.py): `data_processor/image_preprocessor/image_preprocessor_adaptive.py`
- [Training datasets](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/dataset/finetuning.py): `ernie/dataset/finetuning.py`

### Model runtime

- [Text and VL tokenizers](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/tokenizer_vl.py): `ernie/tokenizer_vl.py`
- [Model configuration](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/configuration.py): `ernie/configuration.py`
- [ERNIE models](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/modeling.py): `ernie/modeling.py`
- [MoE models](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/modeling_moe.py): `ernie/modeling_moe.py`
- [Vision encoder](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/siglip/modeling.py): `ernie/siglip/modeling.py`
- [Distributed layers](https://github.com/paddlepaddle/ernie/blob/release/v1.5/ernie/distributed/common_dist_utils.py): `ernie/distributed/common_dist_utils.py`

### Training and evaluation

- [Training workflows](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/train/tuner.py): `erniekit/train/tuner.py`
- [SFT trainer](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/train/sft/trainer.py): `erniekit/train/sft/trainer.py`
- [Evaluation](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/eval/eval.py): `erniekit/eval/eval.py`

### Serving and delivery

- [VL inference](https://github.com/paddlepaddle/ernie/blob/release/v1.5/tools/inference/infer_vl.py): `tools/inference/infer_vl.py`
- [Chat interface](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/chat/chat.py): `erniekit/chat/chat.py`
- [Model server](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/chat/server.py): `erniekit/chat/server.py`
- [Model export](https://github.com/paddlepaddle/ernie/blob/release/v1.5/erniekit/export/export.py): `erniekit/export/export.py`

### Other components

- **Toolkit user**
- **FastDeploy runtime**

## Connections

- Toolkit user → CLI: runs commands (evidence: `README.md`)
- CLI → Arguments: parses options (evidence: `erniekit/cli.py`)
- CLI → Training workflows: dispatches training (evidence: `erniekit/cli.py`)
- Toolkit user → WebUI: uses interface (evidence: `README.md`)
- Arguments → Training workflows: configures training
- Training workflows → SFT trainer: runs fine-tuning (evidence: `README.md`)
- Training workflows → Training datasets: loads examples (evidence: `README.md`)
- Training datasets → Data processing: processes examples
- Data processing → Text and VL tokenizers: uses tokenizer (evidence: `data_processor/steps/input_ids_messaging/example_to_feature.py`)
- Data processing → Image processing: adapts images
- Training workflows → ERNIE models: trains models (evidence: `README.md`)
- ERNIE models → Model configuration: uses configuration (evidence: `ernie/modeling_moe.py`)
- MoE models → Distributed layers: uses parallel layers (evidence: `ernie/modeling_moe.py`)
- MoE models → ERNIE models: extends model layers (evidence: `ernie/modeling_moe.py`)
- Vision encoder → ERNIE models: provides vision features
- Toolkit user → Evaluation: requests evaluation (evidence: `README.md`)
- Evaluation → ERNIE models: loads model (evidence: `erniekit/eval/eval.py`)
- Toolkit user → VL inference: runs prediction (evidence: `tools/inference/infer_vl.py`)
- VL inference → Text and VL tokenizers: tokenizes input (evidence: `tools/inference/infer_vl.py`)
- VL inference → Image processing: preprocesses images (evidence: `tools/inference/infer_vl.py`)
- VL inference → MoE models: loads VL model (evidence: `tools/inference/infer_vl.py`)
- Toolkit user → Chat interface: starts conversation (evidence: `README.md`)
- Chat interface → Model server: uses server
- Model server → FastDeploy runtime: launches runtime (evidence: `erniekit/chat/server.py`)
- Toolkit user → Model export: requests export (evidence: `README.md`)
- Model export → ERNIE models: exports weights (evidence: `erniekit/export/export.py`)
