Windows に SQL Server Machine Learning Services (Python と R) をインストールする

適用対象: SQL Server 2016 (13.x)、 SQL Server 2017 (14.x)、 SQL Server 2019 (15.x)

この記事では、Windows に SQL Server Machine Learning Services をインストールする方法について説明します。 Machine Learning Services を使用して、データベース内で Python および R スクリプトを実行できます。

重要

これらの手順は、SQL Server 2016 (13.x)、SQL Server 2017 (14.x)、SQL Server 2019 (15.x) に適用されます。 SQL Server 2022 (16.x) については、Windows での SQL Server 2022 Machine Learning Services のインストールに関するページを参照してください。

インストール前のチェックリスト

  • データベース エンジンのインスタンスが必要です。 Python または R の機能だけをインストールすることはできませんが、既存のスタンドアロン インスタンスにそれらを段階的に追加することはできます。

  • 事業継続のために、Machine Learning Services では Always On 可用性グループがサポートされています。 各ノードに Machine Learning Services をインストールし、パッケージを構成します。

  • SQL Server 2017 の Always On フェールオーバー クラスター インスタンスでは、Machine Learning Services のインストールは "サポートされていません。" SQL Server 2019 以降ではサポートされています。 Machine Learning Services はインストール時にインストールする必要があり、インストール後に既存のフェールオーバー クラスター インスタンスに機能を追加することはできません。

  • Machine Learning Services をドメイン コントローラーにインストールしないでください。 セットアップの Machine Learning Services の部分が失敗します。

  • 共有機能>Machine Learning Server (スタンドアロン) を、データベース インスタンスを実行している同じコンピューターにインストールしないでください。 スタンドアロン サーバーにより同じリソースの競合が発生するため、両方のインストールのパフォーマンスが低下することになります。

  • 他のバージョンの Python および R とのサイドバイサイド インストールはサポートされていますが、お勧めしません。 これがサポートされているのは、SQL Server インスタンスでは、オープンソースの R および Anaconda ディストリビューションの独自のコピーが使用されるからです。 お勧めしないのは、SQL Server 外のコンピューター上で Python および R を使用するコードを実行すると、問題が発生する可能性があるためです。

    • 別のライブラリと別の実行可能ファイルを使用すると、SQL Server で実行している機能とは矛盾する結果が作成されます。
    • SQL Server は外部ライブラリで実行されている R スクリプトと Python スクリプトを管理できないため、リソースの競合が発生します。

注意

Machine Learning Services は、既定で SQL Server ビッグ データ クラスターにインストールされます。 ビッグ データ クラスターを使用する場合、この記事の手順を実行する必要はありません。 詳細については、ビッグ データ クラスターでの Machine Learning Services (Python および R) の使用に関するページを参照してください。

重要

セットアップが完了したら、この記事で説明されている構成後の手順を必ず完了してください。 これらの手順には、SQL Server で外部スクリプトを使用できるようにすることや、ユーザーに代わって SQL Server が R ジョブや Python ジョブを実行するために必要なアカウントを追加することが含まれます。 通常、構成を変更するには、インスタンスを再起動するか、Launchpad サービスを再起動する必要があります。

インストール メディアを入手する

SQL Server のダウンロード場所は、エディションによって異なります。

  • SQL Server Enterprise、Standard、Express の各エディション。 これらのエディションには、運用環境で使用するためのライセンスが付与されます。 Enterprise および Standard エディションのインストール メディアについては、ソフトウェア販売元に問い合わせてください。 購入に関する情報および Microsoft パートナーのディレクトリについては、 マイクロソフトの購入 Web サイトをご覧ください。
  • 最新の無償版

Python および R と Machine Learning Services との統合をサポートする SQL Server エディションの詳細については、「SQL Server 2017 のエディションとサポートされる機能」を参照してください。

Python および R と Machine Learning Services との統合をサポートする SQL Server エディションの詳細については、「SQL Server 2019 のエディションとサポートされる機能」を参照してください。

セットアップを実行する

