Skip to main content

ONNX Runtime-based CPU/GPU inference plugin for VapourSynth

Project description

VapourSynth-MLRT-ORT

This package contains the ONNX Runtime backend implementation of the vs-mlrt plugin.

Installation

To install the standard CPU/DirectML/CoreML package:

pip install vapoursynth-mlrt-ort

To install the CUDA-enabled package:

pip install vapoursynth-mlrt-ort-cuda

Building from source

Requirements

  • C++ Compiler: C++20 compatible (e.g. MSVC 2019+, GCC, Clang)
  • Dependencies:
    • onnxruntime (ONNX Runtime SDK)
    • ONNX
    • Protobuf
  • Optional Backend Dependencies:
    • DirectML (Windows): Requires DirectML SDK. Define the DML_DIR environment/CMake variable to point to the SDK directory.
    • CUDA: Requires CUDAToolkit and cuDNN SDKs. Ensure CUDA_PATH, CUDNN_PATH / CUDNN_HOME are set correctly.

Compilation

By default, the package builds the CPU backend (with CoreML on macOS and optionally DirectML on Windows):

uv build --package vapoursynth-mlrt-ort

To build the CUDA-enabled version, the package definition must first be updated using the helper script:

# Update pyproject.toml package configuration to target CUDA
uv run --script scripts/cuda_pyproject.py pyproject.toml

# Compile the CUDA package
uv build --package vapoursynth-mlrt-ort-cuda

Detailed parameter information from the parent project follows.


VapourSynth ONNX Runtime

The vs-onnxruntime plugin provides optimized CPU & CUDA runtime for some popular AI filters.

Building and Installation

To build, you will need ONNX Runtime, protobuf, ONNX and their dependencies.

Please refer to ONNX Runtime Docs for installation notes. Or, you can use our prebuilt Windows binary releases from AmusementClub.

Please refer to our github actions workflow for sample building instructions.

If you only use the CPU backend, then you just need to extract binary release into your vapoursynth/plugins directory.

However, if you also use the CUDA backend, you will need to download some CUDA libraries as well, please see the release page for details. Those CUDA libraries also need to be extracted into VS vapoursynth/plugins directory. The plugin will try to load them from vapoursynth/plugins/vsort/ directory or vapoursynth/plugins/vsmlrt-cuda/ directory.

Usage

Prototype: core.ort.Model(clip[] clips, string network_path[, int[] overlap = None, int[] tilesize = None, string provider = "", int device_id = 0, int verbosity = 2, bint cudnn_benchmark = True, bint builtin = False, string builtindir="models", bint fp16 = False, bint path_is_serialization = False, bint use_cuda_graph = False])

Arguments:

  • clip[] clips: the input clips, only 32-bit floating point RGB or GRAY clips are supported. For model specific input requirements, please consult our wiki.
  • string network_path: the path to the network in ONNX format.
  • int[] overlap: some networks (e.g. CNN) support arbitrary input shape where other networks might only support fixed input shape and the input clip must be processed in tiles. The overlap argument specifies the overlapping (horizontal and vertical, or both, in pixels) between adjacent tiles to minimize boundary issues. Please refer to network specific docs on the recommended overlapping size.
  • int[] tilesize: Even for CNN where arbitrary input sizes could be supported, sometimes the network does not work well for the entire range of input dimensions, and you have to limit the size of each tile. This parameter specify the tile size (horizontal and vertical, or both, including the overlapping). Please refer to network specific docs on the recommended tile size.
  • string provider: Specifies the device to run the inference on.
    • "CPU" or "": pure CPU backend
    • "CUDA": CUDA GPU backend, requires Nvidia Maxwell+ GPUs.
    • "DML": DirectML backend
    • "COREML": CoreML backend
  • int device_id: select the GPU device for the CUDA backend.'
  • int verbosity: specify the verbosity of logging, the default is warning.
    • 0: fatal error only, ORT_LOGGING_LEVEL_FATAL
    • 1: also errors, ORT_LOGGING_LEVEL_ERROR
    • 2: also warnings, ORT_LOGGING_LEVEL_WARNING
    • 3: also info, ORT_LOGGING_LEVEL_INFO
    • 4: everything, ORT_LOGGING_LEVEL_VERBOSE
  • bint cudnn_benchmark: whether to let cuDNN use benchmarking to search for the best convolution kernel to use. Default True. It might incur some startup latency.
  • bint builtin: whether to load the model from the VS plugins directory, see also builtindir.
  • string builtindir: the model directory under VS plugins directory for builtin models, default "models".
  • bint fp16: whether to quantize model to fp16 for faster and memory efficient computation.
  • bint path_is_serialization: whether the network_path argument specifies an onnx serialization of type bytes.
  • bint use_cuda_graph: whether to use CUDA Graphs to improve performance and reduce CPU overhead in CUDA backend. Not all models are supported.
  • int ml_program: select CoreML provider.
    • 0: NeuralNetwork
    • 1: MLProgram

