はじめに
WSL 2 で JupyterLab を使いたいと思ったのですが、Anaconda の商用利用有償化の話など色々あって結構手順が長くなったので、今回備忘録がてら記事にしてみました。
ついでにこれまでずっと抱き続けていた「JupyterLab 起動するときいつもコマンドが長くてクソめんどくさいんだよな……」というモヤモヤを解決しました。
環境構築
環境
- Windows: Windows 10 20H2 (19042.746)
- WSL 2: Ubuntu 20.04 LTS
miniconda インストール
cd ~
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
rm Miniconda3-latest-Linux-x86_64.sh
インストール手順の最後に
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
と聞かれますが、ここは yes としておきます。
パスを通します。 (厳密には既に .bashrc に追加されているので再読み込みします)
source ~/.bashrc
conda の channel 設定
conda-forge を唯一の channel に設定します。
Anaconda の商用利用有償化の話1があります。WSL 2 環境下では検証環境を作ったりとか色々やるわけですが、今後誰かに Python を使って何かしらをする手順を案内した場合に「その手順はライセンスの都合で使用できない」みたいなことになると面倒なので、とりあえず conda-forge で実行可能な手順なら誰でも実行可能だろうという理屈でこの手順を実施しています。
不要な人は飛ばしてください。
conda config --add channels conda-forge
conda config --remove channels defaults
既存のパッケージも全部 conda-forge 由来のものに置換しておきます。
conda update conda
conda update --all
JupyterLab インストール
一通り標準的なパッケージをインストールします。
conda install jupyter jupyterlab pandas scikit-learn matplotlib git
試しに起動してみます。
/home/<your-name>/miniconda3/bin/jupyter lab --no-browser
miniconda をデフォルトのままインストールした場合上記のようにユーザーのホームディレクトリにインストールされます。<your-name> を自分の環境に応じて置換して実行します。
表示された URL にアクセスしてきちんと動けばとりあえず OK です。
JupyterLab 設定
デフォルトのワーキングディレクトリを変更します。(必要ない人は飛ばして大丈夫です)
設定ファイルを生成します。
/home/<your-name>/miniconda3/bin/jupyter lab --generate-config
下記文字列を検索し、コメントアウトした上でデフォルトにしたいディレクトリを指定します。
c.ServerApp.root_dir = '/mnt/c/workspace'
コマンド化
WSL 2 では systemd が動いていないので、JupyterLab をサービス化して自動起動しておいていつでもブラウザでアクセス、とはいきません。(サーバーならともかく WSL 2 はローカル実行するものなので、その性質上あまりすべきではない気もします)
代わりに WSL 2 でコマンド一発で JupyterLab を起動できるようにしておきます。
alias
コマンドを使って長ったらしい JupyterLab 起動コマンドを jupyterlab というコマンドに丸め込みます。
.bashrc には .bash_aliases というエイリアス記述用のファイルが存在する場合にそれを読み込むコマンドが予め記述されている2そうです。
ということで、まず .bash_aliases を作成します。
vim ~/.bashrc
コマンド定義を記述します。
alias jupyterlab="/home/<your-name>/miniconda3/bin/jupyter lab --no-browser"
最後に .bashrc を読み込みます。
source ~/.bashrc
終わりに
jupyterlab
WSL 2 のコンソールで上記コマンド一発で JupyterLab が立ち上がるようになりました。
余談
やっておかないといけないこと
ginza のインストール時にビルドでこけて何事かと思ったらこういうことだった。
sudo apt install build-essential
コマンドメモ
環境追加
Python 3.9 環境を構築する場合
conda create -n py39 python=3.9
-n 以後は自由
Jupyter カーネル追加
conda activate py39
conda install notebook ipykernel
ipython kernel install --user --name=py39 --display-name=Python3.9
CUDA
WSL 2 は CUDA に対応し、GPU 利用が可能です。3
まだ正式リリースではありませんが、利用可能な状態が整いつつあります。
この記事は、Windows 環境で自作のロマンでつい搭載してしまった宝の持ち腐れとしか言いようのない GPU を機械学習用途できちんと動かせる日に向けた準備を兼ねています。