ローカルでのインストールの場合、管理者としてセットアップを実行する必要があります。 SQL Server をリモート共有からインストールする場合は、そのリモート共有に対する読み取り権限と実行権限を持つドメイン アカウントを使用する必要があります。

  1. SQL Server のセットアップ ウィザードを開始します。

  2. [インストール] タブで、 [SQL Server の新規スタンドアロン インストールを実行するか、既存のインストールに機能を追加します] を選択します。

    Screenshot that shows the option for creating a SQL Server standalone installation or adding features to an existing installation.

    Screenshot that shows the option for using a new SQL Server standalone installation or adding features to an existing installation.

  3. [機能の選択] ページで、次のオプションを選択します。

    • データベース エンジン サービス

      SQL Server で R および Python を使用するには、データベース エンジンのインスタンスをインストールする必要があります。 既定のインスタンスまたは名前付きインスタンスを使用できます。

    • Machine Learning Services (データベース内)

      このオプションを選択すると、R および Python スクリプトの実行をサポートするデータベース サービスがインストールされます。

    • データベース エンジン サービス

      SQL Server で R または Python を使用するには、データベース エンジンのインスタンスをインストールする必要があります。 既定のインスタンスまたは名前付きインスタンスを使用できます。

    • Machine Learning Services および言語の拡張

      このオプションを選択すると、R および Python スクリプトの実行をサポートするデータベース サービスがインストールされます。

    • R

      Microsoft R パッケージ、インタープリター、およびオープンソース R を追加するには、このオプションを選択します。

    • Python

      Microsoft Python パッケージや Python 3.5 実行可能ファイルを追加し、Anaconda ディストリビューションからライブラリを選択するには、このオプションを選択します。

    Java のインストールと使用の詳細については、「Windows 上に SQL Server の Java 言語拡張をインストールする」を参照してください。

    Screenshot that shows feature options for R and Python.

    Screenshot that shows selecting feature options for R and Python.

    Note

    [共有機能][Machine Learning Server (スタンドアロン)] オプションは選択しないでください。 このオプションは別のコンピューターで使用することを意図しています。

  1. [Microsoft R Open のインストールに同意する] ページで、[同意する]>[次へ] の順に選択します。

    使用許諾契約書の対象:

    • Microsoft R Open:
    • オープンソース R の基本パッケージとツール。
    • Microsoft 開発チームの R パッケージと接続プロバイダーが強化されました。
  2. [Python のインストールに同意する] ページで、[同意する]>[次へ] の順に選択します。 Python のオープンソース ライセンス契約では、Anaconda および関連するツールに加えて、Microsoft 開発チームからのいくつかの新しい Python ライブラリも対象となっています。

    Note

    ご使用のコンピューターがインターネットにアクセスできない場合は、この時点でセットアップを一時停止して、個別にインストーラーをダウンロードできます。 詳細については、インターネットへのアクセスなしで機械学習コンポーネントをインストールするに関するページを参照してください。

  3. [インストールの準備完了] ページで、以下が選択されていることを確認した後、[インストール] を選択します。

    • データベース エンジン サービス
    • Machine Learning Services (データベース内)
    • R または Python、あるいはその両方

    構成ファイルが格納されている ..\Setup Bootstrap\Log パスの下にあるフォルダーの場所をメモしておきます。 セットアップが完了したら、インストールされたコンポーネントを概要ファイルで確認できます。

  4. セットアップが完了し、コンピューターの再起動を求めるメッセージが表示されたら、再起動してください。 セットアップが完了した時点で、インストール ウィザードのメッセージを確認することが重要です。 詳細については、「SQL Server セットアップ ログ ファイルの表示と読み取り」を参照してください。

  1. [Microsoft R Open のインストールに同意する] ページで、[同意する]>[次へ] の順に選択します。 このライセンス契約は、Microsoft R Open (オープンソースの R 基本パッケージとツールのディストリビューションを含む) を対象としています。 Microsoft 開発チームの強化された R パッケージと接続プロバイダーも含まれます。

  2. [Python のインストールに同意する] ページで、[同意する]>[次へ] の順に選択します。 Python のオープンソース ライセンス契約では、Anaconda および関連するツールに加えて、Microsoft 開発チームからのいくつかの新しい Python ライブラリも対象となっています。

  3. [インストールの準備完了] ページで、以下が選択されていることを確認した後、[インストール] を選択します。

    • データベース エンジン サービス
    • Machine Learning Services (データベース内)
    • R または Python、あるいはその両方

    構成ファイルが格納されている ..\Setup Bootstrap\Log パスの下にあるフォルダーの場所をメモしておきます。 セットアップが完了したら、インストールされたコンポーネントを概要ファイルで確認できます。

  4. セットアップが完了し、コンピューターの再起動を求めるメッセージが表示されたら、再起動してください。 セットアップが完了した時点で、インストール ウィザードのメッセージを確認することが重要です。 詳細については、「SQL Server セットアップ ログ ファイルの表示と読み取り」を参照してください。

環境変数の設定

R 機能のみを統合する場合、MKL_CBWR 環境変数を設定して、Intel Math Kernel Library (MKL) 計算からの一貫した出力を保証する必要があります。

  1. コントロール パネルで、[システムとセキュリティ]>[システム]>[システムの詳細設定]>[環境変数] の順に選択します。

  2. 新しいユーザー変数またはシステム変数を作成します。

    • 変数名を MKL_CBWR に設定します。
    • 変数値を AUTO に設定します。

この手順では、サーバーを再起動する必要があります。 スクリプトの実行を有効にしようとしている場合、すべての構成作業が完了するまで再起動を遅らせることができます。

