😸

WSL2 + Quarto + R(torch)で機械学習環境をつくる

2023/10/10に公開

1. はじめに

1.1. この記事の趣旨

この記事は、GNU R(以下、R)の torch パッケージを用いた機械学習の解析環境を、Windows Subsystem for Linux (WSL) 2 + Visual Studio Code(VS Code)+ Quartoでセットアップする手順をまとめたものです。これまで使用していた解析環境と異なる設定となったため、備忘録を兼ねて書きました。この記事では、Windows側でVS CodeとGitの設定が完了しており、Linuxの基礎知識があることを前提としています。そのあたりの設定方法や参考資料は、以前に他の記事に記載しました。なお、この記事では依存関係のトラブルを防ぐためにUbuntuをクリーンインストールします。

1.2. 背景

私は、約1年前に博士号を取得したことをきっかけに、最近転職を決めました。新しい職場では医療系ビッグデータの解析をおこなうため、その手法を学習するための環境を構築することにしました。解析に使用する言語は使い慣れているR、機械学習のフレームワークはRで動作するtorchとしました。臨床研究をおこなう時には解析環境の再現性を意識してコンテナー技術を使用するのですが、今回は仕事で使用するのみで解析環境を公開する予定がないため、WSL2-Ubuntuに直接ソフトウェアをインストールすることにしました。

2. WSL-Ubuntuを設定する

2.1. 参照したドキュメント

2.2. WSLをアップデートする

bash
wsl --update

2.3. 現行のWSL2-Ubuntuを削除する

bash
wsl --shutdown
wsl --unregister Ubuntu

2.4. WSL2-Ubuntuをインストールする

2.4.1. 最新のLTSをインストールする

bash
wsl.exe --install Ubuntu

2.4.2. Linuxユーザー名とパスワードを設定する

Microsoft Learnの該当ページを参照してください。

2.4.3. タイムゾーンを変更する

bash
sudo timedatectl set-timezone Asia/Tokyo

2.5. WSL2-UbuntuのDNS設定を変更する

2.5.1. DNS設定ファイルの自動生成を停止する

bash
echo "[network]" | sudo tee -a /etc/wsl.conf
echo "generateResolvConf = false" | sudo tee -a /etc/wsl.conf

2.5.2. 既存のresolv.confを削除しシンボリックリンクを解除する

bash
sudo rm /etc/resolv.conf

2.5.3. 新しい /etc/resolv.conf を作成し、Google Public DNSを設定する

bash
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

2.6. apt関連の設定を変更する

2.6.1. aptパッケージのリポジトリを日本のミラーサーバーに変更する

bash
sudo sed -i 's/\/\/archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
sudo sed -i 's/\/\/us.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
sudo sed -i 's/\/\/fr.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
sudo apt -y update

2.6.2. aptパッケージをHTTPS経由でインストールできるように設定する

bash
sudo apt -y update
sudo apt -yV install ca-certificates curl gnupg lsb-release apt-transport-https

2.6.3. WSL2-Ubuntuがクリップボードにアクセスできるようにする

bash
sudo apt -yV install xclip

2.6.4. VS Codeの拡張機能「R」の依存パッケージをインストールする

bash
sudo apt -yV install libxml2-dev

2.6.5. Rパッケージのビルドに必要なaptパッケージをインストールする

bash
sudo apt -yV install libssl-dev libcurl4-openssl-dev make gcc g++ liblapack-dev libblas-dev gfortran

2.6.6. 不要なaptパッケージを削除する

bash
sudo apt -y purge wolfram-engine libreoffice* thunderbird*
sudo apt -yV autoremove
sudo apt autoclean

2.7. WSL2-Ubuntuのシステムを更新する

bash
sudo apt -y update
sudo apt -yV upgrade
sudo apt -yV dist-upgrade
sudo apt -yV autoremove
sudo apt autoclean
sudo shutdown -r now

3. WSL2-UbuntuでGitを使用できるようにする

3.1. 参照したドキュメント

3.2. ユーザー名とメールアドレスを設定する

bash
git config --global user.name "username"
git config --global user.email "e-mail@hogehoge.com"

3.3. SSHキーを生成し、クリップボードにコピーする

bash
cd
ssh-keygen -t ed25519
cd .ssh
cat id_ed25519.pub | xclip -selection clipboard