When overlap and tilesize are not specified, the filter will internally try to resize the network to fit the input clips. This might not always work (for example, the network might require the width to be divisible by 8), and the filter will error out in this case.

The general rule is to either:

  1. left out overlap, tilesize at all and just process the input frame in one tile, or
  2. set all three so that the frame is processed in tilesize[0] x tilesize[1] tiles, and adjacent tiles will have an overlap of overlap[0] x overlap[1] pixels on each direction. The overlapped region will be throw out so that only internal output pixels are used.

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

vapoursynth_mlrt_ort-16.0.tar.gz (675.8 kB view details)

Uploaded Source

Built Distributions

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

vapoursynth_mlrt_ort-16.0-py3-none-win_amd64.whl (16.0 MB view details)

Uploaded Python 3Windows x86-64

vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (10.0 MB view details)

Uploaded Python 3manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (8.5 MB view details)

Uploaded Python 3manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_x86_64.whl (11.2 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_arm64.whl (9.2 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

File details

Details for the file vapoursynth_mlrt_ort-16.0.tar.gz.

File metadata

  • Download URL: vapoursynth_mlrt_ort-16.0.tar.gz
  • Upload date:
  • Size: 675.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for vapoursynth_mlrt_ort-16.0.tar.gz
Algorithm Hash digest
SHA256 c4a3836c4d90ebd62cf2098bc9ae6c3f35f03416f35b2acee420d449d344541a
MD5 69364e85d57225375d10462a853ed6c3
BLAKE2b-256 ea218cada623c851008cb23de24a05d8c0c3125af7e82289eeb4dbb7f65e7b07

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_mlrt_ort-16.0.tar.gz:

Publisher: cd-publish.yml on Jaded-Encoding-Thaumaturgy/vs-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_mlrt_ort-16.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for vapoursynth_mlrt_ort-16.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b2a9e85eb10ae9fbf455acb10e48c5b10f4d0f74d4b11cfe31e6711cd613d41a
MD5 a9db3ac6e3015de4b7eb964672c3bcff
BLAKE2b-256 5bb55e14b1f8df6e37b5e2135520eeeef17d775abbb201ea89bb8a2657f32c16

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_mlrt_ort-16.0-py3-none-win_amd64.whl:

Publisher: cd-publish.yml on Jaded-Encoding-Thaumaturgy/vs-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a46418b4b5b073a740f7d590451ef849f848fcf34e302984b2f33acba41bed3
MD5 fa8a65324aca5c7f586840169043117e
BLAKE2b-256 adafd7c25fe99920c962f0e1216d2a06fc69e4cc12a850eab598d9f0893bd877

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: cd-publish.yml on Jaded-Encoding-Thaumaturgy/vs-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3e021f454f166dd5d2e938ccdd0e6771050004d14a85e26a2d73f7d4f73df41e
MD5 f28a3544d782229b202014f5476b4559
BLAKE2b-256 9a608f68dfbecfdfc4f809537a8397f7f387fad74754abb7df6097638fac82ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_mlrt_ort-16.0-py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl:

Publisher: cd-publish.yml on Jaded-Encoding-Thaumaturgy/vs-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 9830d2cb7f3ef34a03e2d7cb51ae5a8156afc0635371fa0b7c5dc58244f87a25
MD5 eed7e6f44274165dd3e2965db8be1f16
BLAKE2b-256 29ee7897f302043c80260e2e6a600f35d5de823c8a31b9ada6029ca5efde20d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_x86_64.whl:

Publisher: cd-publish.yml on Jaded-Encoding-Thaumaturgy/vs-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 87a9f5d6ba573158f705e3087681d62bde1f68fff3162ec1b5bd16e157a9e840
MD5 1fa8cbf5233a7b58438ae639706d94ef
BLAKE2b-256 f28dbdcd96fb54e3ae64de09d12fa2796c56229577f884655b9df49cb1e40f3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_mlrt_ort-16.0-py3-none-macosx_15_0_arm64.whl:

Publisher: cd-publish.yml on Jaded-Encoding-Thaumaturgy/vs-wheels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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