Construisez TensorFlow 2.3.1 à partir des sources sur Ubuntu20.04 LTS et créez une bibliothèque partagée en langage C ++

Déclenchement des choses

Un an s'est écoulé depuis le dernier article et les informations sont obsolètes, alors je les ai mises à jour. Surtout le nombre de PV n'augmente pas: froncement de sourcils2:

Journal des modifications

--2020 / 11/18: republié sous Ubuntu20.04 LTS & TensorFlow 2.3.1. --Même jour: Ajouté car il n'y avait pas assez de commandes dans la bibliothèque

PC utilisé

cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Préparation préalable

Les commandes suivantes sont exécutées ligne par ligne à partir du haut, sauf indication contraire.

--Installation des matériaux prérequis

sudo apt install -y build-essential 
sudo apt install -y libffi-dev
sudo apt install -y libssl-dev 
sudo apt install -y zlib1g-dev
sudo apt install -y liblzma-dev
sudo apt install -y libbz2-dev libreadline-dev libsqlite3-dev 
sudo apt install -y git
sudo apt install -y openjdk-11-jdk

--Installation de pyenv

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

#Pour les gens bash,.zshrc "vers".Changer en "bashrc"
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

--Installation de python 3.9.0

pyenv install 3.9.0
pyenv global 3.9.0
python -V # 3.9.OK si 0 sort

--Installez virtualenv

pip install virtualenv
mkdir virtualEnv # (Tout)
cd virtualEnv # (Tout)
virtualenv py3.9.0 # 「py3.9."0" est une chaîne de caractères arbitraire
source py3.9.0/bin/activate # 「py3.9."0" est la chaîne de caractères arbitraires ci-dessus
#Pour sortir de l'environnement, tapez simplement "désactiver"

Préparation de la construction

--Installez le package sur python pour la construction

#Chargez l'environnement virtualenv avant de l'exécuter

pip install -U pip numpy wheel

pip install -U keras_preprocessing --no-deps

--Installation de l'outil de construction bazel

sudo apt install curl gnupg
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 update
sudo apt install -y bazel-3.1.0
sudo ln -s /usr/bin/bazel-3.1.0 /usr/bin/bazel
bazel --version  # 3.1.0

Construire

git clone --recursive https://github.com/tensorflow/tensorflow.git
git checkout v2.3.1
./configure 
#Oui ou Non, c'est tout Non
# [Default...]La sélection de répertoire est le premier répertoire python(Cette fois, virtualEnv)Vérifiez uniquement attentivement et sinon, spécifiez le bon répertoire. Sinon, appuyez sur la touche Entrée.

#Chargez l'environnement virtualenv avant de l'exécuter
bazel build --verbose_failures --config=v2 //tensorflow:libtensorflow_cc.so
bazel build --verbose_failures --config=v2 //tensorflow:libtensorflow_framework.so

Préparation de la bibliothèque

[Project Folder]<-Cette fois "tf"
  |-include/
  |   |- tensorflow/
  |-lib/
  |-CMakeLists.txt
  |-main.cpp

--Copie de tensorflow

cp bazel-bin/tensorflow/libtensorflow_cc.so ~/CLionProjects/tf/lib
cp bazel-bin/tensorflow/libtensorflow_cc.so.2 ~/CLionProjects/tf/lib
cp bazel-bin/tensorflow/libtensorflow_cc.so.2.3.1 cp -r third_party ~/CLionProjects/tf/include
cp bazel-bin/tensorflow/libtensorflow_framework.so ~/CLionProjects/tf/lib
cp bazel-bin/tensorflow/libtensorflow_framework.so.2 ~/CLionProjects/tf/lib
cp bazel-bin/tensorflow/libtensorflow_framework.so.2.3.1 ~/CLionProjects/tf/lib
cp -r tensorflow/c ~/CLionProjects/tf/include/tensorflow
cp -r tensorflow/cc ~/CLionProjects/tf/include/tensorflow
cp -r tensorflow/core ~/CLionProjects/tf/include/tensorflow
cp -r third_party ~/CLionProjects/tf/include                                   
cp -r bazel-tensorflow/external/eigen_archive/Eigen ~/CLionProjects/tf/include
cp -r bazel-tensorflow/external/eigen_archive/unsupported ~/CLionProjects/tf/include
cp -r third_party ~/CLionProjects/tf/include                                   

Contrôle de fonctionnement

CmakeLists.txt


cmake_minimum_required(VERSION 3.17)
project(tf)

set(CMAKE_CXX_STANDARD 20)

link_directories(lib) <-Postscript
include_directories(include) <-Postscript

add_executable(tf main.cpp)

target_link_libraries(tf tensorflow_cc tensorflow_framework) <-Postscript

main.cpp


#include <iostream>
#include "tensorflow/c/c_api.h"

int main() {
    printf("TensorFlow Ver. %s\n", TF_Version());
    return 0;
}

output


TensorFlow Ver. 2.3.1

Impressions

Le fait qu'il puisse être exécuté sur Ubuntu n'a pas d'importance s'il s'agit d'un système Unix, cela devrait donc être possible sur CentOS ou macOS. (Je ne sais pas)

Matériel de référence

"Cmake aide-mémoire" https://www.qoosky.io/techs/814fda555d)

"Compiler et installer tensorflow à partir de la source" https://memo.saitodev.com/home/tensorflow/build/

「tensorflow source build」 https://www.tensorflow.org/install/source

「bazel」 https://docs.bazel.build/versions/master/install-ubuntu.html

"L'histoire de l'installation de pyenv sur ubuntu 20.04 [Mis à jour le 18/07/2020]" https://qiita.com/neruoneru/items/1107bcdca7fa43de673d

Recommended Posts

Construisez TensorFlow 2.3.1 à partir des sources sur Ubuntu20.04 LTS et créez une bibliothèque partagée en langage C ++
Installez Ubuntu 20.04 dans la boîte virtuelle sur Windows10 et créez un environnement de développement à l'aide de docker
Comment installer le langage utilisé dans Ubuntu et comment créer l'environnement
J'ai essayé de générer une source de programme en langage C à partir de cURL
Construisez openssl, apache2.4, php7.4 à partir des sources sur Ubuntu-server20.04.
Publication externe et connexion de MySQL sur Ubuntu
Construction de l'environnement Protobuf et gRPC C ++ sur Ubuntu 18.04
J'ai créé une bibliothèque d'extension Ruby en C
Comment créer un environnement Pytorch sur Ubuntu