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

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
│
├── demos/
│   ├── dpd/                              # Digital Pre-Distortion demo
│   │   ├── results/                      # Performance results
│   │   ├── src/
│   │   │   ├── 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/
│   │   │   ├── 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/
│       │   ├── 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
│
├── docs/                                 # Sphinx documentation
│   ├── api/                              # API reference
│   ├── demos/                            # Demo documentation
│   ├── conf.py                           # Sphinx configuration
│   └── *.rst                             # Documentation pages
│
├── docker/                               # Docker configuration
│   ├── docker-instructions.md            # Docker usage guide
│   └── entrypoint.sh                     # Container entrypoint
│
├── gcp-management/                       # GCP infrastructure (git submodule)
│
├── Dockerfile                            # Docker image definition
├── host_nvidia_runtime_setup.sh          # NVIDIA runtime setup script
├── pyproject.toml                        # Project configuration
├── poetry.lock                           # Dependency lock file
└── LICENSE                               # MIT license

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 .

Quick Start

DPD Demo

# Train Neural Network DPD
python demos/dpd/training_nn.py --iterations 10000

# Run inference
python demos/dpd/inference.py --dpd_method nn

# Generate plots
python demos/dpd/plots_nn.py

MIMO OFDM Neural Receiver Demo

# Train neural receiver
python demos/mimo_ofdm_neural_receiver/training.py --iterations 10000

# Run inference
python demos/mimo_ofdm_neural_receiver/inference.py

# Generate comparison plots
python demos/mimo_ofdm_neural_receiver/plots.py

PUSCH Autoencoder Demo

# Train autoencoder (16 BS antennas, default)
python demos/pusch_autoencoder/training.py

# Train autoencoder (32 BS antennas)
python demos/pusch_autoencoder/training.py --num_bs_ant 32

# Run inference
python demos/pusch_autoencoder/inference.py

# Generate plots
python demos/pusch_autoencoder/plots.py

Development

Setup

git clone https://github.com/SrikanthPagadarai/nextgen-wireless-dl-demos.git
cd nextgen-wireless-dl-demos
poetry install
poetry run pre-commit install

Run Tests

# Run all tests
poetry run pytest demos/ -v

# Run tests for a specific demo
poetry run pytest demos/dpd/tests/ -v
poetry run pytest demos/mimo_ofdm_neural_receiver/tests/ -v
poetry run pytest demos/pusch_autoencoder/tests/ -v

Code Formatting

poetry run black .
poetry run flake8 .

Docker

# Build image
docker build -t nextgen-wireless-dl-demos .

# Run container with GPU support
docker run --gpus all -it nextgen-wireless-dl-demos

Requirements

  • Python 3.10–3.12
  • TensorFlow 2.x
  • Sionna ≥0.19.0
  • CUDA (optional, for GPU acceleration)

License

MIT

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.1.tar.gz (36.5 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.1-py3-none-any.whl (36.6 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nextgen_wireless_dl_demos-0.1.1.tar.gz
  • Upload date:
  • Size: 36.5 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.1.tar.gz
Algorithm Hash digest
SHA256 9853b724b745b5abec2a67da4b3a75b4df7d23f4623164f13ccdc409e77d3647
MD5 15a93043e2f1e2003b6af551328404f6
BLAKE2b-256 0c0bacbbd91e0d6ca7fc3290a774d3c233c6eaca13874e09741a654d0fc15146

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for nextgen_wireless_dl_demos-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 30fd56b3368df32ebcd7129d1b14991871aec6bf4c366b6b1293e64c42f60307
MD5 e32047434073905aae85baebe4e9700a
BLAKE2b-256 360237e2764cae62f8bf9ae5510927bac99100d80a16082df9833ee1163c6301

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