Skip to main content

Deep Learning Demos for 5G/6G Using TensorFlow and Sionna

Project description

[Work-In-Progress] nextgen-wireless-dl-demos

License: MIT

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nextgen_wireless_dl_demos-0.1.2.tar.gz (36.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl (36.3 MB view details)

Uploaded Python 3

File details

Details for the file nextgen_wireless_dl_demos-0.1.2.tar.gz.

File metadata

  • Download URL: nextgen_wireless_dl_demos-0.1.2.tar.gz
  • Upload date:
  • Size: 36.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.12 Linux/6.11.0-1018-azure

File hashes

Hashes for nextgen_wireless_dl_demos-0.1.2.tar.gz
Algorithm Hash digest
SHA256 62b97909ddc20de82e1edfa1f00d6d0c67bfb52498fb6f02100414779d31e18b
MD5 89012550b07adb8696c910dd1b1facb9
BLAKE2b-256 99224467d4a18b16f87e9c986f7b29ecb72a984f4674c5ecc91118727b9e19a5

See more details on using hashes here.

File details

Details for the file nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for nextgen_wireless_dl_demos-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 741e3be399521f0c1837d67742db04d9c960ee0a33699a4c9b4f6d61221cc0e5
MD5 f1f06733826a1e7ee7e37de228d8e6ef
BLAKE2b-256 f3ec7a4328d44351950ea2787a970e81e9e0f7220b815d155dceab9d527229a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page