組み込みAI入門ブログ(3) 「Linux環境構築してみた」 ~低消費電力・小型FPGAで人検出AIを実装~

前回はLattice社が提供している人検出のリファレンスデザイン(Object Counting)の中身の構成を確認しました。

 
その中でニューラルネットワークモデルのトレーニングの実行のためにシェルスクリプトを実行している部分を発見したり、学習データの確認のためにpythonの実行が必要になるところが出てきました。これらの実行をWindows環境で進めようとすると、Windowsに合わせてスクリプト部分の変更やpythonコードの見直しなどが発生し、いろいろと面倒になりそうです。Lattice社のリファレンスデザインのドキュメントもLinux環境を前提に進める形で記載されているため、今回はそのLinux環境構築について見ていきたいと思います。

正直なところLinuxはそんなに触ったことが無く、CUIの端末で何かコマンドを打ちこまないといけないときはいつもネットで調べながら進めないといけないというレベルですので、最後までできるのか、かなり不安な気持ちを持ちながら進めることになりました。結果から言いますと何とか構築はできましたので、今からご説明するこの内容はご参考になるかと思います。

 【目次】

 1. まずはUbuntuマシンを準備

 2. NVIDIA GPUカードを準備

 3. CUDA Toolkitのインストール

 4. NVIDIAドライバーのインストール

 5. cuDNNのインストール

 6. Anacondaのインストール

 7. 仮想環境の作成

 8. Tensorflowのインストール

 9. その他のライブラリのインストール

まずはUbuntuマシンを準備

世の中にいろいろとLinuxのOSは存在しますが、ディープラーニングの開発用途で最もよく使用されているLinuxOSはUbuntuというOSのようです。理由はいろいろとあるようなのですが、Lattice社のリファレンスデザインについてもこのUbuntuを使用する前提でドキュメントが記載されているため、私もこのUbuntu OSが入ったパソコンを用意しました。

リファレンスデザインのドキュメントなどを見るとUbuntuのバージョンは16.04 LTSと記載されていますが、この16.04 LTSは2021年4月30日の段階で標準サポートが終了しています。16.04 LTSのインストーラはまだWeb上に公開はしているようですが、あまり古いものを今から使うのもどうかと思い、悩んだのですがダメ元で20.04 LTSという新しいバージョンを使ってみることにしました。もし何かダメなことがあったら、その時は16.04 LTSを入れ直してみようと思います。Ubuntu OSのインストール方法などについてはいろいろとweb上に親切な情報が掲載されていますので、そちらの方をご参考ください。

NVIDIA GPUカードを準備

またニューラルネットワークモデルの学習(トレーニング)には非常に高い演算能力が求められるため、処理の高速化のためにGPUが利用されることが一般的になっています。CPUだけでトレーニングをする場合と比較すると処理時間が10倍以上異なる場合もあるようです。リファレンスデザインにもGPUを使う場合の環境構築について記載もあるため、私もNVIDIAのGPUカードを利用することにしました。

私の場合、会社にたまたま放置されていたGeForce GTX 1050 TiというGPUを搭載したGPUカードを利用することにしました。

CUDA Toolkitのインストール

リファレンスデザインのドキュメントの記載に沿ってインストールを進めますが、最初はCUDA Toolkitのインストールをおこないます。

GPUは本来は画像処理をおこなうためのプロセッサーのため、今回のニューラルネットワークモデルのトレーニング処理のような汎用的な数値計算用途でGPUを使用するにはこのCUDA Toolkitと、あとでインストールするcuDNNというライブラリーをインストールする必要があるようです。

と、ここでいきなり問題が…。リファレンスデザインのドキュメントに記載されているCUDA ToolkitのインストールコマンドはUbuntu 16.04 LTSを使うことをベースに記載されているため、今回の20.04 LTSとは合っていません。そのため、20.04 LTSの場合のインストール方法を自分なりにいろいろと調べて試してみました。それが以下の方法です

#cuda-ubuntu2004.pin ファイルのダウンロードと移動
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
#パッケージ認証キーの取得
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
#リポジトリ情報の更新とパッケージのインストール
$ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
$ sudo apt-get update
$ sudo apt-get -y install cuda

最後の

$ sudo apt-get -y install cuda

だけがすんなりいかず、実行すると

"E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してください。"

というメッセージが出ました。メッセージに従って、

$ sudo apt-get -y install cuda --fix-missing

とオプションを付けて試したところインストールが完了しました。

ただ、この方法でインストールできたCUDA Toolkitのバージョンは11.6.1-1となっています。リファレンスデザインのドキュメントとしてはCUDA 9-0をインストールすることになっていますので、これも本来とはバージョンが違ってしまいました。

すでに最初からバージョンが違ってますのですでに怖いものなしです。もし何かダメなことがあったらその時に考え直すこととして次に進みます。適当…。

NVIDIAドライバーのインストール

Latticeのリファレンスデザインのドキュメントには記載がないのですが、いろいろ自分で調べたところ、普通はCUDA Toolkitなどのインストールの前にnVIDIAドライバーのインストールをおこなうようですので、遅ればせながら私もこのタイミングでインストールしておきました。

まずは以下のコマンドで推奨のドライバーの確認します。

ubuntu-drivers devices

自分の環境に対する推奨のドライバーが表示されます。

"recommended"というコメントがあったため、以下の通りコマンドを実行してnvidia-driver-510をインストールしました。

