NVIDIA Jetson TX 2にTensorFlowをインストールする

16080 ワード

5月2回|NVIDIA DLI深さ学習入門コース


5月19日/5月26日1日集中型学習クイックガイド
全文を読む
>
本文は全部で3070字、3枚の図で、読解時間は14分と予想されています.
この文書の内容は次のとおりです.
ブラシ機
ブラシ完了後の操作
TensorFlow 1をインストールします.0.1
install TensorFlow v1.2.1
ブラシ機
ブラシの目的はUbuntuオペレーティングシステムとJetPack SDKをJetson TX 2にインストールすることです.ブラシの操作は公式チュートリアルで簡単です.このプロセスでは、Jetson TX 2とシンクホストHostが同じルータの下に接続されている必要があることに注意してください.ホストはまずオペレーティングシステムをTX 2にブラシをかけます.このステップはデータ線接続で完了し、SSH方式でホスト上のSDKをTX 2にインストールします.そのため、ホストとTX 2は同じルータの下に接続する必要があります.ホストがTX 2のipアドレスを見つけるのに便利です.
ブラシを始めるときはTX 2をRECOVRY MODEにセットする必要があります.セット方法はインストール中にヒントを与えます.このヒントをよく読んでください.
もう一つの問題は、ネットワークからインストールファイルをダウンロードしてホストに移行する過程です.当社のネットワークはイントラネット環境なので、ネットワークダウンロードソースに接続できず、ダウンロードに失敗しました.このような場合は、ネットワーク環境を交換すればよい.
ブラシ完了後の操作
この部分は主にUbuntuの不要なソフトウェアをアンインストールし、より多くのディスク容量を空けることです.具体的にはjetsonHacksのpostFlashTX 1を参照してください.私はLibre Officeをアンインストールしただけです.今後の開発では使用しないからです.
また、上記のチュートリアルでは、swap fileを追加するスクリプトも用意されています.swap fileを追加するのは、ハードディスク(HDD)に仮想メモリを作成するためで、TensorFlowのような大規模なプロジェクトをコンパイルするのに十分なメモリを提供します.例えばTX 2の実際のメモリは8 Gしかなく、TFをコンパイルするにも少なくとも8 Gのメモリが必要であるため、仮想メモリ空間を作成する必要がある.
仮想メモリ容量を追加する操作は、「How to install TensorFlow on the NVIDIA Jetson TX 2?」を直接参考にしました.のStep 4:Createa Swap Fileは、ディスク上に8 Gの仮想スペースを作成します.
1.8 Gサイズのswapfilefallocate-l 8 G swapfileを作成する
2.swapfileの権限を変更chmod 600 swapfile
3.swap領域mkswap swapfileの作成
4.swapゾーンsudo swapon swapfileをアクティブにする
5.swap領域がswapon-sを使用していることを確認する
手順5を実行すると、出力に新しく確立された仮想空間があります.そうしないと、上記のコマンドが正しく実行されているかどうかを確認します.
仮想メモリ領域の作成に成功しました
仮想メモリ容量を確立していない場合は、build TFで次のようなエラーが発生する可能性があります.エラーを報告する前にINFOのプロンプト「Killed」は、メモリが足りないためです.
out of memoryによるエラー
このエラーが発生するにつれて、ブラウザが開いているページがすべてクラッシュするなど、ソフトウェアのクラッシュの症状もあります.このような症状が現れたら、仮想空間の割り当てを忘れたに違いありません.

TensorFlowのインストール
通常のUbuntu、Windowsなどのシステムでは、TensorFlowは簡単なpip方式を提供しており、GPU有りとGPU無しのバージョンに分けられているが、pip実装方式には問題があり、TensorFlowはCPU計算を実行する効率が低く最適化されていないため、ソースコードを再コンパイルするのが最善の実装方式である.なお、TX 2のCPUはARMアーキテクチャであり、NVIDIA独自のCPUを混在させているため、現在はTensorFlowを再コンパイル・再インストールするしかない.インストール手順は直接TensorFlow on NVIDIA Jetson TX 2 Development Kitに従ってください.
How to install TensorFlow on the NVIDIA Jetson TX 2を参考にしたら?」で、TFソースのNUMAに関する部分を変更します.変更すると、ファイルtensorflow/stream_が異なることに気づくかもしれません.executor/cuda/cuda_gpu_executor.ccのTryToReadNumaNode()関数のソースコードにはaarch 64アーキテクチャの識別と処理が追加されています.
1static int TryToReadNumaNode(const string &pci_bus_id, int device_ordinal){
2#ifdef __aarch64__
3LOG(INFO) << "ARM64 does not support NUMA - returning NUMA node zero";
4return 0;
5...
6}

