GPU PC (Desktop) のセットアップメモ
Ubuntu 18.04.5 LTS (Bionic Beaver)
Ubuntu 18.04、Windows 10のデュアルブート環境を構築する。 プロキシ下を想定しているので、不要な場合は適宜調整。
時刻ずれの解消
Linux環境設定/デュアルブートのWindows時刻をUTCにする - Linuxと過ごす
デュアルブート環境では、BIOSの時刻を介してWindows側の時刻管理(ローカル時間)とUbuntu側の時刻管理(UTC時間)が衝突して、タイムゾーンの時差分、時計がずれてしまう。ここでは、Windows側の時刻管理をUTC時間にするようにレジストリを変更して対処する。
Windows上で管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行する。
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
NTPサーバの設定(プロキシ環境)
- Ubuntu 18.04 / 16.04 で時刻合わせの設定を変更する - Sickly Life Blog
- systemdのSNTPクライアント機能を使ってみる | Keep the Light Alive
- 【Windows】「ハードウェアクロック」と「システムクロック」と「NTP 時刻同期」の関係 | 100%レンタルサーバーを使いこなすサイト
時刻同期のためプロキシ内のNTPサーバを設定する。
Settings > Details > Date & Timeで使われるNTPサービスはsystemd-timesyncd
。
設定ファイルの/etc/systemd/timesyncd.conf
を開いて編集する。
[Time]NTP=YOUR_NTP_SERVER
sudo systemctl restart systemd-timesyncd
これで時刻が同期される。
プロキシの設定 (1) Environment Variable, apt
Settings > Networkからプロキシを設定する。設定した内容はHTTP_PROXY
などの環境変数に出力される。スキーム部分は不要(OS側で付けるので二重プロトコルになってしまう)。
また/etc/apt/apt.confを作成し、プロキシ設定を追記する
Acquire::http::proxy "http://YOUR_HTTP_PROXY";Acquire::https::proxy "http://YOUR_HTTP_PROXY";
Package Indexの更新とPackageの更新
sudo apt updatesudo apt upgrade -y
git、ビルドツールほかのインストール
sudo apt install -y \git \build-essential \make \cmake \vim
git config --global core.editor vimgit config --global credential.helper cachegit config --global user.name YOUR_NAMEgit config --global user.email YOUR_EMAIL
~/.vimrc
set shiftwidth=4set tabstop=4set expandtab"set numberset cursorlineset smartindentset laststatus=2syntax enableset hlsearchnmap <Esc><Esc> :nohlsearch<CR><Esc>
日本語IME(ibus-mozc)、言語サポートのインストール
sudo apt install -y ibus-mozcibus restartgsettings set org.gnome.desktop.input-sources sources "[('ibus', 'mozc-jp'), ('xkb', 'jp')]"
sudo apt install -y $(check-language-support)
プロキシの設定 (2) git
git config --global http.proxy ${HTTP_PROXY}git config --global https.proxy ${HTTPS_PROXY}
pyenv、Pythonのインストール
pyenv/pyenv: Simple Python version management
新しいPythonを使うため、それからシステムと開発環境を分離してモジュール管理をaptとpipで分けて衝突事故を起こさないようにするため、pyenvを使うのが安定。
git clone https://github.com/pyenv/pyenv.git ~/.pyenvecho 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrcecho 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrcecho -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrcsource ~/.bashrc
sudo apt install -y \libssl-dev \zlib1g-dev \libbz2-dev \libreadline-dev \libsqlite3-dev \wget \curl \llvm \libncurses5-dev \libncursesw5-dev \xz-utils \tk-dev \libffi-dev \liblzma-dev \python-opensslpyenv install 3.8.5pyenv global 3.8.5
Docker & Docker Composeのインストール
Install Docker Engine on Ubuntu | Docker Documentation
sudo apt remove docker docker-engine docker.io containerd runcsudo apt updatesudo apt install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg \-x "${HTTP_PROXY}" \| sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"sudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io
Install Docker Compose | Docker Documentation
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" \-o /usr/local/bin/docker-compose \-x "${HTTP_PROXY}"sudo chmod +x /usr/local/bin/docker-compose
一応、sudoせずにdockerを実行できるようにしておく。 注意として、共有サーバにおいては特権昇格できてしまうため、Docker 20.10以降のDocker rootlessを設定する。
sudo groupadd dockersudo adduser $USER docker
プロキシの設定 (3) Docker
sudo systemctl edit docker
このコマンドで開いたファイルに以下を追記する。
[Service]Environment="HTTP_PROXY=YOUR_HTTP_PROXY"Environment="HTTPS_PROXY=YOUR_HTTP_PROXY"
sudo systemctl restart dockerdocker pull hello-worlddocker run --rm hello-world
正常に実行されればOK。
CUDA & NVIDIA Driverのインストール
PyTorchの対応バージョンを見ながらCUDA Toolkitをインストールする。
CUDA Toolkit 10.2 Download | NVIDIA Developer
CUDA Installerのrunfileを使って、runfileに同梱されているNVIDIA Driverを同時に入れるのが安定(2.5GBくらいで結構重いが)。
追記(2021/01/04):カーネルアップデートのたびに再インストールする必要が出てくるので、ドライバについてはDKMSが使える通常のNVIDIA Driverインストールをした方がいい。 適切にPATH、LD_LIBRARY_PATHを設定すれば問題ない。
Download runfile installer for Ubuntu 18.04
CUIモードでないとインストールに失敗するので、ダウンロードが終わったら一度デスクトップからログアウトし、Ctrl+Alt+F2などでCUIモードにする。
sudo systemctl stop gdm# sudo systemctl stop lightdm # for Ubuntu 16.04
これでデスクトップマネージャを止めてからインストールを始める(再起動してGUIモードでログインせずにCUIモードにして実行でもいけるかも)。
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.runsudo sh cuda_10.2.89_440.33.01_linux.run
~/.bashrcに以下を追記する。
export PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
PyTorchが入ったあと(どちらを先にいれてもいい)、
import torchtorch.cuda.is_available()
でTrueが返ってくればOK。
OpenCV-Python, Numpy, PyTorchほかのインストール
pip3 install -U pippip3 install -U \opencv-python \numpy \Pillow \--proxy "${HTTP_PROXY}"
pip3 install -U \torch \torchvision \torchtext \torchaudio \--proxy "${HTTP_PROXY}"
pip3 install -U \matplotlib \tqdm \jupyter \PyYAML \tensorboardX \--proxy "${HTTP_PROXY}"
SSH Serverほかのインストール
sudo apt install -y openssh-server net-tools
ifconfig
sudo vim /etc/ssh/sshd_config
必要に応じてパスワード認証を無効にする。
PasswordAuthentication no
ownCloudのインストール
Install package isv:ownCloud:desktop / owncloud-client
echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_18.04/ /' | sudo tee /etc/apt/sources.list.d/isv:ownCloud:desktop.listcurl -fsSL https://download.opensuse.org/repositories/isv:ownCloud:desktop/Ubuntu_18.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/isv:ownCloud:desktop.gpg > /dev/nullsudo apt updatesudo apt install owncloud-client
その他のインストール
ssh-keygen -f KEYNAME
sudo apt install tmux autossh
おまけ
sshのプロキシ設定
~/.ssh/configのHost
の下に書く。Windowsの場合はconnect
をビルドする必要がある。
# LinuxProxyCommand nc -X connect -x YOUR_HTTP_PROXY %h %p# WindowsProxyCommand MY_APP_DIRECTORY\connect\connect.exe -H YOUR_HTTP_PROXY %h %p# MacProxyCommand ncat --proxy-type http --proxy YOUR_HTTP_PROXY %h %p
# for build `connect.c` on Windowsgcc -o connect -lwsock32 connect.c -lws2_32