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 (torch: Python package, rebel-compiler: external rebel_compiler)

Go to your custom rebel-comipler and finish building.

pushd "$REBEL_HOME"
  python -m venv ./.venv && source ./.venv/bin/activate

  # Assume that you build your `rebel-compiler` perfectly.

  deactivate
popd

Then, go to torch-rbln repository, and do the same things.

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

You MUST include below code. It checks REBEL_HOME, adds PYTHONPATH, and declares RBLN_USE_EXTERNAL_REBEL_COMPILER.

. ./tools/activate-rebel-env

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

poetry install --only-root

NOTE: That way does not install rebel-compiler Python package. If you want to install it, use built-in rebel-compiler.

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.1-cp312-cp312-manylinux_2_28_x86_64.whl (327.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl (327.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl (325.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl (325.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bc46ef6945a42a629d62102e2a60cdf1204ad1a416403d05f7ef3e1fbea9f2f
MD5 50a7a910952d5faae8beb4b2ed7434ca
BLAKE2b-256 39c9fc1e9cb67407ddf327180cbb726bbaf0093702a3dbe16f5f530df55d0fc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e8f5a5f48181c8ba87749528395571d58504c2d558c55eeda6248254a018318
MD5 6d7158c6817e2a1a524bfbfd2cd8ffa8
BLAKE2b-256 d34436ab2706b64e59621c00325907b9eafc76ba0b0643ac4ecd23845d1bafe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2dbf083eb82a096ac25a8978433a51a91580b9d8bcac89e5a667646625c72f96
MD5 b8c60a45d1caef43479606c72445ebf1
BLAKE2b-256 3cec5ba2371e2f394cb119279e02916c95cdff43961b6d3e842532b802ed27c8

See more details on using hashes here.

File details

Details for the file torch_rbln-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for torch_rbln-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c45efba4871c2f5f5a4ae77ca8c15f6ee4a52ed1a18c8e1828b6d86e4a6c35da
MD5 d14a3fd01f9906e083dfdde0b42b00b6
BLAKE2b-256 58ea42c247dd0fdf1701da9a7d60e7f70b68927a849387b68c29b2c91aba304d

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