まえおき
2020/10/03 執筆時点での感想文です。
TribuoでTensorFlowの話はここでは出てきません。Tribuoだけではなく、いろいろなものが厳しいです。ハマった記録だけです。TribuoからTensorFlowの連携をする以前の問題です。
結論
TensorFlow Javaは、Mavenセントラルレポジトリの最新版(1.15.0)でもJava 7でビルドする必要があります。新規でJava7採用するプロジェクトはあまりやりたくないです。一応Java11でのビルドまでは動作しましたが、Java12以降では実行時にエラーとなりました。
TensorFlowの最新版(2.3.0)でもCuda11は対応されてませんでした。無理に動かそうと思えば動かせます。
Tribuo忘れてました。気が付いたら朝になっているし、いつの間にかTensorFlowでJavaの話も忘れて、pythonの実装してました・・・。やはりスクリプト系の言語は好きになれないです。
Windos上でTensorFlowからGPUの利用は可能ですが、Windows on WSL2 on ubuntuではワタシの環境ではうまくいきませんでした。
現状の把握
Windows版Docker DesktopがGPGPU対応してない
Windows環境でDocerにLinuxを入れて、TensorFlowからGPUを利用しようとしましたがダメでした。そもそも、Windows版のDocker DesktopがGPGPUに対応してませんでした。
WindowsでWSL2上に構築したUbuntuでDockerを動かしたがGPUが認識しない
WindowsでWSL2上に構築したUbuntuに、Dockerを入れてヒャッハーみたいな情報もあったため試してみましたが、ワタシの環境ではダメでした。そもそもDockerを入れるためのUbuntu上でも、/usr/local/cuda/samples/1_Utilities/deviceQuery/deviceQueryを実行すると、35が返却されます。
TensorFlowのイメージも試してみましたが、こちらもうまく動作しませんでした。
WindowsでWSL2上に構築したUbuntuでGPUが認識しない
AMD:Ryzen 3700x
GPU:RTX3090
OS:Windows Build 20226.rs_prerelease.200925-1415
NVIDIA GPU Computing Toolkit:CUDA11.1/CUDA10.1/CUDA10.0
CUDANN:CUDA11.1/CUDA10.1/CUDA10.0
WindowsでWSL2上に構築したUbuntuからGPUを利用できるようになり、実際に動いたという情報があったため、試してみましたが、CUDA10/CUDA11-0/CUDA11-1のツールキット全部、ワタシの環境ではダメでした。Gefoce RTX 3090だから?AMDの呪い?
DeviceQueryを叩くとエラーコード35が出力されます。
ホストOSのWindows10上にダイレクトに構築
こちらは検索すると情報がでてくるのでば、あまり困らずに構築できました。必要な環境ごとに仮想環境をつくっているため、仮想環境ではないホストOSに、開発環境を構築するのは、あまりやりたくないです。Hyper-v on windowsでGPUが使えればいいのですが、ホストOSがWindows Serverではないですし、WSL2ではうまくいかないしで、時間だけが過ぎてしまいました。
ただし、Java12以降を指定すると実行時にエラーとなります。
感想
バージョン関係がカオス。