# vietdocmemory/doc-to-lora architecture

> Architecture diagram of the GitHub repository vietdocmemory/doc-to-lora, 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/vietdocmemory/doc-to-lora
- Repository: https://github.com/vietdocmemory/doc-to-lora

## Overview

Doc-to-LoRA (D2L) learns to convert a supplied context into LoRA adapter weights that influence a pretrained language model’s responses. Its main workflow is to prepare context–QA training data, train a context-conditioned adapter generator, then internalize a context and generate answers with the modulated model. The repository also includes synthetic QA generation, interactive inference, and a self-generated-data viewer. The README documents the inference API; sampled excerpts show data processing and training components, but not all model-internal wiring, so uncertain component-level calls are omitted.

Main entry points: [`train.py`](https://github.com/vietdocmemory/doc-to-lora/blob/main/train.py) (Training entry), [`src/ctx_to_lora/data/processing.py`](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/processing.py) (Dataset processing), [`demo/app.py`](https://github.com/vietdocmemory/doc-to-lora/blob/main/demo/app.py) (Interactive demo), [`src/ctx_to_lora/modeling/hypernet.py`](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/hypernet.py) (Modulated model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_qa_gen["QA generation"]
  node_self_gen["Self-generated QA"]
  node_processing["Dataset processing<br/>[processing.py]"]
  node_packing["Sequence packing<br/>[packing.py]"]
  node_collator["Batch collation<br/>[collator.py]"]
end

subgraph group_training["Adapter training"]
  node_train_entry["Training entry<br/>[train.py]"]
  node_trainer["Training losses<br/>[trainer.py]"]
  node_hypernet["Adapter generator<br/>[hypernet.py]"]
  node_ctx_encoder["Context encoder<br/>[ctx_encoder.py]"]
  node_aggregator["Context aggregator<br/>[aggregator.py]"]
  node_lora_layer["LoRA layers<br/>[lora_layer.py]"]
  node_checkpoint["Model checkpoint"]
  node_metrics["Evaluation metrics<br/>[metrics.py]"]
end

subgraph group_runtime["Context inference"]
  node_demo["Interactive demo<br/>[app.py]"]
  node_model_loading["Model loading<br/>[model_loading.py]"]
  node_runtime_model["Modulated model<br/>[hypernet.py]"]
  node_compression["Context compression<br/>[llm_lingua.py]"]
  node_base_model["Pretrained model"]
end

subgraph group_tools["Data tools"]
  node_viewer["QA data viewer<br/>[self_gen_viewer.py]"]
  node_qa_files["QA datasets"]
end

node_researcher(("Engineer"))

node_researcher -->|"submits context"| node_demo
node_researcher -->|"starts training"| node_train_entry
node_researcher -->|"browses samples"| node_viewer
node_qa_gen -->|"writes QA data"| node_qa_files
node_self_gen -->|"writes QA data"| node_qa_files
node_qa_files -->|"loads examples"| node_processing
node_train_entry -->|"prepares data"| node_processing
node_train_entry -->|"builds model"| node_hypernet
node_train_entry -->|"trains model"| node_trainer
node_processing -->|"packs sequences"| node_packing
node_processing -->|"prepares batches"| node_collator
node_hypernet -->|"saves weights"| node_checkpoint
node_train_entry -->|"evaluates training"| node_metrics
node_researcher -->|"internalizes context"| node_runtime_model
node_demo -->|"loads model"| node_model_loading
node_demo -->|"runs chat"| node_runtime_model
node_demo -->|"tokenizes context"| node_processing
node_runtime_model -->|"modulates generation"| node_base_model
node_model_loading -->|"loads weights"| node_base_model
node_runtime_model -.->|"may compress context"| node_compression
node_viewer -->|"reads samples"| node_qa_files

click node_qa_gen "https://github.com/vietdocmemory/doc-to-lora/blob/main/data/generate_fw_edu_qa_v2_repeat.py"
click node_self_gen "https://github.com/vietdocmemory/doc-to-lora/blob/main/data/self_generate_qa.py"
click node_processing "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/processing.py"
click node_packing "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/packing.py"
click node_collator "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/collator.py"
click node_train_entry "https://github.com/vietdocmemory/doc-to-lora/blob/main/train.py"
click node_trainer "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/trainer.py"
click node_hypernet "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/hypernet.py"
click node_ctx_encoder "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/ctx_encoder.py"
click node_aggregator "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/aggregator.py"
click node_lora_layer "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/lora_layer.py"
click node_demo "https://github.com/vietdocmemory/doc-to-lora/blob/main/demo/app.py"
click node_model_loading "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/model_loading.py"
click node_runtime_model "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/hypernet.py"
click node_compression "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/llm_lingua.py"
click node_viewer "https://github.com/vietdocmemory/doc-to-lora/blob/main/webui/self_gen_viewer.py"
click node_metrics "https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/metrics.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_qa_gen,node_self_gen,node_processing,node_packing,node_collator toneBlue
class node_train_entry,node_trainer,node_hypernet,node_ctx_encoder,node_aggregator,node_lora_layer,node_checkpoint,node_metrics toneAmber
class node_demo,node_model_loading,node_runtime_model,node_compression,node_base_model toneMint
class node_viewer,node_qa_files toneRose
class node_researcher toneIndigo
```

## Components

### Data preparation

- [QA generation](https://github.com/vietdocmemory/doc-to-lora/blob/main/data/generate_fw_edu_qa_v2_repeat.py): `data/generate_fw_edu_qa_v2_repeat.py`
- [Self-generated QA](https://github.com/vietdocmemory/doc-to-lora/blob/main/data/self_generate_qa.py): `data/self_generate_qa.py`
- [Dataset processing](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/processing.py): `src/ctx_to_lora/data/processing.py`
- [Sequence packing](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/packing.py): `src/ctx_to_lora/data/packing.py`
- [Batch collation](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/data/collator.py): `src/ctx_to_lora/data/collator.py`

### Adapter training

- [Training entry](https://github.com/vietdocmemory/doc-to-lora/blob/main/train.py): `train.py`
- [Training losses](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/trainer.py): `src/ctx_to_lora/trainer.py`
- [Adapter generator](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/hypernet.py): `src/ctx_to_lora/modeling/hypernet.py`
- [Context encoder](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/ctx_encoder.py): `src/ctx_to_lora/modeling/ctx_encoder.py`
- [Context aggregator](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/aggregator.py): `src/ctx_to_lora/modeling/aggregator.py`
- [LoRA layers](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/lora_layer.py): `src/ctx_to_lora/modeling/lora_layer.py`
- **Model checkpoint**
- [Evaluation metrics](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/metrics.py): `src/ctx_to_lora/metrics.py`

### Context inference

- [Interactive demo](https://github.com/vietdocmemory/doc-to-lora/blob/main/demo/app.py): `demo/app.py`
- [Model loading](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/model_loading.py): `src/ctx_to_lora/model_loading.py`
- [Modulated model](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/hypernet.py): `src/ctx_to_lora/modeling/hypernet.py`
- [Context compression](https://github.com/vietdocmemory/doc-to-lora/blob/main/src/ctx_to_lora/modeling/llm_lingua.py): `src/ctx_to_lora/modeling/llm_lingua.py`
- **Pretrained model**

### Data tools

- [QA data viewer](https://github.com/vietdocmemory/doc-to-lora/blob/main/webui/self_gen_viewer.py): `webui/self_gen_viewer.py`
- **QA datasets**

### Other components

- **Engineer**

## Connections

- Engineer → Interactive demo: submits context
- Engineer → Training entry: starts training
- Engineer → QA data viewer: browses samples
- QA generation → QA datasets: writes QA data
- Self-generated QA → QA datasets: writes QA data
- QA datasets → Dataset processing: loads examples
- Training entry → Dataset processing: prepares data
- Training entry → Adapter generator: builds model
- Training entry → Training losses: trains model
- Dataset processing → Sequence packing: packs sequences
- Dataset processing → Batch collation: prepares batches
- Adapter generator → Model checkpoint: saves weights
- Training entry → Evaluation metrics: evaluates training
- Engineer → Modulated model: internalizes context
- Interactive demo → Model loading: loads model
- Interactive demo → Modulated model: runs chat
- Interactive demo → Dataset processing: tokenizes context
- Modulated model → Pretrained model: modulates generation
- Model loading → Pretrained model: loads weights
- Modulated model → Context compression: may compress context
- QA data viewer → QA datasets: reads samples
