Ce référentiel rend possible l'utilisation de l'API Tensorflow C ++ de l'extérieur des dossiers de code source TensorFlow et sans utiliser le système de construction Bazel.
Ce référentiel contient deux projets CMake. Le projet Tensorflow_CC télécharge, construit et installe l'API TensorFlow C ++ dans le système d'exploitation et l'exemple de projet démontre son utilisation simple.
Si vous souhaitez commencer à utiliser ce projet immédiatement, récupérez une image préconçue sur Docker Hub!
Exécution de l'image sur CPU:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bashSi vous souhaitez également utiliser votre GPU Nvidia, installez Nvidia Docker et exécutez:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bashLa liste des images disponibles:
| Nom d'image | Description |
|---|---|
floopcz/tensorflow_cc:ubuntu | Ubuntu Build of tensorflow_cc |
floopcz/tensorflow_cc:ubuntu-cuda | Ubuntu Build of tensorflow_cc + Nvidia Cuda |
floopcz/tensorflow_cc:archlinux | Arch Linux Build of tensorflow_cc |
floopcz/tensorflow_cc:archlinux-cuda | Arch Linux Build of tensorflow_cc + Nvidia Cuda |
Pour construire l'une des images vous-même, par exemple ubuntu , courir:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . Installer les exigences du référentiel:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
Configurez Python 3 pour être le Python par défaut:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Afin de construire le Tensorflow lui-même, la procédure de construction nécessite également Bazel:
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt-get update && sudo apt-get install bazel
Si vous avez besoin d'une prise en charge du GPU sur Ubuntu, veuillez également installer Nvidia Cuda Toolkit (> = 11.1), les pilotes NVIDIA, CUDNN et le package cuda-command-line-tools . La procédure de construction détectera automatiquement CUDA si elle est installée dans les répertoires /opt/cuda ou /usr/local/cuda .
sudo pacman -S base-devel bazel cmake git python python-numpy wget
Pour la prise en charge du GPU sur Arch, installez également ce qui suit:
sudo pacman -S cuda cudnn nvidia
AVERTISSEMENT: les versions plus récentes de Tensorflow ne parviennent pas à construire avec la dernière version de Bazel. Vous souhaiterez peut-être installer une ancienne version de Bazel (par exemple, 5.1.1).
AVERTISSEMENT: Si votre programme utilise Protobuf et que vous rencontrez une liaison ou d'autres problèmes, vous pouvez essayer -DINSTALL_PROTOBUF=ON l'option pour installer une version Protobuf correspondant à la version regroupée avec TensorFlow. Nos dockerfiles sont déjà construits avec la bonne version de Protobuf, vous voudrez peut-être d'abord essayer votre programme dans Dockerfile.
git clone https://github.com/FloopCZ/tensorflow_cc.git
cd tensorflow_cc
cd tensorflow_cc
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig
AVERTISSEMENT: les optimisations pour la génération Intel CPU >=haswell sont activées par défaut. Si vous avez un processeur plus ancien que la génération haswell , vous souhaiterez peut-être exécuter export CC_OPT_FLAGS="-march=native" avant la construction. Cette commande fournit les meilleures optimisations possibles pour votre génération actuelle de processeur, mais elle peut rendre la bibliothèque construite incompatible avec les générations plus anciennes.
AVERTISSEMENT: Dans les environnements à faible mémoire ou à plusieurs processeurs, le planificateur de bazel peut manquer les estimations de la consommation de ressources et la construction peut être résiliée par le tueur hors mémoire. Si tel est votre cas, envisagez d'ajouter des paramètres de limite de ressource à CMake, par exemple, cmake -DLOCAL_RAM_RESOURCES=2048 -DLOCAL_CPU_RESOURCES=4 ..
# cleanup bazel build directory
rm -rf ~/.cache
# remove the build folder
cd .. && rm -rf build
// example.cpp
# include < tensorflow/core/platform/env.h >
# include < tensorflow/core/public/session.h >
# include < iostream >
using namespace std ;
using namespace tensorflow ;
int main ()
{
Session* session;
Status status = NewSession ( SessionOptions (), &session);
if (!status. ok ()) {
cout << status. ToString () << " n " ;
return 1 ;
}
cout << " Session successfully created. n " ;
} # CMakeLists.txt
find_package (TensorflowCC REQUIRED)
add_executable (example example.cpp)
# Link the Tensorflow library.
target_link_libraries (example TensorflowCC::TensorflowCC)
# You may also link cuda if it is available.
# find_package(CUDA)
# if(CUDA_FOUND)
# target_link_libraries(example ${CUDA_LIBRARIES})
# endif() mkdir build && cd build
cmake .. && make
./example
Si vous n'êtes toujours pas sûr, consultez les Dockerfiles pour Ubuntu et Arch Linux.