2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Gentoo LinuxでTensorFlowを使いたい

Posted at

一般論ですが、ローカルにTensorFlowをinstallするのはオススメできません。poetryでもanacondaでもいいので、仮想環境にinstallするようにしてください。

必要なもの

もし、ただnvidia driverを入れただけの環境(nvidia-smiだけは使える)だと、TFでGPUを使うことができません。

GPUが使えるかは、以下のコードを実行し、GPUのデバイス情報が出てくるかで確認することができます。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

ピチピチの環境だと、cudnnだったり、xxxdatrだったり諸々がないと言われてしまいます。

  • nvidia driver
  • CUDA toolkit(いわゆるCUDA)
  • cuDNN

TFを使うにはこちらの3点セットが必要となります!

nvidia driversを入れる

このx11-drivers/nvidia-driversというパッケージをinstallすることで、nvidia-smiが使えるようになります。

gentooのパッケージはArch系統と比べると慎重なので、stableが470.94になっています(2022/01/21時点)。自分は気分的に495を入れたかったので、emerge -a =nvidia-drivers-491.44-r2と打って、推奨はされていない新しいversionを入れました。
使えるバージョンは先程のリンクから確認できるので、使えるバージョンを選択してください。

image.png

自分がUbuntu使ってた頃は、driverをHPから落としてローカルで実行してinstallしていました。ただ、こうしてしまうとversionのup / downgradeが難しくなってしまうという問題があります。Gentooに限らないとは思いますが、package managerで管理することは将来の自分のためにもなります。

ちなみに、自分は最初stable(470.94)を入れて後から495.44-r2を入れました。問題ないです。

やること

emerge -a x11-drivers/nvidia-drivers
必要に応じてversionを指定。
emerge -a =x11-drivers/nvidia-drivers-495.x.x

CUDAを入れる

driverを入れた時点で、nvidia-smiをし、CUDAのversionが出て安堵していたら大目玉を食らいます。自分は11.4と出ていました。nvidia-driverを入れた時点でCUDA 11.4も依存関係に入ってくるかはわからないのですが、後にinstallするcuDNNというpackageはCUDA 11.5しか対応していないので、おとなしくCUDA11.5をinstallしましょう。

じゃあ、またversionを確認しましょう。

10.2, 11.5, 11.6しか使えないようですね。今回は11.5以外は入れます。(それ以外はだめ)

image.png

やること

emerge -a =nvidia-cuda-toolkit-11.5.1-r1

versionはその時その時で変わっていくので、Gentoo Packageのwebサイトからversionを確認してから入れましょう。

cuDNNを入れる

一番の鬼門です。正攻法で戦ってもinstallできません。

image.png

なんかFとかついていますよね。

emergeのdocsから--pretendの部分を一部抜粋してきました。

F fetch restricted (must be manually downloaded)
B blocked by another package (unresolved conflict)

手動でdownloadしなきゃいけないらしいですね。
これを知らずに普通にemergeしようとすると、cannot be fetched for cudnnみたいなエラーが出て終わってしまいます。

image.png

cuDNNはnvidiaのdeveloperなんちゃらにloginしないとdownloadできないパッケージなので、emergeコマンドで全部やってもらうのは無理なようです。

この公式forumの質問が無かったら死んでいました。fetch(downloadしてくること)されたfile群は/usr/portage/distfiles/下に保管されているので、手動でここにcuDNNのfileを置きなさいとのこと。

やること

  1. https://developer.nvidia.com/cuDNN のダウンロードページに飛ぶ
  2. Download cuDNN v8.3.1 (November 22nd, 2021), for CUDA 11.5からfileをdownload
  3. downloadしたfileを/usr/portage/distfilesにmv
  4. emerge -a cudnnを実行

HPに飛ぶと8.3.2もあったのですが、Gentooのほうだと8.3.1までしか無かったので一応8.3.1にしておきました。

ここまでやれば

おそらくTensorFlowが入ってる環境で以下のコードを実行すればエラーなしでGPU情報が得られるのではないでしょうか。もしエラーになったら、コメント等で教えてください。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

image.png

MNISTも動きました。

image.png

長々となってしまいましたが、これはGentooの仕様をよくわかっていなかったことに起因するものなので、慣れたら手間取らずにかんたんにできると思います。

躓いたとき用のメモ

公式wikiが便利です。全部日本語です。

あんまエラー出てないけどemergeしてもinstallできなかった

dispatch-conf commandを実行し、uを入力して再度emergeを実行しましょう。

maskがどうたらこうたら

危険性があるpackageに対する警告なのですが、今回は変なことはしないのでunmaskしちゃいましょう。

emerge -a --autounmask=y --autounmask-write ***packagename*** でmaskを解除できます。

参考文献

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?