搭建基於 Anaconda 管理的多用戶 JupyterHub 平台
情況:計算工作站放在實驗室,多個同學需要接入使用,且需要各自獨立的環境,並使用 Jupyter notebook 平台以方便協作。
步驟
1. 安裝 Anaconda
由於是多人環境,應調用 root 權限在安裝過程中指定安裝到 /opt/anaconda/
路徑下,這樣所有用戶均可讀,但無法直接在 base 環境下安裝模塊。
為了讓每個用戶都能訪問到 conda,需要逐個在用戶的 .bashrc 文件中加入 export PATH='/opt/anaconda:$PATH'
。
2. 安裝 JupyterHub
JupyterHub 是 Jupyter notebook 的多用戶版本,每個用戶可以通過自己的系統用戶名和密碼登錄到個人獨立的 Jupyter notebook 中,這樣不同人的代碼和數據都保存於其自己的用戶目錄下,同時用戶的資源消耗和管理也更清晰簡單,非常適合單機多用戶的需求。
在 Anaconda 的 base 環境下安裝 JupyterHub,注意 base 環境只有 root 可寫。
(base)$ sudo conda install JupyterHub
在 base 環境下啟用 JupyterHub 時亦需要通過 root,否則將會啟用單用戶模式,導致其他用戶無法登陸。
(base)$ sudo jupyterhub
3. 安裝 JupyterHub 調用 Anaconda 環境依賴
通過 conda create 創建的環境並不會默認顯示在 JupyterHub 的 kernel 選項中,需要安裝依賴。
(base)$ sudo conda install nb_conda_kernels
4. 用戶使用
- 每個用戶開始使用時,需要先建立自己的個人環境,注意由於是建立個人環境,因此該環境會寫入
~/.conda
下,故不再需要 root 權限,且每個用戶都可以隨意安裝需要的 python 模塊
$ conda create --name crew
2. 建立好后,進入個人環境並安裝 JupyterHub kernel
(base)$ source activate crew # 激活個人環境,注意下一行環境標識符發生變化
(crew)$ conda install ipykernel
3. 安裝所需的模塊,這樣模塊會被安裝到用戶的個人環境下,不會對 base 環境或其他用戶的環境造成影響,且一個用戶可以創建多個相互獨立的環境
(crew)$ pip install numpy # or use conda install numpy
4. 訪問 JupyterHub,此時可以在頁面中選擇所創建的個人環境的 kernel
實際嘗試
- 由於可能每個同學都需要使用 tensorflow 或 keras 等深度學習模塊,因此我在 base 環境中預先安裝好了這些模塊,這樣在進行深度學習時不需要費勁地重新安裝模塊。
- 如果同學需要安裝自己的模塊,則可以直接從 base 環境新建一個個人環境,個人環境會繼承 base 環境已有的模塊
$ conda create -n crew
- 如果同學不需要繼承 base 環境,而是想新建一個空白的新環境,也可以用 conda 做到
$ conda create -n crew python=3.6