Principais diferenças entre os Serviços de Machine Learning na Instância Gerenciada de SQL do Azure e SQL Server

Este artigo descreve as poucas, principais diferenças na funcionalidade entre os Serviços de Machine Learning na Instância Gerenciada de SQL do Azure e dos Serviços de Machine Learning do SQL Server.

Suporte ao idioma

Os Serviços de Machine Learning na Instância Gerenciada de SQL e no SQL Server dão suporte à estrutura de extensibilidadedo Python e do R. Uma diferença importante na Instância Gerenciada de SQL é que há suporte para o Python e o R e que linguagens externas como o Java não podem ser adicionadas.

As versões iniciais do Python e do R são diferentes na Instância Gerenciada de SQL e no SQL Server:

Plataforma Versão de runtime do Python Versões de runtime do R
Instância Gerenciada do Azure SQL 3.7.2 3.5.2
SQL Server 2022 * - -
SQL Server 2019 3.7.1 3.5.2
Microsoft SQL Server 2017 3.5.2 e 3.7.2 (CU22 e posteriores) 3.3.3 e 3.5.2 (CU22 e posteriores)
SQL Server 2016 Não disponível 3.2.2 e 3.5.2 (SP2 CU14 e posteriores)

* A partir do SQL Server 2022, os runtimes para R, Python e Java não são mais fornecidos nem instalados na Instalação do SQL. Portanto, instale os pacotes e os runtimes personalizados R e/ou Python desejados. Para obter mais informações, confira Instalar os Serviços de Machine Learning (Python e R) do SQL Server 2022 no Windows.

Pacotes do Python e do R

Não há suporte na Instância Gerenciada de SQL para pacotes que dependem de runtimes externos (como Java) ou que precisam acessar APIs de OS para instalação ou uso.

Para obter mais informações sobre o gerenciamento de pacotes do Python e do R, consulte:

Gerenciar pacotes por meio de sqlmlutils

Você poderá instalar pacotes binários com sqlmlutils se conseguir fazer o build localmente para produzir um pacote binário como saída. Para ver exemplos, confira Instalar pacotes do R com o sqlmlutils e Instalar pacotes do Python com o sqlmlutils.

Governança de recursos

Na Instância Gerenciada de SQL, não é possível limitar os recursos do R por meio do Resource Governor e não há suporte para pools de recursos externos.

Por padrão, os recursos do R são definidos como um máximo de 20% dos recursos da Instância Gerenciada de SQL disponíveis quando a extensibilidade está habilitada. Para alterar esse percentual padrão, crie um tíquete de suporte do Azure em https://azure.microsoft.com/support/create-ticket/.

A extensibilidade está habilitada com os seguintes comandos SQL (a Instância Gerenciada de SQL será reiniciada e estará indisponível por alguns segundos):

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

Para desabilitar a extensibilidade e restaurar 100% da memória e dos recursos de CPU para o SQL Server, use os seguintes comandos:

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

O total de recursos disponíveis para Instância Gerenciada de SQL depende de qual camada de serviço você escolher. Para saber mais, confira Modelos de compra do Banco de Dados SQL do Azure.

Erro de memória insuficiente

O uso de memória depende de quanta memória é usada nos scripts R e o número de consultas paralelas em execução. Se não houver memória suficiente disponível para o R, você receberá uma mensagem de erro. Mensagens de erro comuns:

  • 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.

Se receber um desses erros, você poderá resolvê-los dimensionando seu banco de dados para uma camada de serviço superior.

Se você encontrar erros de memória insuficiente na Instância Gerenciada de SQL do Azure, revise sys.dm_os_out_of_memory_events.

Pools da Instância Gerenciada de SQL

Atualmente, não há suporte para os Serviços de Machine Learning nos pools da Instância Gerenciada de SQL do Azure (versão prévia).

Acesso à rede de saída

O acesso à rede não é permitido ou está bloqueado, e não pode ser habilitado. A conexão de rede de saída para a Instância Gerenciada de SQL do Azure não está disponível para os serviços do Machine Learning

Próximas etapas