ごはんと飲み物は紙一重

あんまり更新できてないです

Jetson TX2 に JetPack 3.2 の上に Tensorflow を入れようとして挫折した話

はじめに

本記事ではJetPack 3.2でJetson TX2をインストールしようとして 失敗した話 を備忘録として書いています。決して成功した記事ではないので あしからず。Jetson TX2ではアーキテクチャx86_64ではなくaarch64であるため工夫してインストールする必要があり単純には行かない面倒なことになっています。

Jetson TX2のインストール環境

host環境

GPU環境

Virtual Box VMUbuntuをインストール

上記サイトからUbuntuのイメージをダウンロードしてVirtual Boxにいれます。インストールにシステム含め30GB以上使用するのでストレージは60GB以上取っていると安心できます。インストール後はsudo apt-get update && sudo apt-get upgradeしてパッケージを更新します。

次にUbuntu内のブラウザにてJetpackをダウンロードします。

VMUbuntuJetpackをダウンロード

https://developer.nvidia.com/embedded/dlc/jetpack-l4t-3_2

上記サイト(要アカウント登録)からJetpackの最新3.2をダウンロードします。ダウンロード後はターミナルにてJetpackのファイルの位置まで移動しておきましょう。

VMJetpackをインストール

途中のスクリーンショットあり

インストールには上記のサイトを参考にしました。

またインストール方法が2つありますが、前者はPCとJetsonが両方ネットワークに繋いでインストールをする方法。後者はPCを経由してインストールする方法となっています。お好みで選択できますが、ここでは私は後者を選択しました(後者はVMでインストールするとエラーが多発するらしい)。

f:id:ST_ha1cyon:20180122155313p:plain

(※画像は3.1の画像ですが、3.2でも同様の状態が現れます)

VMへのインストールが終わると次にJetson TX2へのインストールを行います。ここではVirtualBoxでUSBを認識させる必要があるので、その設定をする必要があります。設定には以下のサイトを参考にしました。

USBの接続設定をしたあとはTX2へのインストールを行います。インストールには時間がかかるので気長に待ちます。

インストールが終わってJetson TX2でUbuntuがインストールできれば下準備は完了です。問題はTensorflowのインストール・・・

Tensorflowのインストール

実はJetson 3.1なら以下のリポジトリに便利なスクリプトが存在しています。

スクリプトを通すことで

  • bazel
    • tensorflowをaarch64用にインストールするためのパッケージ作成に必要
  • tensorflow
    • 今回の最大目的であり、これをインストールしたい

の2つがインストールできます。上記スクリプトではうまくいきません。

tensorflowをインストールするにあたってぶち当たる壁(重要)

Bazelのインストールで躓く

BazelのインストールにはJDKのインストールが必須になるのですが、上記スクリプトではapt-get install oracle-java8-installerで行うとリンクが切れておりうまくいきません。なので手動でapt-get install openjdk-8-jdkをする必要があります。現時点(1/22時点)でBazelの最新は0.9.0なのですが、あまり安定しておらずいたるところで0.5.4を推奨しているところが多かったので0.5.4が良いのかもしれないです。

CUDAとcuDNNのバージョンが違う

スクリプトJetpack 3.1を対象にしているため、CUDA:8.0, cuDNN:6.0を対象としています。今回使用したJetpack 3.2では CUDA:9.0, cuDNN:7.0なのでそれぞれに対応させたインストールが必要になります。エラーは色々あったので書き留められなかった

つまるところ何が言いたいのかというと、上記リポジトリの設定ファイルのバージョン変えたりするだけではうまく行かなかった!(色んな所で悩まされる)

じゃあどうすればいいのか。

候補案1

  • Bazelのインストール
  • Tensorflowのインストール

をそれぞれ別でやっていく。もしくは既にJetpack 3.2で環境構築できた記事を待つ((((殴

候補案2

結局のところCUDA9.0, cuDNN7.0とマッチしたtensorflowのwhlができていればいいので探す。

この方法ならきっとbazel通さなくてもpipさえあればtensorflowがインストールできるはずなのでこっちのほうがうれしいですね。

悔しい・・・だが、これでいいッ!(開き直り)

結局大したことはしていないのですが、3.2でインストールできたらまた記事にしようと思います。今のところは使えることが第1目標なので仕方なく最新は諦めることにします・・・リベンジしてやる。


2018/01/22追記

Jetpack 3.1では oracle-java8-installer の 8u161がインストールできてた。なんでや。


2018/01/23追記

bazelがうまくビルドできない問題があったけどどうやら8u152ならできるらしい・・・?なんで新しいjdkに対応してないんじゃ。

結局Jetpack 3.1を入れて、既にパッケージされたtensorflow1.4のwhlをつかってインストールしましたとさ。bazelもjdkもじぇんじぇん関係ありませんでした。ちゃんちゃん。