Azure SQL 受控執行個體和 SQL Server 中機器學習服務的主要差異
本文說明 Azure SQL 受控執行個體中的機器學習服務與 SQL Server 機器學習服務在功能上的若干主要差異。
語言支援
SQL 受控執行個體和 SQL Server 中的機器學習服務都支援 Python 和 R 擴充性架構。 SQL 受控執行個體中的一個主要差異在於,只支援 Python 和 R,而且無法新增 Java 等外部語言。
SQL 受控執行個體和 SQL Server 中的 Python 和 R 的初始版本有所不同:
平台 | Python 執行階段版本 | R 執行階段版本 |
---|---|---|
Azure SQL 受控執行個體 | 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 機器學習服務 (Python 與 R)。
Python 和 R 套件
SQL 受控執行個體不支援相依於外部執行階段 (例如 Java) 或需要存取 OS API 以進行安裝或使用的套件。
如需管理 Python 和 R 套件的詳細資訊,請參閱:
透過 sqlmlutils 管理套件
如果您可以在本機組建以產生二進位套件作為輸出,則可以使用 sqlmlutils
安裝二進位套件。 如需範例,請參閱使用 sqlmlutils 安裝 R 套件和使用 sqlmlutils 安裝 Python 套件。
資源管理
在 SQL 受控執行個體中,無法透過 Resource Governor 來限制 R 資源,且不支援外部資源集區。
根據預設,啟用擴充性時,R 資源最多設定為可用 SQL 受控執行個體資源的 20%。 若要變更此預設百分比,請在 https://azure.microsoft.com/support/create-ticket/ 上建立 Azure 支援票證。
使用下列 SQL 命令啟用擴充性 (SQL 受控執行個體將重新啟動,且會有數秒的時間無法使用):
sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE;
若要停用擴充性並將 100% 的記憶體和 CPU 資源還原至 SQL Server,請使用下列命令:
sp_configure 'external scripts enabled', 0;
RECONFIGURE WITH OVERRIDE;
可供 SQL 受控執行個體使用的資源總數取決於您選擇的服務層級。 如需詳細資訊,請參閱 Azure SQL 資料庫購買模型。
記憶體不足錯誤
記憶體使用量取決於 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 受控執行個體中發生記憶體不足的錯誤,請檢閱 sys.dm_os_out_of_memory_events。
SQL 受控執行個體集區
目前 Azure SQL 受控執行個體集區 (預覽版) 上不支援機器學習服務。
輸出網路存取
不允許或已封鎖網路存取,且無法啟用。 Azure SQL 受控執行個體的輸出網路連線不適用於機器學習服務。
下一步
- 請參閱 Azure SQL 受控執行個體中的機器學習服務概觀。
- 若要了解如何在機器學習服務中使用 Python,請參閱執行 Python 指令碼。
- 若要了解如何在機器學習服務中使用 R,請參閱執行 R 指令碼。