Share via


使用 Windows 資料科學虛擬機器的資料科學

Windows 資料科學虛擬機器 (DSVM) 是功能強大的資料科學開發環境,您可以在其中執行資料探索和模型化工作。 環境已內建數個熱門的資料分析工具,可方便您開始進行內部部署、雲端或混合式部署的分析。

DSVM 可與 Azure 服務緊密搭配運作。 其可以讀取及處理已儲存在 Azure 上,在 Azure Synapse (先前的 SQL DW)、Azure Data Lake、Azure 儲存體或 Azure Cosmos DB 中的資料。 它也可以利用其他分析工具,例如 Azure Machine Learning。

在本文中,您將了解如何使用 DSVM 來執行資料科學工作,並與其他 Azure 服務互動。 以下是您可以在 DSVM 上做的一些事:

  • 使用 Jupyter Notebook 在瀏覽器中使用 Python 2、Python 3 和 Microsoft R 來實驗您的資料。(Microsoft R 是專為效能而設計,符合企業需求的 R 版本。)

  • 使用 Microsoft Machine Learning Server 和 Python,探索資料並在 DSVM 本機開發模型。

  • 使用 Azure 入口網站或 PowerShell 管理您的 Azure 資源。

  • 建立 Azure 檔案儲存體共用作為 DSVM 上可掛接的磁碟機,以擴充您的儲存空間並與整個小組共用大型資料集/程式碼。

  • 使用 GitHub 與您的小組共用程式碼。 使用預先安裝的 Git 用戶端 (Git Bash 和 Git GUI) 存取您的存放庫。

  • 存取 Azure 資料和分析服務,例如 Azure Blob 儲存體、Azure Cosmos DB、Azure Synapse (先前為 SQL DW) 和 Azure SQL Database。

  • 使用預先安裝在 DSVM 上的 Power BI Desktop 執行個體來建置報告和儀表板,並在雲端將其部署。

  • 在虛擬機器上安裝其他工具。

注意

額外的使用費適用於在本文中列出的許多資料儲存體和分析服務。 如需詳細資訊,請參閱 Azure 定價頁面。

必要條件

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

使用 Jupyter Notebook

Jupyter Notebook 針對資料探索和模型化提供以瀏覽器為基礎的 IDE。 您可以在 Jupyter Notebook 中使用 Python 2、Python 3 或 R。

若要啟動 Jupyter Notebook,請選取 [開始] 功能表或桌面上的 Jupyter Notebook 圖示。 在 DSVM 命令提示字元中,您也可以從有現有筆記本或您想要建立新筆記本的目錄中執行 jupyter notebook 命令。

開始 Jupyter 之後,請瀏覽至已預先封裝至 DSVM 的範例筆記本 /notebooks 目錄。 現在您可以:

  • 選取筆記本以查看程式碼。
  • 選取 Shift+Enter 來執行每個儲存格。
  • 選取 [儲存格]> [執行] 來執行整個筆記本。
  • 建立新的筆記本,方法是選取 Jupyter 圖示 (左上角),選取右側的 [新增] 按鈕,然後選擇筆記本語言 (也稱為核心)。

注意

目前支援 Python 2.7、Python 3.6、R、Julia 及 Jupyter 中的 PySpark 核心。 R 核心支援以開放原始碼 R 和 Microsoft R 進行程式設計。

一旦位於筆記本,您即可探索資料、建置模型,以及使用您所選的程式庫測試模型。

使用 Microsoft Machine Learning Server 探索資料及開發模型

注意

針對 Machine Learning Server 獨立式的支援將於 2021 年 7 月 1 日結束。 我們將於 6 月 30 日之後將其從 DSVM 映像中移除。 現有的部署將繼續擁有軟體的存取權,但由於已達到支援結束日期,因此在 2021 年 7 月 1 日之後將不支援。

您可以使用 R 和 Python 等語言在 DSVM 上進行資料分析。

對於 R,您可以使用 Visual Studio 的 R 工具。 除了開放原始碼 CRAN R 以外,Microsoft 還提供額外的程式庫以便進行可調整的分析,以及分析大於平行區塊分析所允許之記憶體大小的資料。

