Compute Engine 提供圖形處理器 (GPU),您可以將這些 GPU 加入到您的虛擬機器執行個體。您可以使用這些 GPU 來加速處理執行個體上的特定工作負載,例如機器學習和資料處理。
如要進一步瞭解可以利用 GPU 執行哪些作業,以及我們提供的 GPU 硬體類型,請參閱 Compute Engine 上的 GPU 一文。
事前準備
- 如要使用本指南中的指令列範例,請完成下列事項:
- 安裝或更新至最新版 gcloud 指令列工具。
- 設定預設地區和區域。
- 如要使用本指南中的 API 範例,請設定 API 存取權。
- 如要瞭解在執行個體中使用 GPU 所需的費用,請參閱 Compute Engine GPU 定價 的相關說明。
- 如要瞭解這類執行個體的運作方式與大多數執行個體有何不同,請參閱具有 GPU 之執行個體的限制的相關說明。
- 瞭解執行個體因主機維護事件而排定終止時的運作方式。如要為執行個體新增 GPU,您必須一併將執行個體設為在主機維護期間終止。
- 查看「Quotas」(配額) 頁面,確保您的專案擁有足夠的 GPU。如果需要更多 GPU 配額,請參閱申請提高配額的相關說明。
建立具有 GPU 的執行個體
在建立具有 GPU 的執行個體之前,請先選取您要用於執行個體的開機磁碟映像檔,並確定您已安裝合適的 GPU 驅動程式。
如果您要使用 GPU 進行機器學習,則可讓執行個體使用深度學習 VM 映像檔。深度學習 VM 映像檔已預先安裝 GPU 驅動程式,並且包含 TensorFlow 和 PyTorch 這類套件。您也可以將深度學習 VM 映像檔用於一般 GPU 工作負載。如要瞭解可用的映像檔,以及映像檔上安裝的套件,請參閱深度學習 VM 說明文件。
您也可以使用任何公開映像檔或自訂映像檔,不過有些映像檔可能會需要本指南未說明的特別驅動程式或安裝程序。您必須自行確認哪些驅動程式適用於您的映像檔。
如需驅動程式安裝步驟,請參閱安裝 GPU 驅動程式一節。
建立具有一或多個 GPU 的執行個體時,您必須將執行個體設定為在進行主機維護時終止。由於具有 GPU 的執行個體已指派給特定的硬體裝置,因此無法即時遷移。詳情請參閱 GPU 限制的相關說明。
您可以使用 Google Cloud Platform Console、gcloud
指令列工具或 API,建立具有一或多個 GPU 的執行個體。
Console
- 前往「VM instances」(VM 執行個體) 頁面。
- 按一下 [Create instance] (建立執行個體)。
- 選取提供 GPU 的區域。請參閱提供 GPU 的區域清單。
- 在「Machine configuration」(機器設定) 區段中,選取您要用於這個執行個體的機器類型。您也可以視需要指定自訂機器類型設定。
- 在「Machine configuration」(機器設定) 區段中,按一下 [CPU platform and GPU] (CPU 平台和 GPU),查看進階機器類型選項和可用的 GPU。
- 按一下 [GPU] 查看可用的 GPU 清單。
- 指定您需要的 GPU 類型和 GPU 數量。
- 如有必要,請根據您需要的 GPU 設定來調整機器類型。如果不調整這些設定,執行個體就會使用您在開啟機器類型自訂畫面前指定的預先定義機器類型。
- 如要設定開機磁碟,請按一下「Boot disk」(開機磁碟) 部分的 [Change] (變更)。
- 在「OS images」(OS 映像檔) 分頁中選擇映像檔。
- 按一下 [Select] (選取) 來確認開機磁碟選項。
- 調整任何其他所需的執行個體設定。舉例來說,您可以變更「Preemptibility」(先佔功能) 設定,將執行個體設為先佔執行個體,進而降低執行個體和連結之 GPU 的費用。詳情請參閱先占執行個體上的 GPU一節。
- 在頁面底部,按一下 [Create] (建立) 即可建立執行個體。
gcloud
請使用 regions describe
指令來確保要在其中建立具有 GPU 之執行個體的地區有足夠的 GPU 配額。
gcloud compute regions describe [REGION]
其中,[REGION]
是您要檢查 GPU 配額的地區。
如要建立並啟動執行個體,請使用 gcloud compute instances create
指令搭配下列旗標:
gcloud compute instances create [INSTANCE_NAME] \
--machine-type [MACHINE_TYPE] --zone [ZONE] \
--accelerator type=[ACCELERATOR_TYPE],count=[ACCELERATOR_COUNT] \
--image-family [IMAGE_FAMILY] --image-project [IMAGE_PROJECT] \
--maintenance-policy TERMINATE --restart-on-failure \
[--preemptible]
其中:
[INSTANCE_NAME]
是新執行個體的名稱。[MACHINE_TYPE]
是您為執行個體選取的機器類型。如要瞭解哪些機器類型可提供您需要的 GPU 數量,請參閱 Compute Engine 上的 GPU一文。[ZONE]
是這個執行個體所在的區域。[IMAGE_FAMILY]
是其中一個可用的映像檔系列。[ACCELERATOR_COUNT]
是您要為執行個體新增的 GPU 數量。如需執行個體的機器類型適用的 GPU 限制清單,請參閱 Compute Engine 上的 GPU。[ACCELERATOR_TYPE]
是您要使用的 GPU 模型。請使用下列任何一個值:- NVIDIA® Tesla® T4:
nvidia-tesla-t4
- 配備 NVIDIA® GRID® 的 NVIDIA® Tesla® T4 虛擬工作站:
nvidia-tesla-t4-vws
- NVIDIA® Tesla® P4:
nvidia-tesla-p4
- 配備 NVIDIA® GRID® 的 NVIDIA® Tesla® P4 虛擬工作站:
nvidia-tesla-p4-vws
- NVIDIA® Tesla® P100:
nvidia-tesla-p100
- 配備 NVIDIA® GRID® 的 NVIDIA® Tesla® P100 虛擬工作站:
nvidia-tesla-p100-vws
- NVIDIA® Tesla® V100:
nvidia-tesla-v100
- NVIDIA® Tesla® K80:
nvidia-tesla-k80
如需可用 GPU 型號的清單,請參閱 Compute Engine 上的 GPU。
- NVIDIA® Tesla® T4:
[IMAGE_PROJECT]
是映像檔系列所屬的映像檔專案。--preemptible
是選用旗標,可用於將執行個體設為先占執行個體,進而降低執行個體和連結之 GPU 的費用。詳情請參閱先占執行個體上的 GPU一節。
舉例來說,您可以使用下列 gcloud
指令,在 us-east1-d
區域中啟動配備 1 個 NVIDIA Tesla K80 GPU 和 2 個 vCPU 的 Ubuntu 16.04 執行個體。
gcloud compute instances create gpu-instance-1 \
--machine-type n1-standard-2 --zone us-east1-d \
--accelerator type=nvidia-tesla-k80,count=1 \
--image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
--maintenance-policy TERMINATE --restart-on-failure
這個指令範例可啟動執行個體,但 CUDA 和驅動程式必須事先安裝在執行個體上。
API
確定您要為執行個體新增的 GPU 類型。如要列出特定區域中適用於專案的 GPU 類型,請提交 GET 要求。
GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes
其中:
[PROJECT_ID]
是您的專案 ID。[ZONE]
是您想要列出可用 GPU 類型的區域。
在 API 中,建立 POST 要求來建立新的執行個體。加入 acceleratorType
參數來指定您要使用的 GPU 類型,再加入 acceleratorCount
參數來指定您要新增的 GPU 數量。請同時將 onHostMaintenance
參數設為 TERMINATE
。
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances?key={YOUR_API_KEY}
{
"machineType": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/n1-highmem-2",
"disks":
[
{
"type": "PERSISTENT",
"initializeParams":
{
"diskSizeGb": "[DISK_SIZE]",
"sourceImage": "https://compute.googleapis.com/compute/v1/projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
},
"boot": true
}
],
"name": "[INSTANCE_NAME]",
"networkInterfaces":
[
{
"network": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK]"
}
],
"guestAccelerators":
[
{
"acceleratorCount": [ACCELERATOR_COUNT],
"acceleratorType": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
}
],
"scheduling":
{
"onHostMaintenance": "terminate",
"automaticRestart": true,
["preemptible": true]
},
}
其中:
[INSTANCE_NAME]
是執行個體的名稱。[PROJECT_ID]
是您的專案 ID。[ZONE]
是這個執行個體所在的區域。[MACHINE_TYPE]
是您為執行個體選取的機器類型。如要瞭解哪些機器類型可提供您需要的 GPU 數量,請參閱 Compute Engine 上的 GPU一文。[IMAGE_PROJECT]
是映像檔所屬的映像檔專案。[IMAGE_FAMILY]
是執行個體的開機磁碟映像檔。請指定可用公開映像檔清單中的映像檔系列。[DISK_SIZE]
是開機磁碟的大小 (以 GB 為單位)。[NETWORK]
是您要用於這個執行個體的虛擬私人雲端網路。如要使用預設網路,請指定default
。[ACCELERATOR_COUNT]
是您要為執行個體新增的 GPU 數量。如需執行個體的機器類型適用的 GPU 限制清單,請參閱 Compute Engine 上的 GPU。[ACCELERATOR_TYPE]
是您要使用的 GPU 型號。如需可用 GPU 型號的清單,請參閱 Compute Engine 上的 GPU。"preemptible": true
是選用參數,可用於將執行個體設為先占執行個體,進而降低執行個體和連結 GPU 的費用。詳情請參閱先占執行個體上的 GPU一節。
在執行個體上安裝 GPU 驅動程式,如此一來系統才能使用該裝置。
為現有的執行個體新增或移除 GPU
您可以為現有的執行個體新增或移除 GPU,但您必須先停止執行個體並變更其主機維護設定,使執行個體終止,而不是進行即時遷移。由於具有 GPU 的執行個體已指派給特定的硬體裝置,因此無法即時遷移。詳情請參閱 GPU 限制的相關說明。
另外請注意,您必須在新增 GPU 後在執行個體上安裝 GPU 驅動程式。您需要的驅動程式取決於用來建立執行個體的開機磁碟映像檔,因此您必須自行確認哪些驅動程式適用於您永久開機磁碟映像檔上的作業系統。詳情請參閱安裝 GPU 驅動程式一節。
您可以使用 Google Cloud Platform Console 或 API,在執行個體中新增或移除 GPU。
主控台
如要為執行個體新增或移除 GPU,請停止執行個體並編輯執行個體的設定。
確認執行個體上的所有重要應用程式皆已停止運作。您必須先停止執行個體,才能新增 GPU。
前往「VM instances」(VM 執行個體) 頁面查看執行個體清單。
在執行個體清單中,按一下您要新增 GPU 的執行個體名稱,執行個體詳細資料頁面隨即會開啟。
在執行個體詳細資料頁面的最上方,按一下 [Stop] (停止) 來停止執行個體。
執行個體停止運作後,請按一下 [Edit] (編輯) 來變更執行個體屬性。
如果執行個體為共用核心機器類型,您必須變更機器類型,使其具有一或多個 vCPU。您無法為共用核心機器類型的執行個體新增加速器。
在「Machine configuration」(機器設定) 區段中,按一下 [CPU platform and GPU] (CPU 平台和 GPU),查看進階機器類型選項和可用的 GPU。
按一下 [GPU] 查看可用的 GPU 清單。
選取您要為執行個體新增的 GPU 數量和 GPU 模型。或者只要將 GPU 數量設為 [None] (無),即可從執行個體中移除現有的 GPU。
如果您已為執行個體新增 GPU,請將主機維護設定設為 [Terminate] (終止)。如果已從執行個體中移除 GPU,您可以選擇將主機維護設定設回 [Migrate VM instance] (遷移 VM 執行個體)。
在執行個體詳細資料頁面的最下方,按一下 [Save] (儲存) 來套用變更。
執行個體設定儲存完成之後,請按一下執行個體詳細資料頁面頂端的 [Start] (啟動),再次啟動執行個體。
API
您可以透過 API 來停止執行個體及變更執行個體設定,藉此為執行個體新增或移除 GPU。
確認執行個體上的所有重要應用程式皆已停止運作,然後建立 POST 指令來停止執行個體,這樣執行個體才能移動至具有 GPU 的主機系統。
POST https://compute.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/stop
其中:
[INSTANCE_NAME]
是您要新增 GPU 的執行個體名稱。[ZONE]
是執行個體所在的區域。
確定您要為執行個體新增的 GPU 類型。如要列出特定區域中適用於專案的 GPU 類型,請提交 GET 要求。
GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes
其中:
[PROJECT_ID]
是您的專案 ID。[ZONE]
是您想要列出可用 GPU 類型的區域。
如果執行個體為共用核心機器類型,您必須變更機器類型,使其具有一或多個 vCPU。您無法為共用核心機器類型的執行個體新增加速器。
執行個體停止之後,請建立 POST 要求,為執行個體新增或移除一或多個 GPU。
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMachineResources { "guestAccelerators": [ { "acceleratorCount": [ACCELERATOR_COUNT], "acceleratorType": "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]" } ] }
其中:
[INSTANCE_NAME]
是執行個體的名稱。[PROJECT_ID]
是您的專案 ID。[ZONE]
是這個執行個體所在的區域。[ACCELERATOR_COUNT]
是您想要執行個體擁有的 GPU 數量。如需執行個體的機器類型適用的 GPU 限制清單,請參閱 Compute Engine 上的 GPU。[ACCELERATOR_TYPE]
是您要使用的 GPU 型號。如需可用 GPU 型號的清單,請參閱 Compute Engine 上的 GPU。
建立 POST 指令來設定執行個體的排程選項。如要為執行個體新增 GPU,您必須指定
"onHostMaintenance": "TERMINATE"
。如要從執行個體中移除 GPU,您也可以選擇指定"onHostMaintenance": "MIGRATE"
。POST https://compute.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/setScheduling { "onHostMaintenance": "[MAINTENANCE_TYPE]", "automaticRestart": true }
其中:
[INSTANCE_NAME]
是您要新增 GPU 的執行個體名稱。[ZONE]
是執行個體所在的區域。[MAINTENANCE_TYPE]
是您希望執行個體在必須進行主機維護時執行的動作。如要為執行個體新增 GPU,請指定TERMINATE
。如果您已從執行個體中移除所有 GPU,並且希望在進行主機維護事件時恢復遷移,您也可以選擇指定"onHostMaintenance": "MIGRATE"
。
啟動執行個體。
POST https://compute.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/start
其中:
[INSTANCE_NAME]
是您要新增 GPU 的執行個體名稱。[ZONE]
是執行個體所在的區域。
接著請在執行個體上安裝 GPU 驅動程式,如此一來系統才能使用該裝置。
利用執行個體範本建立 GPU 執行個體群組
您可以利用執行個體範本來建立代管執行個體群組,並讓群組中的每個執行個體都新增 GPU。代管執行個體群組會使用該範本建立多個完全相同的執行個體。您可以根據工作負載調整群組中的執行個體數量。
由於建立的執行個體必須已安裝 CUDA Toolkit 和 NVIDIA 驅動程式,才能使用 GPU,因此您必須按照 GPU 驅動程式安裝步驟中的操作說明,建立已安裝驅動程式的映像檔。
如需建立執行個體範本的操作步驟,請參閱建立執行個體範本一文。
如果您要使用主控台建立執行個體範本,請自訂機器類型,並選取您要新增到執行個體範本的 GPU 類型和數量。
如果使用的是 gcloud
指令列工具,請加入 --accelerators
和 --maintenance-policy TERMINATE
旗標。
以下範例會建立一個執行個體範本,這個範本具有 2 個 vCPU、一個以映像檔為基礎的 250GB 開機磁碟 (已安裝驅動程式) 和一個 NVIDIA Tesla K80 GPU。
gcloud beta compute instance-templates create gpu-template \
--machine-type n1-standard-2 \
--boot-disk-size 250GB \
--accelerator type=nvidia-tesla-k80,count=1 \
--image-family <MY_IMAGE_WITH_DRIVERS> \
--maintenance-policy TERMINATE --restart-on-failure
建立範本之後,請使用該範本來建立執行個體群組。每次您新增執行個體至群組時,系統都會使用執行個體範本中的設定來啟動執行個體。
如要建立地區代管執行個體群組,請務必選取確實支援所需 GPU 型號的區域。如需 GPU 型號和可用區域的清單,請參閱 Compute Engine 上的 GPU。以下範例會建立支援 nvidia-tesla-k80
型號且橫跨兩個區域的地區代管執行個體群組。
gcloud beta compute instance-groups managed create example-rmig \ --template gpu-template --base-instance-name example-instances \ --size 30 --zones us-east1-c,us-east1-d
注意:區域選取功能目前仍為 Beta 版,因此如要選擇特定區域,請使用 gcloud beta
元件。
如要進一步瞭解如何管理執行個體群組,以及如何為執行個體群組調度資源,請參閱建立代管執行個體群組一文。
安裝 GPU 驅動程式
建立具有一或多個 GPU 的執行個體之後,系統需有裝置驅動程式,應用程式才能存取該裝置。本指南將說明如何在使用公開映像檔的執行個體上安裝 NVIDIA 專屬驅動程式。
每個 CUDA 版本都需要最低或更新版本的 GPU 驅動程式。如要查看您 CUDA 版本所需的最低驅動程式版本,請參閱 CUDA Toolkit 和相容的驅動程式版本。
在 Compute Engine 上執行的 NVIDIA GPU 必須使用以下驅動程式版本:
Linux 執行個體:
- NVIDIA 410.79 或更新版本的驅動程式
Windows Server 執行個體:
- NVIDIA 426.00 或更新版本的驅動程式
只要安裝 NVIDIA CUDA Toolkit,即可安裝大多數的驅動程式。
請按照下列步驟安裝 CUDA 和相關的 NVIDIA® GPU 驅動程式。請查看您的應用程式需求,判斷最合適的驅動程式版本。如果您使用的軟體需要特定版本的 CUDA,請修改指令來下載所需的 CUDA 版本。
如要瞭解 CUDA 支援資訊和修改已安裝之 CUDA 的步驟,請參閱 CUDA Toolkit 說明文件。
在使用大多數公開映像檔的執行個體上,您都可以透過這種方式手動安裝驅動程式。如為自訂映像檔,您可能必須調整程序,才能在獨特的環境中順利執行。
為了確保順利完成安裝,您的作業系統必須具有最新的套件更新。
CentOS/RHEL
安裝最新的核心套件。如有需要,此指令也會重新啟動系統。
sudo yum clean all sudo yum install -y kernel | grep -q 'already installed' || sudo reboot
如果系統在上一個步驟中重新啟動,請重新連線到該執行個體。
安裝核心標頭和開發套件。
sudo yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
為 CUDA Toolkit 選取驅動程式存放區,然後將其新增至執行個體中。
CentOS/RHEL 8
sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-repo-rhel8-10.1.243-1.x86_64.rpm
CentOS/RHEL 7
sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
CentOS/RHEL 6
sudo yum install http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
安裝
epel-release
存放區。這個存放區包含在 CentOS 上安裝 NVIDIA 驅動程式所需的 DKMS 套件。CentOS 6/7/8 和 RHEL 6/7
sudo yum install epel-release
僅限 RHEL 8
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
清除 Yum 快取:
sudo yum clean all
安裝內含 NVIDIA 驅動程式的 CUDA 套件。
sudo yum install cuda
SLES
安裝最新的核心套件。如有需要,此指令也會重新啟動系統。
sudo zypper refresh sudo zypper up -y kernel-default | grep -q 'already installed' || sudo reboot
如果系統在上一個步驟中重新啟動,請重新連線到該執行個體。
為 CUDA Toolkit 選取驅動程式存放區,然後將其新增至執行個體中。
SLES 15
sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/7fa2af80.pub sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
SLES 12 with Service Pack 4
sudo rpm --import https://developer.download.nvidia.com/compute/cuda/repos/sles124/x86_64/7fa2af80.pub sudo yum install https://developer.download.nvidia.com/compute/cuda/repos/sles124/x86_64/cuda-repo-sles124-10.1.243-1.x86_64.rpm
重新整理 Zypper。
sudo zypper refresh
安裝內含 NVIDIA 驅動程式的 CUDA。
sudo zypper install cuda
Ubuntu
為 CUDA Toolkit 選取驅動程式存放區,然後將其新增至執行個體中。
Ubuntu 18.04 LTS
curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
Ubuntu 16.04 LTS
curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
更新套件清單。
sudo apt-get update
安裝內含 NVIDIA 驅動程式的 CUDA。
sudo apt-get install cuda
Windows Server
將含有 R426 分支版本 (NVIDIA 426.00 或更新版本的驅動程式) 的
.exe
安裝程式檔案下載至執行個體。針對大多數 Windows Server 執行個體,您可以採用下列其中一個選項:以 Windows Server 2019 為例,您能以管理員身分開啟 PowerShell 終端機,然後使用
wget
指令下載您所需的驅動程式安裝程式。PS C:\> wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/network_installers/cuda_10.1.243_win10_network.exe -O cuda_10.1.243_win10_network.exe
執行
.exe
安裝程式。舉例來說,您可以使用系統管理員身分開啟 PowerShell 終端機,然後執行下列指令。PS C:\> .\\cuda_10.1.243_win10_network.exe
確認 GPU 驅動程式已順利安裝
完成驅動程式安裝步驟後,請確認驅動程式已正確安裝並初始化。
Linux
連線至 Linux 執行個體,然後使用 nvidia-smi
指令確認驅動程式正常執行。
nvidia-smi
Wed Jan 2 19:51:51 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79 Driver Version: 410.79 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P4 Off | 00000000:00:04.0 Off | 0 |
| N/A 42C P8 7W / 75W | 62MiB / 7611MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
Windows Server
連線至 Windows Server 執行個體,然後使用 nvidia-smi.exe
工具確認驅動程式正常執行。
PS C:\> & 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe' Mon Aug 26 18:09:03 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 426.00 Driver Version: 426.00 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla P4 TCC | 00000000:00:04.0 Off | 0 | | N/A 27C P8 7W / 75W | 0MiB / 7611MiB | 0% Default | +-------------------------------+----------------------+----------------------+
為虛擬工作站安裝 GRID® 驅動程式
如需可在 Compute Engine 上使用之 NVIDIA 驅動程式的完整清單,請參閱 NVIDIA 驅動程式 Cloud Storage 值區。
Linux
使用以下指令來下載 GRID 驅動程式:
curl -O https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID7.1/NVIDIA-Linux-x86_64-410.92-grid.run
使用以下指令來啟動安裝程式:
sudo bash NVIDIA-Linux-x86_64-410.92-grid.run
安裝期間請選擇以下選項:
- 如果系統提示您安裝 32 位元的二進位檔,請選取 [Yes] (是)。
- 如果系統提示您修改
x.org
檔案,請選取 [No] (否)。
Windows Server
請依照您的 Windows Server 版本下載以下其中一個 NVIDIA GRID 驅動程式:
執行安裝程式並選擇 [Express installation] (快速安裝)。
安裝完成後請重新啟動 VM。重新啟動時,系統會中斷您的工作階段連線。
使用遠端桌面協定或 PCoIP 用戶端重新連線至執行個體。
確認已安裝 GRID 驅動程式
Linux
請執行下列指令:
nvidia-smi
指令輸出結果會與以下內容類似:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.92 Driver Version: 410.92 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla P100-PCIE... On | 00000000:00:04.0 Off | 0 |
| N/A 34C P0 26W / 250W | 0MiB / 16276MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
Windows Server
使用遠端桌面協定或 PCoIP 用戶端連線至 Windows 執行個體。
在桌面上按一下右鍵,然後選取 [NVIDIA Control Panel] (NVIDIA 控制台)。
從 NVIDIA 控制台中的「Help」(說明) 選單中,選取 [System Information] (系統資訊)。資訊會顯示 VM 目前使用的 GPU 和驅動程式版本。
監控及最佳化 GPU 效能
監控 GPU 效能
為了協助提高資源使用率,您可以追蹤執行個體的 GPU 使用率。瞭解 GPU 使用率後,您就可以執行各種工作,例如設定代管執行個體群組,以依據需求自動調度資源。
如要使用 Stackdriver 查看 GPU 指標,請完成以下步驟:
在每個 VM 執行個體上設定 GPU 指標回報指令碼。此指令碼會執行下列工作:
- 安裝 GPU 指標回報代理程式。這個代理程式會在執行個體上定期執行,以收集 GPU 資料,並將這項資料傳送至 Stackdriver。
- 在 Stackdriver 上建立
custom/gpu_utilization
指標欄位。此欄位會儲存可在 Stackdriver 中分析的 GPU 專屬資料。
設定 GPU 指標回報指令碼
檢查每個 VM 執行個體是否符合下列要求:
- 每個 VM 執行個體都必須連結 GPU。
- 每個 VM 執行個體都必須安裝 GPU 驅動程式。
- 每個 VM 執行個體都必須安裝
pip
公用程式。
在每個 VM 執行個體上安裝 GPU 指標代理程式。如要安裝指標代理程式,請完成下列步驟:
下載 GPU 指標回報指令碼。
git clone https://github.com/GoogleCloudPlatform/tensorflow-inference-tensorrt5-t4-gpu.git
切換到
metrics_reporting
資料夾。cd tensorflow-inference-tensorrt5-t4-gpu/metrics_reporting
設定指標代理程式的安裝環境。
pip install -r ./requirements.txt
將指標回報指令碼移至根目錄。
sudo cp report_gpu_metrics.py /root/
啟用 GPU 指標代理程式。
cat <<-EOH > /lib/systemd/system/gpu_utilization_agent.service [Unit] Description=GPU Utilization Metric Agent [Service] Type=simple PIDFile=/run/gpu_agent.pid ExecStart=/bin/bash --login -c '/usr/bin/python /root/report_gpu_metrics.py' User=root Group=root WorkingDirectory=/ Restart=always [Install] WantedBy=multi-user.target EOH
重新載入系統 Daemon。
systemctl daemon-reload
啟用 GPU 監控服務。
systemctl --no-reload --now enable /lib/systemd/system/gpu_utilization_agent.service
在 Stackdriver 中查看指標
搜尋
gpu_utilization
。您的 GPU 使用率應如以下輸出內容所示:
(選用) 使用代管執行個體群組設定自動調度資源。如要開始設定,您可以查看 TensorFlow 推論工作負載教學課程中設定多區域叢集一節。
最佳化 GPU 效能
您可以停用 Auto Boost 功能,讓使用 NVIDIA® Tesla® K80 GPU 的執行個體效能達到最佳化。如要停用 Auto Boost 功能,請執行下列指令:
sudo nvidia-smi --auto-boost-default=DISABLED
All done.
處理主機維護事件
GPU 執行個體無法進行即時遷移。系統進行主機維護事件時,GPU 執行個體必須終止,但可以自動重新啟動。這些維護事件通常每月一次,但在必要時可能會更頻繁地執行。
如果希望在維護事件期間盡量降低對工作負載的干擾,您可以監控執行個體的維護時間表,並為工作負載做好準備,以在重新啟動系統時進行轉換。
如要接收主機維護事件的進階通知,請監控 /computeMetadata/v1/instance/maintenance-event
中繼資料值。如果傳送至中繼資料伺服器的要求傳回 NONE
,表示執行個體未排定終止。舉例來說,請在執行個體內執行下列指令:
curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"
NONE
如果中繼資料伺服器傳回 TERMINATE_ON_HOST_MAINTENANCE
,則表示已排定執行個體的終止時間。Compute Engine 會提前一小時傳送終止通知給 GPU 執行個體,而一般執行個體只會在終止前 60 秒收到通知。請設定應用程式,以便在維護作業過程中進行轉換。舉例來說,您可以採用下列任一方式:
將應用程式設為暫時將進行中的工作轉移到 Cloud Storage 值區,再於執行個體重新啟動之後擷取相關資料。
將資料寫入次要永久磁碟。執行個體自動重新啟動時,重新連結永久磁碟就能讓應用程式恢復作業。
您也可以在不輪詢的情況下接收這個中繼資料值的異動通知。如需在不輪詢的情況下接收主機維護事件進階通知的範例,請參閱取得即時遷移作業通知。
後續步驟
- 進一步瞭解 Compute Engine 上的 GPU。
- 為執行個體新增本機 SSD。如果您的應用程式需要高效能的儲存空間,本機 SSD 裝置和 GPU 是絕佳拍檔。
- 嘗試按照使用 TensorRT5 和 NVIDIA T4 GPU 執行大規模 TensorFlow 推論工作負載教學課程操作。