Jupyter Lab:Jupyter Notebook 的演變

JupyterLab 是 Jupyter Notebook 的下一代用戶界面。它是一個基于Web的交互式開發環境,可以讓用戶以可視化的方式編輯、運行和分享代碼。JupyterLab支持多種語言,包括Python、R、Julia等,可以進行數據分析、科學計算、機器學習等各種任務。
與Jupyter Notebook相比,JupyterLab提供了更豐富的功能和更靈活的界面。它支持多窗口布局,可以在同一個頁面內同時打開多個Notebook、文本文件、終端等。同時,JupyterLab還支持插件擴展,可以根據需要安裝和配置各種插件,如代碼編輯器、文件瀏覽器、繪圖工具等,以滿足不同的需求。
隨著 AI 行業的持續火熱,相關的工具和框架簡直是一天一個樣,JupyterLab 也可以作為 AI 的工具,可以做很多的事情,包括:
- 數據探索和可視化:JupyterLab 可以通過各種Python庫,如Numpy、Pandas、Matplotlib、Seaborn等,對數據進行探索和可視化,幫助用戶發現數據的特點和規律。
- 機器學習和深度學習:JupyterLab可以通過各種Python庫,如Scikit-learn、TensorFlow、Keras、PyTorch等,進行機器學習和深度學習的任務,如分類、回歸、聚類、圖像識別、自然語言處理等。
- 自然語言處理:JupyterLab可以通過Python庫NLTK、Spacy等,進行自然語言處理的任務,如分詞、命名實體識別、文本分類、情感分析等。
- 數據挖掘和數據預測:JupyterLab可以通過各種Python庫,如Scikit-learn、XGBoost等,進行數據挖掘和數據預測的任務,如異常檢測、關聯規則挖掘、時間序列分析等。
- 模型解釋和調優:JupyterLab可以通過各種Python庫,如Shap、Lime、Scikit-learn等,對機器學習和深度學習模型進行解釋和調優,幫助用戶理解模型的決策過程和優化性能。
安裝啟動
JupyterLab 可以使用 conda、mamba、pip、pipenv 或 docker 安裝。
#conda
conda install -c conda-forge jupyterlab
#mamba
mamba install -c conda-forge jupyterlab
#pip
pip install jupyterlab
#pipenv
pipenv install jupyterlab
pipenv shell
請查看官方安裝文檔以獲取更多細節。這里將介紹一下使用 Docker 安裝和使用 JupyterLab,同樣官方提供了詳細的文檔。
Jupyter Docker Stacks 是一組可直接運行的 Docker 鏡像,包含 Jupyter 應用程序和交互式計算工具。可以使用堆棧鏡像執行以下任何操作(等等):
- 啟動帶有 JupyterLab 前端的個人 Jupyter 服務器(默認)
- 使用 JupyterHub 為團隊運行 JupyterLab
- 在本地 Docker 容器中啟動個人 Jupyter Notebook 服務器
- 編寫自己的項目 Dockerfile
可以在 mybinder.org 上嘗試一個最新版本的 jupyter/base-notebook 鏡像構建的。這里就從 Docker 鏡像啟動一個 Jupyter 服務器:
docker run -p 10000:8888 jupyter/scipy-notebook:2023-04-24
上面的命令是從 Docker Hub 拉取 jupyter/scipy-notebook 鏡像,標記為 2023-04-24 的版本,如果該鏡像還未在本地主機上存在。那么它會啟動一個容器,運行 Jupyter 服務器,并將容器的內部端口 8888 映射到主機機器的端口 10000。可以通過修改 -p 選項的值來更改容器端口的映射,例如將其改為 -p 8888:8888,關于 Docker 的操作可以閱讀專題《面向WEB開發人員的Docker》。
運行成功后將可以看到一下界面:


在上面的界面可以看到訪問地址:http://127.0.0.1:8888/lab?token=65eed917357fa0bd59960c109864074c6d14515f32d5bb56,由于運行的時候改了本機對應的端口為 10000,因此正確的訪問地址為:http://127.0.0.1:10000/lab?token=65eed917357fa0bd59960c109864074c6d14515f32d5bb56。


