Share via


在 SQL Server上安裝預先定型的機器學習模型

適用於: SQL Server 2016 (13.x)、 SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)

本文適用於 SQL Server 2016 (13.x)、SQL Server 2017 (14.x) 和 SQL Server 2019 (15.x)。

本文說明如何使用 Powershell 將「情緒分析」與「影像特徵化」其預先定型免費機器學習模型新增到整合了 R 或 Python 的 SQL Server 執行個體。 預先定型的模型是由 Microsoft 所建置並可立即使用,並新增至執行個體作為安裝後工作。 如需有關這些模型的詳細資訊,請參閱此文章的資源一節。

從 SQL Server 2022 (16.x) 開始,R、Python 和 JAVA 的執行階段將不再隨 SQL 安裝程式一起安裝。 相反地,安裝所需的 R 和/或 Python 自訂執行階段和套件。 如需詳細資訊,請參閱在 Windows 上安裝 SQL Server 2022 機器學習服務 (Python 與 R)

安裝完成後,預先定型的模型會被視為支援 MicrosoftML (R) 與 MicrosoftML (Python) 程式庫中特定函式的實作詳細資料。 您不應該(也不能) 檢視、自訂或重新定型模型,也不能將它們視為自訂程式碼中的獨立資源或配對其他函式。

若要使用預先定型的模型,請呼叫下表所列的函式。

R 函式 (MicrosoftML) Python 函式 (microsoftml) 使用量
getSentiment get_sentiment 根據文字輸入產生正負情緒分數。
featurizeImage featurize_image 從影像檔案輸入擷取文字資訊。

Prerequisites

機器學習演算法需要大量計算。 針對低至中等的工作負載 (包括使用所有範例資料完成教學課程逐步解說),我們建議使用 16 GB 的 RAM。

您必須擁有電腦與 SQL Server 上的系統管理員權限,才能新增預先定型的模型。

必須啟用外部指令碼,而且 SQL Server LaunchPad 服務必須為執行中。 安裝指示提供啟用及驗證這些功能的步驟。

為您的 SQL Server 版本下載並安裝最新累積更新。 請參閱適用於 Microsoft SQL Server 的最新更新

MicrosoftML R 套件microsoftml Python 套件包含預先定型的模型。

SQL Server 機器學習服務同時包括機器學習程式庫的兩個語言版本,因此您不需採取任何進一步的動作,就能符合此先決條件。 因為程式庫存在,所以您可以使用此文章中所述的 PowerShell 指令碼將預先定型的模型新增到這些程式庫。

MicrosoftML R 套件包含預先定型的模型。

SQL Server R Services (僅限 R) 預設不包括 MicrosoftML 套件。 若要新增 MicrosoftML,您必須執行元件升級。 元件升級的其中一個優點是您可以同時新增預先定型的模型,讓您不需要執行 PowerShell 指令碼。 不過,如果您已升級,而且一開始錯過新增預先定型的模型,您可以依照此文章所述執行 PowerShell 指令碼。 這適用於兩個版本的 SQL Server。 在您執行之前,請確認 MicrosoftML 程式庫存在於 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library

檢查是否已安裝預先定型的模型

R 與 Python 模型的安裝路徑如下所示:

  • 針對 R:C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\library\MicrosoftML\mxLibs\x64

  • 針對 Python:C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\Lib\site-packages\microsoftml\mxLibs

模型檔案名稱如下所列:

  • AlexNet_Updated.model
  • ImageNet1K_mean.xml
  • pretrained.model
  • ResNet_101_Updated.model
  • ResNet_18_Updated.model
  • ResNet_50_Updated.model

若已安裝模型,請直接跳到驗證步驟以確認可用性。

下載安裝指令碼

請造訪 https://aka.ms/mlm4sql 以下載 Install-MLModels.ps1 檔案。

以提高的權限執行

  1. 啟動 PowerShell。 在工作列上,以滑鼠右鍵按一下 PowerShell 程式圖示,然後選取 [以系統管理員身分執行] 。

  2. 安裝期間的建議執行原則為 "RemoteSigned"。 如需設定 PowerShell 執行原則的詳細資訊,請參閱 Set-ExecutionPolicy。 例如:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  3. 輸入安裝指令碼檔案的完整路徑,並包含執行個體名稱。 假設您使用 [下載] 資料夾與預設執行個體,命令看起來可能像下面這樣:

    PS C:\WINDOWS\system32> C:\Users\<user-name>\Downloads\Install-MLModels.ps1 MSSQLSERVER
    

輸出

在已連線到網際網路且具有 R 與 Python 的 SQL Server 機器學習服務預設執行個體上,您應該會看到像下面的訊息。

MSSQL14.MSSQLSERVER
     Verifying R models [9.2.0.24]
     Downloading R models [C:\Users\<user-name>\AppData\Local\Temp]
     Installing R models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\]
     Verifying Python models [9.2.0.24]
     Installing Python models [C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES\]
PS C:\WINDOWS\system32>

確認安裝

首先,檢查 mxlibs 資料夾中的新檔案。 接下來,執行示範程式碼以確認模型已安裝且正常運作。

R 驗證步驟

  1. 啟動位於 C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64 的 RGUI.EXE

  2. 在命令提示字元中,貼上下列 R 指令碼。

    # Create the data
    CustomerReviews <- data.frame(Review = c(
    "I really did not like the taste of it",
    "It was surprisingly quite good!",
    "I will never ever ever go to that place again!!"),
    stringsAsFactors = FALSE)
    
    # Get the sentiment scores
    sentimentScores <- rxFeaturize(data = CustomerReviews, 
                                    mlTransforms = getSentiment(vars = list(SentimentScore = "Review")))
    
    # Let's translate the score to something more meaningful
    sentimentScores$PredictedRating <- ifelse(sentimentScores$SentimentScore > 0.6, 
                                            "AWESOMENESS", "BLAH")
    
    # Let's look at the results
    sentimentScores
    
  3. 按 Enter 以檢視情緒分數。 輸出應該如下所示:

    > sentimentScores
                                            Review SentimentScore
    1           I really did not like the taste of it      0.4617899
    2                 It was surprisingly quite good!      0.9601924
    3 I will never ever ever go to that place again!!      0.3103435
    PredictedRating
    1            BLAH
    2     AWESOMENESS
    3            BLAH
    

Python 驗證步驟

  1. 啟動位於 C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES 的 Python.EXE

  2. 在命令提示字元中,貼上下列 Python 指令碼

    import numpy
    import pandas
    from microsoftml import rx_logistic_regression, rx_featurize, rx_predict, get_sentiment
    
    # Create the data
    customer_reviews = pandas.DataFrame(data=dict(review=[
                "I really did not like the taste of it",
                "It was surprisingly quite good!",
                "I will never ever ever go to that place again!!"]))
    
    # Get the sentiment scores
    sentiment_scores = rx_featurize(
        data=customer_reviews,
        ml_transforms=[get_sentiment(cols=dict(scores="review"))])
    
    # Let's translate the score to something more meaningful
    sentiment_scores["eval"] = sentiment_scores.scores.apply(
                lambda score: "AWESOMENESS" if score > 0.6 else "BLAH")
    print(sentiment_scores)
    
  3. 按 Enter 以列印分數。 輸出應該如下所示:

    >>> print(sentiment_scores)
                                                review    scores         eval
    0            I really did not like the taste of it  0.461790         BLAH
    1                  It was surprisingly quite good!  0.960192  AWESOMENESS
    2  I will never ever ever go to that place again!!  0.310344         BLAH
    >>>
    

注意

若示範指令碼失敗,請先檢查檔案位置。 在具有多個 SQL Server 執行個體或與獨立版本並存執行之執行個體的系統上,安裝指令碼可能會不正確地讀取環境,並將檔案放在錯誤的位置。 通常,手動將檔案複製到正確的 mxlib 資料夾即可修正問題。

使用預先定型模型的範例

下列連結包含會叫用預先定型模型的範例程式碼。

研究與資源

目前可用的模型為適用於情緒分析與影像分類的深度類神經網路 (DNN) 模型。 所有預先定型的模型都是使用 Microsoft 的計算網路工具組 (或稱 CNTK) 來定型的。

每個網路的設定都是以下列參考實作為基礎:

  • ResNet-18
  • ResNet-50
  • ResNet-101
  • AlexNet

如需有關這些深度學習模型中所使用之演算法,以及如何使用 CNTK 來加以執行及定型的詳細資訊,請參閱下列文章:

另請參閱