CoLab

Table of Contents

Hits

Google Colaboratory 是一個基於雲端的Python開發環境,由Google提供開發者虛擬機,提供免費的GPU和TPU資源,並支援Python程式及機器學習TensorFlow演算法。Google Colab具有強大的協作功能,可以與他人共享和編輯程式碼,支援Jupyter筆記本,並提供預裝的Python套件,方便進行數據分析、機器學習等任務。

2024-01-06_14-35-48_2024-01-06_14-35-11.png

Figure 1: Google Colaboratory

1. Colab編寫環境

當我們透過瀏覽器連上、登入Colab,Google就幫我們建立了一個虛擬機,我們在上面寫的程式就在Colab的虛擬機上執行。

1.1. Colab的預設目錄

Colab的虛擬機有CPU、記憶體、磁碟空間等資源(如圖2)

2024-01-13_13-44-45_2024-01-13_13-44-09.png

Figure 2: Colab虛擬機的系統資源

預設的磁碟所在目錄位置為/content,裡面有一個資料夾sample_data

1: !pwd
2: !ls
/content
sample_data

1.2. 上傳檔案到Colab中

在Colab中執行AI相關的運算有時需要將你自己的檔案上傳到Colab的雲端磁碟中,這些檔案也許是你想要辨識的圖片、也許是你想進行預測結果的實驗數據。有兩種模式可以將你的檔案儲存到磁碟中:

  1. 有時效的Colab雲端硬碟

    有兩種方式:網頁模式與程式模式,要留意的是這些上傳的檔案在Colab執行階段被刪除後就會消失,就算我們沒有手動刪除現行的Colab運算,這個運算在12小時後也會被自動刪除。

    • 網頁模式

      第一種方式是直接點選點圖3中的上傳圖案,選取本地端的檔案後上傳至雲端硬碟中

      2024-01-13_13-54-39_2024-01-13_13-54-06.png

      Figure 3: 將檔案上傳至Colab雲端硬碟

    • 程式模式

      第二種方式是引入google.colab,使用files.upload()函式來上傳檔案

      1: from google.colab import files
      2: uploaded = files.upload()
      

      2024-01-13_14-02-39_2024-01-13_14-00-58.png

      Figure 4: 使用程式上傳本地端檔案

  2. 從Colab連線到自己的Google drive

    前述模式只能儲存臨時的檔案,這些檔案在你重新啟動colab後也會被一併刪除。第二種方式是 允許 Colab直接存取我們的Google Drive (這個動作在作業系統的世界裡叫做mount),有兩種方式可以完成此項設定:網頁拖拽與程式執行。

    • 網頁操作
      1. 點選圖5中的“掛載雲端硬碟”圖示
      2. 在對話框中點選“連網至Google雲端硬碟”

      完成後,在現行目錄下會多出一個drive的資料夾。

      2024-01-13_14-25-33_2024-01-13_14-15-28 (3).gif
      drive資料夾裡還有幾個資料夾,其中MyDrive就是你自己的雲端硬碟,如果有其他人曾經透過Google Drive分享檔案給你,那你還會看到SharedDrives資料夾。

      2024-01-13_14-33-59_2024-01-13_14-29-14.png

      Figure 5: Colab連結Google Drive

    • 程式執行

      第二種連結Google Drive的方式是執行以下程式

      1: from google.colab import drive
      2: drive.mount('/content/drive')
      

      因為是程式執行,其實你也可以自行為這個被mount的資料夾命名,例如叫做GDrive:

      1: from google.colab import drive
      2: drive.mount('/content/gDrive')
      

1.3. Colab的notebook存在哪?

我們在Colab所輸入的指令、程式執行的結果都儲存在一個副檔名為ipynb的筆記本中,這個檔案的預設檔名為UntitledX.ipynb(如圖6),預設的儲存資料夾是在Google Drive裡的Colab Notebooks資料夾裡(如圖7)。請養成習慣把這些UntitledXX的檔名修改成符合筆記本內容的名稱,否則以後你會在Colab Notebooks裡看到Untitled0.ipynb、Untitled1.ipynb、Untitled2.ipynb、Untitled3.ipynb…..Untitled30.ipynb這樣的畫面Q八Q。

2024-01-13_15-40-00_2024-01-13_15-39-25.png

Figure 6: Colab筆記本

2024-01-13_15-58-00_2024-01-13_15-48-32.png

Figure 7: Colab筆記本的儲存位置

2. Text Cell和Code Cell

在 Google Colaboratory 中, 儲存格(Cells) 是編寫與執行筆記本的基本單元。主要分為兩種類型:Text Cell 和 Code Cell。

2.1. Text Cell

Text Cell 用於輸入說明文字、標題、公式或其他非程式碼的內容,以便為程式碼提供註解或結構化說明。支持 Markdown 語法,可以使用簡單的標記進行格式化。
用途

  • 撰寫筆記與說明。
  • 添加標題和子標題。
  • 插入數學公式(使用 LaTeX 語法)。
  • 美化筆記結構,讓內容更易於閱讀。
  1. 常見 Markdown 語法
    • 標題: 使用 # 進行分級:
      # 標題 1
      ## 標題 2
      ### 標題 3
      
    • 加粗與斜體:
      1: 加粗:**文字**
      2: 斜體:*文字*
      
    • 清單:
      • 無序清單:- 或 * 開頭。
        1: - 第一項
        2: - 第二項
        
      • 有序清單:數字加點號。
        1: 1. 第一項
        2: 2. 第二項
        
    • 數學公式: 使用 $…$ 或 \($$...$$\) 包裹 LaTeX 公式:
      1: 行內公式:$a^2 + b^2 = c^2$
      2: 區塊公式:$$E = mc^2$$
      

      結果:
      行內公式:\(a^2 + b^2 = c^2\)
      區塊公式:\[E = mc^2\]

2.2. Code Cell

Code Cell 用於編寫 Python 程式碼並執行。Colab 提供了即時執行環境,允許你在瀏覽器中直接運行程式碼。

  1. 用途
    • 實際編寫與執行程式碼。
    • 測試數據分析、機器學習模型。
    • 可即時顯示執行結果(如圖表或輸出文字)。
  2. 功能與特性
    • 輸入程式碼: 在儲存格中輸入 Python 程式碼,按下 Shift + Enter 即可執行。

      1: print("Hello World.")
      
      Hello World.
      
    • 輸出結果:
      • 執行後,結果直接顯示在 Code Cell 下方。
      • 支持文字、數據表、圖形等多種格式的輸出。
    • 導入套件與使用命令: Colab 支持直接執行 shell 指令(以 ! 開頭),例如:

      1: !ls  # 查看目錄內容
      

3. 有用和沒用的功能

3.1. AI輔助

Google Colaboratory 提供了許多內建功能,有些功能能顯著提高效率,而有些則可能讓用戶感到繁瑣或無聊。在這裡,我們介紹兩種功能:AI輔助功能 和 動畫特效,幫助使用者了解其實用性。

  1. AI 輔助功能

    Colab 的 AI 輔助功能致力於幫助使用者快速生成程式碼、修正錯誤,或者根據上下文提供建議。
    功能特點

    • 智慧提示:輸入程式碼時,自動提供函數補全或參數建議。
    • 錯誤修正:在程式執行錯誤時,會根據報錯提供修正建議,並推薦相關的資源或文件。
    • 程式生成:利用 Colab 提供的 AI 工具,快速生成範例程式碼,適合初學者或快速測試想法。
  2. 設定

    點選右上角設定、開啟AI輔助功能

    2024-12-11_19-51-03_screenshot.png

    Figure 8: 設定ColabAI輔助功能

  3. 教學範例
    • 使用智慧提示與補全
      1: # 輸入 plt.
      2: # Colab 自動提示 matplotlib.pyplot 的函數選項
      3: import matplotlib.pyplot as plt
      
    • 自動生成程式碼

      在 Colab 中輸入:

      1: #如何計算陣列的平均值?
      

      AI 輔助會生成程式碼範例:

      1: #如何計算陣列的平均值?
      2: import numpy as np
      3: arr = [1, 2, 3, 4, 5]
      4: mean = np.mean(arr)
      5: print(f"陣列的平均值為:{mean}")
      

3.2. 無聊動畫與打字特效

Colab 內建一些無聊的特效,例如「動畫字體效果」或「輸出時的打字效果」,雖然有趣,但在大多數情況下並不實用。

  1. 設定

    點選右上角設定、開啟打字效果(效能等級)或其他廢廢的特效。

    2024-12-11_19-55-18_screenshot.png

    Figure 9: 設定Colab動畫與打字特效

4. GPU執行階段

4.1. 如何確定有在跑 GPU:

1: import tensorflow as tf
2: gpu_name = tf.test.gpu_device_name()
3: if gpu_name != '/device:GPU:0':
4:   raise SystemError('無 GPU')
5: print(f'有 GPU: {gpu_name}')

4.2. 在CoLab中使用GPU

  1. 執行階段/變更執行階段類型
  2. 硬體加速器

2024-01-13_11-07-01_2024-01-13_11-04-14.png

Figure 10: 標題

2024-01-13_11-09-56_2024-01-13_11-04-26.png

Figure 11: 標題

4.3. 查看使用的GPU類型

  1. Colab
    1: !nvidia-smi -L
    

    2024-01-13_11-11-03_2024-01-13_11-10-41.png

    Figure 12: 標題

  2. Linux
    1: nvidia-smi -L
    

    2024-01-13_11-15-21_2024-01-13_11-12-47.png

    Figure 13: 標題

5. 進階操作

5.1. Command Line

Colab 其中一個厲害的地方就是,你除了可以執行 Python、也能執行 Command Line,只要在 Command Line 指令加上驚嘆號就能做到,像是 !mkdir。你可以在 Colab 裡 Python 程式碼寫到一半的時候,突然加進幾行 Command Line 來操作檔案,完成後,再讓 Python 程式碼接著寫下去,Python 與 Command Line 可以無痛切換。更厲害的是,Colab 甚至讓你在同一段程式碼裡 Python 和 Command Line 能夠 混合使用,例如,可以把 !ls 輸出的內容存進 Python 變數裡1

此外,Colab 還有「魔法」指令(Magic Command),這個指令的寫法是在最前面加上 % 或 %% 符號,例如 %timeit,Magic 為 Colab 補充一些方便的功能。筆者最常用的功能有二:

  • %%timeit:算出你的程式碼區塊花多少時間執行,分析你的演算法效率時很好用
  • %run my_script.py:執行你的另一個 Python 程式,如果你的程式還需要呼叫另一個程式,就需要使用這個 Magic 指令

5.2. Google 提供的 VM

1: !pwd
2: !cat /proc/meminfo
3: !cat  /proc/cpuinfo
  • use colab to mount google drive
  • 同時最多 5 個 session
  • 每個 session 最多 24hr
  • 查看 colab 已安裝了哪些 package

    1:   !pip list
    

Footnotes:

Author: Yung-Chin Yen

Created: 2024-12-11 Wed 22:31