這意味著一切都已準備就緒,可以開始使用了。
操作界面
在使用各種功能之前了解一下 JupyterLab 的界面。
- 頂部菜單:展示了在 Jupyter Lab 中可用的各種操作。
- 左側邊欄:包括常用的選項卡。可以從
Running面板中查看正在運行的會話,Commands面板允許搜索所有可用的命令。 - 主要工作區:這是實際工作所需的區域。它包括notebooks、文檔、控制臺、終端等。只需雙擊或拖動文件到該區域即可開始工作。工作區可以通過命名的工作區 URL 在服務器上保存。還可以通過在 JupyterLab 的 URL 中將 lab 改為 tree 來在經典的 Notebook 視圖和 JupyterLab 視圖之間切換。
來快速了解如何在 Jupyter Lab 中處理文件。
創建文件
單擊主菜單中的 + 圖標即可。這將在主工作區中打開一個新的 Launcher 選項卡,可以能夠創建Notebook、控制臺、終端或文本編輯器。同樣的操作也可以通過使用 File 選項卡來完成。打開后,文件可以重命名,甚至可以下載。


打開現有文件
打開文件是一個非常簡單的過程,選擇上傳圖標,從本地上傳一個文件。
靈活的布局
布局是很多IDE都有的基本功能,JupyterLab 同樣也有這樣的功能,通過將所有功能整合到一個交互式和協作環境中來解決這個問題。
Notebooks
JupyterLab 使用的Notebooks文檔格式與經典Jupyter Notebook相同。
輸入 print("Hello World") ,點擊上面播放按鈕即執行。


Console
對于習慣于 QT 控制臺類型環境的人來說,可以使用 Console,能夠在內核中以交互方式運行代碼。


完成輸入后,選擇頂部菜單 Run->Run Cell 即可以看到結果。
Text Editor
文本編輯器使編輯文件成為可能,文本編輯器包括語法突出顯示、可配置縮進(制表符或空格)、鍵映射和基本主題。這些設置可以在 Settings 菜單中找到。


Terminal
JupyterLab 終端為 Mac/Linux 上的系統 shell(bash、tsch 等)和 Windows 上的 PowerShell 提供全面支持。可以使用終端在系統 shell 中運行任何東西,包括 vim 或 emacs 等程序。
增強的 Notebook 功能
Jupyter Lab 并不是 Notebook 格式的重新實現,而只是在現有架構之上的新前端。然而,這個新的前端實現使得可以包含一些在經典 Notebook 中缺失的功能。
展開和折疊單元格


拖放單元格


編輯器中代碼自動完成
文本編輯器現在具有代碼自動完成功能,它僅在文本編輯器有附加控制臺時才啟用。
交互式計算
Jupyter Lab的真正能力在于其支持交互式計算,這在數據科學中非常有用。
創建新的輸出視圖
將使用官方 Jupyter Github 頁面上的 Lorenz 微分方程 notebook 。運行一些單元格后,將得到交互式的 Lorenz 吸引子作為輸出。有時當有一個交互式輸出時,必須上下滾動以找到生成它的代碼,這有點令人沮喪。作為解決這個問題的方法,Jupyter Lab 提供了一個選項,可以將輸出分解成一個新的標簽頁,通過使用滑塊并更改參數,就像擁有一個偽儀表板一樣。


拖拽和編輯 Notebook 之間的單元格
可以在一個 notebook 中拖放單元格。但是,單元格也可以在不同的 notebook 之間拖放。而且,一個 notebook 中的更改也會反映在另一個 notebook 中。
簡化代碼文檔化過程
正確地說,代碼閱讀的次數遠遠大于編寫的次數。文檔編寫是編程的一個非常重要的方面,而Jupyter Lab則使這一過程更加容易。在編寫Markdown文件時,通常面臨的一個問題是必須在不同的控制臺中運行代碼以檢查其是否完美運行,然后再將其包含在文件中,反復切換選項卡非常煩人。
Jupyter Lab 讓編輯器和控制臺合并到單個視圖中。因此,可以同時檢查代碼、文檔并預覽整個文件。
擴展
JupyterLab 被設計為一個可擴展的環境,擴展是非常強大的工具,可以極大地提高一個人的生產力。左側菜單欄切換到第四個擴展管理,然后在搜索框中輸入 google ,可以看到搜索結果,如圖:


選擇第一個進行安裝。
不過對于擴展,官方目前支持不太好,新版本很多支持不了。
總結
JupyterLab 是下一代基于Web的用戶界面,它擁有豐富的交互計算工具和精心設計的界面,允許用戶以新穎的方式將它們組合在一起。它非常強大,提供了各種穩健的工具,使數據分析過程更加順暢,無疑會提高生產效率。