SlideShare una empresa de Scribd logo
Integración de Python dentro de SQL Server
Ing. Eduardo Castro, PhD
Agenda
•Intro
•Operacionalización
Aprendizaje de máquina
•Demo
•Intro
Servicios de aprendizaje de máquina de SQL Server
•Clasificación de productos
•Optimización de campañas
•Detección de fraudes usando puntuación nativa
Aprendizaje de clientes
Introducción
al aprendizaje
de máquina
• Predecir las propiedades de los nuevos datos
aprendiendo de una muestra
• Predecir las ventas de tiendas en una
región basada en ventas históricas
• Predecir la probabilidad de fraude en una
nueva transacción con tarjeta de crédito
• Predecir el valor predeterminado de un
nuevo préstamo basado en el historial de
préstamos/transacciones
• Predecir el sentimiento de un nuevo Tweet
• Clasificar nuevas imágenes basándose en
imágenes de ejemplo y atributos
• Clasificar los datos en grupos o clústeres
• Tecnologías populares de ML
• R & Python
Por qué Machine Learning con SQL Server?
Reducir o eliminar
movimiento de
datos con
analítica en base de
datos
Operacionalización
de modelos de
aprendizaje
automático
Obtenga
escalabilidad
empresarial,
desempeño y
seguridad
Base de datos regular + App Base de datos de inteligencia + App
Trayendo inteligencia a donde viven los datos
Aplicación +
inteligencia
Base
Aplicación
Inteligencia
+ Base de datos
Vs
Implementar análisis predictivos
Desarrollar Entrenar Implementar Consumir
Desarrollar, explore y
experimente en su IDE
favorito
Entrene modelos con
sp_execute_external_
y guarde los modelos
en la base de datos
Implementar ML con
sp_execute_external_
y predecir utilizando los
modelos
Haga que
aplicación/reportes
consumir las predicciones
Por qué el aprendizaje automático en SQL
Server?
Eliminar movimiento de datos
Aproveche la seguridad de la base de datos
Enviar ML Compute a la base de datos
Operacionalización de los scripts y modelos de ML
Llamar a los procedimientos almacenados de T-SQL
Administración de modelos en SQL Server
Rendimiento y escala de grado empresarial
Escala la analítica de R y Python con Multi-Threading y
procesamiento en paralelo
Seguridad de SQL Server, cumplimiento de normas, gobierno de
recursos, desempeño de consultas
Interactúa
directamente
con datos
Administrar datos y
Analytics juntos
Transformaciones SQL
Datos
relacionales
Biblioteca
analítica
Ejemplo
Segmentación
Agrupar clientes, productos y transacciones
en micro-segmentos según posibilidades de
pago
Optimización de precios
Aplicar algoritmos de optimización para
determinar el precio ' punto dulce ' en cada
segmento
Experto
Objetivo
Piso
Después
Selección de atributos
sp_execute_external_script
' R Code'
Herramienta de
selección de atributos
C++/R
Segmentación
Herramienta
C++/R
Segmentación
sp_execute_external_script
' R Code '
Puntuación
sp_execute_external_script
' R Code '
Tablas
de datos
SQL Server
SQL Server
Proc
almace
nado
Tablas
de datos
Antes
Servicios de
aprendizaje
de máquina
en SQL
Server
SQL Server 2016
Soporte de R (versión 3.2.2)
Microsoft R Server
SQL Server 2017
Native Scoring usando la función
de predicción (+ soporte para
Linux)
Biblioteca externa DDL para
administración de paquetes R
Soporte de ejecución de modo
batch para datos de entrada
R Support (versión 3.3.3)
Soporte de Python (Anaconda
3.5.2)
Azure SQL
Database y
los servicios
de
aprendizaje
de máquina
Scoring nativo mediante la función
predecir
Soporte para R (versión 3.3.3)
• Disponible en la región centro oeste de Estados
Unidos
• Niveles de servicio Premium y Premium RS
• Base R packages & RevoscaleR
• Entrenamiento y puntuación de modelos que
caben en la memoria
• Paralelismo trivial y soporte streaming
• Una ejecución concurrente de la escritura de R
Machine
Learning
Server
Soporte multi-
plataforma
Windows, Linux,
Hadoop, SQL Server
Microsoft R Server
RevoScaleR,
MicrosoftML, olapr,
sqlrutils paquetes
Operacionalización de
servicios Web
Microsoft machine
learning Server
Soporte de R & Python
revoscalepy, microsoftml
bibliotecas de Python
rxExecBy
Hadoop cambios
de licencia
5 nodos para cada SQL
Server EE Core bajo
garantía de software
Instalación de ML Services en SQL Server
Servicios de
SQL Server MLServicios de
SQL Server R
Proceso de instalación
Proceso de instalación
Proceso de instalación
Cualquier IDE de
R/Python
Científico de datos
Workstation
Script
Resultados
Ejecución
1
3
Científicos de datos - exploración de datos y
desarrollo de modelos
SQL Server
2
R/Python Runtime
Servicios de
aprendizaje de
máquinas
train <- RxSqlServerData(query,
connectionString, computeContext)
rxLogit(formula, train)
Aplicación exec sp_execute_external_script
@language = ' Python '
, @script =
--código Python--
El procedimiento
almacenado contiene
código R o Python y ejecuta
la base de datos
Desarrollador de aplicaciones-operacionalización del
modelo
Llamada de proc
almacenado
Resultados
1
3
Ejecución
SQL Server
2
R/Python Runtime
Servicios de
aprendizaje de
máquinas
Servicios de aprendizaje de
máquina en SQL Server
• Diseño de la integración de R/Python
• Invoca el tiempo de ejecución fuera del
proceso de SQL Server
• Operaciones orientadas por lotes
• Contexto de cálculo SQL
• Características de sp_execute_external_script
• Transmisión de datos desde SQL
• Ejecución paralela de secuencias de
comandos SQL Query & R/Python
• Scoring Nativo
Demo 01 Habilitar ML
Services
Cualquier IDE de
R/Python
Científico de datos
Workstation
Flujo de trabajo típico de aprendizaje automático contra base
de datos
SQL Server
Obtener
Datos
1
train <- sqlQuery(connection,
“select * from nyctaxi_sample”)
model <- glm(formula, train)
3
Salida del
modelo
2 Ejecución
Cualquier IDE de
R/Python
Científico de datos
Workstation RX* Output3
Flujo de trabajo de aprendizaje automático utilizando el
contexto de cálculo SQL
Ejecución2
SQL Server 2017
SQL Server
R/Python Runtime
Servicios de
aprendizaje de
máquinas
Script1
cc <- RxInSqlServer( connectionString,
computeContext)
rxLogit(formula, cc)
Modelo o
predicciones
4
Contexto de
cálculo SQL
desde
cliente
R/Python
Requisito
Uso de RX* Functions
Ventajas clave
Enviar el cálculo al servidor
Elimine el movimiento de datos
del servidor al cliente
Utilizar recursos de servidor para
la ejecución del script de ML
Ejecución dentro de SQL Server
sp_execute_external_script
@language = N'language' ,
@script = N'script',
@input_data_1 = ] 'input_data_1'
[ , @input_data_1_name = ] N'input_data_1_name' ]
[ , @output_data_1_name = 'output_data_1_name' ]
[ , @parallel = 0 | 1 ]
[ , @params = ] N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]'
[ , @parameter1 = ] 'value1' [ OUT | OUTPUT ] [ ,...n ]
[ WITH <execute_option> ]
[;]
<execute_option>::=
{
{ RESULT SETS UNDEFINED }
| { RESULT SETS NONE }
| { RESULT SETS ( <result_sets_definition> ) }
}
Integración
Python SQL
Server
Launchpad - The SQL Server Trusted Launchpad es un
servicio proporcionado por SQL Server 2017 para
apoyar la ejecución de scripts externos, similar a la
forma en que el servicio de indexación y consulta de
texto completo ejecuta motores separados para el
procesamiento de consultas de texto completo.
Binary Exchange Language (Bxl) Server - BxlServer es
un componente proporcionado por Microsoft que
administra la comunicación entre SQL Server y el
Runtime de Python.
SQL Satellite - Es una nueva API de extensibilidad en
SQL Server que es proporcionada por el motor de
base de datos para código externo. BxlServer utiliza el
SQL Satellite para comunicarse con SQL Server.
Integración Python SQL Server
Demo 02 Ejecución
de Script
Consideraciones
clave de rendimiento
• ¿Cuánto tiempo se tarda en movimiento de datos?
• Uso XEvents o exec sp_execute_external_script
• @language = N'R ', @script =
N ' ', @input_data_1 = <sql_query>
• ¿Cómo puedes separar CPU ¿uso de SQL & R/Python?
• Utilizar el EXTERNAL RESOURCE POOL para la afinidad de
CPU
• ¿Cómo puede asignar más memoria a R/Python?
• El valor predeterminado es 20%
• Utilizar el pool de recursos externos para ajustar el límite de
memoria
• Utilice ‘max server memory’ sp_configure
Enviar datos
de SQL
Server hacia
el External
Runtime
Requisitos:
Suficiente memoria para
los procesos de
R/Python para
almacenar y procesar los
datos
Ventajas clave:
Única opción para las
funciones Cran-R o
Python (no RX*)
El resultado completo de
la consulta se copia en
proceso de R/Python
Desventajas:
Limitado por memoria
asignada a procesos
R/Python
La simultaneidad puede
ser limitada
Enviar datos de SQL Server hacia el External
Runtime
sp_execute_external_
script
@input_data_1 = N’
SELECT * FROM
TrainingData’
InputDataset:
data.frame
OR
Pandas
dataframe
Enviar datos de una consulta a un Runtime Externo
exec sp_execute_external_script
@language = N'R'
, @script = N'
# build classification model to predict tipped or not
model_generation_duration <- system.time(
logitObj <- glm(tipped ~ passenger_count + trip_distance + trip_time_in_secs +
direct_distance, data = InputDataSet,
family = binomial(link=logit)))[3];
# First, serialize a model and put it into a database table
modelbin <- serialize(logitObj, NULL);
'
, @input_data_1 = N'SELECT * FROM nyctaxi_training_sample'
, @params = N'@modelbin varbinary(max) OUTPUT, @model_generation_duration float OUTPUT'
, @modelbin = @model OUTPUT
, @model_generation_duration = @model_generation_duration OUTPUT;
Demo 03 Integración de
datos en SQL Server con
Pyhton Script
Streamming
de ejecución
de scripts de
R/Python
Requisitos:
• No debe tener dependencia entre
filas (ej: scoring)
Ventajas:
• Ejecutar secuencias de comandos
sobre chunks de datos
• Procesar datos que no caben en la
memoria
• Puede ser utilizado desde el cliente
(RX* Function) o servidor
5000
5000
5000
Dataset = 15000 Rows
Sp_execute_external_script
@r_rowsPerRead = 5000
Predict()
Predict()
Predict()
Streaming
SQL Server
Execute R script
Execute R script
Streaming desde el servidor
exec sp_execute_external_script
@language = N'R’
, @script = N'
# unserialize model
logitObj <- unserialize(modelbin);
# build classification model to predict tipped or not
system.time(OutputDataSet <- data.frame(predict(logitObj, newdata = InputDataSet,
type = "response")))[3];
‘
, @input_data_1 = N’
SELECT tipped, passenger_count, trip_time_in_secs, trip_distance, d.direct_distance
FROM dbo.nyctaxi_sample TABLESAMPLE (50 PERCENT) REPEATABLE (98074)
CROSS APPLY [CalculateDistance](pickup_latitude, pickup_longitude,
dropoff_latitude, dropoff_longitude) as d’
, @params = N'@modelbin varbinary(max), @r_rowsPerRead int’
, @modelbin = @model
, @r_rowsPerRead = 5000;
Demo 04 Generación de gráficos con Python
Procesamiento
en paralelo
Requisitos:
Plan de consultas paralelas para
el estatuto SELECT
Sin dependencia entre filas (ej:
scoring) – paralelismo trivial
Utilice funciones rx* para el
entrenamiento en paralelo
Ventajas clave:
Escala a grandes conjuntos de
datos
Aproveche múltiples CPUs
Se integra con la ejecución de
consultas paralelas de SQL
Server
Procesamiento paralelo – paralelismo trivial
Predict()
Predict()
sp_execute_external_
script
@script =
N’Predict…’,
@parallel = 1
(MAXDOP = 2)
<Results>
<Results>
Paralelismo trivial
exec sp_execute_external_script
@language = N'R’
, @script = N'
# unserialize model
logitObj <- unserialize(modelbin);
# build classification model to predict tipped or not
system.time(OutputDataSet <- data.frame(predict(logitObj, newdata = InputDataSet,
type = "response")))[3];
‘
, @input_data_1 = N’
SELECT tipped, passenger_count, trip_time_in_secs, trip_distance, d.direct_distance
FROM dbo.nyctaxi_sample TABLESAMPLE (50 PERCENT) REPEATABLE (98074)
CROSS APPLY [CalculateDistance](pickup_latitude, pickup_longitude,
dropoff_latitude, dropoff_longitude) as d
OPTION(MAXDOP 2) -- Needed only to control DOP’
, @parallel = 1
, @params = N'@modelbin varbinary(max), @r_rowsPerRead int’
, @modelbin = @model
, @r_rowsPerRead = 5000;
Demo 05 Creación de
modelos con Python
Puntuación
nativa
mediante la
función
PREDICT
Requisitos:
• Sólo modelos RX*
• Modelo serializado de rxSerializeModel (R)
• Modelo serializado de rx_serialize_model
(Python)
Ventajas clave:
• Se ejecuta de forma nativa en SQL Server (sin
dependencia de R/Python)
• Baja latencia para la ejecución
• Ideal para la puntuación altamente
concurrente de pocas filas
• Puede ser utilizado en la instrucción
INSERT/UPDATE/MERGE
PREDICT
DECLARE @model varbinary(max) = (
SELECT native_model
FROM models
WHERE model_name = 'Fraud Detection Model’);
INSERT INTO dbo.potential_fraud_transactions
(score, transactionKey)
SELECT p.Label_prob, t.transactionKey
FROM PREDICT(MODEL = @model, DATA = new_transaction)
WITH(Label_prob float) as p;
Operacionalización de aprendizaje automático
Servidor analítico
Servicio separado o lógica
incrustada
• Fácil operacionalización
• Rendimiento
• Alta disponibilidad
• Gobernanza de los recursos
MEJORES
PRÁCTICAS
No
• Ejecutar R/Python script as-is
• Realizar transformaciones de
datos que se pueden lograr en
SQL
• Acceso a recursos de red
• Procesar/transformar archivos
como parte de la llamada al
procedimiento almacenado
• Incrustar el código R/Python
directamente en aplicaciones
• Desarrolle/pruebe de RTVS, PTVS,
Rstudio u otro IDE
• SQL Compute Context desde el cliente
• Procesamiento de datos y
transformaciones en SQL Server
• Integración de datos mediante
funciones de SQL Server
• Gestión de modelos en base de datos
SI
Resumen
• Mejore el rendimiento de sus
comandos ML utilizando:
• SQL Compute context del cliente
(Funciones RX)
• Streaming para reducir el uso de
memoria
• Paralelismo trivial para scoring
(predecir o rxPredict)
• Formación paralela y puntuación
utilizando RX* Functions
• Función de predicción nativa para
puntuación de baja latencia

Más contenido relacionado

PDF
Qlik Sense for Beginners - www.techstuffy.com - QlikView Next Generation
PPTX
Modelador de base de datos ERwin
PDF
Análisis de Datos con MongoDB
PDF
Windows forms c# visual basic .net ejercicios
PPT
presentacion power designer
PDF
MySQL Shell for DBAs
DOCX
Base de datos para la farmacia "José"
PPTX
Big data visualization
Qlik Sense for Beginners - www.techstuffy.com - QlikView Next Generation
Modelador de base de datos ERwin
Análisis de Datos con MongoDB
Windows forms c# visual basic .net ejercicios
presentacion power designer
MySQL Shell for DBAs
Base de datos para la farmacia "José"
Big data visualization

La actualidad más candente (20)

PPTX
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
PDF
Top 5 Trending Business Intelligence Tools | Edureka
PPTX
Introduction of data science
DOCX
Niveles de un sgbd
PPTX
OLAP - Procesamiento Analítico en Línea.
PDF
Manual Básico Knime
PDF
Iso 27001-y-27002-para-la-gestion-de-seguridad-de-la-informacion
PDF
Performance Stability, Tips and Tricks and Underscores
PDF
Programación en OTcl
PPTX
Transferencia de bases de datos entre sistemas gestores
PPTX
Presentacion de Microsoft SQL Server.
PPTX
Taller de Base de Datos - Unidad 6 SQL procedural
PDF
Ejemplo de manual sistema de inventario de operaciones estadisticas
PPTX
Bases de datos, Mysql y phpMyadmin
PPTX
Base de datos Access
PDF
Diseño físico de base de datos - Part I
PDF
RETOS ACTUALES DEL INGENIERO INFORMÁTICO Y DE LAS ÁREAS DE TI.
PPTX
Etapas en el diseño de Base de Datos
PDF
M. carrito d compra en phpfinal
PDF
Diseño y Análisis de una Plataforma e-Commerce
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Top 5 Trending Business Intelligence Tools | Edureka
Introduction of data science
Niveles de un sgbd
OLAP - Procesamiento Analítico en Línea.
Manual Básico Knime
Iso 27001-y-27002-para-la-gestion-de-seguridad-de-la-informacion
Performance Stability, Tips and Tricks and Underscores
Programación en OTcl
Transferencia de bases de datos entre sistemas gestores
Presentacion de Microsoft SQL Server.
Taller de Base de Datos - Unidad 6 SQL procedural
Ejemplo de manual sistema de inventario de operaciones estadisticas
Bases de datos, Mysql y phpMyadmin
Base de datos Access
Diseño físico de base de datos - Part I
RETOS ACTUALES DEL INGENIERO INFORMÁTICO Y DE LAS ÁREAS DE TI.
Etapas en el diseño de Base de Datos
M. carrito d compra en phpfinal
Diseño y Análisis de una Plataforma e-Commerce
Publicidad

Similar a Python dentro de SQL Server (20)

PPTX
Machine Learning en SQL Server
PPTX
02 troubleshooting essentials sql server profiler - sql pass peru
PDF
Commit 2018 - Integrando Microservicios y Machine Learning
PPTX
Introduction to Machine Learning with Azure
PPTX
Microsoft machine learning
PPTX
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
PPT
Exprimiendo SharePoint 2010
PPTX
Escalabilidad en azure sql database con elastic scale
PPTX
Azure sql database escalabilidad
PDF
Novedades sql server 2008 para developers
PDF
Introducción R - Primeros pasos
PDF
Enterprise DB por Eptisa TI
PPTX
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
PPTX
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
DOCX
BD_EQ1_INVESTIGACION_APORTACION_SQLSERVER2008EXPRESS_TODOS
PPT
Clases 30 05
PPTX
SEMANA 1 Introduccion.pptx
PPTX
Minería datos con SQL Server 2012
PPT
Dts y analysis services 2000
PPTX
Machine learning for dummies - Azuges November 2016
Machine Learning en SQL Server
02 troubleshooting essentials sql server profiler - sql pass peru
Commit 2018 - Integrando Microservicios y Machine Learning
Introduction to Machine Learning with Azure
Microsoft machine learning
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...
Exprimiendo SharePoint 2010
Escalabilidad en azure sql database con elastic scale
Azure sql database escalabilidad
Novedades sql server 2008 para developers
Introducción R - Primeros pasos
Enterprise DB por Eptisa TI
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
BD_EQ1_INVESTIGACION_APORTACION_SQLSERVER2008EXPRESS_TODOS
Clases 30 05
SEMANA 1 Introduccion.pptx
Minería datos con SQL Server 2012
Dts y analysis services 2000
Machine learning for dummies - Azuges November 2016
Publicidad

Más de Eduardo Castro (20)

PPTX
Introducción a polybase en SQL Server
PPTX
Creando tu primer ambiente de AI en Azure ML y SQL Server
PPTX
Seguridad en SQL Azure
PPTX
Azure Synapse Analytics MLflow
PPTX
SQL Server 2019 con Windows Server 2022
PPTX
Novedades en SQL Server 2022
PPTX
Introduccion a SQL Server 2022
PPTX
Machine Learning con Azure Managed Instance
PPTX
Novedades en sql server 2022
PDF
Sql server 2019 con windows server 2022
PDF
Introduccion a databricks
PDF
Pronosticos con sql server
PDF
Data warehouse con azure synapse analytics
PPTX
Que hay de nuevo en el Azure Data Lake Storage Gen2
PPTX
Introduccion a Azure Synapse Analytics
PPTX
Seguridad de SQL Database en Azure
PDF
Servicios Cognitivos de de Microsoft
TXT
Script de paso a paso de configuración de Secure Enclaves
PDF
Introducción a conceptos de SQL Server Secure Enclaves
PDF
Que es azure sql datawarehouse
Introducción a polybase en SQL Server
Creando tu primer ambiente de AI en Azure ML y SQL Server
Seguridad en SQL Azure
Azure Synapse Analytics MLflow
SQL Server 2019 con Windows Server 2022
Novedades en SQL Server 2022
Introduccion a SQL Server 2022
Machine Learning con Azure Managed Instance
Novedades en sql server 2022
Sql server 2019 con windows server 2022
Introduccion a databricks
Pronosticos con sql server
Data warehouse con azure synapse analytics
Que hay de nuevo en el Azure Data Lake Storage Gen2
Introduccion a Azure Synapse Analytics
Seguridad de SQL Database en Azure
Servicios Cognitivos de de Microsoft
Script de paso a paso de configuración de Secure Enclaves
Introducción a conceptos de SQL Server Secure Enclaves
Que es azure sql datawarehouse

Último (20)

PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
ACTIVIDAD 2.pdf j
PPTX
Administración se srevidores de apliaciones
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
diagrama de pareto.pdf valerie giraldo diaz
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
PPT
Que son las redes de computadores y sus partes
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
clase auditoria informatica 2025.........
PDF
Maste clas de estructura metálica y arquitectura
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
Presentación PASANTIAS AuditorioOO..pptx
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
ACTIVIDAD 2.pdf j
Administración se srevidores de apliaciones
SAP Transportation Management para LSP, TM140 Col18
Influencia-del-uso-de-redes-sociales.pdf
historia_web de la creacion de un navegador_presentacion.pptx
diagrama de pareto.pdf valerie giraldo diaz
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Aristoteles-y-su-forma-de-entender-el-conocimiento-y-las-personas.pdf
Que son las redes de computadores y sus partes
Temas y subtemas de las fichas 1 y 2.pdf
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
clase auditoria informatica 2025.........
Maste clas de estructura metálica y arquitectura
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Presentación PASANTIAS AuditorioOO..pptx
Trabajo colaborativo Grupo #2.docxmmuhhlk

Python dentro de SQL Server

  • 1. Integración de Python dentro de SQL Server Ing. Eduardo Castro, PhD
  • 2. Agenda •Intro •Operacionalización Aprendizaje de máquina •Demo •Intro Servicios de aprendizaje de máquina de SQL Server •Clasificación de productos •Optimización de campañas •Detección de fraudes usando puntuación nativa Aprendizaje de clientes
  • 3. Introducción al aprendizaje de máquina • Predecir las propiedades de los nuevos datos aprendiendo de una muestra • Predecir las ventas de tiendas en una región basada en ventas históricas • Predecir la probabilidad de fraude en una nueva transacción con tarjeta de crédito • Predecir el valor predeterminado de un nuevo préstamo basado en el historial de préstamos/transacciones • Predecir el sentimiento de un nuevo Tweet • Clasificar nuevas imágenes basándose en imágenes de ejemplo y atributos • Clasificar los datos en grupos o clústeres • Tecnologías populares de ML • R & Python
  • 4. Por qué Machine Learning con SQL Server? Reducir o eliminar movimiento de datos con analítica en base de datos Operacionalización de modelos de aprendizaje automático Obtenga escalabilidad empresarial, desempeño y seguridad
  • 5. Base de datos regular + App Base de datos de inteligencia + App Trayendo inteligencia a donde viven los datos Aplicación + inteligencia Base Aplicación Inteligencia + Base de datos Vs
  • 6. Implementar análisis predictivos Desarrollar Entrenar Implementar Consumir Desarrollar, explore y experimente en su IDE favorito Entrene modelos con sp_execute_external_ y guarde los modelos en la base de datos Implementar ML con sp_execute_external_ y predecir utilizando los modelos Haga que aplicación/reportes consumir las predicciones
  • 7. Por qué el aprendizaje automático en SQL Server? Eliminar movimiento de datos Aproveche la seguridad de la base de datos Enviar ML Compute a la base de datos Operacionalización de los scripts y modelos de ML Llamar a los procedimientos almacenados de T-SQL Administración de modelos en SQL Server Rendimiento y escala de grado empresarial Escala la analítica de R y Python con Multi-Threading y procesamiento en paralelo Seguridad de SQL Server, cumplimiento de normas, gobierno de recursos, desempeño de consultas Interactúa directamente con datos Administrar datos y Analytics juntos Transformaciones SQL Datos relacionales Biblioteca analítica
  • 8. Ejemplo Segmentación Agrupar clientes, productos y transacciones en micro-segmentos según posibilidades de pago Optimización de precios Aplicar algoritmos de optimización para determinar el precio ' punto dulce ' en cada segmento Experto Objetivo Piso
  • 9. Después Selección de atributos sp_execute_external_script ' R Code' Herramienta de selección de atributos C++/R Segmentación Herramienta C++/R Segmentación sp_execute_external_script ' R Code ' Puntuación sp_execute_external_script ' R Code ' Tablas de datos SQL Server SQL Server Proc almace nado Tablas de datos Antes
  • 10. Servicios de aprendizaje de máquina en SQL Server SQL Server 2016 Soporte de R (versión 3.2.2) Microsoft R Server SQL Server 2017 Native Scoring usando la función de predicción (+ soporte para Linux) Biblioteca externa DDL para administración de paquetes R Soporte de ejecución de modo batch para datos de entrada R Support (versión 3.3.3) Soporte de Python (Anaconda 3.5.2)
  • 11. Azure SQL Database y los servicios de aprendizaje de máquina Scoring nativo mediante la función predecir Soporte para R (versión 3.3.3) • Disponible en la región centro oeste de Estados Unidos • Niveles de servicio Premium y Premium RS • Base R packages & RevoscaleR • Entrenamiento y puntuación de modelos que caben en la memoria • Paralelismo trivial y soporte streaming • Una ejecución concurrente de la escritura de R
  • 12. Machine Learning Server Soporte multi- plataforma Windows, Linux, Hadoop, SQL Server Microsoft R Server RevoScaleR, MicrosoftML, olapr, sqlrutils paquetes Operacionalización de servicios Web Microsoft machine learning Server Soporte de R & Python revoscalepy, microsoftml bibliotecas de Python rxExecBy Hadoop cambios de licencia 5 nodos para cada SQL Server EE Core bajo garantía de software
  • 13. Instalación de ML Services en SQL Server Servicios de SQL Server MLServicios de SQL Server R
  • 17. Cualquier IDE de R/Python Científico de datos Workstation Script Resultados Ejecución 1 3 Científicos de datos - exploración de datos y desarrollo de modelos SQL Server 2 R/Python Runtime Servicios de aprendizaje de máquinas train <- RxSqlServerData(query, connectionString, computeContext) rxLogit(formula, train)
  • 18. Aplicación exec sp_execute_external_script @language = ' Python ' , @script = --código Python-- El procedimiento almacenado contiene código R o Python y ejecuta la base de datos Desarrollador de aplicaciones-operacionalización del modelo Llamada de proc almacenado Resultados 1 3 Ejecución SQL Server 2 R/Python Runtime Servicios de aprendizaje de máquinas
  • 19. Servicios de aprendizaje de máquina en SQL Server • Diseño de la integración de R/Python • Invoca el tiempo de ejecución fuera del proceso de SQL Server • Operaciones orientadas por lotes • Contexto de cálculo SQL • Características de sp_execute_external_script • Transmisión de datos desde SQL • Ejecución paralela de secuencias de comandos SQL Query & R/Python • Scoring Nativo
  • 20. Demo 01 Habilitar ML Services
  • 21. Cualquier IDE de R/Python Científico de datos Workstation Flujo de trabajo típico de aprendizaje automático contra base de datos SQL Server Obtener Datos 1 train <- sqlQuery(connection, “select * from nyctaxi_sample”) model <- glm(formula, train) 3 Salida del modelo 2 Ejecución
  • 22. Cualquier IDE de R/Python Científico de datos Workstation RX* Output3 Flujo de trabajo de aprendizaje automático utilizando el contexto de cálculo SQL Ejecución2 SQL Server 2017 SQL Server R/Python Runtime Servicios de aprendizaje de máquinas Script1 cc <- RxInSqlServer( connectionString, computeContext) rxLogit(formula, cc) Modelo o predicciones 4
  • 23. Contexto de cálculo SQL desde cliente R/Python Requisito Uso de RX* Functions Ventajas clave Enviar el cálculo al servidor Elimine el movimiento de datos del servidor al cliente Utilizar recursos de servidor para la ejecución del script de ML
  • 24. Ejecución dentro de SQL Server sp_execute_external_script @language = N'language' , @script = N'script', @input_data_1 = ] 'input_data_1' [ , @input_data_1_name = ] N'input_data_1_name' ] [ , @output_data_1_name = 'output_data_1_name' ] [ , @parallel = 0 | 1 ] [ , @params = ] N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' [ , @parameter1 = ] 'value1' [ OUT | OUTPUT ] [ ,...n ] [ WITH <execute_option> ] [;] <execute_option>::= { { RESULT SETS UNDEFINED } | { RESULT SETS NONE } | { RESULT SETS ( <result_sets_definition> ) } }
  • 25. Integración Python SQL Server Launchpad - The SQL Server Trusted Launchpad es un servicio proporcionado por SQL Server 2017 para apoyar la ejecución de scripts externos, similar a la forma en que el servicio de indexación y consulta de texto completo ejecuta motores separados para el procesamiento de consultas de texto completo. Binary Exchange Language (Bxl) Server - BxlServer es un componente proporcionado por Microsoft que administra la comunicación entre SQL Server y el Runtime de Python. SQL Satellite - Es una nueva API de extensibilidad en SQL Server que es proporcionada por el motor de base de datos para código externo. BxlServer utiliza el SQL Satellite para comunicarse con SQL Server.
  • 28. Consideraciones clave de rendimiento • ¿Cuánto tiempo se tarda en movimiento de datos? • Uso XEvents o exec sp_execute_external_script • @language = N'R ', @script = N ' ', @input_data_1 = <sql_query> • ¿Cómo puedes separar CPU ¿uso de SQL & R/Python? • Utilizar el EXTERNAL RESOURCE POOL para la afinidad de CPU • ¿Cómo puede asignar más memoria a R/Python? • El valor predeterminado es 20% • Utilizar el pool de recursos externos para ajustar el límite de memoria • Utilice ‘max server memory’ sp_configure
  • 29. Enviar datos de SQL Server hacia el External Runtime Requisitos: Suficiente memoria para los procesos de R/Python para almacenar y procesar los datos Ventajas clave: Única opción para las funciones Cran-R o Python (no RX*) El resultado completo de la consulta se copia en proceso de R/Python Desventajas: Limitado por memoria asignada a procesos R/Python La simultaneidad puede ser limitada
  • 30. Enviar datos de SQL Server hacia el External Runtime sp_execute_external_ script @input_data_1 = N’ SELECT * FROM TrainingData’ InputDataset: data.frame OR Pandas dataframe
  • 31. Enviar datos de una consulta a un Runtime Externo exec sp_execute_external_script @language = N'R' , @script = N' # build classification model to predict tipped or not model_generation_duration <- system.time( logitObj <- glm(tipped ~ passenger_count + trip_distance + trip_time_in_secs + direct_distance, data = InputDataSet, family = binomial(link=logit)))[3]; # First, serialize a model and put it into a database table modelbin <- serialize(logitObj, NULL); ' , @input_data_1 = N'SELECT * FROM nyctaxi_training_sample' , @params = N'@modelbin varbinary(max) OUTPUT, @model_generation_duration float OUTPUT' , @modelbin = @model OUTPUT , @model_generation_duration = @model_generation_duration OUTPUT;
  • 32. Demo 03 Integración de datos en SQL Server con Pyhton Script
  • 33. Streamming de ejecución de scripts de R/Python Requisitos: • No debe tener dependencia entre filas (ej: scoring) Ventajas: • Ejecutar secuencias de comandos sobre chunks de datos • Procesar datos que no caben en la memoria • Puede ser utilizado desde el cliente (RX* Function) o servidor
  • 34. 5000 5000 5000 Dataset = 15000 Rows Sp_execute_external_script @r_rowsPerRead = 5000 Predict() Predict() Predict() Streaming SQL Server Execute R script Execute R script
  • 35. Streaming desde el servidor exec sp_execute_external_script @language = N'R’ , @script = N' # unserialize model logitObj <- unserialize(modelbin); # build classification model to predict tipped or not system.time(OutputDataSet <- data.frame(predict(logitObj, newdata = InputDataSet, type = "response")))[3]; ‘ , @input_data_1 = N’ SELECT tipped, passenger_count, trip_time_in_secs, trip_distance, d.direct_distance FROM dbo.nyctaxi_sample TABLESAMPLE (50 PERCENT) REPEATABLE (98074) CROSS APPLY [CalculateDistance](pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) as d’ , @params = N'@modelbin varbinary(max), @r_rowsPerRead int’ , @modelbin = @model , @r_rowsPerRead = 5000;
  • 36. Demo 04 Generación de gráficos con Python
  • 37. Procesamiento en paralelo Requisitos: Plan de consultas paralelas para el estatuto SELECT Sin dependencia entre filas (ej: scoring) – paralelismo trivial Utilice funciones rx* para el entrenamiento en paralelo Ventajas clave: Escala a grandes conjuntos de datos Aproveche múltiples CPUs Se integra con la ejecución de consultas paralelas de SQL Server
  • 38. Procesamiento paralelo – paralelismo trivial Predict() Predict() sp_execute_external_ script @script = N’Predict…’, @parallel = 1 (MAXDOP = 2) <Results> <Results>
  • 39. Paralelismo trivial exec sp_execute_external_script @language = N'R’ , @script = N' # unserialize model logitObj <- unserialize(modelbin); # build classification model to predict tipped or not system.time(OutputDataSet <- data.frame(predict(logitObj, newdata = InputDataSet, type = "response")))[3]; ‘ , @input_data_1 = N’ SELECT tipped, passenger_count, trip_time_in_secs, trip_distance, d.direct_distance FROM dbo.nyctaxi_sample TABLESAMPLE (50 PERCENT) REPEATABLE (98074) CROSS APPLY [CalculateDistance](pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude) as d OPTION(MAXDOP 2) -- Needed only to control DOP’ , @parallel = 1 , @params = N'@modelbin varbinary(max), @r_rowsPerRead int’ , @modelbin = @model , @r_rowsPerRead = 5000;
  • 40. Demo 05 Creación de modelos con Python
  • 41. Puntuación nativa mediante la función PREDICT Requisitos: • Sólo modelos RX* • Modelo serializado de rxSerializeModel (R) • Modelo serializado de rx_serialize_model (Python) Ventajas clave: • Se ejecuta de forma nativa en SQL Server (sin dependencia de R/Python) • Baja latencia para la ejecución • Ideal para la puntuación altamente concurrente de pocas filas • Puede ser utilizado en la instrucción INSERT/UPDATE/MERGE
  • 42. PREDICT DECLARE @model varbinary(max) = ( SELECT native_model FROM models WHERE model_name = 'Fraud Detection Model’); INSERT INTO dbo.potential_fraud_transactions (score, transactionKey) SELECT p.Label_prob, t.transactionKey FROM PREDICT(MODEL = @model, DATA = new_transaction) WITH(Label_prob float) as p;
  • 43. Operacionalización de aprendizaje automático Servidor analítico Servicio separado o lógica incrustada • Fácil operacionalización • Rendimiento • Alta disponibilidad • Gobernanza de los recursos
  • 45. No • Ejecutar R/Python script as-is • Realizar transformaciones de datos que se pueden lograr en SQL • Acceso a recursos de red • Procesar/transformar archivos como parte de la llamada al procedimiento almacenado • Incrustar el código R/Python directamente en aplicaciones • Desarrolle/pruebe de RTVS, PTVS, Rstudio u otro IDE • SQL Compute Context desde el cliente • Procesamiento de datos y transformaciones en SQL Server • Integración de datos mediante funciones de SQL Server • Gestión de modelos en base de datos SI
  • 46. Resumen • Mejore el rendimiento de sus comandos ML utilizando: • SQL Compute context del cliente (Funciones RX) • Streaming para reducir el uso de memoria • Paralelismo trivial para scoring (predecir o rxPredict) • Formación paralela y puntuación utilizando RX* Functions • Función de predicción nativa para puntuación de baja latencia

Notas del editor

  • #6: 5
  • #7: 6
  • #9: 8
  • #18: Microsoft Tech Summit FY17
  • #19: Microsoft Data amp
  • #27: A request for the Python runtime is indicated by the parameter @language='Python' passed to the stored procedure. SQL Server sends this request to the Launchpad service. The Launchpad service starts the appropriate launcher; in this case, PythonLauncher. PythonLauncher starts the external Python35 process. BxlServer coordinates with the Python runtime to manage exchanges of data, and storage of working results. SQL Satellite manages communications about related tasks and processes with SQL Server. BxlServer uses SQL Satellite to communicate status and results to SQL Server. SQL Server gets results and closes related tasks and processes.