共用方式為


使用 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 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶
  • 在 Azure 入口網站中佈建的 DSVM。 如需詳細資訊,請參閱建立虛擬機器資源。

注意

建議您使用 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 之後,請瀏覽至 /notebooks 目錄。 此目錄裝載預先封裝至 DSVM 的範例筆記本。 您可以:

  • 選取筆記本以查看程式碼。
  • 選取 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 日結束。 我們已在 2021 年 6 月 30 日之後將其從 DSVM 映像中移除。 現有的部署仍然可以存取軟體,但支援在 2021 年 7 月 1 日之後結束。

您可以直接在 DSVM 上使用 R 和 Python 來進行資料分析。

對於 R,您可以使用 Visual Studio R 工具。 Microsoft 除了開放原始碼 CRAN R 資源之外,還提供其他程式庫。 這些程式庫可同時啟用可調整的分析,以及超過平行區塊分析記憶體大小限制的大量分析資料能力。

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

  1. 為每個版本建立自訂環境。 在 Visual Studio Community 版本中選取 [工具] > [Python 工具] > [Python 環境],然後選取 [+ 自訂]
  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 TiB。 每個檔案的大小限制為 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 資料中心,以避免延遲和資料傳輸費用。 這些 Azure PowerShell 命令會在 DSVM 上掛接磁碟機:

# 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 也可作為平台來建立您自己的存放庫。 您自己的存放庫可儲存您小組的共用程式碼和文件、實作版本控制,以及控制想要檢視和參與程式碼的專案關係人存取權限。 GitHub 支援小組內的共同作業、使用社群所開發的程式碼,以及將程式碼貢獻回饋給社群。 如需有關 Git 的詳細資訊,請參閱 GitHub 說明頁面

DSVM 會在命令列上和在 GUI 中載入用戶端工具,以存取 GitHub 存放庫。 Git Bash 命令列工具會使用 Git 和 GitHub 運作。 DSVM 上會安裝 Visual Studio,並具有 Git 延伸模組。 [開始] 功能表和桌面都有這些工具的圖示。

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

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

Visual Studio 可以處理相同的複製作業。 此螢幕擷取畫面顯示如何在 Visual Studio 中存取 Git 和 GitHub 工具:

顯示 Visual Studio 的螢幕擷取畫面,其中顯示 GitHub 連線。

您可以使用 GitHub 存放庫中可用的 github.com 資源。 如需詳細資訊,請參閱 GitHub 速查表資源。

存取 Azure 資料和分析服務

Azure Blob 儲存體

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

必要條件

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

    顯示 Azure 入口網站中儲存體帳戶建立流程的螢幕擷取畫面。

  • 確認已使用下列命令預先安裝命令列 AzCopy 工具:

    C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy\azcopy.exe

    裝載 azcopy.exe 的目錄已在您的 PATH 環境變數上,您就無須在執行此工具時輸入完整的命令路徑。 如需 AzCopy 工具的詳細資訊,請參閱 AzCopy 文件

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

    顯示存取儲存體帳戶之 Azure 儲存體總管的螢幕擷取畫面。

將資料從 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 取代為裝載您檔案的目錄路徑
  • mystorageaccount 取代為您的 Blob 儲存體帳戶名稱
  • mycontainer 取代為容器名稱
  • 儲存體帳戶金鑰取代為您的 Blob 儲存體存取金鑰

您可以在 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 儲存體總管中。

顯示儲存體帳戶的螢幕擷取畫面,其中顯示已上傳的 CSV 檔案。

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

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

  • 若要將資料上傳至容器,請選取目標容器,然後選取 [上傳] 按鈕。

    顯示 Azure 儲存體總管中 [上傳] 按鈕的螢幕擷取畫面。

  • 在 [檔案] 方塊右側選取省略符號 (...),從檔案系統中選取一或多個要上傳的檔案,然後選取 [上傳] 以開始上傳檔案。

    顯示 [上傳檔案] 對話方塊的螢幕擷取畫面。

從 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

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

顯示前 10 個資料列的螢幕擷取畫面。

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 的詳細資訊,請參閱 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 成為有效的分析環境。