Instalar modelos de machine learning pré-treinados no SQL Server

Aplica-se a: SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x)

Este artigo aplica-se ao SQL Server 2016 (13.x), SQL Server 2017 (14.x) e SQL Server 2019 (15.x).

Este artigo explica como usar o PowerShell para adicionar modelos de machine learning pré-treinados gratuitos para análise de sentimento e definição de recursos de imagens a uma instância de SQL Server que tenha integração com R ou Python. Os modelos pré-treinados são criados pela Microsoft e prontos para uso, adicionados a uma instância do como uma tarefa pós-instalação. Para obter mais informações sobre esses modelos, confira a seção Recursos deste artigo.

A partir do SQL Server 2022 (16.x), os runtimes do R, do Python e do Java não são mais instalados com a Instalação do SQL. Portanto, instale os pacotes e os runtimes personalizados R e/ou Python desejados. Para obter mais informações, confira Instalar os Serviços de Machine Learning (Python e R) do SQL Server 2022 no Windows.

Depois de instalados, os modelos pré-treinados são considerados um detalhe de implementação que capacita funções específicas nas bibliotecas MicrosoftML (R) e microsoftml (Python). Você não deve (e não pode) exibir, personalizar nem treinar novamente modelos, tampouco tratá-los como um recurso independente em código personalizado ou emparelhado com outras funções.

Para usar os modelos pré-treinados, chame as funções listadas na tabela a seguir.

Função do R (MicrosoftML) Função do Python (microsoftml) Uso
getSentiment get_sentiment Gera uma pontuação de sentimentos positiva/negativa sobre entradas de texto.
featurizeImage featurize_image Extrai informações de texto de entradas de arquivo de imagem.

Pré-requisitos

Os algoritmos de aprendizado de máquina fazem uso de computação intensiva. Recomendamos 16 GB de RAM para cargas de trabalho baixas a moderadas, incluindo a conclusão das instruções passo a passo do tutorial usando todos os dados de exemplo.

Você deve ter direitos de administrador no computador e no SQL Server para adicionar modelos pré-treinados.

Os scripts externos precisam estar habilitados e o serviço SQL Server LaunchPad precisa estar em execução. As instruções de instalação fornecem as etapas para habilitar e verificar essas funcionalidades.

Baixe e instale a atualização cumulativa mais recente para sua versão do SQL Server. Confira as Atualizações mais recentes do Microsoft SQL Server.

O pacote MicrosoftML do R ou o pacote MicrosoftML do Python contém os modelos pré-treinados.

Os Serviços de Machine Learning do SQL Server incluem versões da biblioteca de aprendizado de máquina em ambas as linguagens de programação, portanto, esse pré-requisito é atendido sem que você realize nenhuma ação adicional. Já que as bibliotecas estão presentes, você pode usar o script do PowerShell descrito neste artigo para adicionar os modelos pré-treinados a essas bibliotecas.

O pacote MicrosoftML do R contém os modelos pré-treinados.

O SQL Server R Services, que é somente em R, não inclui o pacote MicrosoftML pronto para uso. Para adicionar o MicrosoftML, você precisa fazer uma atualização de componente. Uma vantagem da atualização do componente é que você pode adicionar simultaneamente os modelos pré-treinados, o que torna desnecessária a execução do script do PowerShell. No entanto, se você já fez a atualização, mas não adicionou os modelos pré-treinados na primeira vez, você ainda pode executar o script do PowerShell, conforme descrito neste artigo. Ele funciona para ambas as versões do SQL Server. Antes de fazer isso, confirme se a biblioteca MicrosoftML existe em C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library.

Verificar se os modelos pré-treinados estão instalados

Os caminhos de instalação dos modelos do R e do Python são os seguintes:

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

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

Os nomes de arquivos de modelo estão listados abaixo:

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

Se os modelos já estiverem instalados, vá direto para a etapa de validação para confirmar a disponibilidade.

Baixar o script de instalação

Visite https://aka.ms/mlm4sql para baixar o arquivo Install-MLModels.ps1.

Executar com privilégios elevados

  1. Inicie o PowerShell. Na barra de tarefas, clique com o botão direito do mouse no ícone do programa PowerShell e selecione Executar como administrador.

  2. A política de execução recomendada durante a instalação é "RemoteSigned". Para obter mais informações sobre como definir a política de execução do PowerShell, confira Set-ExecutionPolicy. Por exemplo:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  3. Insira um caminho totalmente qualificado para o arquivo de script de instalação e inclua o nome da instância. Se pressupormos a existência da pasta Downloads e de uma instância padrão, o comando teria a seguinte aparência:

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

Saída

Em uma instância padrão dos Serviços de Machine Learning do SQL Server com R e Python conectada à Internet, você deverá ver mensagens semelhantes às seguintes.

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>

Verifique a instalação

Primeiro, verifique os novos arquivos na pasta mxlibs. Em seguida, execute o código de demonstração para confirmar se os modelos estão instalados e funcionando.

Etapas de verificação do R

  1. Inicie o RGUI.EXE em C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64.

  2. Cole o script R a seguir no prompt de comando.

    # 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. Pressione Enter para exibir as pontuações de sentimentos. A saída deverá ser conforme demonstrado a seguir:

    > 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
    

Etapas de verificação do Python

  1. Inicie Python.exe em C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES.

  2. Cole o script Python a seguir no prompt de comando

    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. Pressione Enter para imprimir as pontuações. A saída deverá ser conforme demonstrado a seguir:

    >>> 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
    >>>
    

Observação

Se os scripts de demonstração falharem, verifique primeiro a localização do arquivo. Em sistemas com várias instâncias do SQL Server ou em instâncias que são executadas lado a lado com versões autônomas, é possível que o script de instalação faça uma leitura incorreta do ambiente e coloque os arquivos na localização errada. Normalmente, copiar os arquivos manualmente para a pasta mxlib correta corrige o problema.

Exemplos usando modelos pré-treinados

O link a seguir inclui o código de exemplo que invoca os modelos pré-treinados.

Pesquisa e recursos

Atualmente, os modelos disponíveis são modelos de DNN (rede neural profunda) para análise de sentimentos e classificação de imagem. Todos os modelos pré-treinados foram treinados usando o Microsoft CNTK (Cognitive Toolkit).

A configuração de cada rede foi baseada nas seguintes implementações de referência:

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

Para obter mais informações sobre os algoritmos usados nesses modelos de aprendizado profundo e o modo como eles são implementados e treinados usando o CNTK, confira estes artigos:

Confira também