そうであれば、ソースコードを変更する必要はありません.
そうでなければ、以下の内容を読んでください.TX 2のARMアーキテクチャはNUMAをサポートしていないため、build TensorFlowの前にcloneからローカルのソースコードを修正する必要があります.具体的には、TFを後で使用するときにエラーが発生しないように、次の2行の内容を追加します.
1LOG(INFO) << "ARM has no NUMA node, hardcoding to return zero";
2return 0;

図:
ARMはNUMAをサポートせず、ハードコーディングを追加し、0を返す
install TensorFlow v1.2.1 on TX2
To use mobilenet on TX2 for object detection task, I have to use a newer TensorFlow than version 1.0.1. TF 1.2.1 is good for me, while JetsonHacks does not give guide to install TF 1.2.1 or some other versions but 1.0.1. After searching the Internet and read many talks on nvidia jetson forum, I get TF 1.2.1 working on TX2. Here is the steps:
1、install Bazel 0.5.2 from official website
1nvidia@tegra-ubuntu:~$ bazel version
2Build label: 0.5.2- (@non-git)
3Build target: bazel-out/local-  opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
4Build time: Fri Aug 4 08:22:07 2017 (1501834927)
5Build timestamp: 1501834927
6Build timestamp as int: 1501834927

2、clone and checkout v1.2.1 for tensorflow
1# from $HOME/
2git clone https://github.com/tensorflow/tensorflow
3cd ./tensorflow
4git checkout v1.2.1

3、/configure
1./configure

All setting is default (just type ENTER) except for CUDA set to 'y'
4、fix workspace.bzl to get the right Eigen version for out ARMv8 on TX2worksapce.bzl is in ./tensorflow/tensorflow/ , feel free to open it use some text editor or vim, find lines as follows:
 1native.new_http_archive(
2name = "eigen_archive",
3urls = [
4  # "http://mirror.bazel.build/bitbucket.org/eigen/eigen/get/f3a22f35b044.tar.gz",
5  # "https://bitbucket.org/eigen/eigen/get/f3a22f35b044.tar.gz",
6  "http://mirror.bazel.build/bitbucket.org/eigen/eigen/get/d781c1de9834.tar.gz",
7  "https://bitbucket.org/eigen/eigen/get/d781c1de9834.tar.gz",
8],
9# sha256 = "ca7beac153d4059c02c8fc59816c82d54ea47fe58365e8aded4082ded0b820c4",
10# strip_prefix = "eigen-eigen-f3a22f35b044",
11sha256 = "a34b208da6ec18fa8da963369e166e4a368612c14d956dd2f9d7072904675d9b",
12strip_prefix = "eigen-eigen-d781c1de9834",
13build_file = str(Label("//third_party:eigen.BUILD")),
14)

the lines above those starting with # are the source text, and I just use # to commet these lines and new urls, sha256 and strip_prefix are added.
5、bazel build
If you do not swapon swapfile, do it before build TF and then bazel build as following.
1bazel build -c opt --local_resources 3072,4.0,1.0 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --verbose_failures --config=cuda //tensorflow/tools/pip_package:build_pip_package

then
1bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

now you get tensorflow 1.2.1 on/tem/tensorflow_pkg/, usesudo pip install tensorflow-1.2.1-cp27-cp27mu-linux_aarch64.whl
リファレンス
TensorFlow on NVIDIA Jetson TX2 Development Kit
Jetson TX1 Swap File and Development Preparation
installTensorFlowTX2
How to install TensorFlow on the NVIDIA Jetson TX2?
TensorFlow on Jetson TX2
テキストリンク:https://www.jianshu.com/p/d3c50b7a00a7
より簡潔で便利な分類記事と最新のカリキュラム、製品情報を参照して、新しい「LeadAI学院公式サイト」に移動してください.
www.leadai.org
人工知能LeadAI公衆番号に注目して、もっと専門的な文章を見てください.
みんな見てる
LSTMモデルの問答システムへの応用
TensorFlowベースのニューラルネットワークによるユーザー流出の概要
最も一般的なアルゴリズムエンジニアの面接問題の整理(一)
最も一般的なアルゴリズムエンジニアの面接問題の整理(二)
TensorFlow 1から2|第3章革命の始まりを深く学ぶ:神経ネットワークを蓄積する
装飾品|Pythonプレミアムプログラミング
今日は来ないでPythonの基礎を復習します