針對 Python,您可以使用 Visual Studio Community Edition 這類已預先安裝「適用於 Visual Studio 的 Python 工具」(PTVS) 延伸模組的 IDE。 根據預設,在 PTVS 上只有設定 Python 3.6 (根 Conda 環境)。 若要啟用 Anaconda Python 2.7,請執行下列步驟:

  1. 為每個版本建立自訂環境,方法是移至 [工具]> [Python 工具]> [Python 環境],然後選取 Visual Studio Community Edition 中的 [+ 自訂]
  2. 提供描述並將環境前置詞路徑設定為 c:\anaconda\envs\python2 (適用於 Anaconda Python 2.7)。
  3. 選取 [自動偵測]> [套用] 以儲存環境。

如需如何建立 Python 環境的詳細資料,請參閱 PTVS 文件

現在您已建立新的 Python 專案。 移至 [檔案]> [新增]> [專案]> [Python],然後選取您要建置的 Python 應用程式類型。 您可以在 [Python 環境] 上按一下滑鼠右鍵,然後選取 [新增/移除 Python 環境],將目前專案的 Python 環境設定為所需的版本 (Python 2.7 或 3.6)。 您可以在產品文件中找到關於使用 PTVS 的詳細資訊。

管理 Azure 資源

DSVM 不僅可讓您在虛擬機器上的本機建置分析解決方案。 它也可讓您存取 Azure 雲端平台上的服務。 Azure 提供數個可從 DSVM 管理和存取的計算、儲存、資料分析及其他服務。

若要管理您的 Azure 訂用帳戶和雲端資源,您有兩個選項:

使用共用檔案系統來擴充儲存體

資料科學家可以在小組內共用大型資料集、程式碼或其他資源。 DSVM 大約有 45 GB 的可用空間。 若要擴充您的儲存體,您可以使用 Azure 檔案儲存體,然後將它掛接在一或多個 DSVM 執行個體上或透過 REST API 存取。 您也可以使用 Azure 入口網站或使用 Azure PowerShell 來新增額外的專用資料磁碟。

注意

Azure 檔案儲存體共用上的最大空間為 5 TB。 每個檔案的大小限制為 1 TB。

您可以在 Azure PowerShell 中使用此指令碼來建立 Azure 檔案儲存體共用:

# Authenticate to Azure.
Connect-AzAccount
# Select your subscription
Get-AzSubscription –SubscriptionName "<your subscription name>" | Select-AzSubscription
# Create a new resource group.
New-AzResourceGroup -Name <dsvmdatarg>
# Create a new storage account. You can reuse existing storage account if you want.
New-AzStorageAccount -Name <mydatadisk> -ResourceGroupName <dsvmdatarg> -Location "<Azure Data Center Name For eg. South Central US>" -Type "Standard_LRS"
# Set your current working storage account
Set-AzCurrentStorageAccount –ResourceGroupName "<dsvmdatarg>" –StorageAccountName <mydatadisk>

# Create an Azure Files share
$s = New-AzStorageShare <<teamsharename>>
# Create a directory under the file share. You can give it any name
New-AzStorageDirectory -Share $s -Path <directory name>
# List the share to confirm that everything worked
Get-AzStorageFile -Share $s

您現在已建立 Azure 檔案儲存體共用,可將它掛接在 Azure 的任何虛擬機器中。 建議您將 VM 放在與儲存體帳戶相同的 Azure 資料中心,以避免延遲和資料傳輸費用。 以下是在 DSVM 上掛接磁碟機的 Azure PowerShell 命令:

# Get the storage key of the storage account that has the Azure Files share from the Azure portal. Store it securely on the VM to avoid being prompted in the next command.
cmdkey /add:<<mydatadisk>>.file.core.windows.net /user:<<mydatadisk>> /pass:<storage key>

# Mount the Azure Files share as drive Z on the VM. You can choose another drive letter if you want.
net use z:  \\<mydatadisk>.file.core.windows.net\<<teamsharename>>

您現在可以將此磁碟機當作 VM 上的任何一般磁碟機存取。

在 GitHub 中共用程式碼

GitHub 是一個程式碼存放庫,您可以在其中尋找各種工具的程式碼樣本和來源,方法是使用開發人員社群所共用的技術。 它會使用 Git 技術來追蹤和儲存各版本的程式碼檔案。 GitHub 也是一個平台,您可以在其中建立自己的存放庫,以儲存您小組共用的程式碼和文件、實作版本控制,可以控制有權檢視和貢獻程式碼的人員。

如需有關使用 Git 的詳細資訊,請瀏覽 GitHub 說明頁面 \(英文\)。 您可以使用 GitHub 來與您的小組共同作業、使用社群所開發的程式碼,以及將程式碼貢獻回社群。

DSVM 會在命令列上和在 GUI 上載入用戶端工具,以存取 GitHub 存放庫。 可搭配 Git 與 GitHub 使用的命令列工具稱為 Git Bash。 DSVM 上會安裝 Visual Studio,並具有 Git 延伸模組。 您可以在 [開始] 功能表和桌面上找到這些工具的圖示。

若要從 GitHub 存放庫下載程式碼,您可以使用 git clone 命令。 例如,若要將 Microsoft 所發佈的資料科學存放庫下載到目前的目錄中,您可以在 Git Bash 中執行下列命令:

git clone https://github.com/Azure/DataScienceVM.git

您可以在 Visual Studio 中執行相同的複製作業。 下列螢幕擷取畫面示範如何在 Visual Studio 中存取 Git 和 GitHub 工具:

Screenshot of Visual Studio with the GitHub connection displayed

從 github.com 上提供的資源,即可找到透過 Git 使用 GitHub 存放庫的詳細資訊。 功能提要 是有用的參考資料。

存取 Azure 資料和分析服務

Azure Blob 儲存體

Azure Blob 儲存體是可靠、划算的雲端儲存體服務,可存放大型和小型的資料。 本節說明如何將資料移至 Blob 儲存體及存取儲存在 Azure Blob 中的資料。

必要條件

  • Azure 入口網站建立 Azure Blob 儲存體帳戶。

    Screenshot of the storage account creation process in the Azure portal

  • 確認已預先安裝命令列 AzCopy 工具:C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy.exe。 包含 azcopy.exe 的目錄已在您的 PATH 環境變數上,使得您無須在執行此工具時輸入完整的命令路徑。 如需 AzCopy 工具的詳細資訊,請參閱 AzCopy 文件

  • 啟動 Azure 儲存體總管工具。 您可以從儲存體總管網頁下載它。

    Screenshot of Azure Storage Explorer accessing a storage account

將資料從 VM 移至 Azure Blob:AzCopy

若要在本機檔案與 Blob 儲存體之間移動資料,您可以在命令列上或 PowerShell 中使用 AzCopy:

AzCopy /Source:C:\myfolder /Dest:https://<mystorageaccount>.blob.core.windows.net/<mycontainer> /DestKey:<storage account key> /Pattern:abc.txt

以您的檔案儲存路徑取代 C:\myfolder,以您的 Blob 儲存體帳戶名稱取代 mystorageaccount、以容器名稱取代 mycontainer,並以您的 Blob 儲存體存取金鑰取代 storage account key。 您可以在 Azure 入口網站中尋找您的儲存體帳戶認證。

在 PowerShell 或從命令提示字元執行 AzCopy 命令。 以下是使用 AzCopy 命令的一些範例:

# Copy *.sql from a local machine to an Azure blob
"C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy" /Source:"c:\Aaqs\Data Science Scripts" /Dest:https://[ENTER STORAGE ACCOUNT].blob.core.windows.net/[ENTER CONTAINER] /DestKey:[ENTER STORAGE KEY] /S /Pattern:*.sql

# Copy back all files from an Azure blob container to a local machine

"C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy" /Dest:"c:\Aaqs\Data Science Scripts\temp" /Source:https://[ENTER STORAGE ACCOUNT].blob.core.windows.net/[ENTER CONTAINER] /SourceKey:[ENTER STORAGE KEY] /S

執行 AzCopy 命令來複製到 Azure Blob 之後,您的檔案就會出現在 Azure 儲存體總管中。

Screenshot of the storage account, displaying the uploaded CSV file

將資料從 VM 移至 Azure Blob:Azure 儲存體總管

您也可以使用 Azure 儲存體總管,從 VM 的本機檔案上傳資料:

  • 若要將資料上傳至容器,請選取目標容器,然後選取 [上傳] 按鈕。Screenshot of the upload button in Azure Storage Explorer
  • 選取 [檔案] 方塊右側的省略符號 (...),從檔案系統中選取一或多個要上傳的檔案,然後選取 [上傳] 以開始上傳檔案。Screenshot of the Upload files dialog box

從 Azure Blob 讀取資料:Python ODBC

您可以使用 BlobService 程式庫,直接從 Jupyter Notebook 或 Python 程式的 Blob 讀取資料。

