Este repositorio hace posible el uso de la API TensorFlow C ++ desde el exterior de las carpetas de código fuente de TensorFlow y sin el uso del sistema de compilación de bazel.
Este repositorio contiene dos proyectos CMake. El proyecto TensorFlow_CC descarga, construye e instala la API TensorFlow C ++ en el sistema operativo y el proyecto de ejemplo demuestra su uso simple.
Si desea comenzar a usar este proyecto de inmediato, ¡obtenga una imagen preconstruida en Docker Hub!
Ejecutando la imagen en la CPU:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bashSi también desea utilizar su GPU NVIDIA, instale Nvidia Docker y ejecute:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bashLa lista de imágenes disponibles:
| Nombre de imagen | Descripción |
|---|---|
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 de tensorflow_cc |
floopcz/tensorflow_cc:archlinux-cuda | Arch Linux Build of tensorflow_cc + Nvidia CUDA |
Para construir una de las imágenes usted mismo, por ejemplo, ubuntu , ejecute:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . Instalar requisitos de repositorio:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
Configure Python 3 para que sea el Python predeterminado:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Para construir el tensorflow en sí, el procedimiento de construcción también requiere 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 requiere soporte de GPU en Ubuntu, también instale NVIDIA CUDA Toolkit (> = 11.1), controladores NVIDIA, CUDNN y paquete de cuda-command-line-tools . El procedimiento de compilación detectará automáticamente CUDA si está instalado en /opt/cuda o /usr/local/cuda directorios.
sudo pacman -S base-devel bazel cmake git python python-numpy wget
Para soporte de GPU en Arch, también instale lo siguiente:
sudo pacman -S cuda cudnn nvidia
ADVERTENCIA: Las versiones más nuevas de TensorFlow a veces no se construyen con la última versión de Bazel. Es posible que desee instalar una versión anterior de Bazel (por ejemplo, 5.1.1).
ADVERTENCIA: si su programa usa ProtoBuf y encuentra un enlace u otros problemas, puede probar -DINSTALL_PROTOBUF=ON la opción para instalar una versión ProtoBuf que coincida con la versión inclinada con TensorFlow. Nuestros dockerfiles ya están construidos con la versión correcta de ProtoBuf, por lo que es posible que desee probar su programa en el Dockerfile primero.
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
ADVERTENCIA: las optimizaciones para la generación de CPU Intel >=haswell están habilitados de forma predeterminada. Si tiene un procesador que es más antiguo que la generación haswell , es posible que desee ejecutar export CC_OPT_FLAGS="-march=native" antes de la construcción. Este comando proporciona las mejores optimizaciones posibles para su generación actual de CPU, pero puede hacer que la biblioteca construida sea incompatible con las generaciones anteriores.
ADVERTENCIA: en entornos de baja memoria o muchos CPU, el planificador de bazel puede perder las estimaciones de consumo de recursos y la construcción puede ser terminado por el asesino fuera de memoria. Si ese es su caso, considere agregar parámetros de límite de recursos a cmake, por ejemplo, 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 todavía no está seguro, consulte a DockerFiles para Ubuntu y Arch Linux.