Profile
Back to NewsBack
GitHub Trending 5 min
Reader Mode
lab-emi/OpenDPD: OpenDPD is an end-to-end learning framework built in PyTorch for power amplifier (PA) modeling and digital pre-distortion (DPD). You are cordially invited to contribute to this project by providing your own backbone neural networks,

lab-emi/OpenDPD: OpenDPD is an end-to-end learning framework built in PyTorch for power amplifier (PA) modeling and digital pre-distortion (DPD). You are cordially invited to contribute to this project by providing your own backbone neural networks,

12 hours ago

Try OpenDPD Studio in your browser →
> No installation. Explore example data or upload your own CSV, train PA/DPD models on shared CUDA compute, and download your checkpoints. Temporary data and results are deleted within 24 hours.

OpenDPD Studio: click to try the web app</a>

OpenDPD

 

Model a power amplifier. Train a digital predistorter. Understand the result.

OpenDPD is a PyTorch framework for power amplifier (PA) modeling and digital predistortion (DPD), developed by the Efficient Machine Intelligence Lab at TU Delft. Use OpenDPD Studio in the browser or locally for a guided workflow, or automate experiments with the CLI and Python API. All three use the original OpenDPD training core.

CI</a> PyPI</a> License</a>

Documentation · Studio walkthrough · Examples & Colab · Papers & citation

What's new

OpenDPD 2.2.2 adds Report bugs to the top of Studio. The description box opens with the cursor ready; continue directly to a prefilled GitHub issue to review and submit your report. The same control is available when the compute server cannot be reached.

See the 2.2.2 release notes. CUDA training improvements from 2.2.1 remain available:

  • CUDA replay for supported native models reduces dispatch overhead while retaining the existing optimizer, precision, batches and scheduler.
  • Quick/full training defaults are 10/150 epochs; plots reuse validation predictions once per epoch.
  • See the 2.2.1 performance measurements and release notes.
  • Guided experiments: explore built-in I/Q data, train and test PA/DPD models, and choose from the original backbone registry.
  • Live feedback: separate epoch and batch progress bars, NMSE and other task metrics, live signal plots, reconnectable experiments and a Stop control.
  • Download models while training: save the best checkpoint so far; after training, download the selected final model. Compare compatible runs and export reports.
  • Browser and local workbench: nine interface languages, English by default, CUDA when available, touch-friendly plots and system light/dark themes.
Bring your own CSV: upload UTF-8 CSV with two complex columns or four real I/Q columns, up to 25 MiB and 1,000,000 paired samples. Every row is validated in quarantine before preview; rejected uploads are deleted. Code, package and checkpoint uploads are unavailable in the public app.

For a hosted installation, the public Studio deployment guide covers GitHub Pages, a Cloudflare Tunnel and isolated local VM compute, with temporary sessions and automatic file deletion within 24 hours.

Feature history · Verified platform status

Get started with Studio

Open the hosted Studio now, or install the packaged local app with Python 3.10–3.13:

python -m pip install "opendpd[gui]==2.2.2"
opendpd gui

The wheel includes the frontend; Node.js is not needed. For development from source, also install Git and Node.js 22.22+:

git clone https://github.com/lab-emi/OpenDPD.git
cd OpenDPD
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[gui]"
npm --prefix frontend ci
npm --prefix frontend run build
opendpd gui

This opens Studio locally in your browser. For Windows, a native desktop window, GPU setup, or a core-only installation, see Installation.

Click Get Started → Try a built-in dataset → DPA_200MHz. Inspect the data and continue to your first experiment. Use Starting settings → Quick trial to check the pipeline, then choose Full training for a longer experiment. Quick trial defaults to 10 epochs; full training defaults to 150 epochs. Plots update once per epoch using validation results. Advanced settings offer an optional batch preview interval with a red warning because extra previews can severely slow training.

The PA → DPD workflow

| Step | What you do | What you learn | | --- | --- | --- | | 1. Inspect data | Open paired PA input/output I/Q samples. | Sample rate, bandwidth, signal quality and data splits. | | 2. Model the PA | Train a behavioral model, then test it on held-out data. | How closely the model predicts the measured PA response. | | 3. Train DPD | Place a predistorter before the trained PA model. | Whether the simulated cascade becomes more linear. | | 4. Test & export | Compare results and export the predistorted I/Q signal. | A PA input signal ready for a separate measurement experiment. |

A DPD result evaluated through a PA model is a simulation. Exported u = DPD(x) is the PA input; a physical PA measurement is needed to establish measured linearization performance. See the Studio walkthrough and measured DPD guide.

Choose your next step

| I want to… | Read | | --- | --- | | Run the same workspace experiments from a terminal | Headless CLI | | Train from Python or try a notebook | Examples · API reference | | Understand the original training pipeline and quantization | Training guide | | Use my own I/Q measurements through Python or the CLI | Dataset formats · Import & preprocessing | | Configure plots, animations and dashboards | Visualization guide | | Compare models or reproduce a paper | Benchmark · Reproduction guide | | Evaluate waveforms, streaming or hardware export | Advanced guides | | Resolve installation or signal-metric questions | FAQ |

Contribute & cite

Contributions of models, tests and documentation are welcome. Start with CONTRIBUTING.md; see testing and how we maintain the docs.

If you use OpenDPD in research, cite the OpenDPD paper. BibTeX and related papers · CITATION.cff

Chang Gao — Project Leader · Yizhuo Wu — Leading Developer. Meet the team · EMI Lab

Chat with me