Skip to content

video tagging fails if Tensorflow GPU mode is enabled #1382

@val-kulkov

Description

@val-kulkov

Which version of recognize are you using?

9.0.7

Enabled Modes

Object recognition, Face recognition, Video recognition, Music recognition

TensorFlow mode

GPU mode

Downstream App

Files App

Which Nextcloud version do you have installed?

31.0.9

Which Operating system do you have installed?

Fedora Linux 42 (LXC container in Proxmox 9)

Which database are you running Nextcloud on?

PostgreSQL 17.4

Which Docker container are you using to run Nextcloud? (if applicable)

N/A

How much RAM does your server have?

16GiB

What processor Architecture does your CPU have?

x86_64

Describe the Bug

On running a full classification on the terminal with "occ recognize:classify", video tagging fails and the following error message is displayed:
NOT_FOUND: could not find registered platform with id: 0x750799c7fae4
See the full log in the Debug Log section below.

Face, object and landmark recognition and audio tagging work fine. When Tensorflow GPU mode is disabled, video tagging also completes successfully.

After much struggle finding a combination of versions of NVIDIA driver, CUDA Toolkit and cuDNN library for my NVIDIA Tesla P4 with compute capability 6.1 that work with Memories / Recognize / Face Recognition, the following versions were identified as working with these Nextcloud apps in my use case:

  • NVIDIA GPU Driver Version: 580.65.06
  • NVIDIA CUDA Toolkit Version: 11.8.68
  • cuDNN Library Version: 8.9.7

The Recognize Wiki page for GPU mode specifies the following component requirements:

  • A CUDA-enabled GPU
  • NVIDIA® GPU drivers version 450.80.02 or higher.
  • CUDA® Toolkit 11.x.
  • cuDNN SDK 8.x.

Although the component versions in my use case appear to satisfy the requirements for the GPU mode, I went further and attempted to install the exact versions that are specified in

<NEXTCLOUD_ROOT>/apps/recognize/node_modules/@tensorflow/tfjs-node/README.md

In the current version, README.md identifies the following requirements for GPU support:

For GPU support, [email protected] or later requires the following NVIDIA® software installed on your system:

Name Version
NVIDIA® GPU drivers >450.x
CUDA® Toolkit 11.2
cuDNN SDK 8.1.0

However, cuDNN 8.1.0 fails to compile because it does not support NVIDIA GPU drivers >350.x. For this reason, I could not complete testing with the exact versions in tfjs-node/README.md.

Expected Behavior

Video tagging should complete successfully with the GPU mode enabled, as it does when the GPU mode is disabled.

To Reproduce

If you are lucky to have a working NVIDIA Tesla P4 in your system, install the following components:

  • NVIDIA GPU Driver Version: 580.65.06
  • NVIDIA CUDA Toolkit Version: 11.8.68
  • cuDNN Library Version: 8.9.7

enable GPU mode in Nextcloud -> Administration Settings -> Recognize and run "occ recognize:classify" on the terminal to observe the error with tagging of video files.

Debug log

<... skipping irrelevant lines ...>

Classifier process output: Platform node has already been set. Overwriting the platform with node.

Classifier process output: 2025-09-17 17:53:13.483997: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1532] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 6991 MB memory: -> device: 0, name: Tesla P4, pci bus id: 0000:08:00.0, compute capability: 6.1

Classifier process output: 2025-09-17 17:53:16.939815: I tensorflow/cc/saved_model/reader.cc:43] Reading SavedModel from: /srv/http/nextcloud/apps/recognize/models/movinet-a3/

Classifier process output: 2025-09-17 17:53:17.311014: I tensorflow/cc/saved_model/reader.cc:81] Reading meta graph with tags { serve }
2025-09-17 17:53:17.311088: I tensorflow/cc/saved_model/reader.cc:122] Reading SavedModel debug info (if present) from: /srv/http/nextcloud/apps/recognize/models/movinet-a3/

Classifier process output: 2025-09-17 17:53:17.312705: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1532] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 6991 MB memory: -> device: 0, name: Tesla P4, pci bus id: 0000:08:00.0, compute capability: 6.1

Classifier process output: 2025-09-17 17:53:18.151905: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled

Classifier process output: 2025-09-17 17:53:18.381505: I tensorflow/cc/saved_model/loader.cc:228] Restoring SavedModel bundle.

Classifier process output: 2025-09-17 17:53:21.674864: I tensorflow/cc/saved_model/loader.cc:212] Running initialization op on SavedModel bundle at path: /srv/http/nextcloud/apps/recognize/models/movinet-a3/

Classifier process output: 2025-09-17 17:53:23.339519: I tensorflow/cc/saved_model/loader.cc:301] SavedModel load for tags { serve }; Status: success: OK. Took 6399711 microseconds.

Classifier process output: Starting transcoding

Classifier process output: ffmpeg version 4.4.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100

Classifier process output: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/srv/http/nextcloud/data/val/files/Videos/TandemMovie.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: isommp41mp42
creation_time : 2024-06-01T01:21:38.000000Z
Duration: 00:03:00.57, start: 0.000000, bitrate: 7714 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 7591 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc
Classifier process output: (default)
Metadata:
creation_time : 2024-06-01T01:21:38.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
creation_time : 2024-06-01T01:21:38.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]

Classifier process output: Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help

Classifier process output: [swscaler @ 0x433d0dc0] deprecated pixel format used, make sure you did set range correctly

Classifier process output: Output #0, image2pipe, to 'pipe:':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: isommp41mp42
encoder : Lavf58.76.100
Stream #0:0(und): Video: mjpeg, yuvj420p(pc, bt709, progressive), 176x176 [SAR 16:9 DAR 16:9], q=2-31, 200 kb/s, 2 fps,
Classifier process output: 2 tbn (default)
Metadata:
creation_time : 2024-06-01T01:21:38.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
encoder : Lavc58.134.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A

