Azure SQL Managed Instance と SQL Server の Machine Learning Services の主な違い

この記事では、Azure SQL Managed Instance の Machine Learning ServicesSQL Server Machine の Learning Services の主な違いについて説明します。

言語のサポート

SQL Managed Instance と SQL Server の Machine Learning Services はどちらも、Python と R の拡張機能フレームワークをサポートしています。 SQL Managed Instance の主な相違点は、Python と R のみがサポートされており、Java などの外部言語を追加できないことです。

Python と R の初期バージョンは、SQL Managed Instance と SQL Server で異なります。

プラットフォーム Python ランタイムのバージョン R ランタイムのバージョン
Azure SQL Managed Instance 3.7.2 3.5.2
SQL Server 2022 * - -
SQL Server 2019 3.7.1 3.5.2
SQL Server 2017 3.5.2 および 3.7.2 (CU22 以降) 3.3.3 および 3.5.2 (CU22 以降)
SQL Server 2016 使用できません 3.2.2 および 3.5.2 (SP2 CU14 以降)

SQL Server 2022 以降、R、Python、Java のランタイムは、発送および SQL セットアップ内へのインストールが行われなくなりました。 代わりに、R または Python のカスタム ランタイムとパッケージをインストールします。 詳細については、「Windows に SQL Server 2022 Machine Learning Services (Python と R) をインストールする」を参照してください。

Python および R のパッケージ

SQL Managed Instance では、外部ランタイム (Java など) に依存するか、インストールまたは使用のための OS API へのアクセスが必要なパッケージはサポートされません。

Python および R パッケージの管理の詳細については、以下を参照してください。

sqlmlutils を使用してパッケージを管理する

バイナリ パッケージをローカルにビルドして出力として生成することができる場合は、sqlmlutils を使用してバイナリ パッケージをインストールできます。 例については、「sqlmlutils を使用して R パッケージをインストールする」または「sqlmlutils を使用した Python パッケージのインストール」を参照してください。

リソース管理

SQL Managed Instance では、Resource Governor よって R リソースを制限することはできません。また、外部リソース プールはサポートされていません。

既定では、機能拡張が有効になっている場合、R リソースは使用可能な SQL Managed Instance リソースの最大 20% に設定されます。 この既定の割合を変更するには、https://azure.microsoft.com/support/create-ticket/ で Azure サポート チケットを作成します。

次の SQL コマンドを使用して拡張機能が有効になります (SQL Managed Instance が再起動され、数秒間使用できなくなります)。

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

拡張機能を無効にし、メモリと CPU リソースの 100% を SQL Server に戻すには、次のコマンドを使用します。

sp_configure 'external scripts enabled', 0;
RECONFIGURE WITH OVERRIDE;

SQL Managed Instance で使用できるリソースの合計は、選択したサービス レベルによって異なります。 詳細については、「Azure SQL Database purchasing models」 (Azure SQL Database の購入モデル) を参照してください。

メモリ不足エラー

メモリ使用量は、R スクリプトでの使用量と、実行されている並列クエリの数によって決まります。 R に使用できるメモリが不足している場合は、エラー メッセージが表示されます。 一般的なエラー メッセージは次のとおりです。

  • Unable to communicate with the runtime for 'R' script for request id: *******. Please check the requirements of 'R' runtime
  • 'R' script error occurred during execution of 'sp_execute_external_script' with HRESULT 0x80004004. ...an external script error occurred: "..could not allocate memory (0 Mb) in C function 'R_AllocStringBuffer'"
  • An external script error occurred: Error: cannot allocate vector of size.

これらのエラーのいずれかが発生した場合は、データベースをより高いサービス レベルにスケーリングすることで解決できます。

Azure SQL Managed Instance でメモリ不足エラーが発生した場合は、sys.dm_os_out_of_memory_events を確認します。

SQL Managed Instance のプール

現在、Machine Learning Services は Azure SQL Managed Instance プール (プレビュー)ではサポートされていません。

送信ネットワーク アクセス

ネットワーク アクセスは許可されないかブロックされ、有効にできません。 Azure SQL Managed Instance の送信ネットワーク接続は、Machine Learning Service には利用できません。

次のステップ