Perceptilabs Docker setup for Jetson

Hello,

I’m trying to setup Perceptilabs within a docker container to use within my Jetson Xavier.
I’m starting from nvcr.io/nvidia/l4t-tensorflow:r32.5.0-tf1.15-py3 that should satisfy all Perceptilab’s requirements. (Python 3.6, Tensorflow 1.15)

My current issue is that Perceptilabs is not specifically released under this architecture (aarch64) and although manylinux1 falls within the category of “almost” automatic conversion I hit a bump on the road that I’m not sure how to proceed.

When auditing the wheel (auditwheel show perceptilabs-0.11.8-cp36-cp36m-manylinux1_x86_64.whl) I get the following diagnostic:

perceptilabs-0.11.8-cp36-cp36m-manylinux1_x86_64.whl is consistent
with the following platform tag: "linux_aarch64".

The wheel references external versioned symbols in these system-
provided shared libraries: libc.so.6 with versions {'GLIBC_2.2.5',
'GLIBC_2.4', 'GLIBC_2.14'}

This constrains the platform tag to "linux_aarch64". In order to
achieve a more compatible tag, you would need to recompile a new wheel
from source on a system with earlier versions of these libraries, such
as a recent manylinux image.

The image brings GLIBC 2.7 so that when I try to run auditwheel repair perceptilabs-0.11.8-cp36-cp36m-manylinux1_x86_64.whl

results in:

INFO:auditwheel.main_repair:Repairing perceptilabs-0.11.8-cp36-cp36m-manylinux1_x86_64.whl
usage: auditwheel [-h] [-V] [-v] command ...
auditwheel: error: cannot repair "perceptilabs-0.11.8-cp36-cp36m-manylinux1_x86_64.whl" to "manylinux2014_aarch64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.

I would greatly appreciate any pointers in the right direction.

Hi @reox,
Before you get too far, are you able to pip install tensorflow=1.15 on that system? Our package depends on that, but I don’t believe Tensorflow 1.15 supports ARM.
-Jon

Hi @jon,
Yes, it actually comes pre-installed. But just to be sure, running this:

python3 -c 'import tensorflow as tf; print(tf.__version__)'

results in:

2021-02-18 20:10:02.330380: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.10.2
WARNING:tensorflow:Deprecation warnings have been disabled. Set TF_ENABLE_DEPRECATION_WARNINGS=1 to re-enable them.
1.15.4

EDIT1:I’ve spent part of the day trying to downgrade my glibc version in order to try to recompile the Perceptilabs wheel but to no avail.
I would be quite nice if someone from the staff could try to build it on a cheap Raspberry Pi (64bit one at least) :grin: but maybe it’s asking too much.

EDIT2: Just to clarify, Tensorflow works and it is supported on ARM. I think the issue might be in some other dependency.

Hi @reox,
I’m afraid that PerceptiLabs doesn’t support ARM-based architectures at the moment. We likely will at some point in the future, though. I’ve created a feature request for that for you.
-Jon

1 Like