首先,匯入所需的套件:

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
from time import time
import pyodbc
import os
from azure.storage.blob import BlobService
import tables
import time
import zipfile
import random

然後插入您的 Blob 儲存體帳戶認證,並從 Blob 讀取資料:

CONTAINERNAME = 'xxx'
STORAGEACCOUNTNAME = 'xxxx'
STORAGEACCOUNTKEY = 'xxxxxxxxxxxxxxxx'
BLOBNAME = 'nyctaxidataset/nyctaxitrip/trip_data_1.csv'
localfilename = 'trip_data_1.csv'
LOCALDIRECTORY = os.getcwd()
LOCALFILE =  os.path.join(LOCALDIRECTORY, localfilename)

#download from blob
t1 = time.time()
blob_service = BlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY)
blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILE)
t2 = time.time()
print(("It takes %s seconds to download "+BLOBNAME) % (t2 - t1))

#unzip downloaded files if needed
#with zipfile.ZipFile(ZIPPEDLOCALFILE, "r") as z:
#    z.extractall(LOCALDIRECTORY)

df1 = pd.read_csv(LOCALFILE, header=0)
df1.columns = ['medallion','hack_license','vendor_id','rate_code','store_and_fwd_flag','pickup_datetime','dropoff_datetime','passenger_count','trip_time_in_secs','trip_distance','pickup_longitude','pickup_latitude','dropoff_longitude','dropoff_latitude']
print 'the size of the data is: %d rows and  %d columns' % df1.shape

資料會以資料框架的形式讀取:

Screenshot of the first 10 rows of data

Azure Synapse Analytics 和資料庫

Azure Synapse Analytics 是彈性的資料倉儲即服務,具有企業層級的 SQL Server 體驗。

您可以遵循本文中的指示來佈建 Azure Synapse Analytics。 佈建 Azure Synapse Analytics 之後,您可以使用此逐步解說,利用 Azure Synapse Analytics 內的資料來執行資料上傳、探索和模型化。

Azure Cosmos DB

Azure Cosmos DB 是雲端中的一種 NoSQL 資料庫。 您可以使用它來處理 JSON 之類的文件,以及儲存和查詢文件。

使用下列必要條件步驟從 DSVM 存取 Azure Cosmos DB:

  1. DSVM 上已安裝 Azure Cosmos DB Python SDK。 若要更新,請從命令提示字元執行 pip install pydocumentdb --upgrade

  2. Azure 入口網站建立 Azure Cosmos DB 帳戶和資料庫。

  3. Microsoft 下載中心下載 Azure Cosmos DB 資料移轉工具,並將其解壓縮至您選擇的目錄。

  4. 使用移轉工具的下列命令參數,將儲存在公用 Blob 中的 JSON 資料 (火山資料) 匯入 Azure Cosmos DB。 (從安裝 Azure Cosmos DB 資料移轉工具的目錄中使用 dtui.exe。)輸入下面的來源和目標位置參數:

    /s:JsonFile /s.Files:https://data.humdata.org/dataset/a60ac839-920d-435a-bf7d-25855602699d/resource/7234d067-2d74-449a-9c61-22ae6d98d928/download/volcano.json /t:DocumentDBBulk /t.ConnectionString:AccountEndpoint=https://[DocDBAccountName].documents.azure.com:443/;AccountKey=[[KEY];Database=volcano /t.Collection:volcano1

匯入資料之後,您可以移至 Jupyter,並開啟標題為 DocumentDBSample 的筆記本。 它包含 Python 程式碼,可存取 Azure Cosmos DB 並執行一些基本查詢。 如需深入了解 Azure Cosmos DB,請參閱服務的文件頁面

使用 Power BI 報告和儀表板

您可以在 Power BI Desktop 中將前述 Azure Cosmos DB 範例中的 Volcano JSON 檔案視覺化,以深入了解資料。 在 Power BI 文章中可找到詳細的步驟。 高階步驟如下:

  1. 開啟 Power BI Desktop 並選取 [取得資料]。 將 URL 指定為︰https://cahandson.blob.core.windows.net/samples/volcano.json
  2. 您應該會看到匯入為清單的 JSON 記錄。 將清單轉換成資料表使得 Power BI 可與其搭配使用。
  3. 選取展開 (箭號) 圖示來展開資料行。
  4. 請注意,該位置是記錄欄位。 展開記錄,然後只選取座標。 座標是清單資料行。
  5. 新增新的資料行,將清單座標資料行轉換為以逗號分隔的 LatLong 資料行。 使用公式 Text.From([coordinates]{1})&","&Text.From([coordinates]{0}) 來串連座標清單欄位中的兩個元素。
  6. 將 [提高權限] 資料行轉換為小數,然後選取 [關閉] 和 [套用] 按鈕。

