Установка предварительно обученных моделей машинного обучения в 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 для добавления бесплатных предварительно обученных моделей машинного обучения для анализа тональности и определения характеристик изображений в экземпляр SQL Server с интегрированным R или Python. Предварительно обученные модели созданы корпорацией Майкрософт и готовы к использованию. Они добавлены в экземпляр в качестве задачи, выполняемой после установки. Дополнительные сведения об этих моделях см. в разделе Ресурсы этой статьи.

Начиная с SQL Server 2022 (16.x) среды выполнения для R, Python и Java больше не устанавливаются вместе с программой установки SQL. Желаемые пользовательские среды и пакеты R и (или) Python необходимо устанавливать самостоятельно. Дополнительные сведения см. в статье Установка Служб машинного обучения SQL Server 2022 (Python и R) в Windows.

После установки предварительно обученные модели рассматриваются как компонент реализации, на основе которого работают специальные функции в библиотеках MicrosoftML (R) и microsoftml (Python). Вы не можете просматривать, настраивать и повторно обучать модели, а также обрабатывать их как независимый ресурс в пользовательском коде или в других функциях.

Чтобы использовать предварительно обученные модели, вызовите функции, указанные в следующей таблице.

Функция R (MicrosoftML) Функция Python (microsoftml) Использование
getSentiment get_sentiment Формирует положительную или отрицательную оценку тональности для текстовых входных данных.
featurizeImage featurize_image Извлекает текстовые данные из входного файла изображения.

Предварительные требования

Алгоритмы машинного обучения обладают высокими требованиями к вычислительным ресурсам. Мы рекомендуем использовать 16 ГБ ОЗУ для рабочих нагрузок с низкой или средней интенсивностью, включая пошаговые руководства со всеми примерами данных.

Для добавления предварительно обученных моделей необходимо иметь права администратора на компьютере и на SQL Server.

Необходимо включить внешние сценарии, а на SQL Server должна быть запущена служба панели запуска. Инструкции по установке содержат инструкции по включению и проверке этих компонентов.

Скачайте и установите последнее накопительное обновление для вашей версии SQL Server. См. Последние обновления для Microsoft SQL Server.

Пакет R MicrosoftML и пакет Python microsoftml содержат предварительно обученные модели.

Службы машинного обучения 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

Если модели уже установлены, перейдите к шагу проверки, чтобы подтвердить доступность.

Скачивание сценария установки

Чтобы скачать файл Install-MLModels.ps1, перейдите на страницу https://aka.ms/mlm4sql.

Выполнение с повышенными привилегиями

  1. Запустите PowerShell. На панели задач щелкните правой кнопкой мыши значок программы PowerShell и выберите Запуск от имени администратора.

  2. Рекомендуемая политика выполнения в процессе установки — "RemoteSigned". Дополнительные сведения о настройке политики выполнения PowerShell см. в разделе Set-ExecutionPolicy. Пример.

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  3. Введите полный путь к файлу сценария установки, указав имя экземпляра. Если сценарий находится в папке Downloads и используется экземпляр по умолчанию, команда может выглядеть следующим образом:

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

Выходные данные

На экземпляре по умолчанию Служб машинного обучения SQL Server с R и Python, подключенном к Интернету, вы должны увидеть сообщения, аналогичные приведенным ниже.

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. Запустите файл RGUI.EXE в папке C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\R_SERVICES\bin\x64.

  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. Нажмите клавишу ВВОД, чтобы просмотреть оценки тональности. Выходные данные должны выглядеть следующим образом:

    > 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. Запустите файл Python.exe в папке C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES.

  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. Нажмите клавишу ВВОД, чтобы распечатать оценки. Выходные данные должны выглядеть следующим образом:

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

Примеры использования предварительно обученных моделей

По приведенной ссылке можно найти пример кода, в котором вызываются предварительно обученные модели.

Исследования и ресурсы

Сейчас доступны модели глубокой нейронной сети для анализа тональности и классификации изображений. Все предварительно обученные модели были обучены с помощью Computation Network Toolkit от корпорации Майкрософт (CNTK).

Конфигурация каждой сети была основана на следующих эталонных реализациях:

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

Дополнительные сведения об алгоритмах, используемых в этих моделях глубокого обучения, и о том, как они реализуются и обучаются с помощью CNTK, см. в следующих статьях:

См. также раздел