Azure SQL Managed Instance と SQL Server の Machine Learning Services の主な違い
この記事では、Azure SQL Managed Instance の Machine Learning Services と SQL 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 には利用できません。
次のステップ
- 詳細については、「Azure SQL Managed Instance の Machine Learning Services」を参照してください。
- Machine Learning Services で Python を使用する方法については、Python スクリプトの実行に関するページを参照してください。
- Machine Learning Services で R を使用する方法については、R スクリプトの実行に関するページを参照してください。