你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure SQL 托管实例和 SQL Server 中机器学习服务之间的主要差异
本文介绍 Azure SQL 托管实例中的机器学习服务与 SQL Server 机器学习服务在功能上的几个主要区别。
语言支持
SQL 托管实例和 SQL Server 中的机器学习服务都支持 Python 和 R 扩展性框架。 SQL 托管实例的一个关键区别是仅支持 Python 和 R,不能添加 Java 等外部语言。
Python 和 R 的初始版本在 SQL 托管实例和 SQL Server 中有所不同:
平台 | 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 开始,SQL 安装程序不再随附或安装有 R、Python 和 Java 的运行时。 请改为安装所需的 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 脚本。