[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Rethinking tensorflow build (taking shortcuts)



Hi -devel,

The only officially supported build system for Tensorflow is
bazel[1], which is not present in our archive due to some reasons.
A possible solution to build tensorflow for Debian in
forward-engineering style is to write an alternative build system
to approximate the original build system. It is difficult because
the structure and build process for the 4.5 million lines of code
is quite complex. It's also hard to keep the proximity between
the resulting binaries and the official binary releases.

Another angle for addressing the building problem is in the
reverse-engineering style: parse the bazel buildlog, rebuild the
dependency graph and generate a ninja build for it. See [2].

Building tensorflow in this way could significantly reduce
the discrepancy between resulting binaries and official binaries,
because such a build basically replays the original build sequence.
So the resulting shared objects are expected to be good enough.

Currently the following shared objects can be built along the
described way:
 * libtensorflow_framework.so (fundamental)
 * libtensorflow.so (C)
 * libtensorflow_cc.so (C++)
They are almost identical to the official binary, except for some
manually removed parts.

Building the python package is a little bit more complex, but
parsing buildlogs is supposed to be simple enough for me to
proceed.

Far better than the two previous uploads. The old build system
builds imprecise shared objects.

[1] https://bazel.build/
[2]
https://salsa.debian.org/science-team/tensorflow/blob/lumin/debian/fakebazel.py
[3] https://salsa.debian.org/science-team/tensorflow/tree/lumin/


Reply to: