windowsからSSHでubuntuに接続するメモ(内部ネットワーク編)
設定や環境構築ってそんなにする頻度高くないからすぐ忘れますよね,私は忘れます.
やったこと
内部ネットワーク内でのssh接続.公開鍵認証を使います.
今回は完全自分用なのでセキュリティが甘いと思います.
公開鍵:サーバに置くやつ.誰かに見られてもいい.
秘密鍵:クライアントに置くやつ.誰にも見られるな.
環境
サーバ:ubuntu20.04
クライアント:6年前のwindows PC
クライアントソフト:MobaXterm
鍵の作成(クライアント)
ssh-keygen -t rsa -b 4096 -f [key name]
-t rsa
でrsa方式(暗号化の種類らしい)での作成,-b 4096
は鍵の長さの指定.
鍵の名前はデフォルトだとid_rsa(秘密鍵)とid_rsa.pub(公開鍵).
このコマンドを打つとパスフレーズを入力させられる.未入力で設定しないこともできる.セキュリティ的には多分入れたほうがいい.
公開鍵をサーバに送る
私はUSB使ったけど,コマンドもあるらしい(参考).
ssh-copy-id -i ~/.ssh/id_rsa.pub [リモートユーザー]@[リモートサーバーのホスト名]
サーバでの設定をする
USBで持ってきた公開鍵が~/.ssh/id_rsa.pub
だとします.
cd cat .ssh/id_rsa.pub >> .ssh/authorized_keys #追記にしないと複数ssh接続する時に死にます rm .ssh/id_rsa.pub chmod 700 .ssh chmod 600 .ssh/authorized_keys
また,/etc/ssh/ssh_configを適当に書き換えます.
今回はPortを22から変えました.攻撃怖いので....そのほか,パスワード認証やルートでのログインを禁止にしたほうが安全です.
再起動します.
sudo service sshd restart
最後にポートを開きます.
sudo ufw allow 22 #さきほど設定したポート番号にします
クライアントで接続テスト
ぶっちゃけMobaXtermだとめっちゃくちゃ簡単.
起動→左上の"Session"→一番左の"SSH"で各種設定をします.
Advanced SSH settings→Use private keyで秘密鍵を設定できます.
ちなみに踏み台サーバとか使うときはNetwork settingsからできるらしい.外部からもつなぎたいので次はこれやる.
Ubuntu20.04+RTX3060 TiでGPU環境構築メモ[2022/04時点]
せっかく公開するので丁寧に書いたつもりですが,しょせんはメモですので悪しからず.
この記事に限らずだけど,こういう記事は特に環境やバージョンをしっかり確認しましょう!まるまるコピペで動く保証はあんまりないです!ほんとこれで詰まると悲しくなるので...気をつけようね....
なお,Ubuntuはすでに入っていて,ふんわりとCUI操作ができる状態からです.
目次(全体の流れも分かるよ)
- [ 参考 ] 私の環境とversion
- [ 準備 ] CUDAのversionを決める(わかってる人は飛ばしてね)
- [ 準備 ] いつもの前処理(もはやおまじない)
- [ 準備 ] 既存のnvidia-driver, cuda, cudnnなどの削除
- [ 準備 ] nouveauを無効化
- [ 準備 ] セキュアブートの無効化
- [ 1 ] nvidia-driverのインストール
- [ 2 ] cudaのインストール
- [ 3 ] cudnnのインストール
- [おつかれ!] 動作確認
- 参考
[ 参考 ] 私の環境とversion
PyTorchはPythonで利用できる機械学習ライブラリであり,環境構築そのものには関わらずかつ比較的簡単に切り替えが出来ますが,バージョンの依存関係がある(後述)ので記載しています.
CPU | INTEL CORE 05-10400F |
GPU | NVIDIA RTX3060Ti |
OS | Ubuntu 20.04 LTS |
nvidia-driver | 470 |
CUDA | 11.1 |
cuDNN | 8.4.0 |
PyTorch | 1.8.2(LTS) |
[ 準備 ] CUDAのversionを決める(わかってる人は飛ばしてね)
全体像を掴む,という意味も込めて一番はじめにやっておくと困りにくいと思います.
依存関係があるところは,
CUDA | GPU(型番ではなくてアーキテクチャ) |
CUDA | nvidia-driver |
CUDA | cuDNN |
CUDA | ライブラリ(PyTorchとかTensorFlowとか) |
このあたりです.
基本は使いたいライブラリのバージョンに合わせてCUDAのバージョンを決めます.nvidia-driverとcuDNNはCUDAに合わせてって感じで,インストールのときに正しいものを選べば大丈夫です.
まず,ライブラリのバージョンですが,動かしたいコードがある場合は指定されているバージョン,なければLTSが無難かなと思います.
PyTorchであれば公式のページ,またはprevious versionsで使いたいPyTorchバージョンに合わせたCUDAを確認してください.例えばPyTorch LTS(1.8.2)の場合はCUDA10.2とCUDA11.1が対応しています.
実はここは多少はがばがばでも動くときも多く,例えばCUDA11.3でもCUDA11.0でもPyTorch1.8を動かせるのですが,動かなかったときに原因の対処がしづらいので合わせといておいたほうが無難だとは思います.
次に,そのCUDAがGPUに対応しているかを確認します.結論をいうと,NVIDIA Ampereアーキテクチャ,具体的にはRTX30系とかA100とか,はCUDA10.x以前は非対応です.つまり例えば,PyTorch1.4.0はCUDA11.xに対応していないのでRTX3060 Tiでは使えません…
NVIDIAのドキュメント:CUDAとcuDNNとアーキテクチャの関係とか
あとは大丈夫だと思いますが,怖かったら一応確認しておいたほうがいいです.PyTorch LTS(1.8.2)はCUDA10.2とCUDA11.1が対応していて,私のGPU(RTX3060 Ti)はAmpereなので,今回はCUDA11.1を入れます.
また,本題とは関係ありませんが,この記事を執筆時点でAmpereの次のHopperが発表されています.今後出るGPUを買う場合は気に留めておいた方がいいです.
[ 準備 ] いつもの前処理(もはやおまじない)
sudo apt update sudo apt upgrade
[ 準備 ] 既存のnvidia-driver, cuda, cudnnなどの削除
これは必要な人とそうでない人がいると思います.
sudo apt-get --purge remove nvidia* sudo apt-get --purge remove cuda* sudo apt autoremove
[ 準備 ] nouveauを無効化
nouveauというのはデフォルトのビデオカード向けのドライバ.
nvidia-driverがすでにインストールされていた人はやっているかもしれません.また,CUIオンリー環境(サーバとか)だといらんかも.
まずは今動いているか確認.
lsmod | grep nouveau
でなにも出なければOK,次の手順へ.なにか出た場合は有効なので無効化します.
お好きなエディタ(例はemacs)で下記ファイルを作成します.sudo
は必要に応じてつけてください(私は必要でした).
sudo emacs /etc/modprobe.d/blacklist-nouveau.conf
ファイルの中身は下記.
blacklist nouveau options nouveau modeset=0
書けたら設定の反映と再起動をします.
sudo update-initramfs -u sudo reboot
最後に念の為もう一度lsmod | grep nouveau
で確認することをおすすめします.
[ 準備 ] セキュアブートの無効化
参考先ではコマンドとか鍵とかでなんとかできててすごいなぁなんですが,私はよくわからなかったのでUEFIから無効化しました.
ちょっと正確かつ簡単に説明できる自信がないのでUEFIについての説明は省きます.もう本当にざっくり正確ではない説明をすると,コンピュータそのもの(not OS)の管理設定画面みたいな感じです.BIOSって呼ばれているかもしれません(これまたざっくりと,”UEFI=次世代のBIOS”みたいなイメージです.両者は混同されがち).
じゃあどうやってこの画面に行くねん,という話ですが,再起動して,起動中にあるボタンを連打します.あるボタンはマシンによって違いますが,F2
やDel
が多いそうです.私のPCははぐれ者なのかF11
でした.一応仕様書とか説明書に書いてあると思いますが,当てずっぽうでも入れはします.
けっこうビビる感じの画面が出てくると思いますが大丈夫です.これまたマシンによって呼び方が変わってくるのですが,"Advanced"メニューから"Secure Boot"の設定ができると思います. "Disable"とかにしましょう. あとは設定画面から出ます.多分"exit"とかがあると思います.
ドスパラのBIOS説明のページが操作する上ではわかりやすいかなと思ったのでおいておきます.ご参考まで.
[ 1 ] nvidia-driverのインストール
やっと本題です,長かったねすみません
まず推奨ドライバを確認します.
ubuntu-drivers devices
これ打つと下記のようにいろいろ出てくると思いますが,
$ ubuntu-drivers devices WARNING:root:_pkg_get_support nvidia-driver-510-server: package has invalid Support PBheader, cannot determine support level WARNING:root:_pkg_get_support nvidia-driver-510: package has invalid Support PBheader, cannot determine support level == /sys/devices/pcixxxx == modalias : pci:xxxx vendor : NVIDIA Corporation driver : nvidia-driver-470-server - distro non-free driver : nvidia-driver-470 - distro non-free recommended driver : nvidia-driver-510-server - distro non-free driver : nvidia-driver-510 - distro non-free driver : xserver-xorg-video-nouveau - distro free builtin
基本的に"recommended"ってついているもので大丈夫です.CUDAのバージョンと対応しているかだけ確認しましょう.CUDA11.xの場合は450以上なら大丈夫です.
入れます.
sudo apt install nvidia-driver-470
再起動.
sudo reboot
確認.
nvidia-smi
四角い表が出たらOKです.表の右上の"CUDA Version"は入れることが可能な最新CUDAを示しているらしいので,自分の入れているCUDAと違っても大丈夫です.一番下の"Processes"は私はデスクトップ版のUbuntuを使っているので画面表示に使用されている分が4つありますが,CUIオンリー(サーバ用)の人は"no running processes found"って出ると思います.
$ nvidia-smi Wed Apr xx xx:xx:xx 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A | | 0% 48C P8 15W / 200W | 338MiB / 7973MiB | 1% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 8x2 G /usr/lib/xorg/Xorg 35MiB | | 0 N/A N/A 15x4 G /usr/lib/xorg/Xorg 137MiB | | 0 N/A N/A 1x56 G /usr/bin/gnome-shell 28MiB | | 0 N/A N/A 20x8 G ...055xxxx702x706xxx6,1xx072 123MiB | +-----------------------------------------------------------------------------+
[ 2 ] cudaのインストール
CUDA Toolkit Archiveからお好みのバージョンを選んでください.そうしたら以下みたいな画面になるので,ご自分の環境に合わせてぽちぽちします.runfileかdebかはお好みでいいと思いますが,runfileのほうが多分楽です. ぽちぽちするとコマンドを出してくれるので打っていきます.
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run sudo sh cuda_11.1.0_455.23.05_linux.run --toolkit --silent --override
いや2行目提示されたコマンドsudo sh cuda_11.1.0_455.23.05_linux.run
と違うやないかーい!となりますね.大丈夫です.
実はこのrunfileめちゃくちゃ優秀で,ドライバも一緒に入れてくれるんです.でも私達はさきほどドライバを入れました.この状態で提示されたコマンドをそのまま使うと"Existing package manager installation of the driver found"って言われちゃうんです.これはつまり「ドライバ入れたいんやけどもう入っとるよ,どないしよか?」ってマシンが困っています.
なので上記の通り,--toolkit --silent --override
オプションをつけます.なお,うっかりそのまま打ってマシンが困ったときは"Abort"を押すと戻れます.参考
パスを追加するため,以下を~/.bashrcに追記します.
export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
書けたら設定を反映するため再起動します.
source ~/.bashrc
ここまでできたらnvcc -V
って打ってみてください.CUDAのバージョンが出てくると思います.
$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2020 NVIDIA Corporation Built on Tue_Sep_15_19:10:02_PDT_2020 Cuda compilation tools, release 11.1, V11.1.74 Build cuda_11.1.TC455_06.29069683_0
[ 3 ] cudnnのインストール
ここからダウンロードしてください.会員登録(無償)が必要です.面倒だね
バージョンは特にこだわりがなければ最新版でいいと思います.CUDAのバージョンやその他の都合で過去のバージョンが必要な場合はarchiveからどうぞ.
ダウンロードしたら入れます.
sudo dpkg -i cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb
[おつかれ!] 動作確認
適当になにか回して別ウィンドウとかタブとかでnvidia-smi
を打ってプロセスが走っていたら大丈夫です.
…でもいいかなって思ってるんですが,一応ちょっとだけ真面目に書きます.今回はpytorchでやります.バージョンは好きなの入れてください.python3とpip3は入ってる想定です.あと環境汚したくない人は適当に環境作っておいてください.
簡単なやつ:
$ pip3 install torch==1.8.2+cu111 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html $ python Python 3.6.15 (default, Jan xx 2022, xx:xx:xx) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> torch.cuda.is_available() True >>> torch.cuda.get_device_name() 'NVIDIA GeForce RTX 3060 Ti' >>>
torch.cuda.is_available()
でTrue,torch.cuda.get_device_name()
で正しいGPUの名前が出てきたら経験上は大丈夫です.
難しい(難しくはない)やつ:
適当にMNISTのチュートリアルをやります.
ダウンロードします.
svn export https://github.com/pytorch/examples/trunk/mnist/
移動します.
cd mnist
README.mdに書かれたとおりに打ちます.#が先頭についている行は無視します.
pip install -r requirements.txt python main.py
動くと思うので,ターミナルの別タブなり別ウィンドウなりでnvidia-smi
を打ちます.
$ nvidia-smi Wed Apr xx xx:xx:xx 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A | | 0% 53C P2 75W / 200W | 2005MiB / 7973MiB | 33% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 8x2 G /usr/lib/xorg/Xorg 35MiB | | 0 N/A N/A 1xx4 G /usr/lib/xorg/Xorg 137MiB | | 0 N/A N/A 1xx6 G /usr/bin/gnome-shell 38MiB | | 0 N/A N/A 2xx8 G ...05xxxx070xxx06xxx6,1xxx72 78MiB | | 0 N/A N/A 1244458 C python 1699MiB | +-----------------------------------------------------------------------------+
一番下にある0 N/A N/A 1244458 C python 1699MiB
が今回っているmain.pyです.
これで動作確認も出来ました.お疲れ様でした!
最後にいらないとは思いますが気になる方はあとかたづけも.
sudo apt autoremove sudo apt clean
参考
UbuntuへNVIDIAのドライバを入れる際の注意点
【備忘録】Ubuntu 20.04 LTS + GPU 環境構築 (2021年3月版)
【備忘録】ubuntu20.04LTSにcuda-toolkit-10.1を入れる方法
vimiumでマウスなしブラウザ生活を目指す
なるべく楽に生きていきたい.はちくもきりです.
エンジニア二年目,マウス使うとキーボードから手が離れて非効率なので,マウスなしでブラウザを使う方法はないんか,ということで.
探したらありました.便利な世の中です.
Vimium(Chorome拡張)
Vimのようにブラウザを操作しよう,というものらしいです.ちなみに私はほとんどVimを触ったことがないです.
あとは適当にチートシートを検索すれば出てきますし,wikiもあるみたいなのですが,私得チートシートも書いておきます.なぜならここはメモ帳なので!車輪の再発明っぽいけど知りません! 英語得意な人は一番上のヘルプだけ覚えればとりあえずなんとかなりそう
なお,こちら,個々人でもカスタムができるようです.すごいね.
キー | できること |
---|---|
? | ヘルプ(etc で抜ける) |
j | 下にスクロール |
k | 上にスクロール |
d | 下に半ページスクロール |
u | 上に半ページスクロール |
gg | 最上部までスクロール |
G | 最下部までスクロール |
h | 左にスクロール |
l | 右にスクロール |
J | 左のタブへ |
K | 右のタブへ |
H | 1つ戻る(いわゆるブラウザバックってやつ) |
L | 1つ進む |
x | タブを閉じる |
X | 閉じたタブをもとに戻す |
t | 新しいタブを開く |
r | リロード |
f / F | ページ内リンクを現在の(新規の)タブで開く |
o / O | 履歴やurlから検索できる(大文字は新規タブ) |
b / B | ブックマークから検索できる(大文字は新規タブ) |
yy | 現在のアドレスバーのリンクをコピー |
p / P | クリップボードのリンクを現在の(新規の)タブで開く |
f / Fがちょっとややこしいのですが,google検索に適当になにか打ち込んで出てきた検索ページでf
って押してみてください.
この状態で,例えば一番上のページがみたいなと思ったらFF
って押すとなんとそのページに飛べちゃいます!すごい!
たださすがに万全ってわけでもなくて,なんか時々うまく動かないとかあります.わかりやすいとこだとnotionとかは相性だめです.
とはいえ相当効率化が図れそうなのでがんばって覚えたいです.キーボードショートカットって覚えるとめちゃ便利なんだけど覚えるまでが大変みたいなとこありますね….