Gaussian Splatting(ガウシアンスプラッシング)PostshotはWindowsで動作します。ちょっとした分析にとても便利です。しかしNerfstudio(ナーフスタジオ)はubuntuによる動作が基本になります。ubuntu22.04をインストールしたGPU搭載のパソコンが必要です。デュアルOSにしたり、データをubuntuに移動したりするのがとても面倒です。

そこでWindows Subsystem for Linux (WSL2) 上で、Nerfstudioを動かしてみましょう。最近のWSL2 による仮想化Ubunutは、とても優秀です。native Ubuntu(bare-metal Ubuntuというか素のUbuntu)に近い動作をします。GPUも利用することができます。

以下方法にて、WSL2 上のUbuntuでNerfstudioを動作させれば、RealityCaptureとの連携やPostshotから切り替えてすぐにNerfstudioで試すことができます。デュアルOSにしたり、別のパソコンを用意せずにすぐにNerfstudioを試せるのでとても便利です。

前回記事ではGaussian SplattingとPhotogrammetryを比較しました。
https://techietechnology.co.jp/2025/03/26/gaussiansplatting-vs-photogrammetry/

 

Windows Storeで Ubuntu 22.04.5 LTSをインストール

WSL2 を動作せるには、システムやBIOSなどの設定が必要になる場合があります。環境によって変わるので各自調べて調整してください。最近ではほとんど意識せずに利用できるケースも多いです。

まずWindows Storeで Ubuntu 22.04.5 LTSをインストールします。2025年6月時点では、Ubuntu 22.04.5を使うのがよいでしょう。Nerfstudio推奨バージョンであり安定しています。

Windows Subsystem for Linux (WSL)は、Windows環境によって初期セットアップで妙なエラーが出ることがあります。ケースバイケースです。エラーが出たら検索して修正してください。

今回の以下のエラーコードが表示されました。

Wsl/Service/CreateInstance/MountVhd/HCS/ERROR_FILE_NOT_FOUND Press any key to continue...

前の環境が残っているようなので、削除することで正常に起動できました。

wsl --shutdown
wsl --unregister Ubuntu-22.04

WSL2(Windows Subsystem for Linux)上のUbuntuでGPUを使う場合、基本的にGPUドライバはWindows側が管理しています。2025年6月時点ではそのような仕様です。WSL2のUbuntu側でドライバをインストールは非推奨です。

どうしても特定バージョンを使いたい場合は、 Windows側のドライバをダウングレードすることが必要です。またToolkitインストール時に、Linux用ドライバーも含む場合は上書きで環境が壊れることもあるそうです。

詳しくはこちら
https://docs.nvidia.com/cuda/wsl-user-guide/index.html

以上からGPUドライバはWindowsを使い、Nerfstudioで推奨(2025年6月時点)されているCUDA11.8を使います。nvccが必要となる部分はToolkitを導入します。これでWSL2 + Ubuntu 22.04 + CUDA 11.8 + PyTorch/cu118 + Nerfstudio が正しく動作します。

本環境は、AMD Ryzen Threadripper 3960X 24-Core Processor 3.80 GHz、RAM 128 GB (128 GB 使用可能)、グラフィックス カード NVIDIA GeForce RTX 3090 (24 GB)です。本日は2025年6月11日です。

さてWindows Subsystem for Linux (WSL)のインストールが終了して、コマンドプロンプトが起動しました。

環境を最新にします。

sudo apt update && sudo apt upgrade -y

WSL2専用 CUDA 11.8 レポジトリを追加します。公式では推奨として。ドライバは WindowsのみでLinux 側には入れないとしているため少しわかりにくいインストールです。apt-keyは24.04では廃止されるそうですが、必要な環境は22.04なのでそのままです。一行づつ実行してください。

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /"
sudo apt update
sudo apt install -y cuda-toolkit-11-8

ビルド必須パッケージをインストールします。ffmpegはおまけです。

sudo apt install -y git build-essential ffmpeg

仮想環境Minicondaをインストールします。

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bash miniconda.sh -b -p $HOME/miniconda3
eval "$($HOME/miniconda3/bin/conda shell.bash hook)"
conda init

Nerfstudio 用環境 (Python 3.10 推奨)を準備します。

conda create -y -n nerfstudio python=3.10
conda activate nerfstudio

PyTorch + CUDA 11.8をインストールします。

python -m pip install --upgrade pip
pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

cuda-toolkitを登録することでパス問題を防ぎます。

conda install -y -c "nvidia/label/cuda-11.8.0" cuda-toolkit

そのままだとエラーが出るのでnumpyのバージョンを下げます。

pip install --upgrade "numpy<2.0"

ライブラリが見つかるようにパスを設定します。

export LIBRARY_PATH=/usr/lib/wsl/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH

tiny-cuda-nnをビルドします。DEPRECATION: Building ‘tinycudann’など警告が出ますが問題ありません。ビルドはとても長い時間がかかります。まだドライバーなどの関係で失敗しやすい場所です。ここさえインストールできればクリアも同様です。Visual Studio が複数入っているといろいろなエラーがでるかもしれません。

pip install ninja
pip install --no-cache-dir --force-reinstall git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

tiny-cuda-nn が読み込めるか確認します。tinycudann import OKと表示されれば正しいです。

python -c "import tinycudann, sys; print('✓ tinycudann import OK')"

PyTorch が GPU を認識している確認します。CUDA available: Trueで正しいです。

python -c "import torch; print('✓ CUDA available:', torch.cuda.is_available())"

tiny-cuda-nn で簡単なネットワークを組んでGPUで推論テストをします。forward shape torch.Sizeが表示されれば正しいです。

python -c "import tinycudann as tcnn, torch; net=tcnn.Network(n_input_dims=3,n_output_dims=16,network_config={'otype':'FullyFusedMLP','activation':'ReLU'}); x=torch.randn(4,3,device='cuda'); y=net(x); print('✓ forward shape', y.shape)"

Nerfstudio本体をインストールします。

git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

念のための動作確認です。CUDA が使えるか確認します。

python -c "import torch; print('CUDA available:', torch.cuda.is_available())"

PyTorch のバージョン確認します。Torch version: 2.1.2+cu118などと表示されれば正しいです。

python -c "import torch; print('Torch version:', torch.__version__)"

以下のサンプルをダウンロードして実行します。初回は時間がかかりますが分析が開始すれば成功です。再起動など行った場合は、フォルダーの位置を確認して実行してください。

ns-download-data nerfstudio --capture-name=poster
ns-train splatfacto --data data/nerfstudio/poster

以下のように分析が開始されれば正しくインストールできました。

Windows側からはhttp://localhost:7007でアクセスできます。

毎回起動するたびに仮想環境をアクティブにする必要があります。

conda activate nerfstudio

以上でWindows Subsystem for Linux (WSL2) 上で、Nerfstudioが動作しました。

ちなみにWindowsのネットワークドライブのあたりから直接ubuntuのフォルダーを操作できます。データセットなどをNerfstudioに移動するときにWindowsからそのまま移動できるので、とても便利です。Windowsの環境によって、この表示が出ないこともあります。その場合は設定を調べて確認してください。

つづく