2023年8月8日火曜日

CUDAとcuDNNの入れ方・バージョンの切り替え方(Ubuntu22.04)

この記事はなに?

・機械学習関連ソフトは、使っているCUDAのバージョンがまちまちである

・CUDAは後方依存性が無いことが多い(NVCCというコンパイラを使う場合に顕著)

・つまり環境を作り直す機会が多くてだるい

・うろ覚えでやっていたため、せめてそろそろまとめたほうが良いと思ったので備忘録

・Bloggerではマークダウンが使えないのだけれど、使えるようにしたいなあと思いながらマークダウンで書いている



前提

・Ubuntu22.04

・NVidiaアカウントを持っていること

・へこたれない強さを持っていること



手順

1. CUDAとNVidiaドライバのアンインストール


考えるよりも全部消したほうが早い(脳筋メソッド)

```bash
sudo apt --purge remove nvidia*
sudo apt --purge remove cuda*
sudo apt --purge remove cudnn*
sudo apt --purge remove libnvidia*
sudo apt --purge remove libcuda*
sudo apt --purge remove libcudnn*
sudo apt autoremove
sudo apt autoclean
sudo apt update
sudo rm -rf /usr/local/cuda*

```


2. グラフィックドライバを入れ直す


こいつを忘れると起動しなくなる

```bash
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

ubuntu-drivers devices

sudo apt install nvidia-driver-(適当なバージョン)

```


3. 再起動


お茶の準備をしましょうね



4. CUDAを入れる


```bash
wget https://developer.download.nvidia.com/compute/cuda/12.2.1/local_installers/cuda*_linux.run 
sudo sh cuda_*_linux.run
 
```

クソ長EULAのあとに「accept」を入力すると進む

(確認のための入力画面がたまに表示されないことがあるけれど、入力してEnterすれば進む)

オプション画面で、CUDAだけのインストールにしておく。

グラフィックドライバの[X]は消しておく。 


ターミナルの標準出力に「環境変数通しとけよオラァ(意訳)」というコメントが出てくるので、そのとおりによしなにやる。

例はCUDA11.8のインストール後の環境変数

```~/.bashrc
export PATH=HOME/.local/bin:$PATH+:${PATH}

export PATH=/usr/local/cuda-11.8/bin:$PATH+:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH=/usr/lib/cuda/include:$LD_LIBRARY_PATH+:${LD_LIBRARY_PATH} 
```


5. cuDNNを入れる 



適切なバージョンの.debファイルを落としてきて、
```bash
sudo dpkg -i cudnn*.deb

#キーリングになんか追加しろって言われるので、その操作(cp )をした後、もう一回

sudo dpkg -i cudnn*.deb


sudo apt update

sudo apt install libcudnn8 libcudnn8-dev -y

 

sudo apt upgrade

```

6. (必要な場合) NVidiaDockerを入れ直す

参考:

https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/


```bash

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb

sudo dpkg -i cuda-keyring_1.0-1_all.deb


distribution="ubuntu22.04" \

      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \

      && curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \

         sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \

         sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list


#ここでエラーが起きたら、etc/apt/sources.d/にあるnvidia* をsudoでrmする 古いリポジトリが悪さをするため

sudo apt update

sudo apt install -y nvidia-docker2


#https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

sudo nvidia-ctk runtime configure --runtime=docker

sudo systemctl restart docker

```


ざっくり、こんな感じでいけるはず。


まったり、お茶をのみながら、やっていこうね。

 

2023年6月11日日曜日

UbuntuでPCVRを動かせたときのメモ

UbuntuでPCVR(SteamVR)を動かすことができたので、メモ。

また、書き直すね。

# 環境:
Ubuntu 22.04
Oculus Quest2



## ALVR導入手順:

'''bash
sudo apt install uidmap
'''

インストーラでポート開けられなかったとき:
'''bash
sudo ufw allow 9944
sudo ufw allow 9943
'''

## OculusQuest2の開発者モードを有効にする

クライアント側(Quest2)にAndroidの野良apk(ALVR)をぶち込むために必要。

手順

* oculusのサイトで、開発者アカウントの設定をする

二段階認証か、クレカ登録が必要

* スマホのOculusアプリで開発者アカウントからログインをすると、開発者モードのOn Offができるようになる
(ADBを介してUSBデバッグモードが有効になる)

* SideQuestでALVRのapkをぶち込む

注意
・Questの開発者モード(System -> Development)は英語でしか出てこない……と思う


## ALVRのインストール

・ALVRインストール時のターミナルの指示を読み飛ばさずに実行すること(赤文字と緑文字を読み飛ばさないように)

・Arch Linuxコンテナ内にSteamVRを入れる工程がミスりやすいので、よく注意書きを読むこと

1. ArchLinuxコンテナの中にSteamがインストールされるので、そこでSteamVRをArchLinux上のSteamを介して入れる

2. ターミナルに出力されている注意書きを読み飛ばさなければうまくいく(慣れてる人ほど引っかかりやすいトラップがある。インストール画面を手動で閉じちゃだめとか、そういう感じ)

3. 何回かSteamが再起動する。2回目以降はUbuntu上のSteamが起動する。こんがらないように気をつけてね。

4. うまくいくと、ALVRのGUIが起動する。その指示に従うこと。
(後日追記予定)

## Protonの設定

Proton Experimentでは動かなかったので、Proton GEを導入。(ProtonDBで動作報告が多数上がっていたため。)

Proton-GE 8-4でVRChat起動確認(ふふん)

## 現状の問題点
・カクついたり画面が崩壊することもある
・ヘッドセット内蔵スピーカーとマイクは使えなくなる(pipewireの設定で何とかなったりするようなことを書いてあるコメントもあったが、未検証。)


シェーダー部屋も40fpsくらいで動いた。winで体験した60fpsよりはやっぱり遅いけど、Ubuntu→Arch Linux→Proton(Windows)という構成が動くことがすでに感動


Appleの世界観からは程遠い、アナーキーな世界に、みんなで、バ美肉しにいこうね

2023年5月26日金曜日

ウブントゥのスチムーでゲムー:Part2. 「こうすれば動く!と思う!Ubuntu版steamでゲームを動かす最短メソッド!!」


前回のあらすじ:


霧原めいは苦しんでいた。

家のパソコンを開発機とするべく、Windowsを捨て、Ubuntuをインストール。 

彼女にとって、ゲームはかけがえのない存在であるが、それでも機械学習の方がもっと大切だった。


とは言いつつゲームはしたいので、どうにかならないものかと思案した霧原めいは、Steam Deckの発売によりProton (Linuxで動くWindows用ゲームが動く互換レイヤー)が怒涛の進化を遂げているという情報を元に「きっとうまくいく。」と自分を鼓舞した

 

ものの、Atomic Heartがコピーガードに引っかかって(正規品だこのやろう)動作せず、「めんどくさ」となったり、LLMの調教してるのでそもそもGPU使えねえですね(楽しいけど)と思いつつ、鬱屈した日々を過ごしていたのであった。



―― だが、それもこれまでだ。 ―― 



 

ウブントゥのスチムーでゲムー:Part.2 

「こうすれば動く! と思う!

Ubuntu版steamでゲームを動かす

最短メソッド!!」






 タイトルが次回予告と違う?そんなことは些細なことである

宇宙のスケールから見れば、我々人類が存在していることすら誤差の範疇だ。



――ただ一つ言えること。


UbuntuでSteamのゲーム(Windows用)は動くこともあるのだ。



 


本編のまとめ


・うごいた

・Atomic Heartの敵ロボットこわいけど、えっちな子もいて楽しい

・雰囲気として、大好きなBioshock Infinitを思い出す感じ 

Steam公式から steam.debを落としてきてdpkgでインストールしてProton設定すれば動く

・インストール先のファイルシステムがext4じゃないと動かないよ

 




やったこと:


1. snap版steamをアンインストールする


こいつ、動くゲームもあるから騙されたけれど、パーミッションの関係で動かないゲームがありやがるのです




2.  redditで情報を探す

こんな情報、日本語だけで検索してもまずでてこねぇですので、世界中のおたくに聞くのが一番はやいのです。


 


他の原因もいっぱい書いてあった気がする。あとは任せた。






3. Googleの検索結果のひどさを嘆く


日本のグーグル検索結果はスパムだらけで使えやしねぇのです。

検索上位のサイトが言ってる内容、自動生成されたスパムばかりで全部原因にたどり着けてねぇ、というか、原因追求してねぇだろ!!パーティションマネージャ系のソフト売りたいだけだろ!!なめてんのかスカタン野郎!!となる内容ばかりじゃねぇですか!ぶち○すぞヒューマン!!





4. Steam公式から steam.debを落としてきてインストール


``` bash

sudo dpkg -i steam.deb


```

※ dpkg : debian(*.deb) 方式のパッケージをインストールするコマンド。(-i : install)
 依存関係をよしなにしてくれないので、アンインストールのときがめんどくさい。
 ギルティ。(2回目)

  

※重要 ext4等のLinuxで使われてるファイルシステムのパーティション上にインストールすること




5.  Proton(Windows互換レイヤー)が動くように設定する


Property -> Compatibility -> "Force the use of a specific Steam Play compatibility tool"にチェック

 






すると、「Install」ボタンが青くなり、当然のごとく、押せばインストールが始まる。(2回目)






そして、Valveが誇る「Proton」――WindowsゲームをLinuxで動かすための互換レイヤーだ。――が、ゲイツへの反逆の唸りを上げるべく、「PLAY」ボタンを緑色に染める。(2回目)

 





――そう。このPLAYボタンを押せば、ボクはゲームがプレイできる。簡単なことだ。
ゲイブに、感謝しなきゃね。(2回目)




6. 「Atomic Heart」(殺意満々のえっちなロボットがでてくるゲーム)を起動する




7. 起動を待つために茶をしばいていると、突如画面にハッキングされたような演出がでてきてテンションが上がってくる




8. Bioshockだ……




9. あ、世界観めっちゃすき。めっちゃ細かいところ設定してる。だいすき。







10. 思う存分遊ぶ。






11. 頭いたくなってきたからねる





12. あとは特にないです。






 
次回、ウブントゥのスチムーでゲムー:Part3. 「たぶんPart3を書くことはないと思います」
 

愛があれば、steamは動く。







参考になりそうなサイト




 Steam Deck (Proton)での動作報告や、「このProtonのバージョンが最適だぜ!」という情報が集まったサイト



・ Steam Deck HQ (https://steamdeckhq.com/)

 Steam DeckやProtonについての最新情報をまとめてくれるサイト。
HQ(Head Quarter)というネーミングセンスがスチマーらしくてよい。





※用語解説


ウブントゥ:Ubuntuのこと。開発環境としての出来が最高。

スチムー:Steamのこと。Originと違うところは、Steam作ってる会社Valveは非上場で、真のゲーマーが作っているプラットフォームとなっていて、Steam自体に遊び心が散りばめられているところ。Originというか、EAは最近パッとしないね。


Maxis:シムピープルとかsimsとかsimcityとか作ってた会社。EAに吸収されて息の根を絶たれた。 

DICE:戦犯。

steamのセール: お祭り感を演出してて楽しい。販売サイト上にミニゲームとかイースターエッグが大量に出てくることにによりテンションが上がり、金銭感覚がゆるゆるになることにより大量の積みゲーが増えることになる。ゲイブに貢げる。


ゲイツ:WindowsとかMicrosoftとかXboxを作ったひと。ゲーマー。よく陰謀論のネタにされる。

 

ゲイブ:Harf-LifeとかValveとかSteam Deckを作ったひと。ゲーマー。よくクソコラのネタにされる。


最新記事

関数としての私――意識・構造・「shaping」

私は最近、「意識とは何か?」という問いに対して、“関数である私”と“会話という場”という、二つの構造からアプローチする仮説を立てました。 このエッセイもまた、誰かとの静かな対話を願うものです。 ## アンケートへの感謝と小さな分析 定義を書く前に、X(Twitt...

人気の投稿