不需執行前述步驟,您可以貼上下列程式碼。 它會編寫在 Power BI 的進階編輯器中所使用的步驟指令碼,以查詢語言中編寫資料轉換。

let
    Source = Json.Document(Web.Contents("https://cahandson.blob.core.windows.net/samples/volcano.json")),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Volcano Name", "Country", "Region", "Location", "Elevation", "Type", "Status", "Last Known Eruption", "id"}, {"Volcano Name", "Country", "Region", "Location", "Elevation", "Type", "Status", "Last Known Eruption", "id"}),
    #"Expanded Location" = Table.ExpandRecordColumn(#"Expanded Column1", "Location", {"coordinates"}, {"coordinates"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Location", "LatLong", each Text.From([coordinates]{1})&","&Text.From([coordinates]{0})),
    #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Elevation", type number}})
in
    #"Changed Type"

您的 Power BI 資料模型中現在會有資料。 您的 Power BI Desktop 執行個體應該如下所示:

Power BI Desktop

您可以開始使用資料模型來建置報告和視覺效果。 您可以遵循此 Power BI 文章中的步驟來建置報告。

動態縮放 DSVM

您可以擴大和縮小 DSVM,以符合您的專案需求。 如果您在晚上或週末不需要使用 VM,就可以從 Azure 入口網站關閉 VM。

注意

如果您只使用 VM 上的作業系統關機按鈕,則會衍生計算費用。 相反地,您應該使用 Azure 入口網站或 Cloud Shell 來解除配置您的 DSVM。

您可能需要處理一些大規模分析,而且需要更多的 CPU、記憶體或磁碟容量。 若是如此,您可以在 CPU 核心、適用於深度學習的 GPU 型執行個體、記憶體容量和磁碟類型 (包括固態硬碟) 方面找到符合您計算和預算需求的適當 VM 大小選擇。 Azure 虛擬機器定價頁面提供完整 VM 清單和其每小時的計算價格。

新增更多工具

在 DSVM 中預先建置的工具可解決許多常見的資料分析需求。 這可節省您的時間,因為您不需要逐一安裝和設定您的環境。 因為您只需支付所使用的資源,所以也能為您節省成本。

您可以使用本文概述的其他 Azure 資料和分析服務,以增強您的分析環境。 在某些情況下,您可能需要額外的工具,包括一些專屬的合作夥伴工具。 您有虛擬機器上完整的系統管理權限,可安裝您所需的新工具。 您也可以在 Python 和 R 中安裝其他未預先安裝的封裝。 對於 Python,您可以使用 condapip。 對於 R,您可以在 R 主控台中使用 install.packages(),或使用 IDE 並選取 [套件]> [安裝套件]

深度學習

除了以架構為基礎的樣本之外,您還可以取得一組已在 DSVM 上驗證的完整逐步解說。 這些逐步解說有助於您在影像和文字/語言理解之類的領域中,快速開發深度學習應用程式。

  • 跨不同架構執行神經網路:此逐步解說會示範如何將程式碼從一種架構移轉至另一種架構。 其中也示範如何跨架構來比較模型和執行階段效能。

  • 建置端對端解決方案在影像內偵測產品的操作說明指南:影像偵測是一種可在影像內找出並分類物體的技術。 這項技術在許多現實生活商業領域中潛藏龐大的商機。 例如,零售商可以利用這項技術來判斷客戶從貨架上挑選什麼產品。 這項資訊進而有助於商店管理產品庫存。

  • 音訊的深度學習:此教學課程說明如何針對都市音效資料集上的音訊事件偵測定型深度學習模型。 也提供如何使用音訊資料的概觀。

  • 文字文件的分類:本逐步解說示範如何建立和定型兩個神經網路架構:階層式注意力網路和長短期記憶體 (LSTM) 網路。 這些類神經網路會使用深入學習的 Keras API 將文字文件分類。

摘要

此文章描述您可以在 Microsoft 資料科學虛擬機器上執行的一些事項。 您還可以執行更多作業,讓 DSVM 成為有效的分析環境。