| title | Install on Linux | |
|---|---|---|
| titleSuffix | SQL Server Machine Learning Services | |
| description | Learn how to install SQL Server Machine Learning Services on Linux: Red Hat, Ubuntu, and SUSE. | |
| author | WilliamDAssafMSFT | |
| ms.author | wiassaf | |
| manager | rothja | |
| ms.date | 05/24/2022 | |
| ms.topic | how-to | |
| ms.prod | sql | |
| ms.technology | machine-learning-services | |
| monikerRange | >=sql-server-ver16||>=sql-server-linux-ver16 | |
| ms.custom |
|
[!INCLUDE SQL Server 2022 - Linux]
This article guides you in the installation of SQL Server Machine Learning Services on Linux. Python and R scripts can be executed in-database using Machine Learning Services.
You can install Machine Learning Services on Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES), and Ubuntu. For more information, see the Supported platforms section in the Installation guidance for SQL Server on Linux.
::: moniker range=">=sql-server-linux-ver15"
Important
This article refers to [!INCLUDEsssql22-md]. For [!INCLUDEsssql22-md], see to Install SQL Server 2019 Machine Learning Services (Python and R) on Linux. ::: moniker-end
-
Install SQL Server on Linux and verify the installation.
-
Check the SQL Server Linux repositories for the Python and R extensions. If you already configured source repositories for the database engine install, you can run the mssql-mlservices package install commands using the same repo registration.
-
You should have a tool for running T-SQL commands.
- You can use Azure Data Studio, a free database tool that runs on Linux, Windows, and macOS.
On an internet-connected device, packages are downloaded and installed independently of the database engine using the package installer for each operating system. The following table describes all available packages, but for R and Python, you specify packages that provide either the full feature installation or the minimum feature installation.
Available installation packages for SQL Server 2022 on Linux:
| Package name | Applies-to | Description |
|---|---|---|
| mssql-server-extensibility | All | Extensibility framework used to run Python and R. |
sudo yum install mssql-server-extensibilityTODO
Refer to Quickstart: Install SQL Server and create a database on Ubuntu for SQL Server 2022 on Linux installation. Then, use the following steps to install SQL Server Machine Learning Services on Ubuntu:
The following commands register the repository providing the R language platform.
Tip
If possible, run apt-get update to refresh packages on the system prior to installation.
-
Begin installation as root.
sudo su
-
Optionally, if your system does not have the
https apt transportoption:apt-get install apt-transport-https
-
Set the location of the package repo the "prod" directory containing the distribution. This example specifies 20.04. Replace with 16.04 or 14.04 if you want those versions.
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
-
Register the repository.
dpkg -i packages-microsoft-prod.deb
-
Update packages on your system (required).
apt-get update
-
Install the SQL Server extensibility feature.
apt-get install mssql-server-extensibility
-
Download and install the version of R that is desired. Choose a version of R 4.2 or higher, available for download directly from cran.r-project.org. Follow the instructions for the desired runtime.
-
Prepare RevoScaleR dependencies by retrieving the installation key, installing it, and then removing the public key.
cd /tmp # Get the key wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB # Install key apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB # Remove the public key file rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB # exit the root shell
-
Install the RevoScaleR dependencies.
sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list' apt-get update apt-get install -y intel-mkl-2019.2-057 -
Install CompatibilityAPI and RevoScale R dependencies. There are two options to perform this, from the R terminal of the version you have installed, or shell.
# R Terminal install.packages("iterators") install.packages("foreach") install.packages("R6") install.packages("jsonlite")
which R cd /io/runtime/R4.2/lib/R/bin ./R -e "install.packages('iterators',repos = 'http://cran.us.r-project.org')" ./R -e "install.packages('foreach',repos = 'http://cran.us.r-project.org')" ./R -e "install.packages('R6',repos = 'http://cran.us.r-project.org')" ./R -e "install.packages('jsonlite',repos = 'http://cran.us.r-project.org')"
-
Download the CompatibilityAPI for Linux.
-
Install the CompatibilityAPI for Linux, using the following shell script.
./R -e "install.packages('CompatibilityAPI', repos = NULL, type='source')" -
Download RevoScaleR Linux.
-
Install RevoScaleR Linux.
./R -e "install.packages('RevoScaleR', repos = NULL, type='source')" -
Provision permissions of the BxlServer.
chmod +x /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/BxlServer
-
Copy necessary libraries.
sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_gnu_thread.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_gnu_thread.so sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_gf_lp64.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_gf_lp64.so sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_core.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_core.so sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_vml_mc3.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_vml_mc3.so sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_vml_def.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_vml_def.so sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_def.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_def.so sudo cp /opt/intel/compilers_and_libraries_2019.2.187/linux/mkl/lib/intel64_lin/libmkl_avx2.so /io/runtime/R4.2/lib/R/library/RevoScaleR/rxLibs/x64/libmkl_avx2.so
-
Verify RevoScaleR installation from the R terminal.
library("RevoScaleR") -
Configure the installed R runtime with SQL Server for Linux.
sudo /opt/mssql/bin/mssql-conf set extensibility rbinpath /io/runtime/R4.2/lib/R/bin/R sudo /opt/mssql/bin/mssql-conf set extensibility datadirectories /io/runtime/R4.2/ systemctl restart mssql-launchpadd.service
-
Configure SQL Server for Linux to allow external scripts using the
sp_configuresystem stored procedure.EXEC sp_configure 'external scripts enabled', 1; GO RECONFIGURE GO
-
Verify the installation by executing a simple T-SQL command to return the version of R:
EXEC sp_execute_external_script @script=N'print(R.version)',@language=N'R'; GO
-
Begin installation as root.
sudo su
-
Update packages on your system (required).
apt-get update
-
Install the SQL Server extensibility feature.
apt-get install mssql-server-extensibility
-
To install Python 3.10, first install the dependency packages necessary to configure Python.
apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev apt-get install -y build-essential checkinstall
-
There are two options to install python, either from the source or using
apt install:To install from the source:
wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz tar -xf Python-3.10.0.tgz cd Python-3.10.0 ./configure --enable-shared --libdir=/usr/lib && make && make altinstall
To install using
apt install:apt install -y software-properties-common add-apt-repository ppa:deadsnakes/ppa -y apt install -y python3.10 libpython3.10 apt install -y python3.10-distutils curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 python3.10 -m pip install /home/<your user>/temp/revoscalepy-10.0.0-py3-none-any.whl
-
Prepare revoscalepy dependencies by retrieving the installation key, installing it, and then removing the public key.
cd /tmp # now get the key: wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB # now install that key apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB # now remove the public key file exit the root shell rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
-
Install revoscalepy dependencies.
sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list' apt-get update apt-get install -y intel-mkl-2019.2-057 -
Download revoscalepy for Linux.
-
Install revoscalepy for the root user.
TODO WHAT IF NOT IN A CONTAINER?
# From host copy to docker container docker cp drop_build_main_linux.zip <container id>:/ #Back on docker container unzip drop_build_main_linux.zip sudo -H pip3.10 install /drop_build_main_linux/revoscalepy/Linux/revoscalepy-10.0.0-py3-none-any.whl
-
Verify the revoscalepy installation from the python terminal. Verify the library can be imported.
import revoscalepy
-
Configure the installed python runtime with SQL Server. This step will differ based on what option you chose in step 2.
To verify the installation from source:
sudo /opt/mssql/bin/mssql-conf set extensibility pythonbinpath /usr/local/bin/python3.10 sudo /opt/mssql/bin/mssql-conf set extensibility datadirectories /usr/local/
To verify the installation from
apt install:sudo /opt/mssql/bin/mssql-conf set extensibility pythonbinpath /usr/bin/python3.10 sudo /opt/mssql/bin/mssql-conf set extensibility datadirectories /usr/local/:/usr/local/lib/python3.10/dist-packages
-
Restart the Launchpad service.
systemctl restart mssql-launchpadd.service
-
Configure SQL Server for Linux to allow external scripts using the
sp_configuresystem stored procedure.EXEC sp_configure 'external scripts enabled', 1; GO RECONFIGURE GO
-
Verify the installation by executing a simple T-SQL command to return the version of python:
EXEC sp_execute_external_script @script=N'import sys;print(sys.version)',@language=N'Python'; GO
To install the Java language extension, see Install SQL Server Java Language Extension on Linux.
To validate installation:
-
Run a T-SQL script that executes a system stored procedure invoking Python or R using a query tool.
-
Execute the following SQL command to test R execution in SQL Server. Errors? Try a service restart,
sudo systemctl restart mssql-server.service.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 the following SQL command to test Python execution in SQL Server.
EXEC sp_execute_external_script @language =N'Python', @script=N' OutputDataSet = InputDataSet; ', @input_data_1 =N'SELECT 1 AS hello' WITH RESULT SETS (([hello] int not null)); GO
Using the unattended install for the Database Engine, add the packages for mssql-mlservices and EULAs.
Use one of the mlservices-specific EULA parameters for the open-source R and Python distributions:
sudo /opt/mssql/bin/mssql-conf setup accept-eula-mlThe complete EULA is documented at Configure SQL Server on Linux with the mssql-conf tool.
Follow the Offline installation instructions for steps on installing the packages. Find your download site, and then download specific packages using the package list below.
Tip
Several of the package management tools provide commands that can help you determine package dependencies. For yum, use sudo yum deplist [package]. For Ubuntu, use sudo apt-get install --reinstall --download-only [package name] followed by dpkg -I [package name].deb.
Download packages from https://packages.microsoft.com/. All of the mlservices packages for Python and R are colocated with database engine package. Base version for the mlservices packages is 9.4.6.
| Package | Download location |
|---|---|
| mssql/mlservices packages | https://packages.microsoft.com/rhel/8/mssql-server-2019/ |
| Package | Download location |
|---|---|
| mssql/mlservices packages | https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/ |
Select extensions you want to use and download the packages necessary for a specific language. The filenames include platform information in the suffix.
Python developers can learn how to use Python with SQL Server by following these tutorials:
- Python tutorial: Predict ski rental with linear regression in SQL Server Machine Learning Services
- Python tutorial: Categorizing customers using k-means clustering with SQL Server Machine Learning Services
R developers can get started with some simple examples, and learn the basics of how R works with SQL Server. For your next step, see the following links: