---
# System prepended metadata

title: 'Google Colab : 輕鬆實作和與他人協作 python 程式'
tags: [tools]

---

###### tags: `tools` 

# Google Colab : 輕鬆實作和與他人協作 python 程式

###### 圖片來源：[Google Colaboratory SVG Logo](https://commons.wikimedia.org/wiki/File:Google_Colaboratory_SVG_Logo.svg)

![image](https://hackmd.io/_uploads/r1J7LLY8T.png)


<p class="text-center">
＊＊＊
</p>

> 本文參考Google 介紹文件 [歡迎使用 Colaboratory](https://colab.research.google.com/?hl=zh-tw#)。

<p class="text-center">
＊＊＊
</p>

## 關於 Google Colab

Google Colab 全名為 Colaboratory，是一個基於雲端的網頁服務，讓使用者可以使用 Python 語言進行程式編輯，並且支援多人協作功能，以及免費的 GPU/TPU 運算資源，非常適合學生、教師和研究人員使用。

## 基本使用方式


### 安裝


1. 先登入 Google 的帳號，如果還沒有安裝過 Colab 的話，可以在 Google Workspace 的商店中搜尋安裝。
   
   ![Untitled](https://hackmd.io/_uploads/SJq8uUFL6.png)

2. 進入雲端硬碟後，點選「新增」，便會新開啟 Colab 的頁面。Google Drive 會自動在雲端空間中建立一個 `Colab Notebooks` 資料夾，新建立的程式預設會以 `ipynb` 檔（Python Notebook，筆記本）的形式放置在這個資料夾中。
 
    ![螢幕擷取畫面 2023-12-14 141605](https://hackmd.io/_uploads/SJ1RcItUa.png)

    ![螢幕擷取畫面 2023-12-14 142231](https://hackmd.io/_uploads/HJjIcLFIT.png)




### 主要功能

在Colab 上基本上都是使用 Colab 筆記本（`ipynb` 檔）來運作，它是一個動態互動網頁，使用者可以在筆記本中建立多個儲存格（cell），並利用儲存格編寫程式或文字內容。

- **程式碼儲存格**

    Colab 的程式碼儲存格介面類似於 Jupyter Notebook，使用者可以在儲存格中編寫 Python 程式碼，然後點擊左邊的箭頭圖示運行這段程式碼片段（或者使用快捷鍵 `cmd/ctrl` + `Enter`），執行程式碼後的結果會顯示儲存格下面。

    在 Google Colab 中，不同的程式碼儲存格屬於同一個筆記本檔案，雖然每個儲存格可以獨立執行，但它們其實共享相同的執行環境和記憶體空間，因此一個儲存格中定義的變數、函數或導入的函式庫可以在同一筆記本的其他儲存格中被使用。
    
    ![螢幕擷取畫面 2023-12-14 223341](https://hackmd.io/_uploads/HkxxFLY8T.png)


> :bulb: **安裝套件與導入套件**
>
> 基於 Python 是由上往下執行的運行邏輯，如果某些函式是源自於導入的套件、函式庫，而他們則分屬不同的儲存格，則必須先執行導入函式庫的儲存格才能避免執行函式的儲存格出錯。（可以從上方選單中選擇「執行階段」→「全部執行」來一次執行全部的程式碼片段。）
>
> 程式碼儲存格也可以使用 `pip` 工具，輸入 `!pip + <command>` 即可使用（注意要在前面加一個驚嘆號 `!`）。常用的指令包含：
> - `!pip list` 可以列出當前這個環境（也就是這個 `ipynb` 檔）已經安裝的套件，常見的套件如 `request`、`numpy`、`Flask`、`opencv-python`、`tensorflow` 等。
>
> - `!pip <package>` 可以安裝指定套件，如果該筆記本會需要使用某個沒有預先安裝的套件，則建議將安裝套件保留在文件開頭，則未來再次執行該筆記本的程式時才會在執行時先安裝。

- **文字儲存格**

    Colab 筆記本也可以建立文字儲存格，並且支援 markdown 和 Latex 語法，在雙擊儲存格後可以建立具有格式的文字內容或數學式，編輯時文件會將畫面分成左右兩半，左邊為當前編輯內容，右邊為 markdown 語法預覽畫面。
    
    ![螢幕擷取畫面 2023-12-14 173922](https://hackmd.io/_uploads/BkFftItLa.png)

- **目錄**
    
    從左側的工具欄選擇三條橫線圖示的「目錄」，可以快速查看文字儲存格的內容。
    
- **變數**
    
    從左側的工具欄選擇 (x) 圖示的「變數」，可以檢視目前程式碼片段已經使用的變數名稱與其被賦予的值。
    
- **程式碼片段**
    
    從左側的下方工具欄選擇 <> 圖示的「程式碼片段」，可以搜尋他人公開的程式碼片段功能，例如可以找到「importing a library that is not in Colaboratory」。


### 使用外部檔案

如果需要使用外部檔案，如檔案中需要使用的類別或函式定義在另一個 Python 檔案中，可以將該檔案上傳到 Colab，然後導入使用。

常用的做法有三種：

- **直接上傳檔案或資料夾（單次使用）**
    
    導入自訂模組到 Colab 最簡單的方法，是直接將檔案或資料夾從本機電腦上傳到 colab 上。
    
    1. 從左側工具欄選擇資料夾圖示的「檔案（Files）」，接著選擇「上傳至工作階段儲存空間（Upload to session storage）」。如果是上傳 python 檔，就可以直接在程式內使用 `import` 將需要的類別或函式

    2. 如果上傳檔案較大，也可以先建立該檔案或資料夾的 `zip` 檔，再將其作為文件上傳到 colab 以節省網路流量。使用指令 `!unzip file_name.zip` 將檔案解壓縮便能在程式中使用（不過在儲存空間中並不會顯示，因此若想要確認 zip 檔正確被解壓縮，可以再打一行 `%ls` 列出當前工作目錄中的文件和目錄。這個指令類似於 Linux 系統中的 `ls` 命令）。
    ![螢幕擷取畫面 2023-12-14 215352](https://hackmd.io/_uploads/H1R7KUtLT.png)
    

- **從 github 將檔案/資料夾複製為 github 儲存庫（單次使用）**

    
    如果 Python 檔案儲存在 GitHub ，則可以使用 `!git clone <https://github.com/your-repository.git>` 載入資料 。
    
- **從 google drive 取得檔案/資料夾（可重複使用）**
    
    如果 Python 檔案儲存在 google drive ，則可以使用設定路徑載入資料到程式中 。
    
    1. 使用以下程式碼片段將 colab 筆記本連接到 google drive。
        
        ```python
        from google.colab import drive
        drive.mount('/content/drive')
        ```
    2. 執行這段程式碼後，系統會提示進行授權。同意授權後，Colab 會顯示將 google drive 掛載（Mount）到 `/content/drive`。此時 google drive 的內容會出現在 `/content/drive/MyDrive/` 路徑中。

    3. 接著使用 `%cd /content/drive/MyDrive/檔案目錄`，搭配 `%ls` 就能看到資料出現在列表中。
        使用時就可以和一般編寫 python 程式碼一樣，使用 open() 等函式來讀取檔案。 
        
        ![螢幕擷取畫面 2023-12-14 223341](https://hackmd.io/_uploads/HkxxFLY8T.png)


> :bulb: **從 Kaggle 匯入 Google Colab**
>
> 可以參考 Geeksforgeeks 的這篇文章: [How to Import Kaggle Datasets Directly into Google Colab](https://www.geeksforgeeks.org/how-to-import-kaggle-datasets-directly-into-google-colab/)

### 使用 GPU/TPU 來運算

如果要處理深度學習模型訓練、大量數據處理和影像處理等任務，可能會需要使用 GPU（Graphic Processing Unit，圖形處理器）或 TPU（Tensor Processing Unit，張量處理器）來加速運算速度。Google Colab 提供一定等級的 GPU 和 TPU 處理器給一般使用者免費使用，也可以付費升級取得更多的運算資源。

從上方選單選擇「編輯」→「筆記本設置」，或是「執行階段（Runtime）」→「變更執行階段類型（Change runtime type）」，便能修改硬體加速器的種類。

![螢幕擷取畫面 2023-12-14 231113](https://hackmd.io/_uploads/BJ_pKItIa.png)

![螢幕擷取畫面 2023-12-14 161917](https://hackmd.io/_uploads/HyapYLKIT.png)


想要確認 GPU 是否連接，可以使用以下程式碼片段來查看。如果顯示 `'/device:GPU:0'` 代表成功連接，若顯示 `''` 代表沒有成功連接。

```python
import tensorflow as tf
tf.test.gpu_device_name()
```

想要確認 TPU 是否連接，可以使用以下程式碼片段來查看。如果顯示 `Connected to TPU` 代表成功連接，若顯示 `Not connected to TPU` 代表沒有成功連接。

```python
import os
 
if 'COLAB_TPU_ADDR' not in os.environ:
  print('Not connected to TPU')
else:
  print("Connected to TPU")
```

## 使用 Colab 協作程式

### 使用 Google 帳號共享檔案與協作

Google Colab 和其他 Google 服務（如表單、文件等）一樣可以儲存在雲端硬碟中，透過設定來給予他人檢視、備註和編輯的權限。

- **即時協作**
    
    Google Colab 也支援即時協作，多名使用者可以同時在同一個筆記本上進行修改，同時也看得到別人所做的更改，每個儲存格旁邊會顯示當前正在編輯它的使用者的標記。
    
- **版本紀錄**
    
    Google Colab 會自動儲存改變，從上方的選單中點選「檔案」→「修訂版本紀錄」，可以查看筆記本不同版本的修改差異。
    ![螢幕擷取畫面 2023-12-15 103939](https://hackmd.io/_uploads/S1jYqUtUa.png)


### 連結並和 GitHub 儲存庫同步

從上方選單中選擇「檔案」→「在 GitHub 中儲存副本」，登入 GitHub 帳號並授權之後，會顯示帳號現有的公開儲存庫，如果想要建立一個新的儲存庫，則需要先到 GitHub 上建立好後再回來儲存副本。儲存後會自動開啟 GitHub 頁面的副本，如果有勾選「加入 Colab 連結」，還可以直接從副本連結回到 Colab 。

![螢幕擷取畫面 2023-12-14 182954](https://hackmd.io/_uploads/rJH_qIKLT.png)

![螢幕擷取畫面 2023-12-14 183529](https://hackmd.io/_uploads/S1Tu9UYUp.png)



<p class="text-center">
＊＊＊
</p>



{%hackmd S5aKa1hTT5aFu7k37bGZMg %}