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=DEBUG

Available log levels (from most to least verbose):

  • VERBOSE – Show very detailed verbose messages including function entry/exit and parameter values. Note: VERBOSE logs are only available in Debug builds (when RBLN_BUILD_TYPE=Debug).
  • DEBUG – Show 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 VERBOSE provides the most detailed logging for deep debugging, but requires a Debug build. DEBUG is useful for general development or troubleshooting execution issues on RBLN devices and works in both Debug and Release builds.

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.

Rebellions Scalable Design (RSD) Mode (Optional)

By default, each physical device is mapped to a logical device with a 1:1 relationship. If you wish to enable Rebellions Scalable Design (RSD) mode, which aggregates all physical devices into a single logical device (index 0), set the following environment variable:

export TORCH_RBLN_RSD=1

When enabled, all available physical devices will be registered as a single logical device at index 0, allowing resource sharing across physical devices. This is useful for scenarios where you want to treat multiple physical devices as a unified resource pool.

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.5-cp313-cp313-manylinux_2_28_x86_64.whl (390.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.5-cp312-cp312-manylinux_2_28_x86_64.whl (390.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.5-cp311-cp311-manylinux_2_28_x86_64.whl (390.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

torch_rbln-0.1.5-cp310-cp310-manylinux_2_28_x86_64.whl (389.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.5-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 38c377cd40eef326fa7362a8b24e2a6281e82786e871db98daf14928957b40ab
MD5 ed7e347d952a49b322b70e5e4132539b
BLAKE2b-256 db54c03fa022fb1c6293af4cf849cb0432d13a2950329113e1a0fa1ece850f6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.5-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 75a0e785eaee169237c2ce2d60827d840a30ad5eb77c872e308c54939d3b4f12
MD5 cb51db0756fcc77bafa96c76753dc25a
BLAKE2b-256 e6aad7e7b5b0cf44106e9c58c96e8b5c4f7f7e124a74a5ccada69c0bd923e6bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.5-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 635b3b51cabed1aa2dedb3374b1867dff3bd0a3ad36406f2dc3a027bdf8e79c4
MD5 995c7492263e601d520450258a6cfbb3
BLAKE2b-256 487a2b2fdef696d83c6ec88ec10a8c44b79a2527c07b3d3c49a4406e5cc09777

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torch_rbln-0.1.5-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2f757589eb3278b5a9484754c44f9980d124260259dcb07d9d7e02cdc4c9609e
MD5 ed3986e961d1efff38296ea9017f7a19
BLAKE2b-256 72989045e10940bbde176fde63b03f773d3465f3d427d5d9c1ecdcd80eee482b

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