[Work-In-Progress] nextgen-wireless-dl-demos
Deep learning demos for 5G/6G wireless systems using TensorFlow and Sionna.
Disclaimer: This is an independent project and is not affiliated with, endorsed by, or sponsored by NVIDIA Corporation. Sionna is an open-source library developed by NVIDIA.
⚠️ Note: This project is under active development and not accepting external contributions at this time.
Author and Maintainer
Srikanth Pagadarai srikanth.pagadarai@gmail.com
Overview
This repository contains neural network-based demos for 5G/6G communication systems:
| Demo | Description |
|---|---|
| Digital Pre-Distortion | Digital Pre-Distortion for power amplifier linearization |
| MIMO-OFDM Neural Receiver | Neural receiver for MIMO-OFDM systems with learned channel estimation and equalization |
| Site-Specific PUSCH Autoencoder | End-to-end autoencoder for 5G NR PUSCH with trainable constellation and neural detector |
See the documentation page here: https://srikanthpagadarai.github.io/nextgen-wireless-dl-demos/
Project Structure
nextgen-wireless-dl-demos/
├── .github/
│ └── workflows/
│ ├── docs.yml # Documentation build workflow
│ ├── publish.yml # PyPI publish workflow
│ ├── test-publish.yml # Test PyPI publish workflow
│ └── test.yml # CI test workflow
├── .dockerignore # Docker build exclusions
├── .flake8 # Flake8 linter configuration
├── .gitignore # Git ignore rules
├── .gitmodules # Git submodule definitions
├── .pre-commit-config.yaml # Pre-commit hooks configuration
├── CITATION.cff # Citation
├── demos/ # All demos source code
│ ├── dpd/ # Digital Pre-Distortion demo
│ │ ├── results/ # Performance results
│ │ ├── src/ # DPD demo source code
│ │ │ ├── config.py # System configuration
│ │ │ ├── tx.py # OFDM transmitter
│ │ │ ├── rx.py # OFDM receiver
│ │ │ ├── power_amplifier.py # PA model with memory effects
│ │ │ ├── interpolator.py # Sample rate conversion
│ │ │ ├── ls_dpd.py # Least-squares DPD
│ │ │ ├── ls_dpd_system.py # LS-DPD end-to-end system
│ │ │ ├── nn_dpd.py # Neural network DPD
│ │ │ ├── nn_dpd_system.py # NN-DPD end-to-end system
│ │ │ └── system.py # Base system class
│ │ ├── tests/ # Unit tests
│ │ ├── training_ls.py # LS-DPD training
│ │ ├── training_nn.py # NN-DPD training
│ │ ├── inference.py # Model evaluation
│ │ ├── plots_ls.py # LS-DPD visualization
│ │ └── plots_nn.py # NN-DPD visualization
│ ├── mimo_ofdm_neural_receiver/ # Neural MIMO-OFDM receiver demo
│ │ ├── results/ # Performance results
│ │ ├── src/ # Neural MIMO-OFDM receiver demo source code
│ │ │ ├── config.py # System configuration
│ │ │ ├── tx.py # Transmitter chain
│ │ │ ├── rx.py # Baseline receiver
│ │ │ ├── channel.py # CDL channel model
│ │ │ ├── csi.py # Channel state information
│ │ │ ├── neural_rx.py # Neural receiver network
│ │ │ └── system.py # End-to-end system
│ │ ├── tests/ # Unit tests
│ │ ├── training.py # Neural receiver training
│ │ ├── inference.py # Trained model evaluation
│ │ ├── baseline.py # Baseline receiver evaluation
│ │ └── plots.py # BER/BLER visualization
│ └── pusch_autoencoder/ # PUSCH autoencoder demo
│ ├── results/ # Performance results
│ ├── src/ # PUSCH autoencoder demo source code
│ │ ├── config.py # System configuration
│ │ ├── pusch_trainable_transmitter.py # Trainable constellation TX
│ │ ├── pusch_trainable_receiver.py # Neural receiver
│ │ ├── pusch_neural_detector.py # Conv2D-based detector
│ │ ├── cir_generator.py # Channel impulse response generator
│ │ ├── cir_manager.py # CIR dataset management
│ │ └── system.py # End-to-end PUSCH link
│ ├── tests/ # Unit tests
│ ├── training.py # Autoencoder training
│ ├── inference.py # Trained model evaluation
│ ├── baseline.py # LMMSE baseline evaluation
│ └── plots.py # BLER and constellation plots
├── docker/ # Docker configuration
│ ├── docker-instructions.md # Docker usage guide
│ └── entrypoint.sh # Container entrypoint
├── Dockerfile # Docker image definition
├── docs/ # Sphinx documentation
│ ├── api/ # API reference pages
│ │ ├── dpd.rst # API reference page for DPD demo
│ │ ├── index.rst # index page
│ │ ├── mimo_ofdm_neural_receiver.rst # API reference page for Neural MIMO-OFDM receiver demo
│ │ └── pusch_autoencoder.rst # API reference page for PUSCH autoencoder demo
│ ├── changelog.rst # change log
│ ├── conf.py # Sphinx configuration
│ ├── demos/ # Documentation pages for demos
│ │ ├── dpd.rst/ # Documentation page for DPD demo
│ │ ├── mimo_ofdm_neural_receiver.rst/ # Documentation page for Neural MIMO-OFDM receiver demo
│ │ └── pusch_autoencoder.rst/ # Documentation page for PUSCH autoencoder demo
│ ├── index.rst # main index page
│ ├── installation.rst # installation instructions page
│ ├── make.bat # make file to build doc
│ ├── Makefile # make file to build doc
│ ├── requirements.txt # doc requirements
│ ├── _static/ # contains custom CSS, JS files
│ └── _templates/ # empty
├── gcp-management/ # GCP infrastructure (git submodule)
│ ├── gcloud-reset.sh # reset gcloud
│ ├── gcloud-setup.sh # setup gcloud
│ └── README.md # gcloud account login/setup/reset instructions
├── host_nvidia_runtime_setup.sh # NVIDIA runtime setup script
├── LICENSE # MIT license
├── poetry.lock # Dependency lock file
├── pyproject.toml # Project configuration
└── README.md # This file
Installation
Requires Python 3.10–3.12.
pip install nextgen-wireless-dl-demos
Or install from source:
git clone https://github.com/SrikanthPagadarai/nextgen-wireless-dl-demos.git
cd nextgen-wireless-dl-demos
pip install .
Requirements
- Python 3.10–3.12
- TensorFlow 2.x
- Sionna ≥0.19.0
- CUDA (optional, for GPU acceleration)
License
MIT
Docker Setup
See docker/docker-instructions.md
Quick Start
DPD Demo
See demos/dpd/README.md
MIMO OFDM Neural Receiver Demo
See demos/mimo_ofdm_neural_receiver/README.md
PUSCH Autoencoder Demo
See demos/pusch_autoencoder/README.md
References
- Sionna: An Open-Source Library for Next-Generation Physical Layer Research
- 3GPP TS 38.211: NR Physical channels and modulation
- 3GPP TS 38.212: NR Multiplexing and channel coding
Metadata
Release files for nextgen-wireless-dl-demos 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nextgen_wireless_dl_demos-0.1.2.tar.gz | 36.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.6 MB
Release files / nextgen_wireless_dl_demos-0.1.2.tar.gz
| Download URL | nextgen_wireless_dl_demos-0.1.2.tar.gz |
|---|---|
| Size | 36.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62b97909ddc20de82e1edfa1f00d6d0c67bfb52498fb6f02100414779d31e18b
|
|
BLAKE2b-256 checksum How to use checksums |
99224467d4a18b16f87e9c986f7b29ecb72a984f4674c5ecc91118727b9e19a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
|
Release files / nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl
| Download URL | nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl |
|---|---|
| Size | 36.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
741e3be399521f0c1837d67742db04d9c960ee0a33699a4c9b4f6d61221cc0e5
|
|
BLAKE2b-256 checksum How to use checksums |
f3ec7a4328d44351950ea2787a970e81e9e0f7220b815d155dceab9d527229a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure
|