![](https://habrastorage.org/getpro/habr/upload_files/8e6/a76/7a3/8e6a767a3628df74d05424de33cf4b3b.png)
В статье описано, как настроить сервисы машинного обучения для R и Python. Несмотря на большой опыт в IT, сразу у меня не работает примерно ничего. Поэтому будут ссылки на то, что делать, если сразу не завелось. В итоге я поставила новый экземпляр (instance) SQL Server с сервисами машинного обучения, которые, наконец! заработали.
Изначально в SQL Server 2016 появилась возможность выполнить скрипты на R на данных в SQL Server, новый компонент назывался “SQL Server R Services”. В 2017 добавили поддержку Python, и с 2019 года — Java, а компонент переименовали в «Сервисы машинного обучения» (Machine Learning Services).
Сначала расскажу, что сделать, чтобы заработало, а потом кратко изложу свои двухдневные страдания. В идеальном мире, после установки экземпляра MS SQL Server, остался дистрибутив и он той же версии, что и сам экземпляр. В этом случае запускаете Setup. Выбираете пункт "New SQL Server stand-alone installation or add features to an existing instance"
![](https://habrastorage.org/getpro/habr/upload_files/ace/eda/26f/aceeda26fe7032f9d104e2a37d8a6a04.png)
И далее на списке компонент выбираете "Instance Features -> Machine Learning Services and Languages"
![](https://habrastorage.org/getpro/habr/upload_files/d14/8ea/543/d148ea5434f977c02d2f30343a29ccd4.png)
НЕ выбирайте Standalone Shared сервисы машинного обучения (Shared Features Machine Leaning Services Standalone).
Когда установка завершена, запускаете SQL Server Configuration Manager. На Windows 10 Configuration Manager прячется тут C:\Windows\SysWOW64\SQLServerManager15.msc для
В SQL Server Configuration Manager перезапустите экземпляр MS SQL Server, к которому добавляли сервисы машинного обучения.
Далее создаем системную переменную окружения "MKL_CBWR" со значением "AUTO"
![](https://habrastorage.org/getpro/habr/upload_files/c6b/e76/2a0/c6be762a0c8fe4f55006f4a04974b82d.png)
![](https://habrastorage.org/getpro/habr/upload_files/ea4/a6c/2c4/ea4a6c2c4317b6675cb81cb673c1f982.png)
![](https://habrastorage.org/getpro/habr/upload_files/3c0/d76/a36/3c0d76a361ea3118958bc7111a86c53d.png)
Снова возвращаемся в SQL Configuration Manager и запускаем службу SQL Server Launchpad. После того, как служба успешно запустилась, запускаем SQL Server Management Studio и выполняем активацию сервисов машинного обучения.
EXEC sp_configure 'external scripts enabled', 1
RECONFIGURE
EXEC sp_configure 'external scripts enabled'
И видим результат
![](https://habrastorage.org/getpro/habr/upload_files/ef7/8c5/e57/ef78c5e5794031c9ec7ec6f3584b7255.png)
![](https://habrastorage.org/getpro/habr/upload_files/a8d/158/635/a8d1586351bb97cbf89521fe1f18e46d.png)
Выполняем Hello world
на R и Python
EXEC sp_execute_external_script @language =N'R'
, @script=N'OutputDataSet <- InputDataSet;'
, @input_data_1 =N'SELECT 1 AS hello'
WITH RESULT SETS (([hello] int not null));
GO
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'OutputDataSet = InputDataSet'
, @input_data_1 = N'SELECT 1 AS hello'
WITH RESULT SETS(([hello] INT));
GO
И получаем результат
![](https://habrastorage.org/getpro/habr/upload_files/e0c/a54/924/e0ca549242a851a3e5bcbd1248f99c07.png)
Счастье – сервисы машинного обучения настроены!
Итак, мой путь, видимо, прошел почти со всеми граблями, на которые можно было наступить. Я ставила SQL Server довольно давно и удалила исходный дистрибутив, поэтому скачала его заново SQL Server 2019 Developer Edition, что бы использовать в качестве источника компоненты машинного обучения.
Мне попалась статья, которая предлагала установить Standalone Shared Services, и я их установила. Не заработало. Смотрим документацию Microsoft и видим, что shared features устанавливать не рекомендуется, если есть SQL Server на машине («если ничего не помогает, прочтите наконец документацию»)
![](https://habrastorage.org/getpro/habr/upload_files/2df/32b/f8b/2df32bf8b14401686acffed688ad0eb6.png)
Затем установила Machine Learning Services из документации (теперь уже те, что нужно), попробовала запустить службу – ошибка. В журнале событий (в Windows 10 Просмотр событий –> Журнал событий Windows -> Система)
![](https://habrastorage.org/getpro/habr/upload_files/307/100/254/3071002547af251ecbe5925b5a04a701.png)
Несмотря на то, что в документации этого не сказано напрямую, я подумала, что могут влиять установленные Shared Services, поскольку памяти на компьютере не очень много и они конкурируют за ресурс. Удалила Shared Services через Удаление программ. Не помогло.
Нашлось два варианта статей на тему "Что делать, если служба не стартует?":
Первый говорит, что служба не стартует, потому что версия установленных сервисов машинного обучения отличается от экземпляра. (где-то тут).
Второй называет причиной то, что не хватает прав, но при проверке у меня не оказалось пользователя SQLRUserGroup, и я решила вернуться к идее с неверной версией.
![](https://habrastorage.org/getpro/habr/upload_files/ad3/fee/d8e/ad3feed8eb598f84c22b3e6a6be07934.png)
![](https://habrastorage.org/getpro/habr/upload_files/2dc/416/a36/2dc416a36c6ee001a23aa62430408768.png)
Я решила вернуться к идее с различными версиями и поставила кумулятивное обновление, надеясь, что обновится и SQL Server и Machine Learning Services. Не помогло. Более того, после обновления дистрибутив перестал давать возможность добавить компонент к существующему экземпляру. Пострадав немного, все-таки поставила новый экземпляр SQL Server и, как вы понимаете, теперь можно увидеть разницу версий.
![](https://habrastorage.org/getpro/habr/upload_files/326/0e5/9d4/3260e59d49f35de788ea848e4ea31a66.png)
SQL server кумулятивный апдейт считает, что служба обновлена вместе с экземпляром SQL Server
![](https://habrastorage.org/getpro/habr/upload_files/374/ab3/286/374ab3286a7832a945828c41c4fb7315.png)
Версия службы в SQL Configuration Manager все еще как до обновления.
![](https://habrastorage.org/getpro/habr/upload_files/809/6a1/e7b/8096a1e7bb3e62fb754076a00b38e8e4.png)
Stackoverflow тред про незапускающуюся службу и попытку исправить это через разрешение TCP соединени также, к сожалению, не помог.
![](https://habrastorage.org/getpro/habr/upload_files/c6c/3c9/b93/c6c3c9b93918034f8b5bdcecdda2d73e.png)
![](https://habrastorage.org/getpro/habr/upload_files/5d6/f48/fea/5d6f48fea5f63ff4fa244f5d594f5680.png)
Мораль — не отчаивайтесь, если у вас что-то долго не получается или не работает. По крайней мере, есть еще люди, у которых также не сработало все, что могло не сработать.
Именно поэтому я стараюсь не рассказывать про установку и настройку софта на открытых уроках, а показываю уже использование установленного продукта. Приходите на открытый урок, на котором разберем примеры аналитики данных и библиотек машинного обучения, встроенных в SQL Server.
Isiirk
Не могли бы вы написать статью про то, как теперь это использовать?
KristinaMyLife Автор
Конечно, "продолжение в следующих сериях" :) будет статья про использование на R и на Python. На открытых уроках тоже будет соответственно примеры с использованием скриптов на R и соответственно отдельно на Python.