Платформа глубокого обучения Tensorflow Series (1) Развертывание среды разработки

искусственный интеллект TensorFlow
Платформа глубокого обучения Tensorflow Series (1) Развертывание среды разработки

[toc]

1 обновление Python

Унифицированная версия федеративного обучения Python — 3.6.8, поэтому она должна быть в

1 Проверьте номер версии Python

Когда Python установлен на Linux (установленный по умолчанию), вы можете проверить номер версии Python, введя простую команду:

# python -Vå
Python÷ 2.7.5

или:

# python --version
Python 2.7.5

Видно, что версия Python, которая поставляется с системой, — 2.7.5.

2 Скачать новую версию

ВходитьСтраница загрузки Python, выберите нужную версию.

Здесь я выбираю версию 3.6.8.

# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

img

3 декомпрессия

После завершения загрузки разархивируйте его:

# tar -zxvf Python-3.6.8.tgz

4 Конфигурация установки

ModuleNotFoundError: нет модуля с именем «_ssl»

Решение выглядит следующим образом:

(1) Сначала войдите в каталог Python-3.6.3, который представляет собой файл каталога, в который вы установили python3.6 после распаковки.

(2) перейдите в каталог Modules, найдите файлы Setup и Setup.dist и раскомментируйте следующие строки.

Изменения в настройках:

图片

установка vim (около 51%)

Изменения в Setup.dist

图片

vim Setup.dist (около 50%)

(3) Скомпилируйте и установите

Войдите в распакованный каталог и установите конфигурацию:

yum install openssl openssl-devel

При выполнении ./configure, если сообщается об ошибке:

configure: error: no acceptable C compiler found in $PATH

Указывает, что соответствующий компилятор не установлен. В настоящее время вам необходимо установить/обновить gcc и другие зависимости.

# yum install make gcc gcc-c++ 

После завершения повторите:

# ./configure --prefix=/usr/local/python3 --enable-optimizations

img

5 Скомпилируйте и установите

После завершения настройки можно скомпилировать:

# make 

Долго ждать... когда закончите, установите:

# make install 

6 Подтвердить

После успешной установки вы можете проверить версию Python:

# python -V
Python 2.7.5
# python3 -V
Python 3.5.2

Одна из них — старая версия 2.x, а другая — новая версия 3.x.

** Примечание: ** Существует ссылка на Python3 под / usr / local / bin / который указывает на Python 3.5 в каталоге Bin.

7 Установите 3.x как версию по умолчанию

Проверьте путь Python в /usr/bin. Вы можете видеть, что python связан с python 2.7, поэтому выполнение python эквивалентно выполнению python 2.7.

# ls -al /usr/bin | grep python
-rwxr-xr-x.  1 root root      11216 12月  1 2015 abrt-action-analyze-python
lrwxrwxrwx.  1 root root          7 8月  30 12:11 python -> python2
lrwxrwxrwx.  1 root root          9 8月  30 12:11 python2 -> python2.7
-rwxr-xr-x.  1 root root       7136 11月 20 2015 python2.7

Переименуйте исходную мягкую ссылку Python:

# mv /usr/bin/python /usr/bin/python.bak

Связать python с python3:

# ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

На этом этапе снова проверьте версию Python:

# python -V
Python 3.5.2

Результат — 3.x, что указывает на то, что использовался python3.

обновить пункт

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

8 Настройте ням

После обновления Python, поскольку python по умолчанию указывает на python3, yum нельзя использовать в обычном режиме.Вам необходимо отредактировать файл конфигурации yum:

# vim /usr/bin/yum

Также изменить:

# vim /usr/libexec/urlgrabber-ext-down

Измените #!/usr/bin/python на #!/usr/bin/python2.7, сохраните и выйдите.

9 Устранение неполадок SSL

Это означает, что есть проблема с установкой ssl, или ssl не установлен, что можно обнаружить по следующему

Указывает, что ssl не установлен

Решение Перейдите в файл /usr/local/python3/python-3.6.8/modules/setup в каталоге установки Python3 и удалите комментарии к следующим четырем строкам

перекомпилировать

./configure --prefix=/usr/local/python сделать сделать установку ошибка ниже

./Modules/_ssl.c:72:25: фатальная ошибка: openssl/rsa.h: Нет такого файла или каталога: Решение:

img

yum установить openssl-devel ./configure --prefix=/usr/local/python3 сделать && сделать установить Ошибки нет, проверь

2 Базель установка

Адрес соединения:Woohoo. Краткое описание.

Базель версии 0.26.1.

1 Установить с помощью бинарного установщика

Бинарный установщик находится в Bazelна странице релизов GitHub.

Установщик содержит двоичные файлы Bazel 1. Есть также некоторые другие библиотеки, которые необходимо установить для работы Bazel.

2 Шаг 1: Установите необходимый пакет

Сначала установите необходимые компоненты:pkg-config,zip,g++,zlib1g-dev,unzippython.

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python

3 Шаг 2: Загрузите Базель

Версия ограничена версией 0.26.1.

Следующий,bazel-<version>-installer-linux-x86_64.shотГитхабизСтраница выпуска БазеляЗагрузите бинарный установщик Bazel.

Введите в терминале следующее, чтобы загрузить последнюю версию (до 08 сентября 2018 г.)

wget https://github.com/bazelbuild/bazel/releases/download/0.26.1/bazel-0.26.1-installer-linux-x86_64.sh

Файл больше 150 мегабайт, после скачивания сделаем перерыв.

4 Шаг 3: Запустите программу установки

Запустите установщик Bazel следующим образом:

// 以下是统一写法
chmod +x bazel-<version>-installer-linux-x86_64.sh
./bazel-<version>-installer-linux-x86_64.sh --user

//   以下是对应版本的写法
chmod +x bazel-0.26.1-installer-linux-x86_64.sh
./bazel-0.26.1-installer-linux-x86_64.sh --user

Должен--userфлаг для установки Bazel в$HOME/binкаталог в системе и установить.bazelrcдорожка$HOME/.bazelrc. использовать это--helpкоманда для просмотра других параметров установки.

5 Шаг 4. Настройте среду

если вы используете--userПриведенный выше флаг запускает установщик Bazel, исполняемый файл Bazel будет установлен в вашем$HOME/binв каталоге. Рекомендуется добавить этот каталог к ​​пути по умолчанию, например:

export PATH="$PATH:$HOME/bin"

Вы также можете добавить эту команду в свой~/.bashrcФайл.

6 Важный шаг: измените путь кеша bazel

这个命令不起作用
	build --disk_cache=/export/dubaokun/tools/.bazel_cache
尝试环境变量,加入到环境变量里面/etc/profile
	export TEST_TMPDIR=/export/dubaokun/tools/.bazel_cache

Поскольку я заранее не задал путь к кешу bazel, позже я внес изменения вручную.

lrwxrwxrwx  1 root root    108 Mar 30 19:51 bazel-bin -> /root/.cache/bazel/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out/k8-opt/bin
lrwxrwxrwx  1 root root    108 Mar 30 19:51 bazel-genfiles -> /root/.cache/bazel/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out/k8-opt/bin
lrwxrwxrwx  1 root root     97 Mar 30 19:51 bazel-out -> /root/.cache/bazel/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out
lrwxrwxrwx  1 root root     87 Mar 30 19:51 bazel-tensorflow -> /root/.cache/bazel/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow
lrwxrwxrwx  1 root root    113 Mar 30 19:51 bazel-testlogs -> /root/.cache/bazel/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out/k8-opt/testlogs
-rw-r--r--  1 root root    122 Mar 30 16:16 BUILD


-----
rm bazel-bin
ln -s /export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out/k8-opt/bin/ bazel-bin

rm bazel-genfiles
ln -s /export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out/k8-opt/bin/ bazel-genfiles

rm bazel-out
ln -s /export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out bazel-out

rm bazel-tensorflow
ln -s /export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow bazel-tensorflow

rm bazel-testlogs
ln -s /export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/execroot/org_tensorflow/bazel-out/k8-opt/testlogs

/export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/external


/export/dubaokun/tools/.bazel_cache/_bazel_root/27509bc6e2111f3da3abc402b7d8c310/external/eigen_archive/49177915a14a.tar.gz: All mirrors are down: [GET returned 404 Not Found, Read timed out]


3 Установка буфера протокола

Версия 3.8.0, конкретная версия

Адрес подключения:ву ву краткое описание.com/afraid/00 не голоден 93 квота 2…

1. Введение

Protocol Buffers (сокращенно Protobuf) — это кросс-язычный, кросс-платформенный и расширяемый инструмент сериализации с открытым исходным кодом от Google. По сравнению с популярными форматами кодирования, такими как XML и JSON, Protobuf обладает очень высокой производительностью. Поэтому формат кодирования Protobuf (суффикс файла.proto) широко используется в разработке сетей,protocКак компилятор Protobuf, он может быть основан на файле определения Protobuf..protoСоздавайте файлы определения типов и коды операций кодеков на нескольких языках (таких как C++, Java, Go, Python и т. д.),

Эта статья в основном знакомитprotocспособы установки и использования.

2 Компиляция исходного кода и установка

Официальный исходный код:GitHub.com/Google/pro Т…

