如何在 VPS 上部署深度學習環境

閱讀時間約 12 分鐘

Sponsor

非常感謝 Cloud Native Taiwan User Group 贊助 Infra Labs,讓我能夠利用 VPS 執行 inference,並且完成這篇文章。

Cloud Native Taiwan User Group 希望整合台灣雲端相關社群如 OpenStack、Kubernetes、Ceph、SDN 等,並利用 Meetup 定期在各台灣地區舉辦技術與推廣分享活動。目的是藉此群策群力來使該社團快速成長,以對台灣在雲端開源平台的貢獻,另外我們更希望該社群持有 Cloud Native 概念,並將此推廣至台灣企業、學校、政府單位等。

文章內容說明

在這篇文章中,我們會在裝有 Nvidia Tesla P4,運行 Ubuntu 20.04 的 VPS 上部署以下深度學習環境:

  • Nvidia driver: 450.80.02
  • CUDA: 11.7
  • PyTorch: 1.13.1+cu117
  • Jupyter Lab

若已有更新後版本,歡迎留言在底下分享。這篇文章會以 PyTorch 目前的要求,CUDA 11.7 為主進行安裝。

開始安裝

身為一個買不起顯卡的窮鬼,只能乖乖用實驗室的 GPU server,或是用 AWS(Amazon Web Service)GCP(Google Cloud Platform)等 cloud service 來做訓練。我以往都是使用 AWS 跑訓練和 inference,然而,很多人在 AWS 跑 deep learning 都會用 SageMaker,但我個人認為沒有到非常方便,而且價格偏高,所以都使用 EC2(Elastic Compute Cloud)的 g4dn 系列,自己架 Jupyter Lab。

AWS EC2 instance 種類。Source: GeeksforGeeks

AWS EC2 instance 種類。Source: GeeksforGeeks

然而,在 EC2 上,Nvidia 有提供已經準備好的映象檔,包含 Nvidia driver、CUDA、cuDNN 等,所以也不太需要自己準備環境,裝一下 Python、PyTorch 之類的就可以了。然而,當自己真的要部署環境時,經常被 Nvidia 的驅動搞到發瘋。(倒是也蠻奇怪的,PyTorch AMI 沒有裝好 PyTorch。)

Nvidia GPU-Optimized PyTorch AMI。Source: AWS Marketplace

Nvidia GPU-Optimized PyTorch AMI。Source: AWS Marketplace

在和 CNTUG 的郭靖前輩申請後,取得 CNTUG Infra Labs 的使用資格(以往在 CourseAPI 專案就有以開源社群身分申請),並包含 GPU 的使用資格。

CNTUG Infra Labs 是用 OpenStack 進行管理,有關 OpenStack 操作的部分內容可以參考我的偶像 Jerry Yang 部落格的相關文章。

安裝 Nvidia driver

剛開始裝的時候,我不斷嘗試用 PPA repository 和 APT 安裝,然而 PPA 和 GPG Key 一直搞不定,所以最後直接抓 .run 檔案來跑了。檔案連結是直接從 Nvidia download 抓來的,再用 wget 抓上去。

# 在開始安裝之前,先把 nouveau 停用,不然等下會一直跳 warning,最後失敗
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
sudo update-initramfs -u
# 先重開機一遍,確保 nouveau 停用
sudo reboot now

# 會出現 Please specify linux-headers location,所以我們直接先裝上去
sudo apt install linux-headers-5.4.0-91-generic
# 抓下 .run 檔,執行後重開機就可以了
wget https://us.download.nvidia.com/tesla/450.80.02/NVIDIA-Linux-x86_64-450.80.02.run
chmod +x NVIDIA-Linux-x86_64-450.80.02.run
sudo ./NVIDIA-Linux-x86_64-450.80.02.run
sudo reboot now

這邊建議安裝前可以先安裝 ubuntu-drivers-common 來看看 GPU 可以裝哪幾個版本(參考以下),也要到這個網站確定一下 CUDA 相容的版本。

# 安裝 ubuntu-drivers-common
sudo apt install ubuntu-drivers-common
# 檢視 GPU 及可用的 driver
ubuntu-drivers devices

接下來重新開機後,就可以用 nvidia-smi 確認一下有沒有安裝成功囉!

nvidia-smi 執行結果

nvidia-smi 執行結果

安裝 CUDA

如果根據安裝 driver 的步驟,應該也已經決定好要安裝哪個版本的 CUDA 了。這邊依照 PyTorch 最新版本(2022/12)要求的 CUDA 版本,安裝 11.7。其實各版本的安裝指令 Nvidia 都有放在這個網頁上,可以看著需求參考安裝。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt update
sudo apt install cuda
sudo apt install nvidia-cuda-toolkit

理論上,安裝完之後跑 nvcc -V 一定會被結果嚇到,因為版本好像不太對,所以版本建議裝完 PyTorch 再檢查,會比較準。

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

安裝 PyTorch

安裝教學的操作。Source: PyTorch 網站

安裝教學的操作。Source: PyTorch 網站

其實安裝 PyTorch 相對簡單很多,因為網站上就有提供安裝教學。只要跟著操作就可以了。

# 如果習慣打 python3 的朋友,這裡可以略過
sudo apt install python-is-python3
# 安裝 pip3
sudo apt install python3-pip
# 安裝 PyTorch
pip install torch torchvision torchaudio

安裝完成後,就可以測試一下了。

>>> import torch
>>> print(torch.version.cuda)
11.7
>>> print(torch.cuda.is_available())
True

到這邊,環境就大概完成了(我是 PyTorch 派的,Tensorflow 安裝就不寫了 XD)。剩下 Jupyter Lab 要準備了。

安裝 Jupyter Lab

在開始安裝之前,要先調整安全性群組,開一個 IPv4 TCP 在 port 8888 的 0.0.0.0/0 inbound rule,讓我們的 Jupyter Lab 可以在其他地方連接。

# pip 安裝常常會跳出 PATH 警告,這裡先調整
export PATH="/usr/local/bin:$PATH"
# 安裝 Jupyter Lab
pip install --user jupyter jupyterlab
# markupsafe 在新版本中把 soft_unicode 拿掉了,所以要安裝舊版本
pip install markupsafe==2.0.1

為了讓我們能夠遠端 access,要先調整一些設定。

# 建立設定檔
jupyter notebook --generate-config
# 設定密碼,這裡用 jupyter notebook password 的話設定會跑掉,不建議使用
jupyter server password
# 使用 nano 修改設定檔,如果要用其他 text editor 也可以
nano ~/.jupyter/jupyter_notebook_config.py

調整 ~/.jupyter/jupyter_notebook_config.py 內容,因為檔案本身是滿滿的註解,只有一行 c = get_config() ,直接在這行之後貼上以下內容就可以了。

c.NotebookApp.allow_password_change = False
c.NotebookApp.allow_root = True
c.NotebookApp.base_url = '/'
c.NotebookApp.default_url = '/lab'
c.NotebookApp.disable_check_xsrf = False
c.NotebookApp.ip = '*'
c.NotebookApp.nbserver_extensions = { 'jupyterlab' : True }
c.NotebookApp.notebook_dir = '~/' # 調整 Notebook 的路徑
c.NotebookApp.open_browser = False
c.NotebookApp.password_required = True # 要求密碼
c.NotebookApp.port = 8888 # 開放的 port

儲存後,先設定 serverextension

jupyter serverextension enable --py jupyterlab

為了讓 jupyter 在我們關閉 terminal 後持續執行,要建立 screen,如果要用 container 也可以。

screen -S jupyterlab
jupyter lab

完成之後,就可以看到 Jupyter Lab 開始執行了,可以從 public IP 連進去看看,記得 port 是在 8888(或是自己調整的其他 port)。如果要離開 screen,可以按 Ctrl+A 再按 Ctrl+D ,就可以退出了。重新進入 screen,可以執行 screen -r <ID> 。

連入後的登入畫面

連入後的登入畫面

登入後的畫面

登入後的畫面

到這邊,基本上就完成了 VPS 的深度學習環境部署。當然還有 OpenCV、scikit-learn 等沒有安裝,但因為相較之下比較好安裝,就沒有另外說明。

再次感謝 CNTUG 的 Infra Labs 贊助,也歡迎大家去多加了解他們,參與活動如 meetup 等。也感謝我的偶像 Jerry Yang 幫我看這篇文章,第一次寫技術文,歡迎大家去看看他的部落格


raw-image

本著作係採用創用 CC 姓名標示 4.0 國際 授權條款授權。

Ted Lu 呂顥天,16 歲、開源社群參與者、台灣開放教育推動團隊發起人兼資料工程師、醫學影像研究者。不是正在被神經科學揍爛,就是在被揍爛的路上。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
說到獨自的咖啡文化的國家,除了濃縮咖啡文化的義大利、有虹吸式咖啡及喫茶店的日本、與咖啡第2波及第3波浪潮息息相關的美國,還有個國家也有自成的獨特咖啡文化,在世界上也很知名,那就是澳洲。
Thumbnail
作者在書頁一開始就開宗明義說:靠著海投履歷,我就拿到在美國的第一份工作,所以一開始的我,不太相信「人脈」的神奇力量。直到失業、被資遣,在職涯的狂風暴雨中,我開始明白,「人脈」是多多益善的。
Thumbnail
本篇將會記錄如何在GCP上建立的Ubuntu虛擬機,進行Wordpress的環境準備與網站安裝。 本篇將會以架式環境與安裝 WordPress 為主,虛擬機平台的註冊與架設將不會太過著重,未來若有機會再進行記錄。 首先需要準備的軟體有 有沒有比較好或是其他區別,在這邊不做討論。
Thumbnail
在資訊泛濫,而且真確性愈來愈模糊的環境下,如何加強自己對資訊的判讀力,將會成為重要的命題……
Thumbnail
在職場上,不要覺得自己沒有足夠的權力做事。 厲害的人,無論在什麼位置,都應當發揮自己的影響力。
2018年, 由公視出資拍攝的電影電視劇 《你的孩子不是你的孩子》(以下簡稱《孩子》)播出後取得熱烈回響 其傳達的中心思想 “尊重孩子自主權”卻讓部分家長苦惱: 這樣我該怎麼教小孩? 警告!!  以下有些微據透, 請小心服用
Thumbnail
Retention Science,一家位於美國加州,成立不到五年的科技公司專門提供數據分析和顧客關係管理服務,不只顧客囊括P&G等大企業,公司去年營收更提升到新台幣1.4億元,從共同創辦人Jerry Jao 的故事中,不難得知這家公司為什麼會成功!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
說到獨自的咖啡文化的國家,除了濃縮咖啡文化的義大利、有虹吸式咖啡及喫茶店的日本、與咖啡第2波及第3波浪潮息息相關的美國,還有個國家也有自成的獨特咖啡文化,在世界上也很知名,那就是澳洲。
Thumbnail
作者在書頁一開始就開宗明義說:靠著海投履歷,我就拿到在美國的第一份工作,所以一開始的我,不太相信「人脈」的神奇力量。直到失業、被資遣,在職涯的狂風暴雨中,我開始明白,「人脈」是多多益善的。
Thumbnail
本篇將會記錄如何在GCP上建立的Ubuntu虛擬機,進行Wordpress的環境準備與網站安裝。 本篇將會以架式環境與安裝 WordPress 為主,虛擬機平台的註冊與架設將不會太過著重,未來若有機會再進行記錄。 首先需要準備的軟體有 有沒有比較好或是其他區別,在這邊不做討論。
Thumbnail
在資訊泛濫,而且真確性愈來愈模糊的環境下,如何加強自己對資訊的判讀力,將會成為重要的命題……
Thumbnail
在職場上,不要覺得自己沒有足夠的權力做事。 厲害的人,無論在什麼位置,都應當發揮自己的影響力。
2018年, 由公視出資拍攝的電影電視劇 《你的孩子不是你的孩子》(以下簡稱《孩子》)播出後取得熱烈回響 其傳達的中心思想 “尊重孩子自主權”卻讓部分家長苦惱: 這樣我該怎麼教小孩? 警告!!  以下有些微據透, 請小心服用
Thumbnail
Retention Science,一家位於美國加州,成立不到五年的科技公司專門提供數據分析和顧客關係管理服務,不只顧客囊括P&G等大企業,公司去年營收更提升到新台幣1.4億元,從共同創辦人Jerry Jao 的故事中,不難得知這家公司為什麼會成功!