スクリプトの実行を有効にする

  1. SQL Server Management Studio (SSMS) または Azure Data Studio を使用して、SQL Server Machine Learning Services をインストールしたインスタンスに接続します。

  2. [新しいクエリ] を選択してクエリ ウィンドウを開き、次のコマンドを実行します。

    EXEC sp_configure
    
  3. プロパティ external scripts enabled の値は、この時点では 0 であることが必要です。 この機能は既定でオフになっています。 オンにして R または Python スクリプトを実行できるようにするには、次のステートメントを実行します。

    EXEC sp_configure  'external scripts enabled', 1
    RECONFIGURE WITH OVERRIDE
    

    R 言語に対してこの機能を既に有効にしている場合は、Python に対して RECONFIGURE を再度実行する必要はありません。 基になる拡張機能プラットフォームでは、両方の言語がサポートされています。

サービスを再起動します。

インストールが完了したら、データベース エンジンを再起動します。 サービスを再起動すると、関連する SQL Server Launchpad サービスも自動的に再起動されます。

次のいずれかの方法を使用して、サービスを再起動できます。

  • SSMS の オブジェクト エクスプローラー のインスタンスについて [再起動] コマンドを右クリックします。
  • コントロール パネルの Services Microsoft 管理コンソール (MMC) 項目
  • SQL Server 構成マネージャー

インストールの確認

次の手順に従って、外部スクリプトの起動に使用されるすべてのコンポーネントが実行されていることを確認します。

  1. SQL Server Management Studio で、新しいクエリ ウィンドウを開き、次のコマンドを実行します。

    EXECUTE sp_configure  'external scripts enabled'
    

    run_value1 に設定されます。

  2. [サービス] コントロール パネル項目または SQL Server 構成マネージャーを開き、SQL Server Launchpad サービスが実行されていることを確認します。 R または Python がインストールされているすべてのデータベース エンジンのインスタンスに対して 1 つのサービスがある必要があります。 サービスの詳細については、「SQL Server Machine Learning Services の機能拡張アーキテクチャ」を参照してください。

  3. スタート パッドが実行されている場合は、単純な Python および R スクリプトを実行して、外部スクリプト ランタイムから SQL Server と通信できることを確認できます。

    SQL Server Management Studio で新しい [クエリ] ウィンドウを開き、次のようなスクリプトを実行します。

    • R の場合:

      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
      
    • Python の場合:

      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
      

    最初に外部スクリプト ランタイムを読み込む際には、スクリプトの実行に少し時間がかかります。 結果は次のようになります。

    hello
    1

Note

Python スクリプトで使用される列または見出しは、自動的には返されません。 出力に列名を追加するには、戻り値のデータ セットに対してスキーマを指定する必要があります。 これを行うには、ストアド プロシージャの WITH RESULTS パラメーターを使用して、列に名前を付け、SQL データ型を指定します。

たとえば、次の行を追加して、任意の列名 (WITH RESULT SETS ((Col1 AS int))) を生成できます。

更新プログラムの適用

既存のインストール

既存の SQL Server インスタンスに Machine Learning Services を追加済みで、以前に累積的な更新プログラム (CU) を適用している場合は、データベース エンジンのバージョンと Machine Learning Services の機能が異なる可能性があります。 launchpad.exesqlservr.exe のバージョンが異なるため、この違いにより予期しない動作やエラーが発生する可能性があります。

Machine Learning Services をデータベース エンジンと同じバージョンにするには、次の手順を実施します。

  1. データベース エンジンの累積的な更新プログラムを確認します。 次の T-SQL ステートメントを実行します。

    SELECT @@VERSION
    

    次に示すのは、SQL Server 2019 CU 8 からの出力の例です。

    Microsoft SQL Server 2019 (RTM-CU8-GDR) (KB4583459) - 15.0.4083.2 (X64)   Nov  2 2020 18:35:09   Copyright (C) 2019 Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Enterprise 10.0 (X64) (Build 19042: ) (Hypervisor)
    

    詳細については、「SQL Server とそのコンポーネントのバージョン、エディション、更新レベルを確認する」を参照してください。

  2. 必要に応じて、データベース エンジンにインストールした累積的な更新プログラムをダウンロードします。

  3. 累積的な更新プログラムのインストールを実行し、指示に従って Machine Learning Services に再度インストールします。 Machine Learning Services がインストールされている既存のインスタンスを選択します。 アップグレードの状態として、[機能の選択] ページに [インストールが不完全です] と表示されます。

  4. [次へ] を選択し、インストールを続行します。

新しいインストール

SQL Server データベース エンジンの新しいインストール環境で Machine Learning Services をインストールする場合は、データベース エンジンと機械学習の両方のコンポーネントに最新の累積的な更新プログラムを適用することをお勧めします。