(1) Зависимости установки Как указано на официальном сайте, protoc имеет следующие зависимости: autoconf, automake, libtool, curl, make, g++, unzip, gmock где gmock зависит от libtool

(2) Скомпилируйте и установите:

git clone https://github.com/google/protobuf
./autogen.sh  # 生成 configure 文件
./configure
make
make check
sudo make install
sudo ldconfig

Примечание: После завершения установки в каталоге /usr/lib будут сгенерированы три типа статических и динамических файлов библиотек с префиксами libprotobuf, libprotobuf-lite и libprotoc. Затем нам нужно выполнить ldconfig, чтобы обновить путь к библиотеке. Если вышеуказанные шаги выполнены, выполнитеprotocЕсли ошибка все еще возникает, мы можем вручную связать следующим образом

/etc/ld.so.conf.d/libprotobuf.conf

/usr/local/lib
ln -s /usr/lib/libprotobuf.so.10.0.0 /usr/lib/libprotobuf.so

3 Бинарная установка

Если вы не хотите компилировать и устанавливать, вы также можете загрузить бинарный пакет непосредственно для установки, мы можем скачать его сздесьПолучите напрямую скомпилированный двоичный файл протокола.

Например, загрузите следующие два пакета:

protoc-3.3.0-win32.zip
protoc-3.3.0-linux-x86_64.zip

Разархивируйте по пути PATH, чтобы завершить установку.

sudo unzip protoc-3.0.0-beta-3-linux-x86_64.zip
sudo chmod a+x protoc

Посмотреть справку по использованию

protoc --help

официальная документация

4 Пример использования

После установки protoc мы можем установить примеры из официального руководства, чтобы проверить использование.

1) написать.protoФайл определения

syntax = "proto3"
package tutorial;

message Person {
    string name = 1;
    int32 id = 2;
    string email = 3;

    enum PhoneType {
        MOBILE = 0;
        HOME = 1;
        WORK = 2;
    }
    message PhoneNumber {
        string number = 1;
        PhoneType type = 2 [default = HOME];
    }
    repeated PhoneNumber phone = 4;
}

message AddressBook {
    repeated Person person = 1;
}
  1. компилировать.protoфайл для создания файлов определений и операций для нужного языка

Например, здесь мы хотим сгенерировать исходный код C++, а затем выполнить:

protoc --cpp_out=. addressbook.proto

Сгенерированные файлы: addressbook.pb.h, addressbook.pb.cc

  1. сгенерировать вышеуказанное.pb.ccфайлы и файлы нашего приложения C++ для компиляции
g++ addressbook.pb.cc readinput.cpp -lprotobuf

5 протоколов использования и опций

пройти черезprotoc --helpМожно посмотреть, как использовать

Формат использования протокола:

protoc [OPTION] PROTO_FILES
-IPATH, --proto_path=PATH   Specify the directory in which to search for imports. 
                            May be specified multiple times;
                            If not given, the current working directory is used.
--plugin=EXECUTABLE         Specifies a plugin executable to use.
                              Normally, protoc searches the PATH for
                              plugins, but you may specify additional
                              executables not in the path using this flag.
                              Additionally, EXECUTABLE may be of the form
                              NAME=PATH, in which case the given plugin name
                              is mapped to the given executable even if
                              the executable's own name differs.
--cpp_out=OUT_DIR           Generate C++ header and source.
--csharp_out=OUT_DIR        Generate C# source file.
--java_out=OUT_DIR          Generate Java source file.
--javanano_out=OUT_DIR      Generate Java Nano source file.
--js_out=OUT_DIR            Generate JavaScript source.
--objc_out=OUT_DIR          Generate Objective C header and source.
--php_out=OUT_DIR           Generate PHP source file.
--python_out=OUT_DIR        Generate Python source file.
--ruby_out=OUT_DIR          Generate Ruby source file.

пример:

protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/route_guide.proto
protoc -I ../../protos --cpp_out=. ../../protos/route_guide.proto

4 Установка пакета

Должен быть пользователем root.

1 команда установки

sudo pip install -i pypi.tuna.tsinghua.edu.cn/simple numpy grpcio Keras-Applications Keras-Preprocessing h5py requests enum mock

sudo pip install -i pypi.mirrors.ustc.edu.cn/simple/ numpy==1.18.5 grpcio Keras-Applications Keras-Preprocessing h5py requests enum mock

2 зеркальный адрес

Зеркальный адрес, замените путь загрузки pip

Выполните cmd от имени администратора, затем введите следующую команду

pip install tensorflow -i pypi.tuna.tsinghua.edu.cn/simple/ pip install opencv-python -i pypi.tuna.tsinghua.edu.cn/simple/

5 Компиляция исходного кода Tensorflow

