Этот репозиторий делает возможным использование API Tensorflow C ++ из внешней части папок исходного кода TensorFlow и без использования системы сборки Bazel.
Этот репозиторий содержит два проекта Cmake. Проект TensorFlow_CC загружает, создает и устанавливает API TensorFlow C ++ в операционную систему, и пример проекта демонстрирует его простое использование.
Если вы хотите сразу же начать использовать этот проект, принесите предварительное изображение на Docker Hub!
Запуск изображения на процессоре:
docker run -it floopcz/tensorflow_cc:ubuntu /bin/bashЕсли вы также хотите использовать свой графический процессор NVIDIA, установите NVIDIA Docker и запустите:
docker run --gpus all -it floopcz/tensorflow_cc:ubuntu-cuda /bin/bashСписок доступных изображений:
| Название изображения | Описание |
|---|---|
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 |
Чтобы создать одно из изображений самостоятельно, например, ubuntu , запустите:
docker build -t floopcz/tensorflow_cc:ubuntu -f Dockerfiles/ubuntu . Установить требования репозитория:
sudo apt-get install cmake curl g++-7 git python3-dev python3-numpy sudo wget
Настройте Python 3 как Python по умолчанию:
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Чтобы построить сам тензорфлоу, процедура сборки также требует 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
Если вам требуется поддержка GPU на Ubuntu, также установите Nvidia Cuda Toolkit (> = 11.1), драйверы Nvidia, Cudnn и пакет cuda-command-line-tools . Процедура сборки автоматически обнаружит CUDA, если она установлена в каталогах /opt/cuda или /usr/local/cuda .
sudo pacman -S base-devel bazel cmake git python python-numpy wget
Для поддержки GPU на Arch также установите следующее:
sudo pacman -S cuda cudnn nvidia
Предупреждение: новые версии TensorFlow иногда не могут построить с последней версией Bazel. Вы можете установить более старую версию Bazel (например, 5.1.1).
ПРЕДУПРЕЖДЕНИЕ: Если ваша программа использует ProtoBuf, и вы сталкиваетесь с связью или другими проблемами, вы можете попробовать -DINSTALL_PROTOBUF=ON опция для установки версии Protobuf, соответствующей версии, в комплекте с TensorFlow. Наши Dockerfiles уже построены с правильной версией ProtoBuf, так что вы можете сначала попробовать свою программу в 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
Предупреждение: Оптимизация для генерации процессора Intel >=haswell включены по умолчанию. Если у вас есть процессор, который старше, чем генерация haswell , вы можете запустить export CC_OPT_FLAGS="-march=native" до сборки. Эта команда обеспечивает наилучшие возможные оптимизации для вашего текущего генерации процессора, но она может привести к несовместимой библиотеке с старшими поколениями.
ПРЕДУПРЕЖДЕНИЕ: В средах с низкой памяти или во многих CPU планировщик Bazel может пропустить оценки потребления ресурсов, а сборка может быть прекращена убийцей вне памяти. Если это ваш случай, рассмотрите возможность добавления параметров ограничения ресурса в CMAKE, например, 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
Если вы все еще не уверены, обратитесь к Dockerfiles для Ubuntu и Arch Linux.