$sudo add-apt-repository ppa:graphics-drivers/ppa
$sudo apt update
$sudo apt install nvidia-driver-510

"nvidia-smi"コマンド (NVIDIA System Management Interfaceコマンド)を実行して、ちゃんとドライバがインストールされたかを見てみると、以下の通り、ちゃんと入ってそうです。

CUDAのバージョンはやっぱり11.6ですね

cuDNNのインストール

続いてcuDNNのインストールもおこなっていきます。こちらもやはりリファレンスデザインのドキュメントに記載されているバージョンは古いため、実情に合ったものをインストールする必要がありそうです。

cuDNNライブラリーはNVIDIAのNVIDIA Developerというサイトからダウンロードする形になりますが、ダウンロードするにはアカウント登録が必要でしたので、登録しました。cuDNNは以下のサイトからダウンロードできました。

https://developer.nvidia.com/rdp/cudnn-download

License Agreementにチェックを入れて、その下のDownloadリンクをクリックします。

インストールする環境に合わせていろいろとインストーラーが用意されていますが、今回は自分の環境に合わせて"Local Installer for Ubuntu20.04 x86_64(Deb)"をダウンロードしました。

ダウンロードされたファイルはdebian packageと呼ばれるファイルになっており、このパッケージのインストールには"dpkg -i"というコマンドを実行するようですので、このコマンドで無事インストールできました。

Anacondaのインストール

NVIDIA系のインストールが何とか完了しましたが、まだまだ先は長く、思わず何かいけないものに手を出してしまいそうです。

次はPythonを実行するための環境をインストールします。

Pythonの実行環境としてリファレンスデザインのドキュメントにはAnacondaが指定されているため、これをインストールします。以下のサイトにアクセスし、インストーラーをダウンロードします。

https://www.anaconda.com/

Linux版のインストーラーをダウンロードします。

shファイルという形式のインストーラーがダウンロードできたため、shコマンドでインストールしました。

インストール中に、License Agreementのチェックや、インストールロケーションの確認などがあり、それぞれ適切に答えると、いろいろとログが流れて無事インストール完了しました。

仮想環境の作成

Anacondaをインストールすると、ターミナルの表示が少し変わり、行の先頭部分に (base) というのが追加されるようになりました。

調べたところ、これはAnacondaの仮想環境と呼ばれる仕組みによるもののようです。
 ・仮想環境はAnacondaのシステムで管理される。
 ・ユーザーは自由に複数の仮想環境をを作成することができる。
 ・ユーザーはその仮想環境ごとにライブラリーをインストールすることができ、好きな環境に切り替えて、その環境で実行することができる

ライブラリーにはバージョンがあり、バージョンの組み合わせによってはうまく動かなかったり、ライブラリー自体のインストールがうまくできなかったりするようです。

 
また、動作させたいアプリケーションごとに最小限のライブラリ構成で動作させることで、何か問題があったときの切り分けがしやすいなどのメリットがあるようです。仮想環境1つが、パソコン1台に相当するようなイメージですね。非常に便利です。

Latticeのリファレンスデザインのドキュメントにもちょこちょこライブラリーのバージョン記載が見受けられるため、仮想環境を複数用意しておいて切り替えて使えるようにしておいた方がよさそうです。

仮想環境の作成は以下のコマンドで実行できます。

 conda create -n <新しい仮想環境名> python=バージョン番号

Latticeのリファレンスデザインは基本的にPython3.6で動作確認されているようですので、その中の一番新しい3.6.9で仮想環境を作っておきます。仮想環境名は後でインストールするTensorflowのバージョンを見越してtf114としておきます。

 conda create -n tf114 python=3.6.9

仮想環境ができたら以下のコマンドで作成した環境に切り替えます。

conda activate tf114

先頭の文字が(tf114)に切り替わりました。この環境に対してさらに必要なライブラリーをインストールしていきます。

Tensorflowのインストール

リファレンスデザインで使用されているフレームワークはTensorflowのため、作成した仮想環境にTensorflowのライブラリをインストールしていきます。

ライブラリーのインストールには conda install コマンドを使っていきます。

 conda install <ライブラリー名>==バージョン番号

バージョン番号の部分を省略すると、その時点での最新のライブラリーがインストールされるようです。
今回は1.14.0をインストールします。またTensorflowにはGPUバージョンとGPU無しバージョンがあり、GPUバージョンのライブラリー名はtensorflow-gpuになります。

 conda install tensorflow-gpu==1.14.0

途中で

 proceed ([y]/n)?

と聞かれるため、キーボードのyボタンを押して次へ進めてインストールを完了させます。

その他のライブラリーのインストール

リファレンスデザインのドキュメントを見ると他にもいろいろと必要になるライブラリーが記載されています。それらをインストールしておきます。

$ conda install –c conda-forge easydict
$ conda install joblib
$ conda install keras==2.2.4
$ conda install -c conda-forge opencv=4.5.0
$ conda install pillow

installコマンドのオプションとして"-c conda-forge"というのを指定すると、conda-forgeというコミュニティーで管理されているパッケージライブラリをインストールするという意味になるようです。

また、kerasとopencvに関してはバージョン指定無しでインストールすると後々問題が出てくるようでしたので、バージョン指定してインストールしています。

これでやっと環境構築が終わりました。長かった…。

次回は本題のデータセットの中身について見て行こうと思います。

お問い合わせ

評価ボードやサンプルデザインに関する不明点や、本ブログで扱ってほしい内容などありましたらお気軽にお問い合わせください!

AI関連情報