3.4. GitHubのアカウントにSSHキーを登録する

GitHub Docsの該当ページを参照してください。

3.5. 必要なGitHub上のリポジトリをクローンする

GitHub Docsの該当ページを参照してください。

4. WSL2-UbuntuでGPUを使用できるようにする

4.1. 参照したドキュメント

4.2. Windowsに最新のNVIDIAドライバーをインストールする

公式からインストールしてください。

4.3. 古いNVIDIAのGPGキーを削除する

bash
sudo apt-key del 7fa2af80

4.4. UbuntuにCUDA Toolkitをインストールする

4.4.1. CUDAリポジトリのピンファイルをダウンロードする

bash
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

4.4.2. CUDA Toolkit 11.7のパッケージファイルをインストールする

bash
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-7-local_11.7.0-1_amd64.deb

4.4.3. NVIDIAのGPGキーリングファイルをコピーする

bash
sudo cp /var/cuda-repo-wsl-ubuntu-11-7-local/cuda-*-keyring.gpg /usr/share/keyrings/

4.4.4. パッケージファイル(CUDAリポジトリを含む)をアップデートする

bash
sudo apt update

4.4.5. CUDAをインストールする

bash
sudo apt -yV install cuda

4.4.6. 不要なパッケージとファイルを削除する

bash
sudo apt autoremove
sudo apt clean

4.5. CUDAに対応したcuDNNをインストールする

4.5.1. WindowsにダウンロードしたインストーラーをWSL2-Ubuntuにコピーする

bash
cp /mnt/c/Users/Username/Downloads/cudnn-local-repo-ubuntu2204-8.9.5.29_1.0-1_amd64.deb ~/cudnn-local-repo-ubuntu2204-8.9.5.29_1.0-1_amd64.deb

4.5.2. cuDDNのGPGキーリングファイルをコピーする

bash
sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.5.29/cudnn-local-535C49CB-keyring.gpg /usr/share/keyrings/

4.5.3. インストーラーを実行する

bash
sudo dpkg -i ~/cudnn-local-repo-ubuntu2204-8.9.5.29_1.0-1_amd64.deb

4.5.4. 一時ファイルを削除する

bash
rm ~/cudnn-local-repo-ubuntu2204-8.9.5.29_1.0-1_amd64.deb

5. WSL2-UbuntuにQuartoをインストールする

5.1. 参照したドキュメント

5.2. Quarto CLIをインストールする

bash
wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.3.450/quarto-1.3.450-linux-amd64.deb
sudo dpkg -i quarto-1.3.450-linux-amd64.deb
rm quarto-1.3.450-linux-amd64.deb

6. WSL2-UbuntuにRをインストールする

6.1. 参照したドキュメント

6.2. RリポジトリのGPGキーを取得する

bash
sudo wget --quiet https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc -O- | gpg --dearmor -o /usr/share/keyrings/r-archive-keyring.gpg

6.3. Rリポジトリ(4.X系)を/etc/apt/sources.list.d/に追加する

bash
echo "deb [signed-by=/usr/share/keyrings/r-archive-keyring.gpg] https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/" | sudo tee /etc/apt/sources.list.d/r.list

6.4. r-baseをインストールする

bash
sudo apt -y update
sudo apt -yV install r-base

6.5. Rパッケージをインストールする

6.5.1. パーソナルライブラリのディレクトリを作成する

bash
mkdir -p ~/R/x86_64-pc-linux-gnu-library/4.3

6.5.2. Rを起動する

bash
R

6.5.3. パーソナルライブラリのパスを設定する

R
lib_path <- "~/R/x86_64-pc-linux-gnu-library/4.3"

6.5.4. Quarto用のRパッケージをインストールする

R
install.packages("quarto")
install.packages("languageserver")

6.5.5. バージョン管理用のRパッケージをインストールする

R
install.packages("checkpoint")

6.5.6. Rを終了する

R
q()

以上で、WSL2 + VS Code + Quartoで torch により機械学習をおこなう環境が整いました。なお、torch はQuarto用のディレクトリを準備してから、Rのパッケージのバージョン管理下で設定します。今後、簡単なサンプルデータの解析とともに記事にまとめる予定です。

Discussion