Container
Instructions for running the Video2X container.
Prerequisites
- Docker, Podman, or another OCI-compatible runtime
- A GPU that supports the Vulkan API
- Check the Vulkan Hardware Database to see if your GPU supports Vulkan
Upscaling a Video
This section documents how to upscale a video. Replace $TAG
with an appropriate container tag. A list of available tags can be found here (e.g., 6.1.1
).
AMD GPUs
Make sure your host has the proper GPU and Vulkan libraries and drivers, then use the following command to launch the container:
docker run --gpus all -it --rm -v $PWD/data:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
NVIDIA GPUs
In addition to installing the proper drivers on your host, nvidia-docker2
(NVIDIA Container Toolkit) must also be installed on the host to use NVIDIA GPUs in containers. Below are instructions for how to install it on some popular Linux distributions:
- Debian/Ubuntu
- Follow the official guide to install
nvidia-docker2
- Follow the official guide to install
- Arch/Manjaro
- Install
nvidia-container-toolkit
from the AUR - E.g.,
yay -S nvidia-container-toolkit
- Install
Once all the prerequisites are installed, you can launch the container:
docker run --gpus all -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
Depending on the version of your nvidia-docker and some other mysterious factors, you can also try setting no-cgroups = true
in /etc/nvidia-container-runtime/config.toml
and adding the NVIDIA devices into the container if the command above doesn't work:
docker run --gpus all --device=/dev/nvidia0 --device=/dev/nvidiactl --runtime nvidia -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
If you are still getting a vkEnumeratePhysicalDevices failed -3
error at this point, try adding the --privileged
flag to give the container the same level of permissions as the host:
docker run --gpus all --privileged -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
Intel GPUs
Similar to NVIDIA GPUs, you can add --gpus all
or --device /dev/dri
to pass the GPU into the container. Adding --privileged
might help with the performance (thanks @NukeninDark).
docker run --gpus all --privileged -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3