インターネットに接続したデバイスでは、累積的な更新プログラムは通常 Windows Update によって適用されます。 ただし、制御された更新には次の手順を使用することもできます。 データベース エンジンに更新プログラムを適用すると、同じインスタンスにインストールしたすべての Python 機能や R 機能の累積更新プログラムがセットアップによってプルされます。

切断されたサーバーには追加の手順が必要です。 詳細については、インターネット アクセスなしでコンピューターにインストールする > 累積的な更新プログラムを適用するを参照してください。

  1. 既にインストールされているベースライン インスタンスを使用して開始します: SQL Server の初回リリース。

  2. Microsoft SQL Server の更新プログラムの一覧」に移動します。

  3. 最新の累積的な更新プログラムを選択します。 実行可能ファイルがダウンロードされ、自動的に抽出されます。

  4. セットアップを実行し、使用許諾条件に同意します。

  5. [機能の選択] ページで、累積的な更新プログラムが適用される機能を確認します。 機械学習機能を含む、現在のインスタンスにインストールされているすべての機能が表示されます。 セットアップにより、すべての機能を更新するために必要な CAB ファイルがダウンロードされます。

    Screenshot that shows a summary of installed features.

  6. ウィザードの手順を続行します。 R および Python ディストリビューションのライセンス条項に同意します。

追加構成

外部スクリプトの検証手順が成功した場合は、SQL Server Management Studio、Visual Studio Code、または T-SQL ステートメントをサーバーに送信できる他の任意のクライアントから、R または Python コマンドを実行できます。

コマンドを実行したときにエラーが発生した場合、サービスまたはデータベースに追加の構成を行うことが必要な場合があります。 インスタンス レベルでは、追加の構成に次のものが含まれます。

Windows の SQL Server 2019 では、分離メカニズムが変更されています。 このメカニズムは、SQLRUserGroup、ファイアウォール規則、ファイルのアクセス許可、および暗黙の認証に影響します。 詳細については、Machine Learning Services の分離の変更に関するページを参照してください。

データベースで構成の更新が必要になる場合があります。 詳細については、「SQL Server Machine Learning Services にユーザー アクセス許可を付与する」を参照してください。

注意

追加の構成が必要かどうかは、SQL Server をインストールしたセキュリティ スキーマと、ユーザーをどのようにデータベースに接続して外部スクリプトを実行させるかによって異なります。

推奨される最適化

これですべてが機能するようになったので、機械学習をサポートするようにサーバーを最適化したり、事前トレーニング済みの機械学習モデルをインストールしたりすることもできます。

ワーカー アカウントを追加する

多くのユーザーが同時にスクリプトを実行する場合は、Launchpad サービスに割り当てられるワーカー アカウントの数を増やすことができます。 詳細については、「SQL Server Machine Learning Services での外部スクリプトの同時実行のスケーリング」を参照してください。

スクリプトの実行用にサーバーを最適化する

SQL Server セットアップの既定の設定は、さまざまな他のサービスおよびアプリケーションに対してサーバーのバランスを最適化することを目的としています。

既定の設定では、特にメモリを集中的に使用する操作では、機械学習のリソースが制限または調整されることがあります。

確実に機械学習ジョブの優先順位が適切に設定され、リソースが提供されるようにするには、SQL Server Resource Governor を使って外部リソース プールを構成することをお勧めします。 また、SQL Server データベース エンジンに割り当てられるメモリの量を変更したり、SQL Server Launchpad サービスで実行するアカウントの数を増やしたりすることもできます。

Standard Edition を使用していて、Resource Governor がない場合は、動的管理ビュー、SQL Server 拡張イベント、Windows イベント監視を使用してサーバー リソースを管理できます。

Python と R の追加パッケージをインストールする

SQL Server 用に作成する Python および R ソリューションでは、次のものを呼び出すことができます。

  • 基本関数。
  • SQL Server と共にインストールされた専用パッケージの関数。
  • SQL Server によってインストールされたオープンソースの Python および R のバージョンと互換性のあるサードパーティ製のパッケージ。

SQL Server で使用するパッケージは、インスタンスで使用される既定のライブラリにインストールする必要があります。 コンピューター上に Python または R の別のインストールがある場合、またはパッケージをユーザー ライブラリにインストールした場合は、これらのパッケージが T-SQL から使用できなくなります。

追加のパッケージをインストールして管理するには、ユーザー グループを設定してデータベース レベルでパッケージを共有するか、ユーザーが独自のパッケージをインストールできるようにデータベース ロールを構成します。 詳細については、Python パッケージのインストール新しい R パッケージのインストールに関するページを参照してください。

次のステップ

Python 開発者は、次のチュートリアルに従って、SQL Server で Python を使用する方法を学習できます。

R 開発者はいくつかの簡単な例を試して、SQL Server での R の動作方法の基本を確認できます。 次の手順については、以下のリンクを参照してください。