Jupyter Lab:Jupyter Notebook 的演變

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


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


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


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


Console
對于習(xí)慣于 QT 控制臺類型環(huán)境的人來說,可以使用 Console,能夠在內(nèi)核中以交互方式運(yùn)行代碼。


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


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


拖放單元格


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


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


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