Este repositório possibilita o uso da API do TensorFlow C ++ da parte externa das pastas de código -fonte do TensorFlow e sem o uso do sistema de construção do Bazel.
Este repositório contém dois projetos de cmake. Os downloads do projeto tensorflow_cc, constrói e instala a API do TensorFlow C ++ no sistema operacional e o projeto de exemplo demonstra seu uso simples.
Se você deseja começar a usar este projeto imediatamente, busque uma imagem pré -construída no Docker Hub!
Executando a imagem na CPU:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bashSe você também deseja utilizar sua GPU da NVIDIA, instale o NVIDIA Docker e execute:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bashA lista de imagens disponíveis:
| Nome da imagem | Descrição |
|---|---|
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 |
Para construir uma das imagens, por exemplo, ubuntu , execute:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . Instale os requisitos do repositório:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
Configure o Python 3 como o Python padrão:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Para construir o próprio TensorFlow, o procedimento de construção também requer 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
Se você precisar de suporte à GPU no Ubuntu, também instale o NVIDIA CUDA Toolkit (> = 11.1), os drivers da NVIDIA, o pacote CUDNN e cuda-command-line-tools . O procedimento de compilação detectará automaticamente o CUDA se estiver instalado em diretórios /opt/cuda ou /usr/local/cuda .
sudo pacman -S base-devel bazel cmake git python python-numpy wget
Para suporte à GPU no ARCH, também instale o seguinte:
sudo pacman -S cuda cudnn nvidia
Aviso: as versões mais recentes do Tensorflow às vezes não conseguem construir com a versão mais recente do Bazel. Você pode instalar uma versão mais antiga do Bazel (por exemplo, 5.1.1).
AVISO: Se o seu programa usar o Protobuf e você encontrar a ligação ou outros problemas, poderá tentar -DINSTALL_PROTOBUF=ON opção para instalar uma versão do Protobuf que corresponda à versão com tensorflow. Nossos dockerfiles já foram criados com a versão correta do Protobuf, então você pode experimentar primeiro o seu programa no 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
Aviso: otimizações para geração da Intel CPU >=haswell são ativadas por padrão. Se você possui um processador mais antigo que a geração haswell , convém executar export CC_OPT_FLAGS="-march=native" antes da compilação. Este comando fornece as melhores otimizações possíveis para sua geração atual da CPU, mas pode fazer com que a biblioteca construída seja incompatível com as gerações mais antigas.
AVISO: Em ambientes de baixa memória ou ManyC, o Bazel Scheduler pode perder as estimativas de consumo de recursos e a construção pode ser encerrada pelo assassino fora da memória. Se esse for o seu caso, considere adicionar parâmetros de limite de recursos ao cmake, por exemplo, 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
Se você ainda não tiver certeza, consulte o Dockerfiles para o Ubuntu e o Arch Linux.