Classifier process output: frame= 1 fps=0.0 q=3.6 size= 7kB time=00:00:00.50 bitrate= 116.2kbits/s speed=2.99x
Classifier process output: frame= 14 fps=0.0 q=1.6 size= 122kB time=00:00:07.00 bitrate= 143.1kbits/s speed=10.4x
Classifier process output: frame= 30 fps= 25 q=1.6 size= 287kB time=00:00:15.00 bitrate= 157.0kbits/s speed=12.7x
Classifier process output: frame= 44 fps= 26 q=1.6 size= 420kB time=00:00:22.00 bitrate= 156.2kbits/s speed=13.1x
Classifier process output: frame= 56 fps= 26 q=1.6 size= 555kB time=00:00:28.00 bitrate= 162.5kbits/s speed=12.8x
Classifier process output: frame= 60 fps= 26 q=1.6 Lsize= 600kB time=00:00:30.00 bitrate= 163.8kbits/s speed=12.9x
video:600kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%

Classifier process output: finished transcoding

Classifier process output: decoded 1/60 images

Classifier process output: decoded 2/60 images

Classifier process output: decoded 3/60 images

Classifier process output: decoded 4/60 images

Classifier process output: decoded 5/60 images

Classifier process output: decoded 6/60 images

Classifier process output: decoded 7/60 images

Classifier process output: decoded 8/60 images

Classifier process output: decoded 9/60 images

Classifier process output: decoded 10/60 images

Classifier process output: decoded 11/60 images

Classifier process output: decoded 12/60 images

Classifier process output: decoded 13/60 images

Classifier process output: decoded 14/60 images

Classifier process output: decoded 15/60 images

Classifier process output: decoded 16/60 images

Classifier process output: decoded 17/60 images

Classifier process output: decoded 18/60 images

Classifier process output: decoded 19/60 images

Classifier process output: decoded 20/60 images

Classifier process output: decoded 21/60 images

Classifier process output: decoded 22/60 images

Classifier process output: decoded 23/60 images

Classifier process output: decoded 24/60 images

Classifier process output: decoded 25/60 images

Classifier process output: decoded 26/60 images

Classifier process output: decoded 27/60 images

Classifier process output: decoded 28/60 images

Classifier process output: decoded 29/60 images

Classifier process output: decoded 30/60 images

Classifier process output: decoded 31/60 images

Classifier process output: decoded 32/60 images

Classifier process output: decoded 33/60 images

Classifier process output: decoded 34/60 images

Classifier process output: decoded 35/60 images

Classifier process output: decoded 36/60 images

Classifier process output: decoded 37/60 images

Classifier process output: decoded 38/60 images

Classifier process output: decoded 39/60 images

Classifier process output: decoded 40/60 images

Classifier process output: decoded 41/60 images

Classifier process output: decoded 42/60 images

Classifier process output: decoded 43/60 images

Classifier process output: decoded 44/60 images

Classifier process output: decoded 45/60 images

Classifier process output: decoded 46/60 images

Classifier process output: decoded 47/60 images

Classifier process output: decoded 48/60 images

Classifier process output: decoded 49/60 images

Classifier process output: decoded 50/60 images

Classifier process output: decoded 51/60 images

Classifier process output: decoded 52/60 images

Classifier process output: decoded 53/60 images

Classifier process output: decoded 54/60 images

Classifier process output: decoded 55/60 images

Classifier process output: decoded 56/60 images

Classifier process output: decoded 57/60 images

Classifier process output: decoded 58/60 images

Classifier process output: decoded 59/60 images

Classifier process output: decoded 60/60 images

Classifier process output: 2025-09-17 17:54:48.978554: W tensorflow/core/framework/op_kernel.cc:1745] OP_REQUIRES failed at xla_ops.cc:296 : NOT_FOUND: could not find registered platform with id: 0x750799c7fae4

Classifier process output: Error: Session fail to run with error: 2 root error(s) found.
(0) NOT_FOUND: could not find registered platform with id: 0x750799c7fae4
[[{{node movinet_classifier/movinet/stem/stem/conv3d/StatefulPartitionedCall}}]]
[[StatefulPartitionedCall/_1555]]
(1) NOT_FOUND: could not find registered platform with id: 0x750799c7fae4
[[{{node movinet_classifier/movinet/stem/stem/conv3d/StatefulPartitionedCall}}]]
0 successful operations.
0 derived errors ignored.
at NodeJSKernelBackend.runSavedModel (/srv/http/nextcloud/apps/recognize/node_modules/@tensorflow/tfjs-node-gpu/dist/nodejs_kernel_backend.js:461:43)
at TFSavedModel.predict (/srv/http/nextcloud/apps/recognize/node_modules/@tensorflow/tfjs-node-gpu/dist/saved_model.js:341:43)
at MovinetModel.predict (/srv/http/nextcloud/apps/recognize/src/movinet/MovinetModel.js:46:21)
at /srv/http/nextcloud/apps/recognize/src/movinet/MovinetModel.js:95:24
at /srv/http/nextcloud/apps/recognize/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:4562:22
at Engine.scopedRun (/srv/http/nextcloud/apps/recognize/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:4572:23)
at Engine.tidy (/srv/http/nextcloud/apps/recognize/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:4561:21)
at Object.tidy (/srv/http/nextcloud/apps/recognize/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/tf-core.node.js:6316:19)
at MovinetModel.inference (/srv/http/nextcloud/apps/recognize/src/movinet/MovinetModel.js:92:21)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Result for /val/files/Videos/TandemMovie.mp4(TandemMovie.mp4) = []

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    On hold

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions