iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

零基礎成為 AI 解夢大師秘笈系列 第 17

【零基礎成為 AI 解夢大師秘笈】Day17 - Google Colab

  • 分享至 

  • xImage
  •  

斜槓學習 – 零基礎成為 AI 解夢大師秘笈

前言

系列文章簡介

大家好,我們是 AI . FREE Team - 人工智慧自由團隊,這一次的鐵人賽,自由團隊將從0到1 手把手教各位讀者學會 (1)Python基礎語法 (2)Python Web 網頁開發框架 – Django (3)Python網頁爬蟲 – 周易解夢網 (4)Tensorflow AI語言模型基礎與訓練 – LSTM (5)實際部屬AI解夢模型到Web框架上。

為什麼技術要從零開始寫起

自由團隊的成立宗旨為開發AI/新科技的學習資源,提供各領域的學習者能夠跨域學習資料科學,並透過自主學習發展協槓職涯,結合智能應用到各式領域,無論是文、法、商、管、醫領域的朋友,都可以自由的學習AI技術。

資源

AI . FREE Team 讀者專屬福利 → Python Basics 免費學習資源

今日目標

1 簡介 Google Colab Notebook

Google Colab Notebook 是一個很像是 Jupyter Notebook 的工具,不過它是 Run 在雲端環境上面的,相信現在的每個人都有一個 Google Account,每個 Account 都會有對應的雲端硬碟(Google Drive),我們能夠在 Google Drive 上面建立並開啟 Google Colab Notebook 的,開啟 Notebook 之後我們就可以將 python 程式碼以及對應的筆記內容寫在上面了,會像是下圖這樣:
https://ithelp.ithome.com.tw/upload/images/20201002/20130712TM9aQpqAuY.png

2 開啟 Google Colab

今日目標有提到,今天的所有內容大家都可以直接使用這個 Google Colab Notebook 連結,這是我們幫大家寫好做為示範使用的 Notebook。不過如果要自己真的建立一個 Google Colab Notebook,那要如何建立呢?

(1) 登入 Google Account 並開啟 Google Drive

(2) 在空白區域點選滑鼠右鍵,將會跳出如下圖選項

右鍵 > More > Google Colaboratory

https://ithelp.ithome.com.tw/upload/images/20201002/20130712hANlNondUp.png

(3) 進到 Notebook 介面當中,開始編輯。

https://ithelp.ithome.com.tw/upload/images/20201002/20130712BjKr3F9FTH.png
在這邊大家如果點擊左方的 folder icon 會看到一開始 Google 就送給我們的 sample_data,我們可以在不連動到自己 Google Drive 檔案的情況下就可以有一些資料可以操作,不過我們待會會需要 clone 之前提過的 Django Chatterbot 專案,所以勢必要連結到 Google Account 的,我們繼續往下走!

Note:以下內容會從頭一個cell一個cell和大家一起走過,在上方提到的 Google Colab Notebook 連結是完整版,大家可以在開發過程中參考喔。

3 將 Google Drive 連結到 Google Colab Notebook

  • 首先點擊右上角 Connect > Connect to hosted runtime 藉以使用 Google 的機器
  • 然後將下方的程式碼寫入 Cell
from google.colab import drive
drive.mount("/content/drive")
  • 在這邊選擇要連結的 Google Account
  • 然後將一長串類似於 token 的亂碼複製並貼在 textbot 內
  • 完成後將會發現左方資料夾內容和 Google Drive 的內容同步了(如果沒有的話,點選上方 Refresh Folder Icon)

4 切換路徑並下載 Django Chatterbot 專案

在 Google Colab Notebook 當中同樣也具備 Command Line/ Terminal 的功能,我們可以在上面利用 shell command 建立資料夾、切換路徑等等,所以在分別執行以下 cells 之後,我們將可以建立資料夾,然後將專案放入目標位置。

Note: 若要在 Google Colab 當中執行 shell command,需要在前方加入 驚嘆號(!)或是百分比符號(%),這樣 Notebook 才知道這個 cell 不是 python code。

  • %cd 是用來切換路徑的,下方的教學只有這個 command 會用到 %;另外 !cd 不會切換路徑,只能用來判斷該路徑是否存在,本教學不會使用到此 command。
  • 其他常見的 shell command 有: ! python test.py,! mkdir New_Folder,! ls, ...

建立資料夾

%cd "./drive/My Drive"
!mkdir django_chatterbot # 只有第一次執行此 cell 會需要此行,第二次之後就可以把這一行註解掉了
%cd django_chatterbot

首先,我們先將自己的路徑切入 My Drive/ 目錄底下,然後建立一個 django_chatterbot/ 目錄,然後再切入。這個時候因為我們已經連動了 Google Drive 和 Google Colab Notebook,所以大家可以在 Google Drive/My Drive(我的雲端硬碟)當中看到有多一個名為django_chatterbot的資料夾。
https://ithelp.ithome.com.tw/upload/images/20201002/20130712jwO5eb1qno.png

clone 專案

# 只有第一次執行此 cell 會需要此行,第二次之後就可以把這一行註解掉了
!git clone https://github.com/gunthercox/ChatterBot.git

