Skip to main content

Rebellions Extension for PyTorch

Project description

PyTorch for Rebellions' NPU

This package provides PyTorch integration for Rebellions' NPU.

Getting Started (torch: Python package, rebel-compiler: Python package)

Prerequisites

  • Python 3.9 or later
  • Git
  • CMake 3.18 or later
  • Ninja build system
  • LDAP credentials for Rebellions' package repository

Update Git submodules

Clone submodules recursively. This will download required third-party libraries such as Rebel Compiler headers from third_party/rebel_compiler.

git submodule update --init ./

Create Python Virtual Environment

Create Python virtual environment. This will create a directory named .venv in the current directory.

python3 -m venv ./.venv && source ./.venv/bin/activate

Install Dependencies

Install Python package manager poetry. This will manage dependencies, building, packaging and installing.

pip3 install poetry==2.0.1

Save credentials for https://gate-keeper.rebellions.in. Authorization for https://pypi.rbln.in is required. But, this is not safe way to save credentials. See ~/.config/pypoetry/auth.toml.

export LDAP_USERNAME=daekyeong.kim     # Put your username
export LDAP_PASSWORD=mysecretpassword  # Put your password
poetry config keyring.enabled false    # Optional, if building freezes while auth
poetry config http-basic.rbln-internal $LDAP_USERNAME $LDAP_PASSWORD

NOTE During development we have to use rbln-internal instead of rbln. If you want to download rebel compiler from rbln (external pypi server of rebellions), do the following.

poetry config http-basic.rbln <rbln username> <rbln password>

Install dependencies written in poetry.lock using poetry, except the root package torch-rbln. Be careful, below command uninstall packages which is not on poetry.lock.

poetry sync --no-root

Choose Build Type (Optional)

Choose build type like below. Default is Release.

export RBLN_BUILD_TYPE=Debug

Install Editable Package

Build C++ project and install editable torch-rbln package.

poetry install --only-root

Control RBLN Log Verbosity

To control the verbosity of logs emitted by torch_rbln, including detailed debug information such as CPU fallback operations, you can set the following environment variable:

export TORCH_RBLN_LOG_LEVEL=DEBUG

Available log levels (from most to least verbose):

  • DEBUG – Show all debug messages, including CPU fallbacks and trace markers.
  • INFO – General runtime information without detailed debug context.
  • WARNING – Only show important warnings.
  • ERROR – Only show errors and critical failures.

The default level is WARNING. Setting DEBUG is especially useful during development or when troubleshooting execution issues on RBLN devices.

Performance Optimization Flag (Optional)

To reduce runtime overhead (e.g., skipping unnecessary NaN/Inf checks), set the following environment variable:

export TORCH_RBLN_DEPLOY=ON

This enables lightweight execution for deployment scenarios.

Dynamo Cache Disable (Optional)

By default, kernel caching(from dynamo) are enabled during execution. If you wish to disable for debugging or development purposes, set the following environment variables:

export TORCH_RBLN_CACHE=OFF

Install Wheel Package (Optional)

If you want to make *.whl and install that, run below command.

poetry build
pip install ./dist/torch_rbln*.whl

When you change C++ or Python source code, you just run Install Editable Package or Install Wheel Package again.

Apply Custom rebel-compiler

You have 2 choices:

  • Use built-in one
  • Use external one

Use torch-rbln built-in rebel-compiler (torch: Python package, rebel-compiler: third_party/rebel_compiler)

This way is strongly recommended. Those are same with Getting Started.

git submodule update --init ./
python3 -m venv ./.venv && source ./.venv/bin/activate
pip3 install poetry==2.0.1
export LDAP_USERNAME=daekyeong.kim     # Put your username
export LDAP_PASSWORD=mysecretpassword  # Put your password
poetry config http-basic.rbln $LDAP_USERNAME $LDAP_PASSWORD

Without poetry sync, checkout rebel-compiler where ./third_party/rebel_compiler to your custom branch.

pushd ./third_party/rebel_compiler
  git checkout my_custom_branch
popd

It will make a package and install into your environment with syncing.

./tools/apply-custom-rebel.sh

Above script edits pyproject.toml and poetry.lock files. If you want to apply custom rebel-compiler temporarily, keep your eyes on those files.

(Optional) You can choose build type like below.

RBLN_BUILD_TYPE=Debug ./tools/apply-custom-rebel.sh

Then, you can build or install torch-rbln package on the custom rebel-compiler package.

poetry install --only-root

Use external rebel-compiler (for rebel-compiler developers)

Prereqs

  • You’ve already built rebel-compiler.
  • ${REBEL_HOME} points to the rebel-compiler repo root.

1) Create and activate a virtualenv

python3 -m venv .venv
source .venv/bin/activate

2) Add your local rebel-compiler in editable mode

poetry add --editable "${REBEL_HOME}/python"

3) Install this project, using the external compiler

RBLN_USE_EXTERNAL_REBEL_COMPILER=1 poetry install --only-root

Create Git Commit

Git pre-commit hook is working. So, when you create Git commit, linting would be triggered. For prepare linting, you MUST initialize lintrunner.

source ./.venv/bin/activate

lintrunner init

Once lintrunner initalized, no need to initialize again. You can commit now.

git commit

Some failures can be fixed automatically. Run below command for auto fixing.

lintrunner -m main -a

Run Tests

Assume that you are in Python virtual environment, and install torch-rbln package successfully.

C++ Tests

Making package runs in new isolated environment. Although you build your C++ project using poetry install --only-root, can't find that directory. So, for CTest you MUST build C++ project manually.

./tools/build-libtorch-rbln.sh

ctest --test-dir ./build

Python Tests

pytest ./test

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

torch_rbln-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl (335.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl (335.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl (335.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl (334.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

Details for the file torch_rbln-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_rbln-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c0822008674a751e6d01b4f3b520cadd9c1ca545c2b75d6ff1c97092f52090b5
MD5 a1c5ae97c428b5f2ad6a0c6c0cbfd6c4
BLAKE2b-256 c2d443035455bc7222a9a028bc7985dac90e739f4f1b607957c13d4497d473b3

See more details on using hashes here.

File details

Details for the file torch_rbln-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_rbln-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3cab48232068d4517acede4fa52e2dd19124e5bf1583ba1a00351e1d35fdac3f
MD5 4b4a095ce56213ff84d8c3281a18ce05
BLAKE2b-256 19efda5801abd70a278b731d850c6206e7cce85a3ca310f4e30e4303301e1c1d

See more details on using hashes here.

File details

Details for the file torch_rbln-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_rbln-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 28a1fd5aba49903396ff7ede8c659ccac61cdf27ea1e727731d5dff12afccdf2
MD5 a4d22de9915f8adca13bf2c71310d9e3
BLAKE2b-256 9c7de92eb42e4467cac26edba21d9544d6d0ad67a6ee09a0e14d1e5122b79bde

See more details on using hashes here.

File details

Details for the file torch_rbln-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_rbln-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7280ce19a36f7ae1b41607e32148fbb3ab75332974118d9278902ea3bb608c34
MD5 b7975734c26eba1f55751da51d1f9e45
BLAKE2b-256 930b39e635d67568542ed3a98eeda7016c0e35e07db489b1ea0d27152358da70

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