1.6 環境配置之Jupyter Notebook

什麼是 jupyter notebook

經過前幾個章節的準備,目前已經具備了PyTorch開發環境,但本教程需要照顧初學者使用代碼,為初學者提供更佳的代碼學習體驗。因此,在上篇,主要採用Jupyter Notebook進行代碼演示。

注意Jupyter Notebook 建議僅用於學習目的,不推薦用於專案開發。

因為notebook自身定位決定的,先來看看jupyter notebook 的定義“The Jupyter Notebook is a web application for creating and sharing documents that contain code, visualizations, and text. It can be used for data science, statistical modeling, machine learning, and much more.”——官網

Jupyter notebook 是一個網頁應用,在這個網頁上可以編寫代碼、做視覺化、寫文本,這就是非常好的教學展示平臺。可以在上面進行概念描述、配上代碼、運行結果,並且可以按小段進行代碼運行,給用戶更多的交互體驗,便於用戶理解代碼細節。

基於此,本書上篇主要採用notebook進行代碼講解,到了中篇,基於完整的專案代碼框架進行應用開發。

關於jupyterjupyter notebook的關係,請大家查看官網(以下開始,notebook 指代 jupyter notebook

notebook 運行邏輯

Jupyter Notebook不僅僅是一個簡單的web應用程式,它還需要關聯指定的kernel,用於執行我們的代碼。相信剛接觸notebook的朋友大多都被notebook, kernel的概念搞的一頭霧水。如果上述概念理不清楚,就更不清楚如何配置kernel,選擇指定的虛擬環境了。

下面,我們先來看看notebook的結構

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

圖片來自官網

圖中左邊是用戶寫的代碼,傳輸到中間的Jupyter server, server本身不能執行代碼,server把代碼傳給KernelKernel才是實際執行代碼的組件,執行代碼的地方。Kernel執行完代碼,把結果返回給server,再返回到用戶的網頁。

從圖中可以看出Kernel不僅可以是python.exe,也可以是其他語言的解譯器,如Julia, R等,更多kernel可以看支持的kernel列表.

通過上述示意圖我們就知道了,在pytorch開發中,kernel其實就是某一個python解譯器——python.exe,我們需要為當前的notebook配置相應的kernel,來進入相應的虛擬環境,這樣才能運行代碼。

notebook 安裝

理清概念,下面進行notebook安裝,目標是正確調用pytorch_1.10_gpu這個虛擬環境來執行notebook上的代碼。

安裝過程分三步:

  1. 進入虛擬環境:conda activate pytorch_1.10_gpu
  2. 安裝ipykernel工具包(安裝jupyter: pip install jupyter
  3. 添加kernelnotebook python -m ipykernel install --user --name pytorch_1.10_gpu

(意思是,將python這個kernel添加到jupyterkernel中,由於當前已經在虛擬環境中,所以第一個python表示的含義是:D:\Anaconda_data\envs\pytorch_1.10_gpu\python.exe;而pytorch_1.10_gpukernel的別名,用於區分不同的kernel,這裡建議與虛擬環境名稱保持一致就好)

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

啟動

在命令列中執行jupyter notebook就可以打開web應用了,網址為:http://localhost:8888; 這裡默認埠為8888,如果再次啟動一個jupyter notebook,可以看到埠號變為了8889,即它是另外一個web服務。

進入之後,我們可以看到有一個根目錄,我們需要找到我們的notebook檔進行打開,這裡有一個小技巧,就是進入到指定資料夾後,再運行notebook,這樣notebook的路徑就進入了想要的資料夾。

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

配置kernel

我們進入 chapter-1/02-notebook-demo.ipynb,點擊run,可能會出現以下錯誤

---------------------------------------------------------------------------

ModuleNotFoundError                       Traceback (most recent call last)

<ipython-input-1-4e3917ed4a01> in <module>

      7 """

      8

----> 9 import torch

     10

     11 print("Hello World, Hello PyTorch {}".format(torch.__version__))

 

ModuleNotFoundError: No module named 'torch'

Copy

告訴我們找不到torch這個包,這很明顯,使用的kernel不是我們的D:\Anaconda_data\envs\pytorch_1.10_gpu\python.exe

下面我們來設置一下,方法很簡單:

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

重新運行,將看到以下資訊,表明notebook的環境就配置好了。

Hello World, Hello PyTorch 1.10.1+cu102

 

CUDA is available:True, version is 10.2

 

device_name: NVIDIA GeForce GTX 1660 Ti with Max-Q Design

Copy

實用外掛程式——jupyter_contrib_nbextensions

原生的notebook還是缺點意思,這裡推薦大家安裝jupyter_contrib_nbextensions外掛程式,jupyter_contrib_nbextensions提供了非常豐富的功能,例如代碼折疊、分段折疊、代碼自動補全、字體大小、行號顯示、目錄索引等等,詳見下圖

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

外掛程式安裝十分簡單,打開命令窗,進入虛擬環境,分別依次執行 :

pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user

然後重啟notebook,就可以看到巡覽列裡有Nbextensions,大家可以根據自己的喜好進行調整,更多內容請查看Github

Notebook 快速上手

notebook所使用的檔案格式為.ipynbjupyter會將.ipynb轉為json進行保存,這樣便於版本記錄以及分享。

例如下圖是用sublime打開的 02-notebook-demo.ipynb

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

下面,我們來研究notebook介面和常用的操作。

介面中需要認識的幾個模組分別是:功能表列、工具列、儲存格(cell

功能表列:用得最多的是Kernel,用於中斷程式、重啟解譯器環境、切換解譯器等;其它按鍵顧名思義。

工具列:一些功能的按鈕,高手都是用快速鍵的。

儲存格:這就是承載資訊的地方,cell可分為code cells, markdown cells, raw cells。用得最多的是code cellsmarkdown cells

右上角有一個小圓圈,用於觀察當前kernel運行狀態,如果是實心的,表明kernel正在運行某個cell,被運行的cell以及等待運行的cell的左邊會有一個*

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

notebook 的兩種模式

Notebook中的單元,有兩種模式:命令模式(Command Mode)與編輯模式(Edit Mode),在不同模式下我們可以進行不同的操作。

命令模式:cell的邊框為藍色,此時可對cell進行操作。在編輯模式下,按esc鍵進入命令模式。

編輯模式:cell的邊框為綠色,此時可在儲存格內編輯代碼或文檔。在命令模式下,按enterreturn鍵進入編輯模式。

常用快速鍵

在命令模式下,按下“h”鍵,就會彈出快速鍵的介紹,但是太多了,不方便初學者使用,這裡總結一些常用的,實用的快速鍵供大家參考。

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

命令模式:

插入儲存格: A 鍵上方插入,B 鍵在下方插入

合併儲存格:選中多個儲存格,Shift + M

顯示行號:L

刪除儲存格:連續按兩次D

剪切儲存格:X 通常我用X代替刪除,畢竟只用按一個鍵,哈哈。

複製粘貼儲存格: C/V

撤銷刪除的儲存格:要撤銷已刪除的儲存格,請按 Z

編輯模式:

運行儲存格Ctrl + Enter

運行並創建新儲存格Alt + Enter

分割儲存格:游標放到想要分割的地方,Ctrl + Shift + -

函數詳情:Shift+Tab (注意,要把模組導入才會提示函數詳情!)

請大家將以上快速鍵都試用一遍,這些是高頻快速鍵,下面給大家列舉所有快速鍵,請收藏。

 

 

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之

 

 

<<AI人工智慧 PyTorch自學>> 1.6 環境配置之面再介紹兩個神奇操作,分別是在儲存格中執行shell命令以及magic操作。

請自行嘗試!+shell命令進行體會。

magic commands

Magic關鍵字是 IPython 的高級用法,如%matplotlibmatplolib設置為互動式

%%%分別代表 Magic命令  儲存格Magic命令

演示一個魔法命令 %%timeit

%%timeit

a = []

for i in range(10):

    a.append(i)

Copy

858 ns ± 50.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

Copy

表示將程式碼片段運行了100萬次,並統計執行時間。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 HCHUNGW 的頭像
    HCHUNGW

    HCHUNGW的部落格

    HCHUNGW 發表在 痞客邦 留言(0) 人氣()