切入路徑至我們昨天操作的 app 裡面 (i.e. example_app)

%cd "./ChatterBot/examples/django_app"
!ls

這邊利用 !ls 會列出目前路徑底下所有的檔案和目錄。在這裡會看到一個 requirements.txt 的檔案,這個檔案是用來告訴新的開發者們應該要 install 什麼特定版本的特定套件,我們下面就要利用它來安裝套件。

調整 requirements.txt 內容

原本的 requirements.txt 其第二行(關於 chatterbot 套件的版本描述)是被註解掉的,不過我們會等等會需要將 chatterbot 這個套件一起安奘,所以這邊要記得把註解拿掉,變成以下這樣。

django>=2.2,<2.3
chatterbot>=0.8,<1.1

然後記得存檔: ctrl + s

Note: 開啟 requirements.txt 需要依序點選左側的目錄,其詳細的路徑是: drive/ My Drive/ django_chatterbot/ ChatterBot/ examples/ django_app/ requirements.txt ,如同下圖顯示
https://ithelp.ithome.com.tw/upload/images/20201002/20130712BEyl0meyoc.png

安裝套件

!pip3 install -r requirements.txt

調整 settings.py

之前有發現 settings.py 裡面的 MIDDLEWARE_CLASSES 需要置換成 MIDDLEWARE,然後要將其中的一行設定註解掉。

MIDDLEWARE  = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 記得註解
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

記得做 Django Migrate,待會兒 run server 才會順利

! python manage.py migrate

我們在這邊是已經和 manage.py 存在於同一個路徑底下了,所以可以直接這樣用。

5 Run Server

! python manage.py runserver

在這邊可以看到 cell 成功的執行了,但是它跳出來的連結(i.e. http://127.0.0.1:8000/ )並不是我們可以 access 的到的連結,因為我們是遠端使用 Google的機器,所以真的要透過連結看到服務,也得從那台機器才能做到,所以我們會需要想辦法將這個服務 expose 在 Public IP 上!

6 讓服務 Run 在 Public IP 上

下面的程式碼有參考了 Stack Overflow 上面的這篇文章(Is there a general way to run Web Applications on Google Colab?),大家有興趣可以點進去了解喔!

### 安裝 Ngrok
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip

### Run ngrok to tunnel Django app port 8050 to the outside world. 
### This command runs in the background.
get_ipython().system_raw('./ngrok http 8050 &')

### Get the public URL where you can access the Django app. Copy this URL.
! curl -s http://localhost:4040/api/tunnels | python3 -c \
    "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"

# 在這邊,將會得到類似於 https://c1fed6636b67.ngrok.io 這樣子的網址,這就是我們要用的 Public IP
# 請大家將其中的 c1fed6636b67.ngrok.io 加入到 ChatterBot/examples/django_app/example_app/settings.py 內的 ALLOWED_HOSTS 裡面。
# 接著就可以進到 https://c1fed6636b67.ngrok.io 使用 chatbot 服務了!

# 利用 manage.py 將服務 run 在 port = 8050,因為上面的方法就是將 8050這個 port expose 在網路世界當中。
! python manage.py runserver 8050
  • 我們在這邊是使用到昨天也有用到 Ngrok: 先是透過 !wget 下載壓縮檔之後,再利用 !unzip 解壓縮。
  • 接著使用 ngrok http 8050 將 8050 port 打開,我們將會把 service run 在 8050 port (並非之前預設的 8000 port)
  • 使用 ! curl ... 取得對應的 Public IP。
  • 取得 url 之後要到 settings.py 調整 ALLOWED_HOSTS 的設定,見上方說明。
  • 最後利用 python manage.py runserver 8050 讓服務 run 在 8050 port。

7 使用服務

大家點進被 assign 到的連結之後,都有看到 Django Chatterbot 好好的運作了嗎? 有的話,就可以開始和它聊天囉!

8 邁向 AI 解夢大師 - 第十七天

我們在今天在雲端上面跑 Django Chatterbot APP,從第一天開始,到今天的內容,都算是在為未來的解夢服務鋪路,從明天開始進入 AI 處理的範疇,我們將會進入資料面的處理,同時會介紹爬蟲的應用。

9 參考連結

想更深入認識 AI . FREE Team?

自由團隊 官方網站:https://aifreeblog.herokuapp.com/
自由團隊 Github:https://github.com/AI-FREE-Team/
自由團隊 粉絲專頁:https://www.facebook.com/AI.Free.Team/
自由團隊 IG:https://www.instagram.com/aifreeteam/
自由團隊 Youtube:https://www.youtube.com/channel/UCjw6Kuw3kwM_il39NTBJVTg/

文章同步發布於:自由團隊部落格
(想看更多文章?學習更多AI知識?敬請鎖定自由團隊的頻道!)


上一篇
【零基礎成為 AI 解夢大師秘笈】Day16 - Ngrok
下一篇
【零基礎成為 AI 解夢大師秘笈】Day18 - 周易解夢之網路爬蟲基礎篇
系列文
零基礎成為 AI 解夢大師秘笈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言