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
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
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;
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;
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
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
Notes de l'éditeur
5
6
8
Microsoft Tech Summit FY17
Microsoft Data amp
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.