Причина, по которой я пытался скомпилировать TF из исходного кода, очень проста. Во-первых, следующее предупреждение будет появляться каждый раз, когда оно запускается, и оно кажется немного «недовольным».imgВо-вторых, в компьютере изначально нет графического процессора, если ускорение процессора вообще нельзя использовать, то оно слишком медленное. Поэтому я задумался о компиляции оптимизированного установочного пакета TF.

Готов к работе

1. Просмотр информации, которую можно оптимизировать

Непосредственно используйте PIP для установки обычной версии TF, а затем случайно запустите программу. Если пишет, что советов по оптимизации производительности нет, то "поздравляю", дальше делать нечего. Это уже самое быстрое состояние вашего компьютера. Если появится следующая подсказка, указывающая на то, что еще есть место для оптимизации, запишите имена этих наборов инструкций, упомянутых в предупреждении, которые будут использоваться позже.img

2. Установите Базель

Bazel — это инструмент для компиляции TensorFlow. Сначала подпишитесьэта страницаподскажите, скачайте файл репо.imgАдрес загрузкиздесь,Следующее.imgЗатем последовательно введите команды.

cp vbatts-bazel-epel-7.repo /etc/yum.repos.d/
yum install bazel

Некоторые другие зависимости могут быть установлены в течение этого периода, просто подождите спокойно. Когда это сделано, это выглядит следующим образом.img

3.Git TensorFlow

введите команду.

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

Приведенная выше команда создаст папку с именем «tensorflow» в вашей текущей папке, где хранятся загруженные файлы. Как показано ниже.imgЕсли вам будет предложено, что команда git недействительна, непосредственноyum install gitВот и все.

Скомпилируйте TensorFlow

1. Настроить и скомпилировать

Введите следующую команду, переключите текущий каталог на git tensorflow и запустите программу настройки.

cd tensorflow/
./configure

imgВы можете видеть, что существует множество параметров конфигурации, в основном просто используйте параметры по умолчанию.img

2. Начать компиляцию

введите команду.

bazel build --jobs 10 --config=opt //tensorflow/tools/pip_package:build_pip_package
===========
bazel build -c opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx  //tensorflow/tools/pip_package:build_pip_package

Приведенная выше команда сгенерирует скрипт с именем build_pip_package. Параметры этого шага являются ключом к оптимизации, и эти инструкции по оптимизации указаны здесь. Важно отметить, что то, какие из них используются, не является фиксированным. Код здесь предлагается оптимизировать на моем VPS, это не значит, что он подходит для вашего компьютера. Например, следующая команда является директивой оптимизации, поддерживаемой другим сервером.

bazel build -c opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx --copt=-mavx2 --copt=-mfma //tensorflow/tools/pip_package:build_pip_package

Лучший способ — использовать pip для установки общедоступной версии TF, как упоминалось ранее, затем запустить ее небрежно, прочитать предупреждающее сообщение, записать информацию и настроить ее здесь соответствующим образом. В противном случае ЦП его не поддерживает, но он скомпилирован, и при его использовании может быть сообщено об ошибке. Обратите внимание, что это очень медленный процесс, наберитесь терпения. Интерфейс компиляции выглядит следующим образом.img

И он может сломаться посередине. Если сеть плохая, рекомендуется начать компиляцию экрана, иначе ssh будет отключаться после компиляции в течение длительного времени, но не беспокойтесь, он все равно запустится с точки останова. Вот как выглядит перезагрузка с подсказкой «Найдена 1 цель…».imgПри компиляции столкнулся со следующей ошибкой, в итоге поискал в интернете и сказал, что это вызвано нехваткой памяти.imgЭто можно решить, увеличив своп расширенной памяти.

Запустите скрипт следующим образом, чтобы создать установочный пакет pip в папке /tmp/tensorflow_pkg, генерация будет очень быстрой.

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg_python3.6.8
==========
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

imgНа этом компиляция завершена.

Установить ТензорФлоу

Перед установкой сначала удалите TF, ранее установленный с помощью pip.

pip uninstall tensorflow

Затем используйте pip для установки колеса, которое мы создали.

pip install /tmp/tensorflow_pkg/tensorflow-1.5.0rc0-cp27-cp27mu-linux_x86_64.whl

В зависимости от платформы имя пакета может отличаться. На этом установка завершена.

Тест TensorFlow

Протестируйте с тем же кодом, что и раньше, вывод будет следующим.imgКак видите, подсказок по оптимизации производительности больше нет. Однако, я не знаю почему, трудоемкий тест TF, составленный мной, стал длиннее. Я не знаю, проблема ли в версии. Версия 1.4.1 была установлена ​​с помощью pip, а версия 1.5.0rc была скомпилирована мной.

6 Сопутствующая информация