Установка предварительно обученных моделей машинного обучения на 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. Вместо этого установите нужные среды выполнения и пакеты 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.

Пакет 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

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

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

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

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

  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.

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

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

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

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

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

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

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