Azure Architecture Ai ML

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 907

Díganos qué opina sobre la experiencia de descarga del PDF.

Diseño de arquitectura de la inteligencia


artificial (IA)
Artículo • 13/09/2023

La inteligencia artificial es la capacidad de un equipo para imitar el comportamiento de


los seres humanos inteligentes. Mediante la inteligencia artificial, las máquinas pueden
analizar imágenes, comprender la voz, interactuar de forma natural y hacer predicciones
mediante datos.

Conceptos de inteligencia artificial

Algoritmo
Un algoritmo es una secuencia de cálculos y reglas que se usan para solucionar un
problema o para analizar un conjunto de datos. Es como un diagrama de flujo, con
instrucciones paso a paso con las preguntas que se van a plantear, pero escrito en
lenguaje matemático y código de programación. Un algoritmo puede describir cómo
determinar si una mascota es un gato, un perro, un pez, un pájaro o un reptil. Otro
algoritmo mucho más complicado puede describir cómo identificar un lenguaje escrito
o hablado, analizar sus palabras, traducirlas a un idioma diferente y, a continuación,
comprobar la traducción para ver si es correcta.
Machine Learning
El aprendizaje automático es una técnica de inteligencia artificial que usa algoritmos
matemáticos para crear modelos predictivos. Un algoritmo se utiliza para analizar los
campos de datos y para "aprender" de esos datos mediante patrones que se encuentran
dentro de él para generar modelos. Estos modelos se usan para realizar predicciones o
tomar decisiones fundamentadas sobre nuevos datos.

Los modelos predictivos se validan en comparación con datos conocidos, se miden


mediante las métricas de rendimiento seleccionadas para escenarios empresariales
específicos y, posteriormente, se ajustan según sea necesario. Este proceso de
aprendizaje y validación se denomina entrenamiento. Mediante el reentrenamiento
periódico, los modelos de aprendizaje automático mejoran con el tiempo.

¿Cuáles son los productos de aprendizaje automático de Microsoft?

Aprendizaje profundo
El aprendizaje profundo es un tipo de aprendizaje automático que puede determinar por
sí mismo si sus predicciones con correctas. También usa algoritmos para analizar los
datos, pero lo hace a mayor escala que el aprendizaje automático.

El aprendizaje profundo usa redes neuronales artificiales, las cuales están compuestas
de varias capas de algoritmos. Cada capa examina los datos entrantes, realiza su propio
análisis especializado y genera una salida que otras capas pueden entender. Esta salida
se pasa a la siguiente capa, donde un algoritmo diferente realiza su propio análisis, etc.

Con muchas capas en cada red neuronal, y a veces mediante el uso de varias redes
neuronales, una máquina puede aprender mediante su propio procesamiento de datos.
Esto requiere muchos más datos y mucha más capacidad de proceso que el aprendizaje
automático.

Aprendizaje profundo frente a aprendizaje automático

Puntuación por lotes para modelos de aprendizaje profundo en Azure

Bots
Un bot es un programa de software automatizado diseñado para realizar una tarea
determinada. Imagínelo como un robot sin cuerpo. Los primeros bots eran
relativamente sencillos, realizaban tareas repetitivas y voluminosas con una lógica de
algoritmos relativamente sencilla. Un ejemplo sería el uso de los rastreadores web que
utilizan los motores de búsqueda para explorar y analizar automáticamente contenido
web.

Los bots se han vuelto mucho más sofisticados empleando inteligencia artificial y otras
tecnologías que imitan la actividad humana y la toma de decisiones, a menudo a la vez
que interactúan directamente con los usuarios a través de texto o incluso voz. Algunos
ejemplos son los bots que pueden realizar una reserva para una cena, bots de chat (o
inteligencia artificial conversacional) que ayudan con las interacciones del servicio de
atención al cliente y los bots sociales que publican noticias de última hora o datos
científicos en sitios de redes sociales.

Microsoft ofrece Azure Bot Service, un servicio administrado compilado expresamente


para el desarrollo de bots empresariales.

Acerca de Azure Bot Service

Diez directrices para unos bots responsables

Arquitectura de referencia de Azure: Bot de conversación de nivel empresarial

Sistema autónomo
Los sistemas autónomos forman parte de una nueva clase en evolución que va más allá
de la automatización básica. En lugar de realizar una tarea específica repetidamente con
poca o ninguna variación (como hacen los bots), los sistemas autónomos aportan
inteligencia a las máquinas para que puedan adaptarse a entornos cambiantes para
lograr un objetivo deseado.

Los edificios inteligentes usan sistemas autónomos para controlar automáticamente


operaciones como la iluminación, la ventilación, el aire acondicionado y la seguridad. Un
ejemplo más sofisticado sería un robot autodirigido que está explorando un pozo
minero derrumbado para realizar un mapa detallado de su interior, determinar qué
partes son estructuralmente sólidas, analizar el aire para ver si es respirable y detectar
señales de mineros atrapados que necesitan rescate, sin necesidad de realizar una
exploración humana en tiempo real.

Sistemas autónomos y soluciones de Microsoft AI

Información general sobre Microsoft AI


Obtenga más información sobre Microsoft AI y manténgase al día con las noticias
relacionadas:
Microsoft AI School

Página de la plataforma de Azure AI

Página de la plataforma de Microsoft AI

Blog de Microsoft AI

Microsoft AI en GitHub: ejemplos, arquitecturas de referencia y procedimientos


recomendados

Centro de arquitectura de Azure

Tipos arquitectónicos de alto nivel

Inteligencia artificial pregenerada


La inteligencia artificial pregenerada es exactamente eso: modelos, servicios y API de
inteligencia artificial listos para usar. Estos le ayudarán a agregar inteligencia a las
aplicaciones, los sitios web y los flujos sin tener que recopilar datos y, después, tener
que compilar, entrenar y publicar sus propios modelos.

Un ejemplo de inteligencia artificial pregenerada podría ser un modelo previamente


entrenado que se puede incorporar tal cual o que se usa para proporcionar una base de
referencia para un entrenamiento adicional personalizado. Otro ejemplo sería un
servicio de API basado en la nube al que se puede llamar para procesar el lenguaje
natural de la manera que se desee.

Azure Cognitive Services


Cognitive Services proporciona a los desarrolladores la oportunidad de usar API
precompiladas y kits de herramientas de integración para crear aplicaciones que pueden
ver, oír, hablar, comprender e incluso empezar a razonar. El catálogo de servicios de
Cognitive Services se puede dividir en cinco pilares principales: visión, voz, lenguaje,
búsqueda web y decisión o recomendación.

Documentación de Azure Cognitive Services

Pruebe gratis Azure Cognitive Services

Elección de una tecnología de Azure Cognitive Services

Elección de una tecnología de procesamiento de lenguaje natural en Azure


Modelos de inteligencia artificial pregenerados de AI Builder
AI Builder es una nueva funcionalidad de Power Platform que proporciona una interfaz
sencilla con operaciones del tipo señalar y hacer clic, que le permite agregar inteligencia
artificial a sus aplicaciones aunque no tenga conocimientos de ciencia de datos o
codificación. (Algunas características de AI Builder aún no se han publicado para
disponibilidad general y permanecen en estado de versión preliminar. Para más
información, consulte la página Disponibilidad de características por región).

Puede crear y entrenar sus propios modelos, pero AI Builder también proporciona
modelos seleccionados de inteligencia artificial pregenerados que están listos para
usarse de inmediato. Por ejemplo, puede agregar un componente en Microsoft Power
Apps basado en un modelo pregenerado que reconozca la información de contacto de
las tarjetas de presentación.

Power Apps en Azure

Documentación de AI Builder

Tipos de modelos de inteligencia artificial en AI Builder

Introducción sobre los modelos de AI precompilados en AI Builder

Inteligencia artificial personalizada


Aunque la inteligencia artificial pregenerada es útil (y cada vez más flexible), la mejor
manera de obtener lo que necesita de la inteligencia artificial es probablemente crear su
propio sistema. Obviamente, esto es un asunto muy profundo y complejo, pero
echemos un vistazo a algunos conceptos básicos más allá de lo que acabamos de
hablar.

Lenguajes de código

El concepto básico de la inteligencia artificial es el uso de algoritmos para analizar datos


y generar modelos para describirlos (o puntuarlos) de forma que resulten útiles. Los
desarrolladores y los científicos de datos (e, incluso, otros algoritmos) escriben los
algoritmos mediante un código de programación. Dos de los lenguajes de
programación más populares para el desarrollo de inteligencia artificial son Python y R
actualmente.

Python es un lenguaje de programación con fines genéricos y de alto nivel. Tiene una
sintaxis sencilla y fácil de aprender que hace hincapié en la legibilidad. No hay ningún
paso de compilación. Python tiene una biblioteca estándar grande, pero también admite
la posibilidad de agregar módulos y paquetes. Esto fomenta la modularidad y permite
expandir las funcionalidades cuando es necesario. Hay un ecosistema grande y en
aumento de bibliotecas de inteligencia artificial y de aprendizaje automático para
Python, incluidas muchas que están disponibles en Azure.

Página principal del producto Python en Azure

Azure para desarrolladores de Python

SDK de Azure Machine Learning para Python

Introducción al aprendizaje automático con Python y Azure Notebooks

scikit-learn. Una biblioteca de aprendizaje automático de código abierto para


Python

PyTorch. Una biblioteca de Python de código abierto con un completo


ecosistema que se puede usar para aprendizaje profundo, visión artificial,
procesamiento de lenguaje natural, etc.

TensorFlow. Una biblioteca matemática simbólica de código abierto que también


se usa para aplicaciones de aprendizaje automático y redes neuronales

Tutorial: Aplicación de modelos de aprendizaje automático en Azure Functions con


Python y TensorFlow

R es un entorno y lenguaje para computación estadística y gráficos. Se puede usar


para todo, desde la asignación de amplias tendencias de marketing y redes sociales en
línea hasta el desarrollo de modelos financieros y climáticos.

Microsoft ha adoptado completamente el lenguaje de programación R y proporciona


muchas opciones diferentes para que los desarrolladores de R ejecuten su código en
Azure.

Uso de R de forma interactiva en Azure Machine Learning.

Tutorial: Creación de un modelo de regresión logística en R con Azure Machine


Learning

Cursos

El entrenamiento es fundamental para el aprendizaje automático. Es el proceso iterativo


de "enseñar" a un algoritmo para que pueda crear modelos que se usen para analizar
los datos y, a continuación, hacer predicciones precisas a partir de ellos. En la práctica,
este proceso tiene tres fases generales: entrenamiento, validación y pruebas.
Durante la fase de entrenamiento, se etiqueta un conjunto de datos conocidos de
calidad para que los campos individuales sean identificables. Los datos etiquetados
alimentan a un algoritmo configurado para realizar una predicción determinada.
Cuando finaliza, el algoritmo genera un modelo que describe los patrones encontrados
como un conjunto de parámetros. Durante la validación, los datos nuevos se etiquetan y
se usan para probar el modelo. El algoritmo se ajusta según sea necesario y,
posiblemente, se realiza más entrenamiento. Por último, la fase de prueba utiliza datos
reales sin etiquetas ni destinos preseleccionados. Suponiendo que los resultados del
modelo son adecuados, se considera que están listos para su uso y se pueden
implementar.

Entrenamiento de modelos con Azure Machine Learning

Ajuste de hiperparámetros

Los hiperparámetros son variables de datos que rigen el propio proceso de


entrenamiento. Son variables de configuración que controlan cómo funciona el
algoritmo. Por tanto, los hiperparámetros se establecen normalmente antes de que
empiece el entrenamiento del modelo y no se modifican dentro del proceso de
entrenamiento de la forma en la que lo hacen los parámetros. El ajuste de los
hiperparámetros conlleva la ejecución de pruebas en la tarea de entrenamiento, la
evaluación del grado de realización del trabajo y, posteriormente, el ajuste según sea
necesario. Este proceso genera varios modelos, cada uno entrenado mediante distintas
familias de hiperparámetros.

Ajuste de los hiperparámetros de un modelo mediante Azure Machine Learning

Selección de modelos

El proceso de entrenamiento y ajuste de hiperparámetros produce numerosos modelos


candidatos. Pueden tener muchas variaciones diferentes, entre las que se incluyen el
esfuerzo necesario para preparar los datos, la flexibilidad del modelo, la cantidad de
tiempo de procesamiento y, por supuesto, el grado de precisión de los resultados. La
elección del mejor modelo entrenado para sus necesidades y limitaciones se denomina
selección de modelo, y tiene tanto que ver con la planeación previa antes del
entrenamiento, como con la elección del modelo más adecuado.

Aprendizaje automático automatizado (AutoML)

El aprendizaje automático automatizado, también denominado AutoML, es el proceso de


automatizar las tareas lentas y repetitivas del desarrollo de modelos de Machine
Learning. Puede reducir significativamente el tiempo necesario para obtener modelos
de aprendizaje automático listos para producción. El aprendizaje automático
automatizado puede ayudar con la selección de modelos, el ajuste de hiperparámetros,
el entrenamiento de modelos y otras tareas, sin necesidad de un amplio conocimiento
sobre programación o dominios.

Descripción del aprendizaje automático

Puntuaciones
La puntuación también se denomina predicción y es el proceso de generar valores
basados en un modelo de Machine Learning entrenado a partir de algunos datos de
entrada nuevos. Los valores, o puntuaciones, que se crean pueden representar
predicciones de valores futuros, pero también pueden representar una categoría o un
resultado probables. El proceso de puntuación puede generar muchos tipos diferentes
de valores:

Una lista de elementos recomendados y una puntuación de similitud

Valores numéricos, para modelos de serie temporal y modelos de regresión

Un valor de probabilidad, que indica la probabilidad de que una nueva entrada


pertenezca a alguna categoría existente

El nombre de una categoría o clúster con el que un nuevo elemento guarda más
similitud

Una clase o un resultado previsto, para los modelos de clasificación

La puntuación por lotes se produce cuando se recopilan datos durante un período de


tiempo fijo y, a continuación, se procesan en un lote. Esto podría incluir la generación de
informes empresariales o el análisis de la fidelidad de los clientes.

La puntuación en tiempo real consiste en otorgar una puntuación a un proceso en


curso lo más rápido posible. El ejemplo clásico es la detección de fraudes de tarjetas de
crédito, pero la puntuación en tiempo real también puede usarse en el reconocimiento
de voz, los diagnósticos médicos, y el análisis de mercado y muchas otras aplicaciones.

Información general sobre inteligencia artificial personalizada en


Azure

Microsoft AI en GitHub: ejemplos, arquitecturas de referencia y procedimientos


recomendados
Inteligencia artificial personalizada en el repositorio de GitHub de Azure. Una
colección de scripts y tutoriales para ayudar a los desarrolladores a usar
eficazmente Azure para sus cargas de trabajo de inteligencia artificial

SDK de Azure Machine Learning para Python

Cuadernos de ejemplo de Azure Machine Learning Service (Python). Un


repositorio de GitHub de cuadernos de ejemplo que muestran el SDK de Azure
Machine Learning para Python

SDK de Azure Machine Learning para R

Ofertas de la plataforma Azure AI


El siguiente es un desglose de las tecnologías, plataformas y servicios de Azure que
puede usar para desarrollar soluciones de inteligencia artificial para sus necesidades.

Azure Machine Learning


Este es un servicio de aprendizaje automático de nivel empresarial para crear e
implementar modelos con mayor rapidez. Azure Machine Learning ofrece interfaces web
y SDK para que pueda entrenar e implementar rápidamente sus modelos y
canalizaciones de aprendizaje automático a escala. Use estas funcionalidades con
plataformas de Python de código abierto, como PyTorch, TensorFlow y scikit-learn.

¿Cuáles son los productos de aprendizaje automático de Microsoft?

Página principal del producto Azure Machine Learning

Documentación introductoria sobre Azure Machine Learning

¿Qué es Azure Machine Learning? Orientación general con vínculos a muchos


recursos de aprendizaje, SDK, documentación, etc.

Arquitecturas de referencia de Machine Learning para Azure

Puntuación por lotes de los modelos de Machine Learning para Python en Azure

Puntuación por lotes para modelos de aprendizaje profundo en Azure

Operacionalización de Machine Learning (MLOps) para modelos de Python


mediante Azure Machine Learning

Puntuación por lotes de los modelos de Machine Learning para R en Azure


Puntuación por lotes de los modelos de Machine Learning para Spark en Azure
Databricks

Bot de conversación de nivel empresarial

Compilación de una API de recomendaciones en tiempo real en Azure

Aprendizaje automático automatizado de Azure


Azure proporciona una amplia compatibilidad para el aprendizaje automático
automatizado. Los desarrolladores pueden crear modelos mediante una interfaz de
usuario sin código o a través de una experiencia de cuadernos de Code First.

Página principal del producto de aprendizaje automático automatizado de Azure

Infografía sobre el aprendizaje automático automatizado de Azure (PDF)

Tutorial: Creación de un modelo de clasificación con aprendizaje automático


automatizado en Azure Machine Learning

Tutorial: Uso del aprendizaje automático para crear predecir tarifas de taxi

Configuración de experimentos de ML automatizado en Python

Use la extensión de la CLI para Azure Machine Learning

Automatización de las actividades de aprendizaje automático con la CLI de Azure


Machine Learning

Azure Cognitive Services


Se trata de una familia completa de servicios de inteligencia artificial y API cognitivas
que le ayudarán a crear aplicaciones inteligentes. Estos modelos de inteligencia artificial
preentrenados específicos de dominio se pueden personalizar con los datos.

Página principal de producto de Cognitive Services

Documentación de Azure Cognitive Services

Azure Cognitive Search


Este es un servicio de búsqueda en la nube con tecnología de inteligencia artificial para
el desarrollo de aplicaciones web y para dispositivos móviles. El servicio puede realizar
búsquedas en la nube sobre contenido heterogéneo privado, con opciones de
enriquecimiento de inteligencia artificial si el contenido no está estructurado o no se
pueden realizar búsquedas debido a un formato que está sin procesar.

Página principal del producto Azure Cognitive Search

Introducción al enriquecimiento con IA

Documentación introductoria sobre Azure Cognitive Search

Elección de una tecnología de procesamiento de lenguaje natural en Azure

Inicio rápido: Creación de un conjunto de aptitudes cognitivas de Azure Cognitive


Search en Azure Portal

Azure Bot Service


Se trata de un entorno de desarrollo de bots diseñado específicamente con plantillas
predefinidas para empezar a trabajar rápidamente.

Página principal del producto Azure Bot Service

Documentación introductoria sobre Azure Bot Service

Arquitectura de referencia de Azure: Bot de conversación de nivel empresarial

Microsoft Bot Framework

Repositorio de Bot Builder en GitHub

Apache Spark en Azure


Apache Spark es una plataforma de procesamiento paralelo que admite el
procesamiento en memoria para mejorar el rendimiento de aplicaciones de análisis de
macrodatos. Spark proporciona primitivas de computación de clúster en memoria. Un
trabajo de Spark puede cargar y almacenar datos en la memoria caché, y repetir
consultas sobre ellos, mucho más rápidamente que con las aplicaciones basadas en
disco como Hadoop.

Apache Spark en Azure HDInsight es la implementación que hace Microsoft de Apache


Spark en la nube. Los clústeres de Spark en HDInsight son compatibles con Azure
Storage y Azure Data Lake Storage, por lo que puede usar los clústeres de HDInsight
Spark para procesar los datos almacenados en Azure.

La Microsoft Machine Learning Library para Apache Spark es MMLSpark . Esta


biblioteca de código abierto agrega muchas herramientas de ciencia de datos y
aprendizaje profundo, funcionalidades de red y rendimiento de nivel de producción al
ecosistema de Spark. Más información sobre nuestras características y funcionalidades.

Introducción a Azure HDInsight. Información básica sobre características,


arquitectura de clústeres y casos de uso, con vínculos a inicios rápidos y tutoriales.

Tutorial: Compilación de aplicaciones de aprendizaje automático de Apache Spark


en Azure HDInsight

Procedimientos recomendados de Apache Spark en HDInsight

Configuración del clúster de Apache Spark en HDInsight

Aprendizaje automático en HDInsight

Repositorio de GitHub para MMLSpark: Microsoft Machine Learning Library para


Apache Spark

Creación de una canalización de aprendizaje automático de Apache Spark en


HDInsight

Azure Databricks Runtime para Machine Learning


Azure Databricks es una plataforma de análisis basada en Apache Spark que ofrece
una configuración con un clic, simplifica los flujos de trabajo y ofrece un espacio de
trabajo interactivo para la colaboración entre científicos de datos, ingenieros y analistas
empresariales.

Databricks Runtime para Machine Learning (Databricks Runtime ML) le permite iniciar
un clúster de Databricks con todas las bibliotecas necesarias para el entrenamiento
distribuido. Proporciona un entorno listo para usar para el aprendizaje automático y la
ciencia de datos. Además, contiene varias bibliotecas conocidas, como TensorFlow,
PyTorch, Keras y XGBoost. También admite el entrenamiento distribuido mediante
Horovod.

Página principal del producto Azure Databricks

Documentación de Azure Databricks

Funcionalidades de Machine Learning en Azure Databricks

Guía paso a paso: Databricks Runtime para Machine Learning

Puntuación por lotes de los modelos de Machine Learning para Spark en Azure
Databricks
Introducción al aprendizaje profundo en Azure Databricks

Testimonios de clientes
Los distintos sectores están aplicando inteligencia artificial de maneras innovadoras e
inspiradoras. A continuación se enumeran una serie de casos prácticos de clientes y
historias de éxito:

ASOS: Una tienda en línea resuelve los desafíos con Azure Machine Learning
Service

KPMG ayuda a las instituciones financieras a ahorrar millones en costos de


cumplimiento con Azure Cognitive Services

Volkswagen: Traducción automática de Volkswagen en 40 idiomas

Buncee: Institución educativa de Nueva York capacita a lectores de todas las


edades y capacidades con Azure AI

InterSystems: La compañía de la plataforma de datos mejora enormemente los


servicios informáticos de atención sanitaria mediante la generación de información
crítica a una velocidad sin precedentes

Zencity: El inicio controlado por datos utiliza financiación para ayudar a los
gobiernos locales a ofrecer una mejor calidad de vida para los residentes

Bosch utiliza la innovación de IoT para impulsar las mejoras en la seguridad del
tráfico ayudando a los controladores a evitar accidentes graves

Automatización en cualquier lugar: El desarrollador de una plataforma de


automatización de procesos robóticos enriquece su software con Azure Cognitive
Services

Wix implementa búsquedas inteligentes y escalables en 150 millones de sitios web


con Azure Cognitive Search

Asklepios Klinik Altona: Operaciones quirúrgicas de precisión con Microsoft


HoloLens 2 y visualización tridimensional

AXA Global P&C: una empresa internacional de seguros recrea desastres naturales
complejos con la informática de alto rendimiento basada en la nube

Examinar más historias de clientes sobre inteligencia artificial


Pasos siguientes
Para más información sobre todos los productos de desarrollo de inteligencia
artificial disponibles en Microsoft, consulte la página de la plataforma de IA de
Microsoft .

Para saber cómo desarrollar soluciones de inteligencia artificial, consulte la página


Microsoft AI School .

Microsoft AI en GitHub: Los ejemplos, arquitecturas de referencia y procedimientos


recomendados organizan los repositorios basados en inteligencia artificial de
código abierto de Microsoft y proporcionan tutoriales y materiales de aprendizaje.
Sugerencia de etiquetas de
contenido con NLP mediante
aprendizaje profundo.
Azure Container Registry Azure Cognitive Search Azure Kubernetes Service (AKS) Azure Machine Learning

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

En este artículo se describe cómo puede usar la inteligencia artificial de Microsoft para
mejorar la precisión del etiquetado del contenido del sitio web mediante la combinación
del aprendizaje profundo y el procesamiento de lenguaje natural (NLP) con datos sobre
términos de búsqueda específicos del sitio.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Los datos se almacenan en varios formatos, dependiendo de su origen. Los datos
pueden almacenarse como archivos en Azure Data Lake Storage o en forma de
tabla en Azure Synapse o Azure SQL Database.

2. Azure Machine Learning (ML) puede conectarse y leer desde estos orígenes, para
ingerir los datos en la canalización de NLP para el preprocesamiento, el
entrenamiento del modelo y el postprocesamiento.

3. El preprocesamiento de NLP incluye varios pasos para consumir los datos, con el
propósito de generalizar el texto. Una vez que el texto está dividido en frases, las
técnicas de NLP, como la lematización o el stemming, permiten tokenizar el
lenguaje de forma general.

4. Como los modelos de NLP ya están disponibles preentrenados, el enfoque de


aprendizaje de transferencia recomienda descargar las incrustaciones específicas
del idioma y usar un modelo estándar de la industria, para la clasificación de textos
de varias clases, como las variaciones de BERT .

5. El postprocesamiento NLP recomienda almacenar el modelo en un registro de


modelos en Azure ML, para hacer un seguimiento de las métricas del modelo.
Además, el texto también se puede posprocesar con reglas de negocio específicas
que se definen de forma determinista, en función de los objetivos de negocio.
Microsoft recomienda el uso de herramientas de IA ética para detectar el lenguaje
sesgado, lo que garantiza el entrenamiento justo de un modelo de lenguaje.

6. El modelo puede implementarse a través de Azure Kubernetes Service, mientras se


ejecuta un clúster administrado por Kubernetes en el que los contenedores se
implementan a partir de imágenes que se almacenan en Azure Container Registry.
Los puntos de conexión pueden ponerse a disposición de una aplicación front-
end. El modelo puede implementarse a través de Azure Kubernetes Service como
puntos de conexión en tiempo real.

7. Los resultados del modelo pueden escribirse en una opción de almacenamiento en


formato de archivo o tabular, y luego indexarse adecuadamente por Azure
Cognitive Search. El modelo se ejecutaría como inferencia por lotes y almacenaría
los resultados en el almacén de datos correspondiente.

Componentes
Data Lake Storage para Análisis de datos grandes
Azure Machine Learning
Azure Cognitive Search
Azure Container Registry
Azure Kubernetes Service (AKS)
Detalles del escenario
Los sitios web sociales, los foros y otros servicios de preguntas y respuestas con mucha
actividad dependen en gran medida del etiquetado del contenido, que facilita una
correcta indexación y búsqueda por parte de los usuarios. Sin embargo, el etiquetado
del contenido a menudo se deja a elección de los usuarios. Como no tienen listas de
términos buscados con frecuencia o un conocimiento profundo de la estructura de un
sitio web, suelen etiquetar mal el contenido. El contenido etiquetado de forma errónea
es difícil o imposible de encontrar cuando se necesita más adelante.

Posibles casos de uso


Al utilizar el procesamiento del lenguaje natural (NLP) con el aprendizaje profundo para
el etiquetado de contenidos, se habilita una solución escalable para crear etiquetas en
todo el contenido. A medida que los usuarios buscan contenido por palabras clave, este
proceso de clasificación multiclase enriquece el contenido no etiquetado con etiquetas
que le permitirán buscar en porciones sustanciales de texto, lo que mejora los procesos
de recuperación de información. El nuevo contenido entrante se etiquetará de forma
adecuada mediante la ejecución de la inferencia de NLP.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Louis Li | Ingeniero sénior de clientes

Pasos siguientes
Consulte la documentación del producto:

Introducción a Azure Data Lake Storage Gen2


Azure Machine Learning
Documentación de Azure Cognitive Search
Más información acerca de Azure Container Registry
Azure Kubernetes Service

Pruebe estos módulos de Microsoft Learn:

Introducción al procesamiento de lenguaje natural con PyTorch


Entrenamiento y evaluación de modelos de aprendizaje profundo
Implementación de la minería de conocimiento con Azure Cognitive Search

Recursos relacionados
Consulte los siguientes artículos de arquitectura relacionados:

Tecnología de procesamiento de lenguaje natural


Creación de una instancia de Delta Lake para admitir consultas ad hoc en las
reservas de ocio y viajes en línea
Consulta de un lago de datos mediante Azure Synapse sin servidor
Marco de las operaciones de Machine Learning (MLOps) para escalar el ciclo de
vida de aprendizaje automático con Azure Machine Learning
Informática de alto rendimiento para fabricación
Introducción al mantenimiento predictivo en procesos de fabricación
Solución de mantenimiento predictivo
Minería del conocimiento para
asistencia al cliente y análisis de
comentarios
Azure AI Search Lenguaje de Azure AI Azure Translator

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta arquitectura muestra cómo la minería del conocimiento puede ayudar a los
equipos de soporte al cliente a encontrar rápidamente respuestas a las consultas de los
clientes o evaluar la opinión de los clientes a gran escala.

Architecture
Hay tres pasos en la minería de conocimientos: ingesta, enriquecimiento y exploración.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
Ingesta

El paso de ingesta agrega contenido a partir de una variedad de orígenes, incluidos


datos estructurados y no estructurados. Para el servicio de atención al cliente y el
análisis de comentarios, puede ingerir diferentes tipos de contenido. Este contenido
incluye vales de soporte técnico al cliente, registros de chat, transcripciones de llamadas,
correos electrónicos de clientes, historial de pagos de clientes, reseñas de productos,
fuentes de redes sociales, comentarios en línea, formularios de comentarios y encuestas.

Enriquecimiento

El paso de enriquecimiento usa funcionalidades de inteligencia artificial para extraer


información, buscar patrones y profundizar en la comprensión. Puede enriquecer el
contenido mediante la extracción de frases clave, el análisis de sentimiento, la
traducción de idiomas, los servicios de bots o los modelos personalizados para centrarse
en productos específicos o las directivas de empresa.

Explorar

El paso de exploración consiste en explorar los datos mediante la búsqueda, las


aplicaciones empresariales existentes o las soluciones de análisis. Por ejemplo, puede
recopilar documentos enriquecidos en el almacén de conocimiento y proyectarlos en
almacenes tabulares o de objetos. Los almacenes se pueden usar para detectar
tendencias en un panel de análisis que identifique problemas frecuentes o productos
populares. O bien, puede integrar el índice de búsqueda en aplicaciones de soporte y
servicio al cliente.

Componentes
Las siguientes tecnologías claves se usan para implementar herramientas para la
revisión y la investigación de contenido técnico:

Azure Cognitive Search es un servicio de búsqueda en la nube que proporciona


infraestructura, API y herramientas para la búsqueda. Puede usar Azure Cognitive
Search para compilar experiencias de búsqueda a partir de contenido privado
heterogéneo de aplicaciones web, móviles y empresariales.
La interfaz de aptitudes personalizadas de la API web se usa para integrar una
aptitud personalizada en una canalización de enriquecimiento de Azure Cognitive
Search.
Azure Cognitive Service para lenguaje forma parte de Azure Cognitive
Services , que ofrece muchos servicios de procesamiento de lenguaje natural.
Puede usar estos servicios para comprender y analizar texto.
Text Analytics es una colección de API y otras características de Azure Cognitive
Service para lenguaje que puede usar a fin de extraer, clasificar y comprender el
texto de los documentos.
Translator de Cognitive Services forma parte de la familia de API REST de
Cognitive Services. Puede usar Translator para la traducción de texto y documentos
en tiempo real.

Detalles del escenario


Para muchas empresas, la asistencia al cliente es costosa y no siempre funciona de
forma eficaz. La minería del conocimiento puede ayudar a los equipos de soporte al
cliente a encontrar rápidamente la mejor respuesta a las consultas de los clientes o
evaluar la opinión de los clientes a gran escala.

Posibles casos de uso


Esta solución está optimizada para el sector minorista.

Azure Cognitive Search es una parte fundamental de las soluciones de minería del
conocimiento. Azure Cognitive Search crea un índice de búsqueda sobre el contenido
agregado y analizado.

Con las consultas que usan el índice de búsqueda, las empresas pueden detectar
tendencias sobre lo que opinan los clientes y usar esa información para mejorar los
productos y servicios.

Pasos siguientes
Cree una aptitud personalizada de Azure Cognitive Search.

Explore la ruta de aprendizaje Implementación de la minería del conocimiento con


Azure Cognitive Search.

Para más información sobre los componentes de esta solución, vea estos recursos:
Documentación de Azure Cognitive Search
Referencia de la API REST de Text Analytics: Azure Cognitive Services
¿Qué es Translator de Azure Cognitive Services?

Recursos relacionados
Azure Cognitive Search
\Análisis de texto
Procesamiento de lenguaje
natural personalizado a gran
escala
Azure Computer Vision Azure Data Lake Storage Azure Databricks HDInsight de Azure

Azure Synapse Analytics

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Implemente una solución de procesamiento de lenguaje natural (NLP) personalizada en


Azure. Use Spark NLP para tareas como la detección y el análisis de opiniones y temas.

Apache®, Apache Spark y el logotipo de la llama son marcas registradas o marcas


comerciales de Apache Software Foundation en Estados Unidos y otros países. El uso de
estas marcas no implica la aprobación de Apache Software Foundation.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. Azure Event Hubs, Azure Data Factory, o ambos servicios, reciben documentos o
datos de texto no estructurados.
2. Event Hubs y Data Factory almacenan los datos en formato de archivo en Azure
Data Lake Storage. Se recomienda configurar una estructura de directorios que
cumpla los requisitos empresariales.
3. Azure Computer Vision API usa su funcionalidad de reconocimiento óptico de
caracteres (OCR) para consumir los datos. A continuación, la API escribe los datos
en la capa de bronce. Esta plataforma de consumo usa una arquitectura de lago de
datos.
4. En la capa de bronce, varias características de Spark NLP preprocesan el texto.
Entre los ejemplos se incluyen la división, la corrección ortográfica, la limpieza y la
comprensión gramatical. Se recomienda ejecutar la clasificación de documentos en
la capa de bronce y, después, escribir los resultados en la capa de plata.
5. En la capa de plata, las características avanzadas de Spark NLP realizan tareas de
análisis de documentos como el reconocimiento de entidades con nombre, el
resumen y la recuperación de la información. En algunas arquitecturas, el resultado
se escribe en la capa dorada.
6. En la capa dorada, Spark NLP ejecuta varios análisis visuales lingüísticos en los
datos de texto. Estos análisis proporcionan información sobre las dependencias del
idioma y ayudan con la visualización de etiquetas de NER.
7. Los usuarios realizan consultas en los datos de texto de la capa dorada como una
trama de datos y ven los resultados en Power BI o aplicaciones web.

Durante los pasos del procesamiento, Azure Databricks, Azure Synapse Analytics y Azure
HDInsight se usan con Spark NLP para proporcionar funcionalidad del procesamiento
de lenguaje natural.

Componentes
Data Lake Storage es un sistema de archivos compatible con Hadoop que tiene
un espacio de nombres jerárquico integrado y la escala y economía masivas de
Azure Blob Storage.
Azure Synapse Analytics es un servicio de análisis para sistemas de
almacenamiento de datos y de macrodatos.
Azure Databricks es un servicio de análisis para macrodatos que es fácil de usar,
facilita la colaboración y se basa en Apache Spark. Azure Databricks está diseñado
para la ciencia de datos y la ingeniería de datos.
Event Hubs ingiere los flujos de datos que generan las aplicaciones cliente. Event
Hubs almacena los datos de streaming y conserva la secuencia de los eventos
recibidos. Los consumidores pueden conectarse a los puntos de conexión del
centro para recuperar mensajes para su procesamiento. Event Hubs se integra con
Data Lake Storage, como se muestra en esta solución.
Azure HDInsight es un servicio de análisis, de código abierto, espectro completo y
administrado en la nube para empresas. Puede usar marcos de código abierto con
Azure HDInsight como Hadoop, Apache Spark, Apache Hive, LLAP, Apache Kafka,
Apache Storm y R.
Azure Data Factory mueve automáticamente datos entre cuentas de
almacenamiento de distintos niveles de seguridad para garantizar la separación de
tareas.
Computer Vision usa las API de reconocimiento de texto reconocer y extraer el
texto de las imágenes. Read API usa los modelos de reconocimiento más recientes
y está optimizado para documentos grandes y con mucho texto, e imágenes con
demasiado grano. OCR API no está optimizada para documentos grandes, pero
admite más idiomas que Read API. Esta solución usa OCR para generar datos con
el formato hOCR .

Detalles del escenario


El procesamiento de lenguaje natural (NLP) tiene muchos usos: el análisis de
sentimiento, la detección de temas, la detección de idioma, la extracción de frases clave
y la clasificación de documentos.

Apache Spark es un marco de procesamiento paralelo que admite el procesamiento en


memoria para mejorar el rendimiento de aplicaciones de análisis de macrodatos como
NLP. Azure Synapse Analytics, Azure HDInsight y Azure Databricks ofrecen acceso a
Spark y aprovechan su potencia de procesamiento.

En el caso de las cargas de trabajo del NLP, la biblioteca de código abierto Spark NLP
sirve como marco eficaz para procesar una gran cantidad de texto. En este artículo se
presenta una solución para NLP personalizada a gran escala en Azure. La solución usa
características de Spark NLP para procesar y analizar texto. Para más información sobre
Spark NLP, consulte Funcionalidad y canalizaciones de Spark NLP en este mismo
artículo.

Posibles casos de uso


Clasificación de documentos: Spark NLP ofrece varias opciones para la
clasificación de texto:
Preprocesamiento de texto en Spark NLP y algoritmos de aprendizaje
automático basados en Spark ML
Preprocesamiento de texto e inserción de palabras en Spark NLP y algoritmos
de aprendizaje automático, como GloVe, BERT y ELMo
Preprocesamiento de texto e inserción de frases en los algoritmos y modelos de
aprendizaje automático y de Spark NLP, como el codificador universal de frases
Preprocesamiento y clasificación de texto en Spark NLP que usa el anotador
ClassifierDL y se basa en TensorFlow

Extracción de entidades de nombre (NER): en Spark NLP, con unas pocas líneas
de código, puede entrenar un modelo de NER que use BERT y puede lograr una
precisión de última generación. NER es una subtarea de extracción de información.
NER localiza entidades con nombre en texto no estructurado y las clasifica en
categorías predefinidas, como nombres de persona, organizaciones, ubicaciones,
códigos médicos, expresiones temporales, cantidades, valores monetarios y
porcentajes. Spark NLP usa un modelo de NER de última generación con BERT. El
modelo está inspirado en un antiguo modelo de NER, LSTM-CNN bidireccional.
Ese modelo usa una nueva arquitectura de red neuronal que detecta
automáticamente características a nivel de palabra y de carácter. Para ello, el
modelo usa una arquitectura LSTM y CNN bidireccional híbrida, lo que elimina la
necesidad de la mayoría de la ingeniería de características.

Detección de sentimiento y emociones: Spark NLP puede detectar


automáticamente los aspectos positivos, negativos y neutros del idioma.

Parte de la voz (POS): esta funcionalidad asigna una etiqueta gramatical a cada
token en el texto de entrada.

Detección de frases (SD): SD se basa en un modelo de red neuronal de uso


general para la detección de los límites de las frases que identifica las frases dentro
del texto. Muchas tareas del procesamiento de lenguaje natural toman una frase
como una unidad de entrada. Entre los ejemplos de estas tareas se incluyen el
etiquetado de POS, el análisis de dependencias, el reconocimiento de entidades
con nombre y la traducción automática.

Funcionalidad y canalizaciones de Spark NLP


Spark NLP proporciona bibliotecas de Python, Java y Scala que ofrecen toda la
funcionalidad de las bibliotecas de NLP tradicionales, como spaCy, NLTK, Stanford
CoreNLP y Open NLP. Spark NLP también ofrece funcionalidades como la revisión
ortográfica, el análisis de sentimiento y la clasificación de documentos. Spark NLP
supone una mejora con respecto a los esfuerzos anteriores, ya que proporciona
precisión, velocidad y escalabilidad de última generación.
Spark NLP es, con mucho, la biblioteca NLP de código abierto más rápida. Recientes
pruebas comparativas que han visto la luz muestran que el Spark NLP es entre 38 y 80
veces más rápido que spaCy y que tiene una precisión similar a la hora de entrenar
modelos personalizados. Spark NLP es la única biblioteca de código abierto que puede
usar un clúster de Spark distribuido. Spark NLP es una extensión nativa de Spark ML que
funciona directamente en tramas de datos. En consecuencia, las velocidades de un
clúster dan como resultado otro orden de magnitud de ganancia de rendimiento. Dado
que cada canalización de Spark NLP es una canalización de Spark ML, Spark NLP es
adecuada para crear canalizaciones de NLP y de aprendizaje automático unificadas,
como la clasificación de documentos, la predicción de riesgos y las canalizaciones de
recomendación.

Además de un rendimiento excelente, Spark NLP también ofrece una precisión de última
generación en cada vez más tareas del lenguaje natural personalizado. El equipo de
Spark NLP lee periódicamente las publicaciones académicas relevantes más recientes y
genera los modelos más precisos.

Para establecer el orden de ejecución de una canalización de NLP, Spark NLP sigue el
mismo concepto de desarrollo que los modelos de aprendizaje automático tradicionales
de Spark ML. Sin embargo, Spark NLP aplica técnicas de procesamiento de lenguaje
natural. En el diagrama siguiente muestran los componentes principales de una
canalización de Spark NLP.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Moritz Steller | Arquitecto sénior de soluciones en la nube


Pasos siguientes
Documentación de Spark NLP:
Spark NLP
Documentación general de Spark NLP
GitHub de Spark NLP
Demostración de Spark NLP

Componentes de Azure:
Datos en Azure Machine Learning
¿Qué es Azure HDInsight?
Data Lake Storage
Azure Synapse Analytics
Event Hubs
Azure HDInsight
Data Factory
API Computer Vision

Recursos relacionados
Tecnología de procesamiento de lenguaje natural
Enriquecimiento mediante inteligencia artificial con procesamiento de imágenes y
lenguaje natural en Azure Cognitive Search
Análisis de fuentes de noticias con análisis casi en tiempo real mediante el
procesamiento de imágenes y lenguaje natural
Sugerencia de etiquetas de contenido con NLP mediante aprendizaje profundo.
Clasificación de imágenes con
redes neuronales convolucionales
(CNN)
Azure Blob Storage Azure Container Registry Azure Data Science Virtual Machine

Azure Kubernetes Service (AKS) Azure Machine Learning

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Use redes neuronales convolucionales (CNN) para clasificar grandes volúmenes de


imágenes de forma eficaz para identificar elementos en imágenes.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Las cargas de imágenes en Azure Blob Storage son ingeridas por Azure Machine
Learning.
2. Como la solución sigue un enfoque de aprendizaje supervisado y necesita el
etiquetado de los datos para entrenar el modelo, las imágenes ingeridas se
etiquetan en Machine Learning.
3. El modelo de CNN se entrena y valida en el cuaderno de Machine Learning. Existen
varios modelos de clasificación de imágenes preentrenados. Puede usarlos
mediante un enfoque de aprendizaje de transferencia. Para obtener información
sobre algunas variantes de CNN previamente entrenadas, consulte Avances en la
clasificación de imágenes mediante redes neuronales convolucionales . Puede
descargar estos modelos de clasificación de imágenes y personalizarlos con los
datos etiquetados.
4. Después del entrenamiento, el modelo se almacena en un registro de modelos en
Machine Learning.
5. El modelo se implementa a través de puntos de conexión administrados por lotes.
6. Los resultados del modelo se escriben en Azure Cosmos DB y se consumen a
través de la aplicación front-end.

Componentes
Blob Storage es un servicio que forma parte de Azure Storage . Blob Storage
ofrece almacenamiento optimizado de objetos en la nube para grandes cantidades
de datos no estructurados.
Machine Learning es un entorno basado en la nube que permite entrenar,
implementar, automatizar, administrar y realizar un seguimiento de los modelos de
aprendizaje automático. Puede utilizar los modelos para prever el
comportamiento, los resultados y las tendencias futuras.
Azure Cosmos DB es una base de datos de varios modelos distribuida
globalmente. Con Azure Cosmos DB, las soluciones pueden escalar de forma
elástica el rendimiento y el almacenamiento en cualquier número de regiones
geográficas.
Azure Container Registry construye, almacena y administra imágenes de
contenedores y puede almacenar modelos de aprendizaje automático en
contenedores.

Detalles del escenario


Con el avance de las tecnologías, como Internet de las cosas (IoT) y la IA, el mundo está
generando grandes cantidades de datos. Extraer información pertinente de los datos se
ha convertido en un gran desafío. La clasificación de imágenes es una solución relevante
para identificar lo que representa una imagen. La clasificación de imágenes puede
ayudarle a categorizar grandes volúmenes de imágenes. Las redes neuronales
convolucionales (CNN) representan un buen rendimiento de los conjuntos de datos de
imagen. Las CNN han desempeñado un papel importante en el desarrollo de soluciones
de clasificación de imágenes de última generación.
Hay tres tipos principales de capas en las CNN:

Capas convolucionales
Agrupación de capas
Capas totalmente conectadas

La capa convolucional es la primera capa de una red convolucional. Esta capa puede
seguir a otra capa convolucional o capas de agrupación. En general, la capa totalmente
conectada es la capa final de la red.

A medida que aumenta el número de capas, se incrementa la complejidad del modelo y


este puede identificar mayores porciones de la imagen. Las capas iniciales se centran en
características simples, como los bordes. A medida que los datos de la imagen avanzan
por las capas de la CNN, la red empieza a reconocer elementos o formas más
sofisticados en el objeto. Por último, identifica el objeto esperado.

Posibles casos de uso


Esta solución puede ayudar a automatizar la detección de errores, lo que es
preferible confiar únicamente en operadores humanos. Por ejemplo, esta solución
puede aumentar la productividad mediante la identificación de componentes
electrónicos defectuosos. Esta capacidad es importante para la fabricación
ajustada, el control de costos y la reducción de residuos en la fabricación. En la
fabricación de circuitos, las placas defectuosas pueden costar a los fabricantes
dinero y productividad. Las líneas de ensamblado se basan en operadores
humanos para revisar y validar rápidamente las placas, que están marcadas como
potencialmente defectuosas por las máquinas de pruebas de la línea de montaje.
La clasificación de imágenes es idónea para el sector sanitario. La clasificación de
imágenes ayuda a detectar grietas óseas, varios tipos de cáncer y anomalías en los
tejidos. También puede usar la clasificación de imágenes para marcar
irregularidades que pueden indicar la presencia de enfermedades. Un modelo de
clasificación de imágenes puede mejorar la precisión de los MRIs.
En el dominio agrícola, las soluciones de clasificación de imágenes ayudan a
identificar las enfermedades de las plantas y las plantas que necesitan agua. Como
resultado, la clasificación de imágenes ayuda a reducir la necesidad de
intervención humana.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribió el siguiente colaborador.

Autor principal:
Ashish Chauhan | Arquitecto de soluciones sénior

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Para saber más de Blob Storage, consulte Introducción a Azure Blob Storage.
Para más información sobre Container Registry, consulte Introducción a los
registros de contenedor en Azure.
Para más información sobre la administración de modelos (MLOps), consulte
MLOps: Administración de modelos, implementación, linaje y supervisión con
Azure Machine Learning.
Para examinar una implementación de esta idea de solución en GitHub, consulte
Synapse Machine Learning .
Para explorar un módulo de Microsoft Learn que incluye una sección sobre CNNs,
consulte Entrenar y evaluar modelos de aprendizaje profundo.

Recursos relacionados
Búsqueda visual en el comercio minorista con Azure Cosmos DB
Asistente de venta al por menor
con funcionalidades visuales
Azure App Service Bing Custom Search Bing Visual Search Servicio de Bot de Azure AI

Servicios de Azure AI

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta idea de solución usa los servicios de Azure con un asistente de bots para mejorar
las interacciones con los clientes y proporcionar sugerencias basadas en información
visual.

Architecture

Bing Custom Search

Application 8 7

3
Mobile 1 2
4
Language
Azure App Service Azure Bot Service
Understanding

Web browser
5 6

User Input

Bing Visual Search

Microsoft

Azure

Descargue un archivo Visio de esta arquitectura.


Flujo de datos
1. El usuario utiliza una aplicación, que está alojada en Azure App Service, ya sea a
través de un navegador web o de un dispositivo móvil.
2. App Service se comunica con Azure Bot Service para facilitar la interacción entre el
usuario y la aplicación.
3. Bot Service usa Language Understanding de Azure Cognitive Services para
identificar intenciones y significados del usuario.
4. Language Understanding (LUIS) devuelve la intención de usuario identificada al
bot de Azure.
5. El bot pasa una entrada de contexto visual, como una imagen, a la API de
búsqueda visual de Bing.
6. La API devuelve la salida al Bot Service.
7. Opcionalmente, el bot recupera más información para las consultas de usuario en
el dominio del usuario mediante Bing Custom Search API.
8. La API de búsqueda personalizada devuelve la salida al servicio de bots.

Componentes
App Service proporciona un marco para compilar, implementar y escalar
aplicaciones web.
Bot Service proporciona un entorno de desarrollo integrado para la construcción
de bots.
Cognitive Services consta de servicios basados en la nube que proporcionan
funcionalidad de inteligencia artificial.
Azure Cognitive Service para lenguaje forma parte de Cognitive Services, que
ofrece muchos servicios de procesamiento de lenguaje natural.
Conversational Language Understanding es una característica de Cognitive
Services para lenguaje. Este servicio de API basado en la nube ofrece
funcionalidades de inteligencia de aprendizaje automático para crear aplicaciones
conversacionales. Puede utilizar el reconocimiento del lenguaje (LUIS) para
predecir el significado de una conversación y extraer información relevante y
detallada.
La API de Bing Visual Search devuelve datos relacionados con una imagen
determinada, como imágenes similares, orígenes de compras para comprar el
elemento en la imagen y páginas web que incluyen la imagen.
La API de Bing Custom Search proporciona una forma de crear experiencias de
búsqueda personalizadas y sin publicidad por temas.

Detalles del escenario


Esta solución incluye un asistente para bots con integración de búsqueda. El bot puede
ayudar a los clientes a interactuar con una aplicación empresarial. También puede
proporcionar sugerencias basadas en información visual.

Posibles casos de uso


Esta solución se puede usar ampliamente, pero es ideal para el sector minorista, así
como para los sectores de viajes y comercios.

Pasos siguientes
¿Qué es Azure Cognitive Services?
¿Qué es Language Understanding (LUIS)?
Documentación de Bing Search API
¿Qué es Bing Visual Search API?
¿Qué es Bing Custom Search API?
Información general de App Service
Documentación de Azure Bot Service
Introducción a Bot Framework Composer

Recursos relacionados
Asistente visual
Inteligencia artificial (IA): introducción a la arquitectura
Elección de una tecnología de Microsoft Azure Cognitive Services
Asistente visual
Azure App Service Servicio de Bot de Azure AI Servicios de Azure AI

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta solución presenta un asistente visual que proporciona información enriquecida


basada en el contenido de una imagen.

Architecture

Customer mobile / Azure App Service


browser

Language
Azure Bot Service
Understanding

4 5 6
Bing Visual Search

Bing Entity Search Bing Web Search Bing Custom Search

Microsoft 
Azure
Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Los usuarios interactúan con un bot a través de una aplicación móvil o una
aplicación web.
2. El bot usa Language Understanding Intelligence Service (LUIS), que está integrado
en la aplicación, para identificar la intención del usuario y el contexto
conversacional.
3. El bot pasa el contexto visual, como una imagen, a la API de Bing Visual Search.
4. El bot recupera información de Bing Entity Search API sobre personas, lugares,
ilustraciones, monumentos y objetos relacionados con la imagen.
5. El bot recupera información de códigos de barras.
6. Opcionalmente, el bot obtiene más información sobre códigos de barras o
consultas limitados al dominio del usuario mediante la API de Bing Custom Search.
7. El asistente visual presenta al usuario la información sobre productos relacionados,
destinos, celebridades, lugares, monumentos y obras de arte.

Componentes
Azure App Service : es un servicio basado en HTTP totalmente administrado para
hospedar aplicaciones web, API REST y back-ends para dispositivos móviles.
Azure Bot Service ofrece un entorno para desarrollar bots inteligentes y de nivel
empresarial que enriquecen las experiencias de los clientes. El entorno integrado
también proporciona una manera de mantener el control de los datos.
La API de Bing Custom Search proporciona una forma de crear experiencias de
búsqueda personalizadas con la potente clasificación y el índice de búsqueda a
escala global de Bing.
La API de Bing Entity Search ofrece funcionalidades de búsqueda que identifican
entidades relevantes, como personas conocidas, lugares, películas, programas de
televisión, videojuegos, libros y empresas.
La API de Bing Visual Search devuelve datos relacionados con una imagen
determinada, como imágenes similares, orígenes de compras para comprar el
elemento en la imagen y páginas web que incluyen la imagen.
La API de Bing Web Search proporciona resultados de búsqueda después de
emitir una sola llamada API. Los resultados compilan información relevante de
miles de millones de páginas web, imágenes, vídeos y noticias.
Azure Cognitive Service para lenguaje forma parte de Azure Cognitive
Services , que ofrece muchos servicios de procesamiento de lenguaje natural.
Conversational Language Understanding es una característica de Cognitive
Services para lenguaje. Este servicio de API basado en la nube ofrece
funcionalidades de inteligencia de aprendizaje automático para crear aplicaciones
conversacionales. Puede usar LUIS para predecir el significado de una conversación
y extraer información detallada pertinente.

Detalles del escenario


Esta solución presenta un asistente visual que proporciona información enriquecida
basada en el contenido de una imagen. Las funcionalidades del asistente incluyen la
lectura de tarjetas de presentación, el descifrado de códigos de barras y el
reconocimiento de personas, lugares, objetos, obras de arte y monumentos conocidos.

Posibles casos de uso


Las organizaciones pueden usar esta solución para proporcionar:

Programación de citas.
Seguimiento de pedidos y entregas en aplicaciones de fabricación, automoción y
transporte.
Compras con código de barras en la venta directa.
Procesamiento de pagos en finanzas y venta directa.
Renovaciones de suscripciones en la venta directa.
La identificación de personas, lugares, objetos, arte y monumentos conocidos, en
las industrias de educación, medios de comunicación y entretenimiento.

Pasos siguientes
Para diseñar una aplicación que detecte el contexto que le importa, consulte Inicio
rápido: Creación de un proyecto de detección de objetos con la biblioteca cliente
de Custom Vision.

Para explorar las capacidades de búsqueda que proporciona Bing, consulte Familia
de API de búsqueda de Bing.

Para compilar LUIS en el bot, consulte Incorporación de reconocimiento del


lenguaje natural al bot.

Para explorar un módulo de Información sobre cómo funciona LUIS, consulte


Creación de un modelo de lenguaje con reconocimiento del lenguaje
conversacional.
Para obtener información sobre cómo compilar con Bot Service, consulte
Compilación de un bot con Language Service y Azure Bot Service.

Para crear un bot que incorpore QnA Maker y Bot Service, consulte Creación de
soluciones de inteligencia artificial conversacional.

Para solidificar su comprensión de LUIS, Bot Service y la API de Bing Visual Search,
consulte Examen AI-900: Aspectos básicos de la inteligencia artificial de Microsoft
Azure.

Para certificar sus conocimientos sobre Cognitive Services, consulte Microsoft


Certified: Ingeniero de IA asociado de Azure.

Para más información sobre los componentes de esta solución, vea estos recursos:
Información general de App Service
Documentación de Azure Bot Service
¿Qué es Bing Custom Search?
¿Qué es Bing Entity Search API?
¿Qué es Bing Visual Search API?
¿Qué es Bing Web Search API?
¿Qué es Language Understanding (LUIS)?

Recursos relacionados
Inteligencia artificial (IA): introducción a la arquitectura
Clasificación de imágenes en Azure
Asistente de venta al por menor con funcionalidades visuales
Modelo del clasificador de visión
con Azure Custom Vision
Cognitive Service
Azure GitHub

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta arquitectura usa Custom Vision para clasificar las imágenes que ha tomado un dron
simulado. Proporciona una manera de combinar IA y el Internet de las cosas (IoT). Azure
Custom Vision también puede usarse para la detección de objetos.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. Use el entorno de representación 3D de AirSim para tomar imágenes tomadas con
el dron. Use las imágenes como conjunto de datos de entrenamiento.
2. Importe y etiquete el conjunto de datos en un proyecto de Custom Vision. La
instancia de Cognitive Services entrena y prueba el modelo.
3. Exporte el modelo en formato TensorFlow para que pueda usarlo localmente.
4. El modelo también se puede implementar en un contenedor o en dispositivos
móviles.

Componentes

Simulador de drones de Microsoft AirSim


El simulador de drones de Microsoft AirSim se basa en Unreal Engine . El simulador
es de código abierto, multiplataforma y desarrollado para ayudar a la investigación en
inteligencia artificial. En esta arquitectura, crea el conjunto de datos de las imágenes que
se usan para entrenar el modelo.

Azure Custom Vision


Azure Custom Vision es parte de Azure Cognitive Services . En esta arquitectura, crea
un modelo de clasificador de imágenes.

TensorFlow

TensorFlow es una plataforma de código abierto para aprendizaje automático. Se trata


de una herramienta que permite desarrollar y entrenar modelos de aprendizaje
automático. Al exportar el modelo al formato de TensorFlow, obtendrá un archivo de
búfer de protocolo con el modelo de Custom Vision que puede usar localmente en el
script.

Detalles del escenario


Azure Cognitive Services ofrece muchas posibilidades para las soluciones de inteligencia
artificial (IA). Uno de ellos es Azure Custom Vision, que le permite crear, implementar y
mejorar los clasificadores de imágenes. Esta arquitectura usa Custom Vision para
clasificar las imágenes que ha tomado un dron simulado. Proporciona una manera de
combinar IA y el Internet de las cosas (IoT). Azure Custom Vision también puede usarse
para la detección de objetos.

Posibles casos de uso


Esta solución es perfecta para los sectores de rescate, simulación, robótica, aeronaves,
aeroespacial y aviación.

Search and Rescue Lab de Microsoft sugiere un caso de uso hipotético para Custom
Vision. En el laboratorio, se vuela una dron simulado de Microsoft AirSim en un entorno
representado en 3D. El dron simulado se usa para capturar imágenes sintéticas de los
animales de ese entorno. Después de crear un conjunto de datos de imágenes, se usa
para entrenar un modelo clasificador de Custom Vision. Para entrenar el modelo,
etiquete las imágenes con los nombres de los animales. Cuando vuele de nuevo el dron,
tome nuevas imágenes de los animales. Esta solución identifica el nombre del animal en
cada nueva imagen.

En una aplicación práctica del laboratorio, un dron real reemplaza al dron simulado de
Microsoft AirSim. Si se pierde una mascota, el propietario proporciona imágenes de la
mascota al entrenador del modelo de Custom Vision. Al igual que en la simulación, las
imágenes se usan para entrenar el modelo para que reconozca a la mascota. A
continuación, el piloto del dron busca un área donde la mascota perdida podría estar. A
medida que encuentra animales en su camino, la cámara del dron puede capturar
imágenes y determinar si alguno es la mascota perdida.

Implementación de este escenario


Para implementar esta arquitectura de referencia, siga los pasos descritos en el
repositorio de GitHub de Search and Rescue Lab .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Jose Contreras | Ingeniero principal de software

Pasos siguientes
Más información sobre Microsoft AirSim .
Más información sobre Azure Custom Vision en Cognitive Service.
Más información sobre Azure Cognitive Services
Recursos relacionados
Consulte otros artículos del Centro de arquitectura de Azure:

Clasificación de imágenes en Azure


Análisis geoespacial con Azure Synapse Analytics
Enriquecimiento mediante inteligencia artificial con procesamiento de imágenes y
lenguaje natural en Azure Cognitive Search
Búsqueda de palabras clave y
conversión de voz en texto
Azure Content Delivery Network Azure Cognitive Search Azure Media Player Azure Video Indexer

Azure App Service

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta idea de solución identifica el habla en archivos de vídeo estáticos para administrar
la voz como contenido estándar.

Architecture

Azure Encoder
(Standard or
Premium)

Source Azure Blob Streaming Multi-Protocol Azure CDN Azure Media player
Audio/Video files Storage endpoint Dynamic Packaging/
Multi-DRM

TTML, WebVTT
Keywords

Azure Media
Indexer/OCR Media Azure Search
processor
Web Apps

Microsoft

Azure

Descargue un archivo Visio de esta arquitectura.


Flujo de datos
Azure Blob Storage almacena grandes cantidades de datos no estructurados a los
que puede acceder desde cualquier lugar del mundo a través de HTTP o HTTPS.
Puede usar Blob Storage para exponer datos públicamente al mundo, o bien para
almacenar los datos de la aplicación de manera privada.
La codificación de Azure convierte los archivos multimedia de una codificación a
otra.
Un punto de conexión de streaming Azure representa un servicio de streaming
que puede entregar contenido directamente a una aplicación de reproducción de
cliente o a una red de entrega de contenido (CDN) para su posterior distribución.
Content Delivery Network: proporciona una entrega de contenido fiable y segura
con un amplio alcance global y una gran cantidad de características.
Azure Media Player: utiliza estándares del sector, como HTML5 (MSE/EME), para
proporcionar una experiencia de streaming adaptable enriquecida.
Independientemente de la tecnología de reproducción que se use, tendrá una
interfaz JavaScript unificada para acceder a las API.
Azure Cognitive Search proporciona un servicio listo para usar que se rellena con
datos y, a continuación, se usa para agregar funcionalidad de búsqueda a una
aplicación web o móvil.
Web Apps hospeda el sitio web o la aplicación web.
Azure Media Indexer permite buscar el contenido de sus archivos multimedia y
genera una transcripción de texto completo para el subtitulado y las palabras
clave. Los archivos multimedia se procesan individualmente o en lotes.

Componentes
Blob Storage es un servicio que forma parte de Azure Storage . Blob Storage
ofrece almacenamiento optimizado de objetos en la nube para grandes cantidades
de datos no estructurados.
Azure Media Services es una plataforma basada en la nube que puede utilizar
para transmitir vídeo, mejorar la accesibilidad y la distribución y analizar el
contenido de vídeo.
El streaming en vivo y a petición es una característica de Azure Media Services
que entrega contenido a varios dispositivos a escala.
La codificación de Azure proporciona una manera de convertir archivos que
contienen vídeo digital o audio de un formato estándar a otro.
Azure Media Player reproduce vídeos que tienen varios formatos.
Azure Content Delivery Network ofrece una solución global para la entrega
rápida de contenidos. Este servicio proporciona a los usuarios acceso rápido,
confiable y seguro al contenido web estático y dinámico de las aplicaciones.
Azure Cognitive Search es un servicio de búsqueda en la nube que proporciona
infraestructura, API y herramientas para la búsqueda. Puede usar Azure Cognitive
Search para compilar experiencias de búsqueda a partir de contenido privado
heterogéneo de aplicaciones web, móviles y empresariales.
App Service proporciona un marco para compilar, implementar y escalar
aplicaciones web. La característica Web Apps es un servicio para hospedar
aplicaciones web, API de REST y servidores back-end para dispositivos móviles.
Azure Media Indexer proporciona una manera de hacer que se pueda buscar
contenido de los archivos multimedia. También puede generar una transcripción
de texto completo para subtítulos y palabras clave.

Detalles del escenario


Una solución de conversión de voz en texto proporciona una manera de identificar la
voz en archivos de vídeo estáticos para que pueda administrarla como contenido
estándar. Por ejemplo, los empleados pueden usar esta tecnología para buscar vídeos
de entrenamiento para palabras o frases habladas. A continuación, pueden navegar
hasta el momento específico en el vídeo que contiene la palabra o frase.

Al usar esta solución, puede cargar vídeos estáticos en un sitio web de Azure. El Azure
Media Indexer usa Speech API para indexar la voz dentro de los vídeos y la almacena en
una base de datos de Azure. Puede buscar palabras o frases mediante la característica
Web Apps de Azure App Service. A continuación, puede recuperar una lista de
resultados. Al seleccionar un resultado, puede ver el lugar en el vídeo que menciona la
palabra o frase.

Esta solución se basa en los servicios administrados de Azure: Content Delivery


Network y Azure Cognitive Search .

Posibles casos de uso


Esta solución se aplica a escenarios que pueden beneficiarse de la capacidad de buscar
voz grabada. Entre los ejemplos se incluyen:

Vídeos educativos y de formación.


Investigaciones criminales.
Análisis del servicio al cliente.

Pasos siguientes
Uso de Azure Blob Storage
Procedimientos para codificar un recurso mediante Media Encoder
Procedimientos para administrar puntos de conexión de streaming
Uso de Azure Content Delivery Network
Desarrollo de aplicaciones para reproductor de vídeo
Creación de un servicio de Azure Cognitive Search
Ejecución de aplicaciones web en la nube
Indexación de archivos de soporte físico

Recursos relacionados
Sistema multimedia en la nube de Gridwich
Medios digitales con streaming en vivo
Medios digitales con vídeo bajo demanda
Predicción del abandono de
clientes mediante el análisis en
tiempo real
Azure Machine Learning

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

La solución de predicción sobre el abandono de clientes usa la plataforma de IA de


Azure para predecir la probabilidad de abandono y ayuda a encontrar patrones en los
datos existentes asociados a la tasa de abandono prevista.

Architecture

Descargue un archivo Visio de esta arquitectura.


Flujo de datos
1. Use Azure Event Hubs para transmitir todos los datos en directo a Azure.

2. Procesar datos en tiempo real con Azure Stream Analytics . Stream Analytics
puede generar datos procesados en Azure Synapse . Esto permite a los clientes
combinar los datos históricos y existentes para crear paneles e informes en
Power BI.

3. Ingiera datos históricos a escala en Azure Blob Storage mediante Azure


Synapse u otra herramienta ETL.

4. Use Azure Synapse para combinar datos de streaming con datos históricos para
informes o experimentación en Azure Machine Learning .

5. Use Azure Machine Learning para crear modelos que predigan la probabilidad
de abandono e identificar los patrones de datos para ofrecer información
inteligente.

6. Use Power BI para crear paneles e informes operativos sobre Azure Synapse. Los
modelos de Azure Machine Learning se pueden usar para mejorar aún más los
informes y ayudar a las empresas en los procesos de toma de decisiones.

Componentes
Azure Event Hubs es un servicio de ingesta de eventos que puede procesar
millones de eventos por segundo. Los datos enviados a un centro de eventos se
pueden transformar y almacenar con cualquier proveedor de análisis en tiempo
real.
Azure Stream Analytics es un motor de análisis en tiempo real diseñado para
analizar y procesar un gran volumen de datos de streaming rápido. Las relaciones
y los patrones identificados en los datos se pueden usar para desencadenar
acciones e iniciar flujos de trabajo, como la creación de alertas, la provisión de
información a una herramienta de generación de informes o el almacenamiento de
datos transformados para usarlos posteriormente.
Azure Blob Storage es un servicio en la nube para almacenar grandes cantidades
de datos no estructurados, como texto, datos binarios, audio y documentos de
forma más fácil y rentable. Azure Blob Storage permite a los científicos de datos
acceder rápidamente a los datos para la experimentación y la creación de modelos
de IA.
Azure Synapse Analytics es un almacén de datos rápido y confiable con análisis
ilimitados que combina la integración de datos, el almacenamiento de datos
empresariales y el análisis de macrodatos. Le ofrece la libertad de consultar datos
según sus términos, mediante recursos dedicados o sin servidor y suministrar
datos para necesidades inmediatas de BI y aprendizaje automático.
Azure Machine Learning se puede usar con cualquier aprendizaje automático
supervisado y no supervisado, tanto si prefiere escribir código Python o R. Puede
crear, entrenar y realizar un seguimiento de los modelos de aprendizaje
automático en un área de trabajo de Azure Machine Learning.
Power BI es un conjunto de herramientas que proporciona a las organizaciones
valiosas conclusiones. Power BI se conecta a varios orígenes de datos y simplifica la
preparación de datos y la creación de modelos desde orígenes dispares. Mejore la
colaboración en equipo en toda la organización de forma que se generen informes
y paneles analíticos que respalden las decisiones empresariales y publíquelos en
los dispositivos web y móviles para que los usuarios los puedan usar.

Detalles del escenario


Conservar los clientes existentes es cinco veces más económico que conseguir clientes
nuevos. Por ello, los ejecutivos de marketing a menudo intentar calcular la probabilidad
de abandono de clientes y buscan las acciones necesarias para minimizar la tasa de
abandono.

Posibles casos de uso


La solución utiliza Azure Machine Learning para predecir la probabilidad de abandono y
ayuda a encontrar patrones en los datos existentes asociados a la tasa de abandono
prevista. Al utilizar los datos históricos y casi en tiempo real, los usuarios pueden crear
modelos predictivos para analizar características e identificar los predictores de la
audiencia existente. Esta información proporciona a las empresas información sobre la
que actuar y les permite mejorar la retención de clientes y los márgenes de beneficios.

Esta solución está optimizada para el sector minorista.

Implementación de este escenario


Para obtener más detalles sobre cómo compilar e implementar esta solución, consulte la
guía de la solución en GitHub .

El objetivo de esta guía es demostrar las canalizaciones de datos predictivos para que
los minoristas puedan predecir el abandono de clientes. Los minoristas pueden utilizar
estas predicciones para evitar el abandono de clientes mediante el conocimiento del
dominio y las estrategias de marketing adecuadas para abordar a los clientes en riesgo.
En la guía también se muestra cómo se pueden volver a entrenar los modelos de
abandono de clientes para usar más datos a medida que estén disponibles.

Los entresijos de la solución


La solución de un extremo a otro se implementa en la nube, mediante Microsoft Azure.
La solución consta de varios componentes de Azure, como ingesta de datos,
almacenamiento de datos, movimiento de datos, análisis avanzado y visualización. El
análisis avanzado se implementa en Azure Machine Learning, donde se puede usar el
lenguaje Python o R para crear modelos de ciencia de datos. O bien, puede reutilizar las
bibliotecas locales o de terceros existentes. Con la ingesta de datos, la solución puede
hacer predicciones basadas en los datos que se transfieren a Azure desde un entorno
local.

Panel de soluciones
La siguiente instantánea muestra un panel de Power BI de ejemplo que proporciona
información detallada sobre las tasas de abandono previstas en la base de clientes.

Pasos siguientes
Información acerca de Azure Event Hubs
Bienvenido a Azure Stream Analytics
¿Qué es Azure Synapse Analytics?
Introducción a Azure Blob Storage
¿Qué es Azure Machine Learning?
¿Qué es Power BI?

Recursos relacionados
Guías de arquitectura:

Inteligencia artificial (IA)


Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Marco de operaciones de Machine Learning (MLOps)

Arquitecturas de referencia:

Puntuación de Batch para modelos de aprendizaje profundo


Puntuación por lotes de modelos de Python en Azure
Creación de una canalización de transcripción para la conversión de voz en texto
Ofertas personalizadas
Azure Event Hubs Azure Functions Azure Machine Learning Azure Storage Azure Stream Analytics

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta solución crea sistemas de marketing inteligentes que proporcionan contenido


personalizado por el cliente mediante el uso de modelos de Machine Learning que
analizan los datos de varios orígenes. Entre las tecnologías clave que se usan se incluyen
Intelligent Recommendations y Azure Personalizer.

Architecture
User activity Ingest Storage Analyze Visualize

1 3 4

Aggregated
Data 6
Azure Cosmos DB Intelligent Power BI
Azure Event Hubs
(SQL API) Recommendations

11
Products Function App 2

Offers 7
Raw Stream Data
Azure Stream Azure Data Lake
Analytics Storage

References

8 9
Product Views

Azure Cache for Azure 10


Web App User
Offer Views Redis Personalizer


Microsoft
Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Una aplicación de Azure Functions captura la actividad de usuario sin procesar
(como los clics en productos y ofertas) y las ofertas que se presentan a los usuarios
en el sitio web. La actividad se envía a Azure Event Hubs. En las áreas en las que la
actividad del usuario no está disponible, la actividad de usuario simulada se
almacena en Azure Cache for Redis.
2. Azure Stream Analytics analiza los datos para ofrecer un análisis casi en tiempo
real del flujo de entrada desde la instancia de Azure Event Hubs.
3. Los datos agregados se envían a Azure Cosmos DB for NoSQL.
4. Power BI se usa para buscar información sobre los datos agregados.
5. Los datos sin procesar se envían a Azure Data Lake Storage.
6. Intelligent Recommendations usa los datos sin procesar de Azure Data Lake
Storage y hace recomendaciones a Azure Personalizer.
7. El servicio Personalizer atiende a los principales productos y ofertas contextuales y
personalizados.
8. Los datos simulados de actividad de usuario se entregan al servicio Personalizer
para proporcionar productos y ofertas personalizados.
9. Los resultados se encuentran en la aplicación web a la que accede el usuario.
10. Los comentarios de los usuarios se capturan en función de la reacción del usuario
a las ofertas y productos mostrados. La puntuación de recompensa se proporciona
al servicio Personalizer para que mejore con el tiempo.
11. El reentrenamiento de Intelligent Recommendations puede dar lugar a mejores
recomendaciones. Este proceso también se puede realizar mediante datos
actualizados de Azure Data Lake Storage.

Componentes
Event Hubs es una plataforma de streaming totalmente administrada. En esta
solución, Event Hubs recoge datos de consumo en tiempo real.
Stream Analytics ofrece procesamiento de flujos sin servidor en tiempo real. Este
servicio proporciona una manera de ejecutar consultas en la nube y en dispositivos
perimetrales. En esta solución, Stream Analytics agrega los datos de streaming y
los pone a disposición para su visualización y actualización.
Azure Cosmos DB es una base de datos de varios modelos distribuida
globalmente. Con Azure Cosmos DB, las soluciones pueden escalar de forma
elástica el rendimiento y el almacenamiento en cualquier número de regiones
geográficas. Azure Cosmos DB for NoSQL almacena datos en formato de
documento y es una de varias API de base de datos que ofrece Azure Cosmos DB.
En la implementación de GitHub de esta solución, DocumentDB se usó para
almacenar la información de clientes, productos y ofertas, pero también se puede
usar Azure Cosmos DB for NoSQL. Para más información, consulte Estimados
clientes de DocumentDB, le damos la bienvenida a Azure Cosmos DB.
Storage es una solución de almacenamiento en la nube que incluye el
almacenamiento de objetos, archivos, discos, colas y tablas. Entre los servicios se
incluyen soluciones y herramientas de almacenamiento híbridas para transferir,
compartir y realizar copias de seguridad de los datos. Esta solución utiliza Storage
para gestionar las colas que simulan la interacción de los usuarios.
Functions es una plataforma de proceso sin servidor que se puede usar para
crear aplicaciones. Con Functions, puede usar desencadenadores y enlaces de
datos para integrar los servicios. Esta solución usa Functions para coordinar la
simulación de usuario. Functions también es el componente principal que genera
ofertas personalizadas.
Machine Learning es un entorno basado en la nube que permite entrenar,
implementar, automatizar, administrar y realizar un seguimiento de los modelos de
aprendizaje automático. Aquí, Machine Learning usa las preferencias y el historial
de productos de cada usuario para proporcionar la puntuación de afinidad de
usuario a producto.
Azure Cache for Redis proporciona un almacén de datos en memoria basado en
el software de Redis. Azure Cache for Redis proporciona funcionalidades de Redis
de código abierto como una oferta totalmente administrada. En esta solución,
Azure Cache for Redis proporciona afinidades de producto preprocesadas para los
clientes sin historial de usuarios disponible.
Power BI es un servicio de análisis empresarial que proporciona visualizaciones
interactivas y funcionalidades de inteligencia empresarial. Su interfaz intuitiva le
permite crear sus propios informes y cuadros de mando. Esta solución usa Power
BI para mostrar la actividad en tiempo real en el sistema. Por ejemplo, Power BI usa
los datos de Azure Cosmos DB for NoSQL para mostrar la respuesta del cliente a
varias ofertas.
Data Lake Storage es un repositorio de almacenamiento escalable que contiene
una gran cantidad de datos en su formato nativo y sin procesar.

Detalles de la solución
En el entorno tan conectado y competitivo de hoy en día, las empresas modernas ya no
pueden sobrevivir con contenido en línea genérico y estático. Además, las estrategias de
marketing que usan herramientas tradicionales pueden ser costosas y difíciles de
implementar. Como resultado, no producen la rentabilidad deseada de la inversión.
Estos sistemas a menudo no aprovechan al máximo los datos recogidos cuando crean
una experiencia más personalizada para los usuarios.

Presentar ofertas personalizadas para cada usuario se ha convertido en algo esencial


para fidelizar a los clientes y seguir siendo rentable. En el sitio web de un comercio
minorista, los clientes desean utilizar sistemas inteligentes que proporcionen ofertas y
contenido en función de sus intereses y preferencias particulares. Hoy en día, los
equipos de marketing digital pueden desarrollar esta inteligencia mediante los datos
generados a partir de todo tipo de interacciones del usuario.

Los profesionales de marketing tienen ahora la oportunidad de ofrecer ofertas


altamente relevantes y personalizadas a cada usuario mediante el análisis de cantidades
masivas de datos. Pero la creación de una infraestructura de macrodatos confiable y
escalable no es trivial. Y desarrollar modelos sofisticados de aprendizaje automático
personalizados para cada usuario también es una tarea compleja.

Intelligent Recommendations ofrece funcionalidades para impulsar los resultados


deseados, como recomendaciones de artículos, que se basan en interacciones y
metadatos del usuario. Se puede usar para promover y personalizar cualquier tipo de
contenido, como productos para vender, medios, documentos, ofertas, etc.

Azure Personalizer es un servicio que forma parte de Azure Cognitive Services. Se puede
usar para determinar qué producto sugerir a los compradores o para averiguar la
posición óptima de un anuncio. Personalizer actúa como clasificador adicional del
último paso. Después de que las recomendaciones se muestren al usuario, se supervisa
la reacción del usuario y se devuelve al servicio Personalizer como puntuación de
recompensa. Este proceso garantiza que el servicio aprenda de manera continua, y
mejora la capacidad de Personalizer de seleccionar los mejores artículos en función de la
información contextual recibida.

Microsoft Azure proporciona herramientas analíticas avanzadas en las áreas de ingesta


de datos, almacenamiento de datos, procesamiento de datos y componentes analíticos
avanzados: todos los elementos esenciales para construir una solución de oferta
personalizada.

Integrador de sistemas
Puede ahorrar tiempo al implementar esta solución mediante la contratación de un
integrador de sistemas entrenado (SI). El SI puede ayudarle a desarrollar una prueba de
concepto y puede ayudar a implementar e integrar la solución.

Posibles casos de uso


Esta solución se aplica a la comercialización de bienes y servicios en función de los
datos de los clientes (productos vistos o comprados). Esto podría aplicarse en las
siguientes áreas:

Comercio electrónico: Se trata de un área en la que la personalización se usa


ampliamente con el comportamiento del cliente y las recomendaciones de
productos.

Venta minorista: En función de los datos de compra anteriores, se pueden brindar


recomendaciones y ofertas sobre productos.

Telecomunicaciones: En función de la interacción del usuario en esta área, se


pueden proporcionar recomendaciones. En comparación con otros sectores, los
rangos de productos y ofertas pueden ser limitados.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mahi Sundararajan | Ingeniero sénior de clientes

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Información detallada sobre los clasificadores que usa este modelo
MLOps: administración de modelos, implementación, linaje y supervisión con
Azure Machine Learning
Compilación de una API de recomendaciones en tiempo real en Azure
Certificación Microsoft: Certificación de Científico de Datos Asociado
Crear un modelo de clasificación con el diseñador de Azure Machine Learning, sin
necesidad de codificación
Uso del aprendizaje automático automatizado en Azure Machine Learning y
aprenda a crear un modelo de aprendizaje automático de arrastrar y colocar
Azure Event Hubs: una plataforma de streaming de macrodatos y un servicio de
ingesta de eventos
Bienvenido a Azure Stream Analytics
Bienvenido a Azure Cosmos DB
Introducción a Almacenamiento de Azure
Introducción a Azure Functions
¿Qué es Azure Machine Learning?
Acerca de Azure Cache for Redis
Creación de informes y paneles en Power BI: documentación
Introducción a Azure Data Lake Storage Gen2
Recursos relacionados
Inteligencia artificial (IA): introducción a la arquitectura
Documentación de Azure Machine Learning
Optimización del marketing con
Machine Learning
Servicios de Azure AI Azure Synapse Analytics Azure Machine Learning Azure Data Lake Power BI

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Los servicios de Azure pueden extraer información de las redes sociales que puede usar
en campañas de marketing de macrodatos.

Architecture

Ingestion Enrichment Storage Visualization

Cognitive Services Azure Web


App Services

1 2 4 5
External data
(Text, posts) Azure Synapse Azure Data Lake
Analytics

3
Azure Machine Microsoft
Learning Power BI

Microsoft

Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Azure Synapse Analytics enriquece los datos de grupos de SQL dedicados con el
modelo registrado en Azure Machine Learning a través de un procedimiento
almacenado.
2. Azure Cognitive Services enriquece los datos mediante ejecución de análisis de
sentimiento, predicción del significado global, extracción de información relevante
y aplicación de otras características de inteligencia artificial. Machine Learning se
usa para desarrollar un modelo de aprendizaje automático y registrarlo en el
registro de Machine Learning.
3. Azure Data Lake Storage proporciona almacenamiento para los datos de
aprendizaje automático y una memoria caché para entrenar el modelo de
aprendizaje automático.
4. La característica Web Apps de Azure App Service se usa para crear e implementar
aplicaciones web escalables críticas para la empresa. Power BI proporciona un
panel interactivo con visualizaciones que utilizan los datos almacenados en Azure
Synapse Analytics para tomar decisiones sobre las predicciones.

Componentes
Azure Synapse Analytics es un servicio de análisis integrado que acelera el
tiempo necesario para extraer información de los almacenes de datosy sistemas de
macrodatos.

Cognitive Services consta de servicios basados en la nube que proporcionan


funcionalidad de inteligencia artificial. Los SDK de la biblioteca cliente y las API de
REST le ayudan a crear inteligencia cognitiva en aplicaciones, incluso si no tiene
aptitudes de inteligencia artificial o ciencia de datos.

Machine Learning es un entorno basado en la nube que permite entrenar,


implementar, automatizar, administrar y realizar un seguimiento de los modelos de
aprendizaje automático.

Data Lake Storage es un lago de datos seguro y que se pueden escalar de forma
masiva para cargas de trabajo de análisis de alto rendimiento.

App Service proporciona un marco para compilar, implementar y escalar


aplicaciones web. La característica Web Apps es un servicio para hospedar
aplicaciones web, API de REST y servidores back-end para dispositivos móviles.

Power BI es una colección de servicios y aplicaciones de análisis. Puede usar


Power BI para conectarse y mostrar orígenes de datos no relacionados.

Detalles del escenario


Las campañas de marketing consisten en algo más que el mensaje que se entrega.
Cuándo y cómo entrega ese mensaje es igual de importante. Sin un enfoque analítico
controlado por datos, las campañas pueden perder fácilmente a oportunidades o
esforzarse para ganar atracción.

En la actualidad, las campañas de marketing se basan a menudo en el análisis de redes


sociales, que se ha vuelto cada vez más importante para las empresas y organizaciones
de todo el mundo. Este análisis es una herramienta eficaz que se puede usar para recibir
comentarios instantáneos sobre productos y servicios, mejorar las interacciones con los
clientes para incrementar su satisfacción, mantenerse a la altura de la competencia, etc.
A menudo, las empresas carecen de formas eficaces y viables de supervisar las
conversaciones en redes sociales. Como resultado, pierden innumerables oportunidades
de usar estas conclusiones para aportar datos a sus estrategias y planes.

Posibles casos de uso


La información de sus clientes obtenida a partir de las redes sociales puede ayudarle a
mejorar la experiencia del cliente, aumentar su satisfacción, obtener nuevos clientes
potenciales y evitar el abandono de clientes. Estas aplicaciones de análisis de redes
sociales se dividen en tres áreas principales:

Medición del estado de la marca:


Capturar reacciones y comentarios de los clientes acerca de nuevos productos
en redes sociales.
Analizar opiniones sobre interacciones en redes sociales relativas a un producto
recién presentado.

Creación y mantenimiento de relaciones con los clientes:


Identificar rápidamente los problemas de los clientes.
Escuchar menciones de marca sin etiquetar.

Optimización de las inversiones en marketing:


Extraer información de redes sociales para el análisis de campañas.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Christina Skarpathiotaki | Arquitecto de soluciones en la nube de IA

Otros colaboradores:
Nicholas Moore | Arquitectura en la nube/Datos/Inteligencia artificial

Pasos siguientes
Obtenga más información con las siguientes rutas de aprendizaje:

Creación de modelos de Machine Learning


Compilación de soluciones de IA con Azure Machine Learning
Integración de datos a escala con Azure Data Factory o canalización de Azure
Synapse
Análisis de sentimiento con Cognitive Services en Azure Synapse Analytics
Text Analytics con Cognitive Services en Azure Synapse Analytics

Para información sobre los componentes de soluciones, consulte estos recursos:

Documentación de Azure Machine Learning


Documentación de Azure Synapse Analytics
Documentación de Cognitive Services
Documentación de Power BI
Información general de App Service
Entrenamiento de modelos de aprendizaje automático en Azure Synapse Analytics
Puntuación de modelos de aprendizaje automático para grupos e SQL dedicados
en Azure Synapse Analytics
Aprendizaje automático con Apache Spark en Azure Synapse Analytics

Recursos relacionados
Reconocimiento facial y análisis de sentimiento
Predicción del abandono de clientes mediante el análisis en tiempo real
Creación de soluciones de
marketing personalizadas casi en
tiempo real
Azure Cosmos DB Azure Event Hubs Azure Functions Azure Machine Learning Azure Stream Analytics

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta arquitectura muestra cómo puede crear una solución que personalice las ofertas
con Azure Functions, Azure Machine Learning y Azure Stream Analytics.

Architecture

Input Events Azure Stream Analytics


Event Hub (Near Real-Time Aggregates)

Cold start
Product Affinity

Browser Personalized offer


logic

Machine Learning Raw stream data


(Product Affinity)

Cosmos DB Dashboard
(Azure Services)

Microsoft 
Azure
Descargue un archivo Visio de esta arquitectura.

Flujo de datos
Event Hubs ingiere datos sin procesar de secuencias de clics de Azure Functions
y los pasa a Stream Analytics.
Azure Stream Analytics agrega clics casi en tiempo real por producto, oferta y
usuario. Escribe en Azure Cosmos DB y también archiva los datos sin procesar de la
secuencia de clics en Azure Storage.
Azure Cosmos DB almacena datos agregados de clics por usuario y producto y
ofrece información del perfil de usuario.
Azure Storage almacena datos sin procesar de secuencias de clics archivados de
Stream Analytics.
Azure Functions toma la información de la secuencia de clic del usuario de sitios
web y lee el historial del usuario actual de Azure Cosmos DB. Estos datos se
ejecutan mediante el servicio web de Machine Learning o se usan junto con los
datos de inicio en frío de Azure Cache for Redis para obtener puntuaciones de
afinidad de productos. Las puntuaciones de afinidad de los productos se usan con
la lógica de oferta personalizada para determinar la oferta más pertinente que
presentar al usuario.
Azure Machine Learning le ayuda a diseñar, probar, poner en funcionamiento y
administrar soluciones de análisis predictivo en la nube.
Azure Cache for Redis almacena puntuaciones de afinidad de productos de
inicio en frío precalculadas para los usuarios sin historial.
Power BI permite la visualización de los datos de actividad del usuario y las
ofertas presentadas mediante la lectura de datos de Azure Cosmos DB.

Componentes
Event Hubs
Azure Stream Analytics
Azure Cosmos DB
Almacenamiento de Azure
Azure Functions
Azure Machine Learning
Azure Cache for Redis
Power BI

Detalles del escenario


El marketing personalizado es esencial para generar fidelidad entre clientes y asegurar la
rentabilidad. Ahora es más difícil que nunca llegar a los clientes y conseguir atraerlos, de
modo que las ofertas genéricas suelen pasarse por alto. Los actuales sistemas de
marketing no aprovechan los datos que pueden ayudar a resolver este problema.

Los vendedores que usan sistemas inteligentes y analizan grandes cantidades de datos
pueden hacer ofertas muy pertinentes y personalizadas para cada usuario, con
soluciones que van al grano y consiguen atraer a los clientes. Por ejemplo, los minoristas
pueden realizar ofertas y proporcionar contenido basados en los intereses, preferencias
y afinidad de productos exclusivos de cada cliente, para presentar así sus productos a
las personas que más posibilidades tienen de comprarlos.

Esta arquitectura muestra cómo puede crear una solución que personalice las ofertas
con Azure Functions, Azure Machine Learning y Azure Stream Analytics.

Posibles casos de uso


Al personalizar las ofertas, ofrecerá una experiencia individualizada para los clientes
actuales o potenciales, lo que redundará en una mayor atracción de clientes y mejorará
la conversión, la relación a largo plazo y la retención de clientes.

Esta solución es ideal para el sector minorista y el marketing.

Pasos siguientes
Consulte la documentación del producto:

Más información sobre Event Hubs


Más información sobre Stream Analytics
Más información sobre el uso de Azure Cosmos DB
Más información sobre Azure Storage
Más información sobre la creación de funciones
Más información sobre el aprendizaje automático
Aprenda a usar Azure Cache for Redis
Más información sobre Power BI

Pruebe una ruta de aprendizaje:

Implementación de una solución de streaming de datos con Azure Stream


Analytics
Compilación de un modelo de Machine Learning
Creación de aplicaciones sin servidor con Azure Functions
Recursos relacionados
Consulte otros artículos del Centro de arquitectura de Azure:

Estilo de arquitectura de macrodatos


Personalización escalable en Azure
Búsqueda y consulta de una
knowledge base empresarial
mediante Azure OpenAI o Azure
Cognitive Search
Azure Blob Storage Azure Cache for Redis Azure Cognitive Search Servicios de Azure AI

Inteligencia de documentos de Azure

En este artículo se describe cómo usar Azure OpenAI Service o Azure Cognitive Search
para buscar documentos en los datos de la empresa y recuperar resultados para
proporcionar una experiencia de preguntas y respuestas al estilo ChatGPT. En esta
solución se describen dos enfoques:

Enfoque de inserciones: Use el modelo de inserción de Azure OpenAI para crear


datos vectorizados. El vector de búsqueda es una característica que aumenta
significativamente la relevancia semántica de los resultados de la búsqueda.

Enfoque de Azure Cognitive Search: Use Azure Cognitive Search para buscar y
recuperar datos de texto relevantes basados en una consulta del usuario. Este
servicio admite búsqueda de texto completo, búsqueda semántica, vector de
búsqueda y búsqueda híbrida.

7 Nota

En Azure Cognitive Search, las características de búsqueda semántica y vector de


búsqueda se encuentran actualmente en versión preliminar pública.

Arquitectura: Enfoque de inserción


Embedding creation Query and retrieval
5 5
Query

1
Storage Function apps Azure Cache for Azure App 1
User
accounts Redis 2 Service 4
2 4
3
Vectorize Return top k Results passed
Translate Create
Extract text query matching content with prompt
(optional) embeddings
3

Azure OpenAI Azure OpenAI


Azure Azure AI Azure OpenAI embedding language model
Translator Document embedding model
Intelligence model

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
Los documentos que se van a ingerir pueden provenir de varios orígenes, como archivos
en un servidor FTP, datos adjuntos de correo electrónico o datos adjuntos de
aplicaciones web. Estos documentos se pueden ingerir en Azure Blob Storage a través
de servicios como Azure Logic Apps, Azure Functions o Azure Data Factory. Data Factory
es óptimo para transferir datos masivos.

Creación de inserción:

1. El documento se ingiere en Blob Storage y se desencadena una función de Azure


para extraer texto de los documentos.

2. Si los documentos están en un idioma que no es inglés y se requiere traducción,


una función de Azure puede llamar a Azure Translator para que realice la
traducción.

3. Si los documentos son archivos PDF o imágenes, una función de Azure puede
llamar al Documento de inteligencia de Azure AI para extraer el texto. Si el
documento es un archivo de Excel, CSV, Word o texto, el código de Python se
puede usar para extraer el texto.

4. A continuación, el texto extraído se fragmenta correctamente y se usa un modelo


de inserción de Azure OpenAI para convertir cada fragmento en inserciones.

5. Estas inserciones se conservan en la base de datos vectorial. Esta solución usa el


nivel Enterprise de Azure Cache for Redis, pero se puede usar cualquier base de
datos vectorial.

Consulta y recuperación:

1. El usuario envía una consulta a través de una aplicación de usuario.


2. El modelo de inserción de Azure OpenAI se usa para convertir la consulta en
inserciones vectoriales.

3. Una búsqueda de similitud vectorial que usa este vector de consulta en la base de
datos vectorial devuelve el contenido coincidente k superior. El contenido
coincidente que se va a recuperar se puede establecer según un umbral definido
por una medida de similitud, como la similitud coseno.

4. El contenido recuperado k superior y el símbolo del sistema se envían al modelo


de lenguaje de OpenAI de Azure, como GPT-3.5 Turbo o GPT-4.

5. Los resultados de la búsqueda se presentan como la respuesta a la consulta de


búsqueda iniciada por el usuario o los resultados de la búsqueda se pueden usar
como los datos de base para un escenario de conversación multiturno.

Arquitectura: enfoque de extracción de Azure


Cognitive Search
Index creation Query and retrieval
Pull Query
API

1 2 1
Storage Azure Cognitive Azure App User
accounts Search Service
3 4
AI enrichment skillsets
(optional) Create system prompt Call language model
2 3

Azure AI Azure AI Azure OpenAI


Translator Document language model
Intelligence

Descargue un archivo Visio de esta arquitectura.

Creación del índice:

1. Azure Cognitive Search se usa para crear un índice de búsqueda de los


documentos en Blob Storage. Azure Cognitive Search admite Blob Storage, por lo
que el modelo de extracción se usa para rastrear el contenido y la funcionalidad se
implementa a través de indexadores.

7 Nota

Azure Cognitive Search admite otros orígenes de datos para la indexación al


usar el modelo de extracción. Los documentos también se pueden indexar
desde varios orígenes de datos y consolidarse en un único índice.
2. Si determinados escenarios requieren traducción de documentos, se puede usar
Azure Translator, que es una característica que se incluye en la aptitud integrada.

3. Si los documentos no se pueden buscar, como archivos PDF o imágenes


digitalizados, la inteligencia artificial se puede aplicar mediante aptitudes
integradas o personalizadas como conjuntos de aptitudes en Azure Cognitive
Search. La aplicación de inteligencia artificial a un contenido que no admite
búsquedas de texto completo se denomina enriquecimiento con IA. Según el
requisito, el Documento de inteligencia de Azure AI se puede usar como una
aptitud personalizada para extraer texto de archivos PDF o imágenes a través de
modelos de análisis de documentos, modelos precompilados o modelos de
extracción personalizados.

Si el enriquecimiento con IA es un requisito, debe usar el modelo de extracción


(indexadores) para cargar un índice.

Si se agregan campos vectoriales al esquema de índice, lo que carga los datos


vectoriales para la indexación, el vector de búsqueda se puede habilitar mediante
la indexación de esos datos vectoriales. Los datos vectoriales se pueden generar a
través de inserciones de Azure OpenAI.

Consulta y recuperación:

1. Un usuario envía una consulta a través de una aplicación de usuario.

2. La consulta se pasa a Azure Cognitive Search a través de la API de REST de


documentos de búsqueda. El tipo de consulta puede ser sencillo, lo que es óptimo
para la búsqueda de texto completo o completo, que es para construcciones de
consulta avanzadas, como expresiones regulares, búsqueda aproximada y de
caracteres comodín, y búsqueda por proximidad. Si el tipo de consulta se establece
en semántico, se realiza una búsqueda semántica en los documentos y se recupera
el contenido correspondiente. Azure Cognitive Search también admite la vector de
búsqueda y la búsqueda híbrida, que requiere que la consulta de usuario se
convierta en inserciones vectoriales.

3. El contenido recuperado y el símbolo del sistema se envían al modelo de lenguaje


de Azure OpenAI, como GPT-3.5 Turbo o GPT-4.

4. Los resultados de la búsqueda se presentan como la respuesta a la consulta de


búsqueda iniciada por el usuario o los resultados de la búsqueda se pueden usar
como los datos de base para un escenario de conversación multiturno.
Arquitectura: enfoque de inserción de Azure
Cognitive Search
Si no se admite el origen de datos, puede usar el modelo de inserción para cargar los
datos en Azure Cognitive Search.

Push Index creation Query and retrieval


API 2
Query

Azure App Azure Cognitive Azure App 1


Files Service User
Search Service
4
For translating and extracting text 3 3
(optional) Call language model
Create system prompt

Azure OpenAI
Azure AI Azure AI language model
Translator Document
1 Intelligence 2

Descargue un archivo Visio de esta arquitectura.

Creación del índice:

1. Si el documento que se va a ingerir debe traducirse, se puede usar Azure


Translator.
2. Si el documento está en un formato que no se puede buscar, como un PDF o una
imagen, se puede usar el Documento de inteligencia de Azure AI para extraer
texto.
3. El texto extraído se puede vectorizar a través del vector de búsqueda de
inserciones de Azure OpenAI y los datos se pueden insertar en un índice de Azure
Cognitive Search a través de una API de REST o un SDK de Azure.

Consulta y recuperación:

La consulta y recuperación en este enfoque es la misma que la del enfoque de


extracción anteriormente mencionado en este artículo.

Componentes
Azure OpenAI proporciona a la API de REST acceso a los modelos de lenguaje
de Azure OpenAI, como GPT-3, Codex y la serie de modelos de inserción para la
generación de contenido, el resumen, la búsqueda semántica y la conversión de
lenguaje natural a código. Puede acceder al servicio a través de las API de REST, el
SDK de Python o la interfaz basada en web en Azure OpenAI Studio .
El Documento de inteligencia de Azure AI es un servicio de Azure AI . Ofrece
funcionalidades de análisis de documentos para extraer texto impreso y
manuscrito, tablas y pares clave-valor. El Documento de inteligencia de Azure AI
proporciona modelos precompilados que pueden extraer datos de facturas,
documentos, recibos, tarjetas de identificación y tarjetas de presentación. También
lo puede usar para entrenar e implementar modelos personalizados mediante un
modelo de formulario de plantilla personalizada o un modelo de documento
neuronal personalizado.

Document Intelligence Studio proporciona una interfaz de usuario para explorar


las características y modelos del Documento de inteligencia de Azure AI, así como
para compilar, etiquetar, entrenar e implementar modelos personalizados.

Azure Cognitive Search es un servicio en la nube que proporciona


infraestructura, API y herramientas para la búsqueda. Puede usar Azure Cognitive
Search para compilar experiencias de búsqueda a partir de contenido privado
heterogéneo de aplicaciones web, móviles y empresariales.

Blob Storage es la solución de almacenamiento de objetos para archivos sin


procesar en este escenario. Blob Storage admite bibliotecas para varios lenguajes,
como .NET, Node.js y Python. Las aplicaciones pueden acceder a archivos en Blob
Storage a través de HTTP o HTTPS. Blob Storage tiene niveles de acceso frecuente,
esporádico y de archivo para admitir la optimización de costos para almacenar
grandes cantidades de datos.

El nivel Enterprise de Azure Cache for Redis proporciona módulos de Redis


Enterprise administrados, como RediSearch, RedisBloom, RedisTimeSeries y
RedisJSON. Los campos vectoriales permiten la búsqueda de similitud vectorial,
que admite la indexación de vectores en tiempo real, algoritmos de fuerza bruta
(FLAT) y algoritmos de mundo pequeño jerárquico navegable (HNSW),
actualizaciones de vectores en tiempo real y búsqueda de vecinos k más próximos.
Azure Cache for Redis incorpora una solución crítica de almacenamiento de datos
de baja latencia y alto rendimiento para las aplicaciones modernas.

Alternativas
En función de su escenario, puede agregar los siguientes flujos de trabajo.

Use las características de Lenguaje de Azure AI, respuesta a preguntas y


reconocimiento del lenguaje conversacional para crear una capa conversacional
natural sobre sus datos. Estas características buscan respuestas adecuadas para la
entrada de la knowledge base de información personalizada.
Para crear datos vectorizados, puede usar cualquier modelo de inserción. También
puede usar la API de recuperación de imágenes de Visión de servicios de Azure AI
para vectorizar imágenes. Esta herramienta está disponible en versión preliminar
privada.

Use la extensión de Durable Functions para Azure Functions como herramienta de


integración de primer código para realizar pasos de procesamiento de texto, como
leer escritura a mano, texto y tablas, y lenguaje de procesamiento para extraer
entidades en función del tamaño y la escala de la carga de trabajo.

Puede usar cualquier base de datos relacional para el almacenamiento persistente


de las inserciones extraídas, lo que incluye:
Azure SQL Database
Azure Cosmos DB
Azure Database para PostgreSQL
Azure Database for MySQL

Detalles del escenario


El procesamiento manual consume cada vez más tiempo, es propenso a errores y
consume muchos recursos debido al gran volumen de documentos. Las organizaciones
que controlan grandes volúmenes de documentos, gran cantidad de datos no
estructurados de diferentes formatos, como PDF, Excel, CSV, Word, PowerPoint y
formatos de imagen, enfrentan un desafío significativo para el procesamiento de
documentos digitalizados y manuscritos y los formularios de sus clientes.

Estos documentos y formularios contienen información crítica, como los datos


personales, el historial médico y los informes de evaluación de daños, que deben
extraerse y procesarse con precisión.

Las organizaciones a menudo ya tienen su propia knowledge base de información, que


se puede usar para responder a preguntas con la respuesta más adecuada. Puede usar
los servicios y las canalizaciones descritos en estas soluciones para crear un origen para
mecanismos de búsqueda de documentos.

Posibles casos de uso


Esta solución proporciona valor a las organizaciones de sectores como empresas
farmacéuticas y servicios financieros. Se aplica a cualquier empresa que tenga un gran
número de documentos con información insertada. Esta solución de búsqueda de un
extremo a otro con tecnología de inteligencia artificial se puede usar para extraer
información significativa de los documentos en función de la consulta del usuario para
proporcionar una experiencia de preguntas y respuestas al estilo de ChatGPT.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Dixit Arora | Ingeniero de clientes sénior, ISV DN CoE


Jyotsna Ravi | Ingeniero principal de clientes, ISV DN CoE

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es la inteligencia de documentos de Azure AI?
¿Qué es Azure OpenAI?
¿Qué es Azure Machine Learning?
Introducción a Blob Storage
¿Qué es Lenguaje de Azure AI?
Introducción a Azure Data Lake Storage Gen2
Biblioteca cliente de QnA Maker de Azure
Crear, entrenar y publicar la base de conocimiento de QnA Maker
¿Qué es la respuesta a preguntas?

Recursos relacionados
Resumen de documentos basados en consultas
Automatización de la identificación, clasificación y búsqueda de documentos
mediante Durable Functions
Indexación de contenido y metadatos de archivos mediante Azure Cognitive
Search
Enriquecimiento con IA con procesamiento de imágenes y texto
Inteligencia artificial en el
perímetro con Azure Stack Hub
Azure Container Registry Azure Kubernetes Service (AKS) Azure Machine Learning Azure Stack Hub

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta arquitectura muestra cómo puede incorporar su modelo de IA entrenado al


perímetro con Azure Stack Hub e integrarlo con sus aplicaciones para ofrecer una
inteligencia de baja latencia.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Los datos se procesan mediante Azure Data Factory y se colocarán en Azure Data
Lake.
2. Los datos de Azure Data Factory se colocan en Azure Data Lake Storage para el
entrenamiento.
3. Los científicos de datos entrenan un modelo con Azure Machine Learning. El
modelo se incluye en contenedores y se coloca en una instancia de Azure
Container Registry.
4. El modelo se implementa en un clúster de Kubernetes en Azure Stack Hub.
5. La aplicación web local se puede usar para puntuar los datos proporcionados por
el usuario final, para puntuar con el modelo implementado en el clúster de
Kubernetes.
6. Los usuarios finales proporcionan datos que se puntúan con respecto al modelo.
7. Tanto la información detallada como las anomalías de la puntuación se ponen en
una cola.
8. Se desencadena una aplicación de funciones una vez que la información de
puntuación se coloca en la cola.
9. Una función envía los datos compatibles y las anomalías a Azure Storage.
10. Las conclusiones pertinentes globales y compatibles están disponibles para su
consumo en Power BI y en una aplicación global.
11. Bucle de comentarios: el nuevo entrenamiento del modelo se puede desencadenar
según una programación. Los científicos de datos trabajan en la optimización. El
modelo mejorado se implementa y se incluye en un contenedor como una
actualización del registro de contenedor.

Componentes
Tecnologías clave que se usan para implementar esta arquitectura:

Azure Machine Learning : creación, implementación y administración de


soluciones de análisis predictivo.
Azure Data Factory : ingesta de datos en Azure Data Factory.
Azure Data Lake Storage : carga de datos en Azure Data Lake Storage Gen2 con
Azure Data Factory.
Container Registry (Registro de contenedor): Almacene y administre imágenes
de contenedor en todos los tipos de implementaciones de Azure.
Azure Kubernetes Service (AKS) : Simplifique la implementación, la
administración y las operaciones de Kubernetes.
Azure Storage : almacenamiento en la nube duradero, de alta disponibilidad y
escalable de forma masiva.
Azure Stack Hub : creación y ejecución de aplicaciones híbridas innovadoras en
los límites de la nube.
Azure Functions : unidad de proceso sin servidor basada en eventos para las
tareas a petición que se ejecutan sin necesidad de mantener el servidor de
proceso.
Azure App Service: ruta de acceso que captura los datos de comentarios de
usuario final para permitir la optimización de los modelos.

Detalles del escenario


Con las herramientas de Azure AI, Edge y la plataforma de nube, es posible la
inteligencia perimetral. La próxima generación de aplicaciones híbridas habilitadas para
la inteligencia artificial puede ejecutarse allá donde se encuentren los datos. Con Azure
Stack Hub, puede incorporar en el perímetro un modelo de inteligencia artificial
entrenado, integrarlo con las aplicaciones para ofrecer una inteligencia de baja latencia
y recibir datos continuamente para mejorar la precisión del modelo de IA, y todo ello sin
tener que cambiar las herramientas ni los procesos en las aplicaciones locales. La idea
de esta solución muestra un escenario de Stack Hub conectado, donde las aplicaciones
perimetrales se conectan a Azure. Para obtener la versión desconectada de este
escenario, consulte el artículo Inteligencia artificial en el perímetro: desconectado.

Posibles casos de uso


Hay una amplia gama de aplicaciones de Edge AI que supervisan y proporcionan
información casi en tiempo real. Áreas en las que Edge AI puede ayudar son:

Procesos de detección de cámaras de seguridad


Análisis de imágenes y vídeos (sector del entretenimiento y multimedia).
Transporte y tráfico (sector automotriz y de movilidad).
Fabricación.
Energía (redes eléctricas inteligentes)

Pasos siguientes
¿Quiere saber más? Consulte el módulo Introducción a Azure Stack.
Consiga la acreditación de Microsoft Certified para Azure Stack Hub con la
certificación Azure Stack Hub Operator Associate.
Instalación del motor de AKS en Linux para Azure Stack Hub
Instalación del motor de AKS en Windows para Azure Stack Hub
Implementación de modelos de ML en un dispositivo perimetral con Dispositivos
de Azure Stack Edge .
Innovación e implementación de contenedores de Azure Cognitive Services (voz,
lenguaje, decisión, visión) en Azure Stack Hub
Para más información sobre los servicios de Azure destacados, consulte los siguientes
artículos y ejemplos:

Documentación de App Service


Azure Data Lake Storage Gen 2
Documentación de Azure Kubernetes Service (AKS)
Documentación de Azure Machine Learning
Documentación de Azure Stack Hub
Opciones de implementación de Azure Stack Hub
Documentación de Container Registry
Documentación de Storage
Motor de AKS en Azure Stack Hub (en GitHub)
Ejemplos de Azure: Inteligencia perimetral en Azure Stack Hub (en GitHub)
Ejemplos de Azure: Azure Stack Hub Foundation (en GitHub)
Documentación de soluciones híbridas y de multinube de Azure

Recursos relacionados
Consulte las siguientes arquitecturas relacionadas:

Inteligencia artificial desconectada en el perímetro con Azure Stack Hub


Aprendizaje automático en la inteligencia artificial de visión de Azure IoT Edge
Implementación del plano técnico de atención sanitaria de Azure para la
inteligencia artificial
Implementación de procesos de inteligencia artificial y aprendizaje automático en
el entorno local y en el perímetro
Detección de afluencia de clientes basada en IA
Inteligencia artificial
desconectada en el perímetro con
Azure Stack Hub
Azure Container Registry HDInsight de Azure Azure Kubernetes Service (AKS) Azure Machine Learning

Azure Stack Hub

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

En este artículo se describe una solución para usar inteligencia artificial perimetral
cuando se desconecta de Internet. La solución usa Azure Stack Hub para mover modelos
de IA al perímetro.

Apache®, Apache Hadoop , Apache Spark , Apache HBase y Apache Storm son
marcas comerciales registradas o marcas comerciales de Apache Software Foundation en
Estados Unidos u otros países. El uso de estas marcas no implica la aprobación de Apache
Software Foundation.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Los científicos de datos usan Azure Machine Learning y un clúster de Azure
HDInsight para entrenar un modelo de aprendizaje automático. El modelo se
incluye en contenedores y se coloca en una instancia de Azure Container Registry.
2. El modelo se ha implementado en un clúster de Azure Kubernetes Service (AKS) en
Azure Stack Hub.
3. Los usuarios finales proporcionan datos que se puntúan con respecto al modelo.
4. Tanto la información detallada como las anomalías de la puntuación se colocan en
el almacenamiento para que se puedan cargar posteriormente.
5. La información compatible y pertinente globalmente está disponible en una
aplicación global.
6. Los científicos de datos usan la puntuación del perímetro para mejorar el modelo.

Componentes
Machine Learning es un entorno basado en la nube que permite compilar,
implementar y administrar los modelos de aprendizaje automático. Con estos
modelos, puede predecir el comportamiento futuro, los resultados y las
tendencias.
HDInsight es un servicio de análisis, de código abierto, espectro completo y
administrado en la nube para empresas. Puede usar marcos de código abierto con
HDInsight, como Hadoop, Spark, HBase y Storm.
Container Registry es un servicio que crea un registro administrado de imágenes
de contenedor. Puede usar Container Registry para compilar, almacenar y
administrar las imágenes. También puede usarlo para almacenar modelos de
Machine Learning en contenedores.
AKS es un servicio de Kubernetes totalmente administrado, de alta
disponibilidad y seguro. AKS facilita la implementación y la administración de
aplicaciones contenedorizadas.
Azure Virtual Machines es una oferta de infraestructura como servicio (IaaS).
Puede usar Virtual Machines para implementar recursos de computación a petición
y escalables, como máquinas virtuales de Windows y Linux.
Azure Storage ofrece almacenamiento en la nube escalable, seguro y de alta
disponibilidad para todos los datos, aplicaciones y cargas de trabajo.
Azure Stack Hub es una extensión de Azure que ofrece una manera de ejecutar
aplicaciones en un entorno local y proporcionar servicios de Azure en su centro de
datos.

Detalles del escenario


Con las herramientas de Azure AI y la plataforma perimetral y de nube de Azure, la
inteligencia perimetral es posible. Las aplicaciones híbridas habilitadas para la
inteligencia artificial puede ejecutarse allí donde se encuentren los datos, en el entorno
local. Al usar Azure Stack Hub, puede llevar un modelo de IA entrenado al perímetro e
integrarlo con sus aplicaciones para obtener una inteligencia de baja latencia. De este
modo, no es necesario realizar cambios en herramientas ni procesos para aplicaciones
locales. Cuando usa Azure Stack Hub, puede estar seguro de que las soluciones en la
nube funcionan incluso sin conexión a Internet.

Esta solución es para un escenario de Azure Stack Hub sin conexión. Debido a
problemas de latencia o de conectividad intermitentes o regulaciones, es posible que no
siempre esté conectado a Azure. En escenarios sin conexión, puede procesar los datos
localmente y agregarlos más adelante en Azure para su posterior análisis. Para obtener
la versión conectada de este escenario, consulte Inteligencia artificial en el perímetro.

Posibles casos de uso


Es posible que tenga que realizar la implementación en un estado sin conexión en los
escenarios siguientes:
Las opciones de seguridad u otras restricciones requieren que implemente Azure
Stack Hub en un entorno que no esté conectado a Internet.
Desea bloquear datos (incluidos los datos de uso) para que no se envíen a Azure.
Desea usar Azure Stack Hub solo como una solución de nube privada que se
implemente en la intranet corporativa y no está interesado en escenarios híbridos.

Pasos siguientes
Para más información acerca de las soluciones de Azure Stack, consulte los siguientes
recursos:

Módulo de entrenamiento: Introducción a Azure Stack


Microsoft Certified: Azure Stack Hub Operator Associate
Instalación del motor de AKS en Linux para Azure Stack Hub
Instalación del motor de AKS en Windows para Azure Stack Hub
Dispositivos administrados de Azure Stack Edge que llevan Azure AI al perímetro
Uso de contenedores de Azure Cognitive Services para que las API de Azure estén
disponibles en el entorno local

Para obtener más información sobre los componentes de la solución, consulte la


siguiente documentación del producto:

Azure App Service


AKS
Machine Learning
Documentación de Azure Stack Hub
Opciones de implementación de Azure Stack Hub
Container Registry
HDInsight
Storage
Máquinas virtuales en Azure
Documentación de soluciones híbridas y de multinube de Azure

Para obtener ejemplos, consulte los siguientes recursos:

Motor de AKS en Azure Stack Hub (en GitHub)


Ejemplos de Azure: Inteligencia perimetral en Azure Stack Hub (en GitHub)
Ejemplos de Azure: Azure Stack Hub Foundation (en GitHub)

Recursos relacionados
Para soluciones relacionadas, consulte los artículos siguientes:
Inteligencia artificial en el perímetro con Azure Stack Hub
Detección de afluencia de clientes basada en IA
Implementación de procesos de inteligencia artificial y aprendizaje automático en
el entorno local y en el perímetro
Implementación del proceso perimetral multiacceso público de Azure
Elección de una opción de la plataforma Kubernetes sin sistema operativo en el
perímetro
Ingesta de vídeo y detección de
objetos en el borde y en la nube
Azure Stack Edge Azure Kubernetes Service (AKS) Azure SQL Edge Azure Container Registry

En este artículo se describe cómo usar un robot móvil con una cámara de streaming en
vivo para implementar varios casos de uso. La solución implementa un sistema que se
ejecuta localmente en Azure Stack Edge para ingerir y procesar la transmisión de vídeo y
los servicios de Azure AI que realizan la detección de objetos.

Architecture
Anomaly
Ingestion and processing Object detection Visualization
detection

Key frames 6 8
1

2
Azure AI
Video ingest Anomaly Browser
services
and process detection
container container
3
5
7

Storage Azure SQL


AI Vision
account Edge database
container

Container Key Vault Azure Arc Azure Azure Kubernetes Azure Stack Edge
Azure Registry Monitor Service

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
En este flujo de trabajo se describe cómo procesa el sistema los datos entrantes:
1. Una cámara que se instala en el robot transmite vídeo en tiempo real mediante el
protocolo de streaming en tiempo real (RTSP).

2. Un contenedor del clúster de Kubernetes en Azure Stack Edge lee la transmisión


entrante y divide el vídeo en imágenes independientes. Una herramienta de
software de código abierto denominada FFmpeg ingiere y procesa la
transmisión de vídeo.

3. Las imágenes se almacenan en la cuenta de almacenamiento local de Azure Stack


Edge.

4. Cada vez que se guarda un nuevo fotograma clave en la cuenta de


almacenamiento, un contenedor de Visión de AI lo recoge. Para obtener
información sobre la separación de lógica en varios contenedores, consulte los
detalles del escenario.

5. Cuando carga un fotograma clave desde el contenedor de almacenamiento, el


contenedor de Visión de AI lo envía a los servicios de Azure AI en la nube. Esta
arquitectura usa Visión de Azure AI, que permite la detección de objetos a través
del análisis de imágenes.

6. Los resultados del análisis de imágenes (objetos detectados y una calificación de


confianza) se envían al contenedor de detección de anomalías.

7. El contenedor de detección de anomalías almacena los resultados del análisis de


imágenes y la detección de anomalías en la base de datos local de Azure SQL de
Azure Stack Edge para futuras referencias. El uso de una instancia local de la base
de datos mejora el tiempo de acceso, lo que ayuda a minimizar los retrasos en el
acceso a los datos.

8. El procesamiento de datos se ejecuta para detectar anomalías en la transmisión de


vídeo entrante en tiempo real. Si se detectan anomalías, una interfaz de usuario de
front-end muestra una alerta.

Componentes
Azure Stack Edge se usa para hospedar servicios de Azure en ejecución en el
entorno local, cerca de la ubicación donde se produce la detección de anomalías,
lo que reduce la latencia.

Azure Kubernetes Service en Azure Stack Edge se usa para ejecutar un clúster de
Kubernetes de contenedores que contienen la lógica del sistema en Azure Stack
Edge de forma sencilla y administrada.
Azure Arc controla el clúster de Kubernetes que se ejecuta en el dispositivo
perimetral.

Visión de Azure AI se usa para detectar objetos en fotogramas clave de la


transmisión de vídeo.

Azure Blob Storage se usa para almacenar imágenes de fotogramas clave


extraídos de la transmisión de vídeo.

Azure SQL Edge se usa para almacenar datos en el borde, cerca del servicio que
los consume y procesa.

Azure Container Registry se usa para almacenar las imágenes de contenedor


Docker.

Azure Key Vault proporciona almacenamiento de seguridad mejorada para los


secretos o claves criptográficas que usa el sistema.

Azure Monitor proporciona observabilidad para el sistema.

Detalles del escenario


Esta arquitectura muestra un sistema que procesa una transmisión de vídeo en tiempo
real, compara los datos extraídos en tiempo real con un conjunto de datos de referencia
y toma decisiones en función de los resultados. Por ejemplo, podría usarse para
proporcionar inspecciones programadas de un perímetro delimitado alrededor de una
ubicación protegida.

La arquitectura usa Stack Edge para asegurarse de que los procesos que hacen un uso
más intensivo de recursos se realicen en el entorno local, cerca del origen del vídeo. Este
diseño mejora significativamente el tiempo de respuesta del sistema, que es importante
cuando una respuesta inmediata a una anomalía es crítica.

Dado que las partes del sistema se implementan como contenedores independientes en
un clúster de Kubernetes, solo puede escalar los subsistemas necesarios según la
demanda. Por ejemplo, si aumenta el número de cámaras de la fuente de vídeo, puede
escalar el contenedor responsable de la ingesta y el procesamiento de vídeo para
controlar la demanda, pero mantener el resto del clúster en el nivel original.

La descarga de la funcionalidad de detección de objetos en los servicios de Azure AI


reduce significativamente la experiencia que necesita para implementar esta
arquitectura. A menos que sus requisitos para la detección de objetos sean altamente
especializados, el enfoque listo para usarse que obtiene del servicio de análisis de
imágenes es suficiente y no requiere conocimientos de aprendizaje automático.
Posibles casos de uso
Supervisión de la seguridad de un perímetro

Detección de un entorno de trabajo no seguro en una fábrica

Detección de anomalías en una línea de ensamblado automatizada

Detección de falta de líquido descongelante en aviones

Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework,
que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de
una carga de trabajo. Para más información, consulte Marco de buena arquitectura de
Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Una de las mayores ventajas de usar Azure Stack Edge es que obtiene componentes
totalmente administrados en el hardware local. Todos los componentes de Azure
totalmente administrados son resistentes automáticamente en un nivel regional.

Además, la ejecución del sistema en un clúster de Kubernetes le permite descargar la


responsabilidad de mantener los subsistemas en buen estado en el sistema de
orquestación de Kubernetes.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Las identidades administradas de Microsoft Entra proporcionan seguridad para todos


los componentes de esta arquitectura. El uso de identidades administradas elimina la
necesidad de almacenar secretos en archivos de código o configuración. Simplifica el
control de acceso, la administración de credenciales y la asignación de roles.

Optimización de costos
La optimización de costos trata de reducir los gastos innecesarios y mejorar las
eficiencias operativas. Para más información, vea Información general del pilar de
optimización de costos.

Si quiere ver un ejemplo de precios para este escenario, use la Calculadora de precios
de Azure . Los componentes más caros del escenario son Azure Stack Edge y Azure
Kubernetes Service. Estos servicios proporcionan capacidad para escalar el sistema con
el objetivo de abordar el aumento de la demanda en el futuro.

El costo de usar los servicios de Azure AI para la detección de objetos varía en función
del tiempo que se ejecute el sistema. El ejemplo de precios anterior se basa en un
sistema que genera una imagen por segundo y funciona durante 8 horas al día. Un FPS
es suficiente para este escenario. Sin embargo, si el sistema necesita ejecutarse durante
períodos de tiempo más largos, el costo de usar los servicios de Azure AI es mayor:

Carga de trabajo media. 12 horas al día .


Carga de trabajo alta. 24 horas al día .

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

Dado que el código se implementa en un clúster de Kubernetes, puede aprovechar las


ventajas de este eficaz sistema de orquestación. Como los distintos subsistemas se
separan en contenedores, puede escalar solo las partes más exigentes de la aplicación.
En un nivel básico, con una fuente de vídeo entrante, el sistema puede contener solo un
nodo en un clúster. Este diseño simplifica significativamente la configuración inicial. A
medida que crece la demanda de procesamiento de datos, puede escalar fácilmente el
clúster agregando nodos.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Nick Sologoub | Responsable principal de ingeniería de software

Otros colaboradores:
Mick Alberts | Escritor técnico
Frédéric Le Coquil | Ingeniero principal de software

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Documentación del producto:

Detección de objetos
Uso responsable de la IA
¿Qué es Azure Stack Edge Pro 2?
Azure Kubernetes Service
Introducción a Azure Arc

Ruta de aprendizaje guiado:

Lleve la innovación de Azure a sus entornos híbridos con Azure Arc


Introducción a Azure Kubernetes Service
Introducción a Azure Stack
Análisis de imágenes con el servicio Computer Vision

Recursos relacionados
Clasificación de imágenes en Azure
Enriquecimiento mediante
inteligencia artificial con
procesamiento de imágenes y
texto
Azure App Service Azure Blob Storage Azure AI Search Azure Functions

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

En este artículo se presenta una solución que enriquece los documentos de texto e
imagen mediante el procesamiento de imágenes, el procesamiento del lenguaje natural
y las aptitudes personalizadas para capturar datos específicos del dominio. Azure
Cognitive Search con enriquecimiento con IA puede ayudar a identificar y explorar
contenido relevante a escala. Esta solución usa el enriquecimiento con IA para extraer el
significado del complejo conjunto de datos sin estructurar original de los informes sobre
el asesinato de JFK (archivos de JFK).

Architecture
Blob Storage Cognitive Search Built-in skills 3

Text Computer
Translator
Analytics Vision
Ingestion Enrich Index Query
Documents
Custom skills
4
1 2 5 7
Document Enriched Search Web
cracking documents index application

Azure Form Azure


Images
Functions Recognizer Machine
Learning
Query
Unstructured data AI enrichment

Projections 8
6

Microsoft
Azure
Blob Storage Table Storage
Knowledge store

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
El diagrama anterior muestra el proceso de pasar el conjunto de datos de los archivos
de JFK sin estructura a través de la canalización de aptitudes de Azure Cognitive Search
para generar datos estructurados e indexables:

1. Los datos no estructurados de Azure Blob Storage, como documentos e imágenes,


se ingieren en Azure Cognitive Search.
2. El paso de descifrado de documentos inicia el proceso de indexación mediante la
extracción de imágenes y texto de los datos, para, después, realizar el
enriquecimiento del contenido. Los pasos del enriquecimiento que se producen en
este proceso dependen de los datos y el tipo de aptitudes seleccionados.
3. Las aptitudes integradas basadas en las API de Computer Vision y Language Service
permiten realizar enriquecimientos con IA, incluido el reconocimiento óptico de
caracteres de la imagen (OCR), el análisis de imágenes, la traducción de texto, el
reconocimiento de entidades y la búsqueda de texto completo.
4. Las aptitudes personalizadas admiten escenarios que requieren modelos o servicios
de inteligencia artificial más complejos. Algunos ejemplos son Forms Recognizer,
modelos de Azure Machine Learning y Azure Functions.
5. Después del proceso de enriquecimiento, el indexador guarda las salidas en un
índice de búsqueda que contiene los documentos enriquecidos e indexados. Este
índice lo pueden usar la búsqueda de texto completo y otros formularios de
consulta.
6. Los documentos enriquecidos también se pueden proyectar en un almacén de
conocimiento, que las aplicaciones de nivel inferior, como la minería de
conocimiento o la ciencia de datos, pueden usar.
7. Las consultas acceden al contenido enriquecido en el índice de búsqueda. El índice
admite analizadores personalizados, consultas de búsqueda aproximada, filtros y
un perfil de puntuación para ajustar la relevancia de la búsqueda.
8. Cualquier aplicación que se conecte a Blob Storage o a Azure Table Storage puede
acceder al almacén de conocimiento.

Componentes
Azure Cognitive Search funciona con otros componentes de Azure para proporcionar
esta solución.

Azure Cognitive Search


Azure Cognitive Search indexa el contenido y potencia la experiencia del usuario en
esta solución. Azure Cognitive Search puede aplicar aptitudes cognitivas pregeneradas
al contenido y el mecanismo de extensibilidad puede agregar aptitudes personalizadas
para transformaciones de enriquecimiento concretas.

Azure Computer Vision


Azure Computer Vision el reconocimiento de texto para extraer y reconocer la
información de texto de las imágenes. Read API usa los modelos de reconocimiento
óptico de caracteres más recientes y está optimizado para documentos grandes y con
mucho texto, e imágenes con demasiado grano.

La OCR API heredada no está optimizada para documentos grandes, pero admite más
idiomas. Los resultados del OCR pueden variar en función de la calidad de la imagen y
de la digitalización. La idea de la solución actual usa el reconocimiento óptico de
caracteres para generar datos con el formato hOCR .

Azure Cognitive Service for Language


Azure Cognitive Service para lenguaje extrae información de texto de documentos sin
estructura, para lo que se usan funcionalidades de análisis de texto como
Reconocimiento de entidades con nombre (NER), la extracción de frases clave y la
búsqueda de texto completo.

Azure Storage
Azure Blob Storage es un almacenamiento de objetos basado en REST para datos a
los que se puede acceder desde cualquier lugar del mundo a través de HTTPS. Blob
Storage se puede usar para exponer datos públicamente al mundo, o bien para
almacenar los datos de aplicaciones de manera privada. Blob Storage es ideal para
grandes cantidades de datos sin estructura, como texto o gráficos.

Azure Table Storage almacena en la nube datos NoSQL altamente disponibles,


escalables, estructurados o semiestructurados.

Azure Functions

Azure Functions es un servicio de proceso sin servidor que permite ejecutar pequeñas
partes de código desencadenado por eventos sin tener que aprovisionar ni administrar
explícitamente la infraestructura. Esta solución usa un método de Azure Functions para
aplicar la lista de criptónimos de la CIA a los informes sobre el asesinato de JFK como
una aptitud personalizada.

Azure App Service


Esta idea de solución también crea una aplicación web independiente en Azure App
Service para probar, demostrar, buscar en el índice y explorar conexiones en los
documentos enriquecidos e indexados.

Detalles del escenario


Los conjuntos de datos grandes y sin estructurar pueden incluir tanto notas escritas a
máquina como manuscritas, fotografías y diagramas, y otros datos sin estructura que las
soluciones de búsqueda estándar no pueden analizar. Los informes sobre el asesinato
de JFK contienen más de 34 000 páginas de documentos sobre la investigación de la
CIA del asesinato de JFK en 1963.

El proyecto de ejemplo JFK Files y la demo en línea muestran un caso de uso


concreto de Azure Cognitive Search. Esta idea de solución no pretende ser un marco ni
una arquitectura escalable para todos los escenarios, sino proporcionar una directriz
general y un ejemplo. El proyecto de código y la demo crean un sitio web público y un
contenedor de almacenamiento legible público para imágenes extraídas, por lo que esta
solución no se debe usar con datos que no sean públicos.

El enriquecimiento con inteligencia artificial en Azure Cognitive Search puede extraer y


mejorar texto susceptible de indexación y búsqueda de imágenes, blobs y otros
orígenes de datos no estructurados, como los archivos JFK. El enriquecimiento con
inteligencia artificial usa conjuntos de aptitudes de aprendizaje automático previamente
entrenados de las API de Cognitive Services Computer Vision y Cognitive Service para
lenguaje. También puede crear y asociar aptitudes personalizadas para agregar un
procesamiento especial para los datos de un dominio concreto, como los criptónimos
de la CIA. Luego, Azure Cognitive Search puede indexar y realizar búsquedas en ese
contexto.

En esta solución, las aptitudes de Azure Cognitive Search se dividen en las siguientes
categorías:

Procesamiento de imágenes. Las aptitudes de extracción de texto y el análisis de


imágenes integradas, incluyen la detección de objetos y de caras, la generación de
etiquetas y títulos, y la identificación de celebridades y de lugares emblemáticos.
Estas aptitudes crean representaciones en texto del contenido de las imágenes, en
las que se pueden realizar búsquedas, y para ello usan las funcionalidades de
consulta de Azure Cognitive Search. El descifrado de documentos es el proceso de
extraer o crear contenido de texto a partir de orígenes que no son de texto.

Procesamiento de lenguaje natural. Las aptitudes integradas como el


reconocimiento de entidades, la detección de idioma y la extracción de frases
clave, asignan el texto sin estructurar a campos en los que se pueden realizar
búsquedas y a los que se puede agregar filtros en un índice.

Las aptitudes personalizadas amplían Azure Cognitive Search para aplicar


transformaciones de enriquecimiento específicas al contenido. Especifique la
interfaz de una aptitud personalizada mediante la aptitud API web personalizada.

Posibles casos de uso


Aumente el valor y la utilidad del texto sin estructurar y del contenido de las
imágenes en aplicaciones de búsqueda y de ciencia de datos.
Use aptitudes personalizadas para integrar el código abierto, el de terceros o el
interno en las canalizaciones de indexación.
Consiga que los documentos JPG, PNG o de mapa de bits digitalizados se puedan
buscar en texto completo.
Genere mejores resultados que la extracción de texto de PDF estándar en archivos
PDF en los que se combinan imágenes y texto. Es posible que algunos formatos
PDF digitalizados y nativos no se analicen correctamente en Azure Cognitive
Search.
Cree información a partir de contenido sin procesar con un significado inherente o
de un contexto que está oculto en grandes documentos sin estructurar o
semiestructurados.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribió el siguiente colaborador.

Autor principal:

Carlos Alejandro Santos | Arquitecto sénior de soluciones en la nube de IA


especializada

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Más información sobre esta solución:

Explore el proyecto para los archivos de JFK en GitHub.


Observe el proceso en acción en este vídeo en línea.
Explore la demostración en línea para los archivos de JFK.

Consulte la documentación del producto:

Enriquecimiento con inteligencia artificial en Azure Cognitive Search


¿Qué es Computer Vision?
¿Qué es Azure Cognitive Service for Language?
¿Qué es el reconocimiento óptico de caracteres?
¿Qué es Reconocimiento de entidades con nombre (NER) en Azure Cognitive
Service for Language?
Introducción a Azure Blob Storage
Introducción a Azure Functions

Pruebe la ruta de aprendizaje:

Implementación de la minería de conocimiento con Azure Cognitive Search

Recursos relacionados
Consulte las arquitecturas e instrucciones relacionadas:

Motor de búsqueda inteligente de productos para comercio electrónico


Búsqueda de palabras clave y conversión de voz en texto con medios digitales
OCR
Sugerencia de etiquetas de contenido con NLP mediante aprendizaje profundo.
Minería de conocimientos para la investigación de contenido
Implementación de modelos de
Machine Learning en AKS con
Kubeflow
Azure Blob Storage Azure Container Registry Azure Kubernetes Service (AKS)

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

En este artículo se presenta una solución para la inferencia en tiempo real en Azure
Kubernetes Service (AKS).

Architecture
App developer

Query the model for AI


6
Azure Kubernetes Service features in app

Machine Learning
model in containers

Serve the model in


4
production

Kubeflow
3

Azure Container
Data scientist 2
Registry Parameter GPU-enabled
Worker nodes
server nodes Virtual Machines

Azure Blob
storage

Microsoft

Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Un modelo de aprendizaje automático se empaqueta en un contenedor y se
publica en Azure Container Registry.
2. Azure Blob Storage aloja los conjuntos de datos de entrenamiento y el modelo
entrenado.
3. Kubeflow se usa para implementar trabajos de entrenamiento en AKS, incluidos los
servidores de parámetros y los nodos de trabajo.
4. Kubeflow se usa para hacer que un modelo de producción esté disponible. Este
paso promueve un entorno coherente entre pruebas, control y producción.
5. AKS admite máquinas virtuales habilitadas para GPU.
6. Los desarrolladores crean funciones para consultar el modelo que se ejecuta en un
clúster AKS.

Componentes
Blob Storage es un servicio que forma parte de Azure Storage . Blob Storage
ofrece almacenamiento optimizado de objetos en la nube para grandes cantidades
de datos no estructurados.
Container Registry construye, almacena y administra imágenes de contenedores
y puede almacenar modelos de aprendizaje automático en contenedores.
AKS es un servicio de Kubernetes totalmente administrado, de alta
disponibilidad y seguro. AKS facilita la implementación y la administración de
aplicaciones contenedorizadas.
Machine Learning es un entorno basado en la nube que permite entrenar,
implementar, automatizar, administrar y realizar un seguimiento de los modelos de
aprendizaje automático. Puede utilizar los modelos para prever el
comportamiento, los resultados y las tendencias futuras.

Detalles del escenario


AKS es útil cuando necesite implementaciones de producción a gran escala de sus
modelos de aprendizaje automático. Una implementación a gran escala implica un
tiempo de respuesta rápido, el autoescalado del servicio implementado y el registro.
Para más información, consulte el documento Implementación de un modelo en el
clúster de Azure Kubernetes Service.

Esta solución utiliza Kubeflow para gestionar la implementación en AKS. Los modelos
de aprendizaje automático se ejecutan en clústeres de AKS respaldados por máquinas
virtuales habilitadas para GPU.

Posibles casos de uso


Esta solución se aplica a escenarios que usan máquinas virtuales habilitadas para AKS y
GPU para el aprendizaje automático. Entre los ejemplos se incluyen:

Sistemas de clasificación de imágenes.


Algoritmos de procesamiento del lenguaje natural.
Sistemas de mantenimiento predictivo.

Pasos siguientes
¿Qué es Azure Machine Learning?
Azure Kubernetes Service (AKS)
Implementación de un modelo en un clúster de Azure Kubernetes Service
Kubeflow en Azure
¿Qué es Azure Blob Storage?
Introducción a los registros de contenedor en Azure
Recursos relacionados
Inteligencia artificial (IA): introducción a la arquitectura
Orquestación de MLOps mediante
Azure Databricks
Azure Databricks

Ideas de solución

Este artículo es una idea de solución. Si le gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comuníquelo a través
de los Comentarios de GitHub .

En este artículo se proporciona una arquitectura y un proceso de operaciones de


aprendizaje automático (MLOps) que usa Azure Databricks. Este proceso define un
método estandarizado de mover modelos y canalizaciones de aprendizaje automático
de desarrollo a producción, con opciones para incluir procesos automatizados y
manuales.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
Esta solución proporciona un proceso de MLOps sólido que usa Azure Databricks. Todos
los elementos de la arquitectura son conectables, por lo que puede integrar otros
servicios de Azure y de terceros en toda la arquitectura según sea necesario. Esta
arquitectura y descripción se adaptan del libro electrónico El gran libro de MLOps .
Este libro electrónico explora la arquitectura que se describe aquí con más detalle.

Control de código fuente: este repositorio de código del proyecto organiza los
cuadernos, los módulos y las canalizaciones. Los científicos de datos crean ramas
de desarrollo para probar las actualizaciones y los nuevos modelos. El código se
desarrolla en cuadernos o en IDE, respaldados por Git, con la integración de
repositorios de Databricks para sincronizar con las áreas de trabajo de Azure
Databricks. El control de código fuente promueve las canalizaciones de aprendizaje
automático del desarrollo, a través del ensayo (para pruebas) hasta la producción
(para la implementación).

Almacén de lago (datos de producción): los científicos de datos trabajan en el


entorno de desarrollo, donde tienen acceso de solo lectura a los datos de
producción. (Como alternativa, los datos se pueden reflejar o censurar). También
tienen acceso de lectura y escritura a un entorno de almacenamiento de desarrollo
para desarrollo y experimentación. Se recomienda una arquitectura de almacén de
lago para los datos, en los que los datos se almacenan en Azure Data Lake
Storage en formato Delta Lake. Los controles de acceso se definen con la
Autenticación transferida de Microsoft Entra o controles de acceso a tablas.

Desarrollo

En el entorno de desarrollo, los científicos de datos y los ingenieros desarrollan


canalizaciones de aprendizaje automático.

1. Análisis de datos exploratorios (EDA): los científicos de datos exploran los datos
en un proceso interactivo e iterativo. Es posible que este trabajo ad hoc no se
implemente en ensayo o producción. Las herramientas pueden incluir Databricks
SQL, dbutils.data.summarize y AutoML.

2. Entrenamiento de modelos y otras canalizaciones de aprendizaje automático: las


canalizaciones de aprendizaje automático se desarrollan como código modular en
cuadernos o IDE. Por ejemplo, la canalización de entrenamiento del modelo lee
datos del almacén de características y otras tablas de almacén de lago. Parámetros
y métricas del modelo de registro de entrenamiento y ajuste en el servidor de
seguimiento de MLflow. La API del almacén de característica registra el modelo
final. Estos registros vinculan el modelo, sus entradas y el código de
entrenamiento.
3. Código de confirmación: para promover el flujo de trabajo de aprendizaje
automático a la producción, el científico de datos confirma el código para
caracterización, entrenamiento y otras canalizaciones para el control de código
fuente.

Ensayo

En el entorno de ensayo, la infraestructura de CI prueba los cambios en las


canalizaciones de aprendizaje automático en un entorno que imita la producción.

4. Solicitud de combinación: cuando se envía una solicitud de combinación (o


extracción) en la rama de ensayo (principal) del proyecto en el control de código
fuente, una herramienta de integración continua y entrega continua (CI/CD) como
Azure DevOps ejecuta pruebas.

5. Pruebas unitarias y de CI: las pruebas unitarias se ejecutan en una infraestructura


de CI, mientras que las pruebas de integración ejecutan flujos de trabajo de un
extremo a otro en Azure Databricks. Si se superan las pruebas, el código cambia la
combinación.

6. Compilación de una rama de versión: cuando los ingenieros de aprendizaje


automático están listos para implementar las canalizaciones de aprendizaje
automático actualizadas en la producción, pueden compilar una nueva versión.
Una canalización de implementación en la herramienta de CI/CD vuelve a
implementar las canalizaciones actualizadas como nuevos flujos de trabajo.

Producción
Los ingenieros de aprendizaje automático administran el entorno de producción, donde
las canalizaciones de aprendizaje automático sirven directamente a las aplicaciones
finales. Las canalizaciones clave en la producción actualizan las tablas de características,
entrenan e implementan nuevos modelos, ejecutan inferencia o servicio y supervisan el
rendimiento del modelo.

7. Actualización de tablas de características: esta canalización lee datos, calcula


características y escribe en tablas del almacén de características. Se ejecuta
continuamente en modo de streaming, se ejecuta según una programación o se
desencadena.

8. Entrenamiento de modelos: en la producción, la canalización de entrenamiento o


reentrenamiento de modelos se desencadena o se programa para entrenar un
modelo nuevo con los datos de producción más recientes. Los modelos se
registran en el Registro de modelos de MLflow.

9. Implementación continua: el registro de nuevas versiones desencadena la


canalización de CD, que ejecuta pruebas para garantizar que el modelo funcione
correctamente en producción. A medida que el modelo supera las pruebas, se
hace un seguimiento de su progreso en el Registro de modelos a través de
transiciones de fase del modelo. Los webhooks del Registro se pueden usar para la
automatización. Las pruebas pueden incluir comprobaciones de cumplimiento,
pruebas A/B para comparar el nuevo modelo con el modelo de producción actual
y pruebas de infraestructura. Los resultados y las métricas de las pruebas se
registran en tablas de almacén de lago. Opcionalmente, puede requerir cierres de
sesión manuales antes de que los modelos se cambien a producción.

10. Implementación de modelos: cuando un modelo entra en producción, se


implementa para la puntuación o el servicio. Los modelos de implementación más
comunes son los siguientes:

Puntuación por lotes o streaming: para latencias de minutos o más, los lotes
y el streaming son las opciones más rentables. La canalización de puntuación
lee los datos más recientes del almacén de características, carga la versión del
modelo de producción más reciente del Registro de modelos y lleva a cabo la
inferencia en un trabajo de Databricks. Puede publicar predicciones en tablas
de almacén de lago, una conexión de Java Database Connectivity (JDBC),
archivos planos, colas de mensajes u otros sistemas de bajada.
Servicio en línea (API de REST): para casos de uso de baja latencia, el servicio
en línea suele ser necesario. MLflow puede implementar modelos en MLflow
Model Serving en Azure Databricks, sistemas de servicios de proveedores de
nube y otros sistemas. En todos los casos, el sistema de servicio se inicializa
con el modelo de producción más reciente del Registro de modelos. Para
cada solicitud, captura características de un almacén de características en
línea y hace predicciones.

11. Supervisión: los flujos de trabajo continuos o periódicos supervisan los datos de
entrada y las predicciones de modelos para el desfase, el rendimiento y otras
métricas. Delta Live Tables puede simplificar la automatización de las
canalizaciones de supervisión y almacenar las métricas en tablas del almacén de
lago. Databricks SQL, Power BI y otras herramientas pueden leer desde estas tablas
para crear paneles y alertas.

12. Reentrenamiento: esta arquitectura admite el reentrenamiento manual y


automático. Los trabajos de reentrenamiento programados son la manera más fácil
de mantener los modelos actualizados.

Componentes
Almacén de lago de datos . Una arquitectura de almacén de lago unifica los
mejores elementos de los lagos de datos y los almacenes de datos, lo que
proporciona administración de datos y rendimiento que normalmente se
encuentra en almacenes de datos con los almacenes de objetos flexibles y de bajo
costo que ofrecen los lagos de datos.
Delta Lake es la opción recomendada para un formato de datos de código
abierto para un almacén de lago. Azure Databricks almacena datos en Data Lake
Storage y proporciona un motor de consultas de alto rendimiento.
MLflow es un proyecto de código abierto para administrar el ciclo de vida de
aprendizaje automático de un extremo a otro. Estos son sus componentes
principales:
Seguimiento: le permite hacer un seguimiento de los experimentos para
registrar y comparar parámetros, métricas y artefactos de modelos.
Registro automático de Databricks: amplía el registro automático de
MLflow para hacer un seguimiento de los experimentos de aprendizaje
automático y registrar automáticamente los parámetros de modelos, las
métricas, los archivos y la información de linaje.
Modelo de MLflow: le permite almacenar e implementar modelos desde
cualquier biblioteca de aprendizaje automático en varias plataformas de
inferencia y servicio de modelos.
Registro de modelos: proporciona un almacén de modelos centralizado para
administrar las transiciones de fase de ciclo de vida del modelo de desarrollo a
producción.
Servicio de modelos: le permite hospedar modelos de MLflow como puntos de
conexión de REST.
Azure Databricks . Azure Databricks proporciona un servicio de MLflow
administrado con características de seguridad empresariales, alta disponibilidad e
integraciones con otras características de área de trabajo de Azure Databricks.
Databricks Runtime para aprendizaje automático: automatiza la creación de un
clúster optimizado para aprendizaje automático, que preinstala bibliotecas de
aprendizaje automático populares como TensorFlow, PyTorch y XGBoost,
además de herramientas de Azure Databricks para aprendizaje automático,
como los clientes de AutoML y el almacén de características.
Almacén de características: es un repositorio centralizado de características.
Permite el uso compartido y la detección de características, y ayuda a evitar la
asimetría de datos entre el entrenamiento y la inferencia de modelos.
Databricks SQL. Databricks SQL proporciona una experiencia sencilla para
consultas SQL en datos de almacén de lago y para visualizaciones, paneles y
alertas.
Repositorios de Databricks: proporciona integración con el proveedor de Git en
el área de trabajo de Azure Databricks, lo que simplifica el desarrollo
colaborativo de cuadernos o código y la integración de IDE.
Flujos de trabajo y trabajos: proporcionan un método para ejecutar código no
interactivo en un clúster de Azure Databricks. Para el aprendizaje automático,
los trabajos proporcionan automatización para la preparación de datos, la
caracterización, el entrenamiento, la inferencia y la supervisión.

Alternativas
Puede adaptar esta solución a la infraestructura de Azure. Las personalizaciones
comunes incluyen los siguientes aspectos:

Varias áreas de trabajo de desarrollo que comparten un área de trabajo de


producción común.
Intercambio de uno o varios componentes de arquitectura para la infraestructura
existente. Por ejemplo, puede usar Azure Data Factory para orquestar trabajos
de Databricks.
Integración con las herramientas de CI/CD existentes a través de las API de REST
de Git y Azure Databricks.

Detalles del escenario


MLOps ayuda a reducir el riesgo de errores en los sistemas de aprendizaje automático e
inteligencia artificial y a mejorar la eficacia de la colaboración y las herramientas. Para
obtener una introducción a MLOps e información general sobre esta arquitectura,
consulte Arquitectura de MLOps en el almacén de lago .

Mediante el uso de esta arquitectura, podrá hacer lo siguiente:

Conectar a las partes interesadas de la empresa con equipos de aprendizaje


automático y ciencia de datos. Esta arquitectura permite a los científicos de datos
usar cuadernos e IDE para el desarrollo. Permite a las partes interesadas de la
empresa ver métricas y paneles en Databricks SQL, todo ello dentro de la misma
arquitectura de almacén de lago.
Haga que la infraestructura de aprendizaje automático esté centrada en los
datos. Esta arquitectura trata los datos de aprendizaje automático (datos de
ingeniería de características, entrenamiento, inferencia y supervisión) igual que
otros datos. Reutiliza las herramientas para canalizaciones de producción, paneles
y otro procesamiento de datos general para el procesamiento de datos de
aprendizaje automático.
Implemente MLOps en módulos y canalizaciones. Al igual que con cualquier
aplicación de software, las canalizaciones modulares y el código de esta
arquitectura permiten probar componentes individuales y reducir el costo de la
refactorización futura.
Automatice los procesos de MLOps según sea necesario. En esta arquitectura,
puede automatizar los pasos para mejorar la productividad y reducir el riesgo de
error humano, pero no todos los pasos deben automatizarse. Azure Databricks
permite la interfaz de usuario y los procesos manuales, además de las API para la
automatización.

Posibles casos de uso


Esta arquitectura se aplica a todos los tipos de aprendizaje automático, aprendizaje
profundo y análisis avanzado. Entre las técnicas comunes de aprendizaje automático e
inteligencia artificial que se usan en esta arquitectura, se incluyen las siguientes:

Aprendizaje automático clásico, como modelos lineales, modelos basados en


árboles y potenciación.
Aprendizaje profundo moderno, como TensorFlow y PyTorch.
Análisis personalizado, como estadísticas, métodos bayesianos y análisis de grafos.

La arquitectura admite datos pequeños (una sola máquina) y datos grandes


(computación distribuida y acelerada por GPU). En cada fase de la arquitectura, puede
elegir recursos de proceso y bibliotecas para adaptarse a los datos y a las dimensiones
de problemas.

La arquitectura se aplica a todos los tipos de sectores y casos de uso empresariales. Los
clientes de Azure Databricks que usan esta arquitectura y otras similares incluyen
organizaciones pequeñas y grandes en sectores como estos:

Bienes de consumo y servicios minoristas


Servicios financieros
Sanidad y ciencias biológicas
Tecnología de la información

Para obtener ejemplos, consulte el sitio web de Databricks .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Brandon Cowen | Arquitecto de soluciones en la nube sénior

Otro colaborador:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
El gran libro de MLOps
Necesidad de plataformas de ML centradas en datos (introducción a MLOps)
Inicio rápido integrado en el producto de aprendizaje automático de Databricks
Tutoriales de 10 minutos: Introducción al aprendizaje automático en Azure
Databricks
Documentación de Databricks Machine Learning
Recursos y página del producto de Databricks Machine Learning
MLOps en Databricks: guía paso a paso
Automatización del ciclo de vida de ML con Databricks Machine Learning
MLOps en Azure Databricks con MLflow
Ingeniería de aprendizaje automático para el mundo real
Automatización de la canalización de aprendizaje automático
Databricks Academy
Proyecto de GitHub de Databricks Academy (formación gratuita)
Glosario de MLOps
Tres principios para seleccionar plataformas de aprendizaje automático
¿Qué es un almacén de lago?
Página principal de Delta Lake
Ingesta de datos en Azure Databricks Lakehouse
Clústeres
Bibliotecas
Documentación de MLflow
Guía de Azure Databricks MLflow
Uso compartido de modelos en áreas de trabajo
Cuadernos
Instrucciones y herramientas para desarrolladores
Implementación de modelos de MLflow en puntos de conexión en línea en Azure
Machine Learning
Implementación en Azure Kubernetes Service (AKS)

Recursos relacionados
Marco de MLOps para escalar el ciclo de vida de aprendizaje automático con Azure
Machine Learning
MLOps v2
Modelo de madurez de MLOps
Implementación de procesos de
inteligencia artificial y aprendizaje
automático en el entorno local y
en el perímetro
Azure Container Registry Azure IoT Edge Azure Machine Learning Azure Stack Edge

Esta arquitectura de referencia muestra cómo usar Azure Stack Edge para ampliar la
inferencia rápida de aprendizaje automático desde la nube hasta escenarios locales o
perimetrales. Azure Stack Hub ofrece funcionalidades de Azure, como proceso,
almacenamiento, redes y aprendizaje automático con aceleración por hardware, a
cualquier ubicación perimetral.

Architecture
On-premises Azure

Training data
Azure Blob
storage

Azure IoT
Hub
Azure Stack
Edge

Model

Azure Machine
Learning

Genrated
model

Azure
Container
Registry
Sampled data Stored model

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
La arquitectura consta de los siguientes pasos:

Azure Machine Learning . Machine Learning le permite crear, entrenar,


implementar y administrar modelos de Machine Learning en entornos basados en
la nube. Después, estos modelos se pueden implementar en servicios de Azure,
incluidos (entre otros) Azure Container Instances, Azure Kubernetes Service (AKS) y
Azure Functions.
Azure Container Registry . Container Registry es un servicio que crea y administra
el registro de Docker. Container Registry compila, almacena y administra imágenes
de contenedor de Docker y puede almacenar modelos de Machine Learning en
contenedores.
Azure Stack Edge . Azure Stack Edge es un dispositivo de proceso perimetral
diseñado para realizar inferencias de aprendizaje automático en el perímetro. Los
datos se preprocesan en el perímetro antes de transferirse a Azure. Azure Stack
Edge incluye hardware de aceleración de procesos diseñado para mejorar el
rendimiento de inferencia de IA en el perímetro.
Datos locales. Los datos locales hacen referencia a los datos que se usan en el
entrenamiento del modelo de Machine Learning. Los datos pueden estar en
cualquier solución de almacenamiento local, incluidas las implementaciones de
Azure Arc.

Componentes
Azure Machine Learning
Azure Container Registry
Azure Stack Edge
Azure IoT Hub
Azure Blob Storage

Detalles del escenario

Posibles casos de uso


Esta solución es ideal para el sector de las telecomunicaciones. Entre los usos típicos
para extender la inferencia se incluyen los siguientes:

Ejecución de la inferencia local y rápida de aprendizaje automático en los datos a


medida que se ingieren y se cuenta con una superficie de hardware local
importante.
Creación de soluciones de investigación a largo plazo en las que los datos locales
existentes se limpian y se usan para generar un modelo. Después, el modelo se usa
tanto en el entorno local como en la nube. Se vuelve a entrenar periódicamente a
medida que llegan nuevos datos.
Compilación de aplicaciones de software que necesitan realizar inferencias sobre
los usuarios, tanto en una ubicación física como en línea.

Recomendaciones

Ingesta, transformación y transferencia de datos


almacenados localmente
Azure Stack Edge puede transformar los datos con origen en el almacenamiento local
antes de transferirlos a Azure. Esta transformación se realiza mediante un dispositivo
Azure IoT Edge implementado en el dispositivo de Azure Stack Edge. Estos dispositivos
IoT Edge están asociados a un recurso de Azure IoT Hub en la plataforma en la nube de
Azure.

Cada módulo de IoT Edge es un contenedor de Docker que cumple una tarea específica
en un flujo de trabajo de ingesta, transformación y transferencia. Por ejemplo, un
módulo de IoT Edge puede recopilar datos de un recurso compartido local de Azure
Stack Edge y transformar los datos en un formato listo para el aprendizaje automático. A
continuación, el módulo transfiere los datos transformados a un recurso compartido en
la nube de Azure Stack Edge. Puede agregar módulos personalizados o integrados al
dispositivo de IoT Edge o desarrollar módulos de IoT Edge personalizados.

7 Nota

Los módulos de IoT Edge se registran como imágenes de contenedor de Docker en


Container Registry.

En el recurso de Azure Stack Edge en la plataforma en la nube de Azure, el recurso


compartido en la nube está respaldado por un recurso de la cuenta de Azure Blob
Storage. Todos los datos del recurso compartido en la nube se cargarán
automáticamente en la cuenta de almacenamiento asociada. Para comprobar la
transformación de los datos y la transferencia, monte el recurso compartido local o en la
nube o recorra la cuenta de Azure Storage.

Entrenamiento e implementación de un modelo


Después de preparar y almacenar los datos en Blob Storage, puede crear un conjunto de
datos de Machine Learning que se conecte a Azure Storage. Un conjunto de datos
representa una copia única de los datos en el almacenamiento a la que Machine
Learning hace referencia directamente.

Puede usar la interfaz de la línea de comandos (CLI) de Machine Learning, el SDK de


R , el SDK de Python, el diseñador o Visual Studio Code para compilar los scripts
necesarios para entrenar el modelo.

Después de entrenar y preparar el modelo para su implementación, puede


implementarlo en diversos servicios de Azure, incluidos, entre otros, los siguientes:

Azure Container Registry . Puede implementar los modelos en un registro privado


de Docker, como Azure Container Registry, porque son imágenes de contenedor
de Docker.
Azure Container Instances . Puede implementar la imagen de contenedor de
Docker del modelo directamente en un grupo de contenedores.
Azure Kubernetes Service . Puede usar Azure Kubernetes Service para escalar
automáticamente la imagen del contenedor de Docker del modelo para
implementaciones de producción a gran escala.
Azure Functions . Puede empaquetar un modelo para que se ejecute directamente
en una instancia de Functions.
Azure Machine Learning . Puede usar instancias de proceso, así como estaciones
de trabajo de desarrollo administradas basadas en la nube, tanto para el
entrenamiento como para la inferencia de modelos. También puede implementar
el modelo de forma similar en dispositivosIoT Edge y Azure Stack Edge locales.

7 Nota

Para esta arquitectura de referencia, el modelo se implementa en Azure Stack Edge


para que esté disponible para la inferencia en el entorno local. Asimismo, el modelo
se implementa en Container Registry para garantizar que esté disponible para la
inferencia en la más amplia variedad de servicios de Azure.

Inferencia con un modelo recién implementado


Azure Stack Edge puede ejecutar modelos de Machine Learning localmente de manera
rápida con los datos locales mediante su hardware integrado de aceleración de
procesos. Este cálculo se produce completamente en el perímetro. El resultado es la
obtención rápida de información a partir de los datos mediante el uso de hardware que
esté más cerca del origen de datos que una región de nube pública.

Además, Azure Stack Edge sigue transfiriendo datos a Machine Learning para volver a
entrenar y mejorar de manera continua mediante una canalización de aprendizaje
automático que está asociada con el modelo que ya se ejecuta con los datos
almacenados localmente.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.
Disponibilidad
Considere la posibilidad de colocar el recurso de Azure Stack Edge en la misma
región de Azure que los otros servicios de Azure que accederán a él. Para
optimizar el rendimiento de la carga, considere la posibilidad de colocar la cuenta
de Azure Blob Storage en la región en la que el dispositivo tiene la mejor conexión
de red.
Considere la posibilidad de usar Azure ExpressRoute para una conexión estable y
redundante entre el dispositivo y Azure.

Facilidad de uso
Los administradores pueden comprobar que el origen de datos del
almacenamiento local se haya transferido al recurso de Azure Stack Edge
correctamente. Para ello, pueden montar el recurso compartido de archivos del
Bloque de mensajes del servidor (SMB) o Network File System (NFS) o conectarse a
la cuenta de Blob Storage asociada mediante el Explorador de Azure Storage .
Use conjuntos de datos de Machine Learning para hacer referencia a los datos en
Blob Storage mientras se entrena el modelo. Hacer referencia al almacenamiento
elimina la necesidad de insertar secretos, rutas de acceso de datos o cadenas de
conexión en los scripts de entrenamiento.
En el área de trabajo de Machine Learning, registre y haga un seguimiento de los
modelos de ML para hacer un seguimiento de las diferencias entre los modelos en
distintos momentos. También puede reflejar de forma similar los metadatos de
seguimiento y control de versiones en las etiquetas que se usan para las imágenes
de contenedor de Docker que se implementan en Container Registry.

DevOps
Revise el enfoque de administración del ciclo de vida de MLOps para Machine
Learning. Por ejemplo, use GitHub o Azure Pipelines para crear un proceso de
integración continua que entrene y vuelva a entrenar automáticamente un modelo.
El entrenamiento se puede desencadenar cuando los nuevos datos rellenan el
conjunto de datos o se hace un cambio en los scripts de entrenamiento.
El área de trabajo de Azure Machine Learning registrará y administrará
automáticamente las imágenes de contenedor de Docker para los modelos de
Machine Learning y los módulos de IoT Edge.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Puede usar la calculadora de precios de Azure para calcular los costos.


Los precios de Azure Stack Edge se calculan como una suscripción mensual de
tarifa plana con un precio de envío único.
Azure Machine Learning también implementa los servicios Container Registry,
Azure Storage y Azure Key Vault, lo que supone costos adicionales. Para obtener
más información, consulte Funcionamiento de Azure Machine Learning:
Arquitectura y conceptos.
Los precios de Azure Machine Learning incluyen los cargos de las máquinas
virtuales que se usan para entrenar el modelo en la nube pública.

Pasos siguientes
Documentación del producto

¿Qué es Azure Machine Learning?


Azure Container Registry
Azure Stack Edge

Módulos de Microsoft Learn:

Introducción a la inteligencia artificial en Azure


Trabajo con datos en Azure Machine Learning

Recursos relacionados
Creación de un bot conversacional de nivel empresarial
Clasificación de imágenes en Azure
Aprendizaje automático de varios
modelos a escala en Azure con
Spark
Azure Data Factory Azure Data Lake Azure Databricks Azure Machine Learning Azure Synapse Analytics

En este artículo se describe una arquitectura para muchos modelos que usa Apache
Spark en Azure Databricks o Azure Synapse Analytics. Spark es una herramienta eficaz
para las transformaciones de datos grandes y complejas que requieren algunas
soluciones.

7 Nota

Use las versiones 3.0 y posteriores de Spark para aplicaciones de muchos modelos.
La funcionalidad de transformación de datos y la compatibilidad con Python y
Pandas es mucho mejor que en versiones anteriores.

En el artículo complementario Aprendizaje automático de varios modelos a escala con


Azure Machine Learning se usan clústeres de Machine Learning y de proceso.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Ingesta de datos: Azure Data Factory extrae datos de una base de datos de origen
y los copia en Azure Data Lake Storage.
2. Canalización de entrenamiento de modelos:
a. Preparación de datos: la canalización de entrenamiento extrae los datos de
Data Lake Storage y usa Spark para agruparlo en conjuntos de datos y entrenar
los modelos.
b. Entrenamiento de modelos: la canalización entrena modelos para todos los
conjuntos de datos que se crearon durante la preparación de los datos. Usa la
API de función de Pandas para entrenar varios modelos simultáneamente.
Después de haber entrenado un modelo, la canalización lo registra en Machine
Learning junto con las métricas de prueba.
3. Canalización de promoción de modelos:
a. Evaluar modelos: la canalización de promoción evalúa los modelos entrenados
antes de transferirlos a producción. Una canalización de DevOps aplica la lógica
de negocios para determinar si un modelo cumple los criterios de
implementación. Por ejemplo, podría comprobar que la precisión de los datos
de prueba es superior al 80 %.
b. Registro de modelos: la canalización de promoción registra los modelos aptos
para el área de trabajo de Machine Learning de producción.
4. Canalización de puntuación por lotes del modelo:
a. Preparación de datos: la canalización de puntuación por lotes extrae los datos
de Data Lake Storage y usa Spark para agruparlos en conjuntos de datos y
entrenar los modelos.
b. Puntuación de modelos: la canalización usa la API de función de Pandas para
puntuar varios conjuntos de datos simultáneamente. Busca las etiquetas del
modelo para identificar el modelo adecuado para cada conjunto de datos en
Machine Learning. Después, descarga el modelo y lo usa para puntuar el
conjunto de datos. Usa el conector de Spark con Synapse SQL para conservar
los resultados.
5. Puntuación en tiempo real: Azure Kubernetes Service (AKS) puede puntuar en
tiempo real si es necesario. Debido al elevado número de modelos, se deben
cargar a petición, no están precargados.
6. Resultados:
a. Predicciones: la canalización de puntuación por lotes guarda las predicciones
en Synapse SQL.
b. Métricas: Power BI se conecta a las predicciones del modelo para recuperar y
agregar resultados para presentar.

Componentes
Azure Machine Learning es un servicio de ML empresarial para compilar e
implementar modelos rápidamente. Proporciona a los usuarios de todos los
niveles de aptitud un diseñador con poco código, ML automatizado (AutoML) y un
entorno de cuadernos de Jupyter hospedado que admite diversos IDE.
Azure Synapse Analytics es un servicio de análisis que unifica integración de
datos, almacenamiento de datos empresariales y análisis de macrodatos.
Synapse SQL es un sistema de consultas distribuidas para T-SQL que habilita
escenarios de almacenamiento y virtualización de datos, además de ampliar T-SQL
para responder a escenarios de streaming y ML. Ofrece modelos de recursos sin
servidor y dedicados.
Azure Data Lake Storage es un servicio de almacenamiento seguro y que se
puede escalar de forma masiva para cargas de trabajo de análisis de alto
rendimiento.
Azure Kubernetes Service (AKS) es un servicio de Kubernetes administrado para
la implementación y la administración de aplicaciones contenedorizadas. AKS
simplifica la implementación de un clúster de AKS administrado en Azure, al
descargar la sobrecarga operativa en Azure.
Azure DevOps es un conjunto de servicios para desarrolladores que permiten
administrar todo el ciclo de vida de las aplicaciones y la infraestructura. DevOps
facilita el seguimiento del trabajo, el control de código fuente, la compilación y
CI/CD, la administración de paquetes y las soluciones de pruebas.
Microsoft Power BI es una colección de servicios de software, aplicaciones y
conectores que funcionan conjuntamente para convertir los orígenes de datos no
relacionados en información coherente, interactiva y visualmente atractiva.

Alternativas
Puede usar Spark en Azure Synapse en lugar de Spark en Azure Databricks con
fines de entrenamiento y puntuación de modelos.
Los datos de origen pueden proceder de cualquier base de datos.
Puede usar un punto de conexión en línea administrado o AKS para implementar
la inferencia en tiempo real.

Detalles del escenario


Muchos problemas de aprendizaje automático (ML) son demasiado complejos para que
un solo modelo de ML los pueda resolver. Tanto si se trata de predecir las ventas para
cada artículo de cada almacén como de modelar el tipo de mantenimiento para cientos
de pozos petrolíferos, disponer de un modelo para cada instancia puede mejorar los
resultados para muchos problemas de ML. Este patrón de muchos modelos es muy
común en una amplia variedad de sectores y se aplica a muchos casos de uso reales.
Mediante el uso de Azure Machine Learning, una canalización de varios modelos de un
extremo a otro puede incluir entrenamiento de modelos, implementación de inferencia
por lotes e implementación en tiempo real.

Una solución de muchos modelos requiere un conjunto de datos diferente para cada
modelo durante el proceso de entrenamiento y puntuación. Por ejemplo, si la tarea
consiste en predecir las ventas de cada artículo y almacén, cada conjunto de datos se
corresponderá con una combinación única de artículo y almacén.

Posibles casos de uso


Venta al por menor: una cadena de tiendas de alimentación necesita crear un
modelo de previsión de ingresos independiente para cada tienda y artículo, con
más de 1000 modelos por tienda.
Cadena de suministro: para cada combinación de almacén y producto, una
empresa de distribución debe optimizar el inventario.
Restaurantes: una cadena con miles de franquicias necesita hacer una previsión de
la demanda de cada una de ellas.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Particiones de datos: la creación de particiones de datos es fundamental para


implementar el patrón de varios modelos. Si desea usar un modelo por almacén,
un conjunto de datos constará de todos los datos para un almacén y habrá tantos
conjuntos de datos como almacenes. Si desea modelar los productos por almacén,
habrá un conjunto de datos para cada combinación de producto y almacén.
Dependiendo del formato de los datos de origen, puede que sea fácil crear
particiones o tal vez haya que transformar y ordenar grandes cantidades de datos.
Spark y Synapse SQL facilitan el escalado para esas tareas, mientras que Pandas de
Python no lo hace, ya que solo se ejecuta en un nodo y proceso.
Administración de modelos: las canalizaciones de entrenamiento y puntuación
identifican e invocan el modelo adecuado para cada conjunto de datos. Para ello,
calculan las etiquetas que caracterizan el conjunto de datos y después usan las
etiquetas para identificar el modelo correspondiente. Las etiquetas identifican la
clave de partición de datos y la versión del modelo. También pueden proporcionar
otra información.
Elección de la arquitectura adecuada:
Spark es adecuado cuando la canalización de entrenamiento impone requisitos
complejos de agrupación y transformación de datos. Ofrece técnicas flexibles de
división y agrupación para organizar los datos por combinaciones de
características, como el producto y el almacén o la ubicación y el producto. Los
resultados se pueden incluir en un dataframe de Spark para usarlos en pasos
posteriores.
Cuando los algoritmos de entrenamiento y puntuación de ML son sencillos, es
posible crear particiones de datos con bibliotecas como Scikit-learn. En esos
casos, puede que no necesite Spark. De este modo, evitará complicaciones que
pueden surgir al instalar Azure Synapse o Azure Databricks.
Cuando los conjuntos de datos de entrenamiento ya están creados (por
ejemplo, se encuentran en archivos, en filas o en columnas independientes), no
se necesita Spark para efectuar transformaciones de datos complejas.
La solución de clústeres de Machine Learning y de proceso ofrece una gran
versatilidad en situaciones que requieren una configuración compleja. Así, por
ejemplo, puede usar un contenedor de Docker personalizado, descargar
archivos o descargar modelos previamente entrenados. El servicio Computer
Vision y el aprendizaje profundo del procesamiento de lenguaje natural (NLP)
son ejemplos de las aplicaciones que pueden requerir esa flexibilidad.
Entrenamiento y puntuación de Spark: al usar la arquitectura de Spark, puede
utilizar la API de función Pandas de Spark para efectuar el entrenamiento y la
puntuación simultáneamente.
Repositorios de modelos independientes: para proteger los modelos
implementados, valore la posibilidad de almacenarlos en su propio repositorio, ya
que las canalizaciones de entrenamiento y pruebas no les afectarán.
Inferencia en línea: si una canalización carga y almacena en caché todos los
modelos al principio, los modelos podrían agotar la memoria del contenedor. Por
lo tanto, cargue los modelos a petición en el método de ejecución, aunque la
latencia pueda aumentar ligeramente.
Escalabilidad del entrenamiento: si usa Spark, podrá entrenar cientos de miles de
modelos al mismo tiempo. Spark pone en marcha varios procesos de
entrenamiento en cada máquina virtual de un clúster. Cada núcleo puede ejecutar
un proceso independiente. Aunque esto supone un uso óptimo de los recursos, es
importante redimensionar el tamaño del clúster de un modo preciso y elegir la
SKU adecuada, especialmente si el proceso de entrenamiento es largo y costoso.
Detalles de implementación: para obtener información detallada sobre cómo
implementar una solución de varios modelos, consulte cómo implementar varios
modelos para ML en Azure .

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Para entender mejor el costo de ejecutar este escenario en Azure, use la calculadora de
precios . Las suposiciones iniciales son las siguientes:

Los modelos de servicios se entrenan diariamente para mantenerse actualizados.


Para un conjunto de datos de 40 millones de filas con 10 000 combinaciones de
almacén y producto, el entrenamiento en Azure Databricks mediante un clúster
con 12 máquinas virtuales que usan instancias de Ls16_v2 tarda unos 30 minutos.
La puntuación por lotes con el mismo conjunto de datos lleva unos 20 minutos.
Puede usar Machine Learning para implementar la inferencia en tiempo real. En
función del volumen de la solicitud, elija un tipo de máquina virtual y un tamaño
de clúster adecuados.
El clúster de AKS se ajusta automáticamente según las necesidades, lo que da
lugar a dos nodos activos al mes como promedio.

Para ver cómo difieren los precios en su caso de uso, cambie las variables para que
coincidan con los requisitos de carga de servicio y tamaño de datos previstos. Para
tamaños de datos de entrenamiento más grandes o pequeños, aumente o reduzca el
tamaño del clúster Azure Databricks. Para administrar más usuarios simultáneamente
durante el servicio de modelos, aumente el tamaño del clúster de AKS.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

James Nguyen | Arquitecto principal de soluciones en la nube

Pasos siguientes
¿Qué son los destinos de proceso en Azure Machine Learning?
Machine Learning habilitado para Azure Arc
Acelerador de soluciones Many Models
Clase ParallelRunStep
API de función de Pandas
Conexión a los servicios de almacenamiento en Azure
¿Qué es Azure Synapse Analytics?
Implementación de un modelo en un clúster de Azure Kubernetes Service

Recursos relacionados
Diseño de arquitectura de análisis
Elección de un almacén de datos analíticos en Azure
Elección de una tecnología de análisis de datos en Azure
Aprendizaje automático de varios modelos a escala con Azure Machine Learning
Puntuación por lotes de modelos de Spark en Azure Databricks
Aprendizaje automático de varios
modelos a escala con Azure
Machine Learning
Azure Data Factory Azure Data Lake Azure Databricks Azure Machine Learning Azure Synapse Analytics

En este artículo se describe una arquitectura para varios modelos que usan clústeres de
Machine Learning y de proceso. Proporciona una gran versatilidad para las situaciones
que requieren una configuración compleja.

Un artículo complementario, Aprendizaje automático de varios modelos a escala en


Azure con Spark, utiliza Apache Spark en Azure Databricks o Azure Synapse Analytics.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. Ingesta de datos: Azure Data Factory extrae datos de una base de datos de origen
y los copia en Azure Data Lake Storage. A continuación, los almacena en un
almacén de datos de Machine Learning como un conjunto de datos tabulares.
2. Canalización de entrenamiento de modelos:
a. Preparación de datos: la canalización de entrenamiento extrae los datos del
almacén de datos y los transforma aún más, según sea necesario. También
agrupa los datos en conjuntos de datos para entrenar los modelos.
b. Entrenamiento de modelos: la canalización entrena modelos para todos los
conjuntos de datos que se crearon durante la preparación de los datos. Utiliza la
clase ParallelRunStep para entrenar varios modelos en paralelo. Después de
haber entrenado un modelo, la canalización lo registra en Machine Learning
junto con las métricas de prueba.
3. Canalización de promoción de modelos:
a. Evaluar modelos: la canalización de promoción evalúa los modelos entrenados
antes de transferirlos a producción. Una canalización de DevOps aplica la lógica
de negocios para determinar si un modelo cumple los criterios de
implementación. Por ejemplo, podría comprobar que la precisión de los datos
de prueba es superior al 80 %.
b. Registro de modelos: la canalización de promoción registra los modelos aptos
para el área de trabajo de Machine Learning de producción.
4. Canalización de puntuación por lotes del modelo:
a. Preparación de datos: la canalización de puntuación por lotes extrae datos del
almacén de datos y transforma cada archivo según sea necesario. También
agrupa los datos en conjuntos de datos para la puntuación.
b. Puntuación de modelos: la canalización usa la clase ParallelRunStep para
puntuar varios conjuntos de datos a la vez. Identifica el modelo adecuado para
cada conjunto de datos en Machine Learning buscando las etiquetas del
modelo. Después descarga el modelo y lo usa para puntuar el conjunto de
datos. Utiliza la clase DataTransferStep para volver a escribir los resultados en
Azure Data Lake y, a continuación, pasa las predicciones de Azure Data Lake a
Synapse SQL para el servicio.
5. Puntuación en tiempo real: Azure Kubernetes Service (AKS) puede puntuar en
tiempo real si es necesario. Debido al elevado número de modelos, se deben
cargar a petición, no están precargados.
6. Resultados:
a. Predicciones: la canalización de puntuación por lotes guarda las predicciones
en Synapse SQL.
b. Métricas: Power BI se conecta a las predicciones del modelo para recuperar y
agregar resultados para presentar.

Componentes
Azure Machine Learning es un servicio de ML empresarial para compilar e
implementar modelos rápidamente. Proporciona a los usuarios de todos los
niveles de aptitud con un diseñador de código bajo, ML automatizado (AutoML) y
un entorno de Jupyter Notebook hospedado que admite diversos IDE.
Azure Databricks es una herramienta de ingeniería de datos basada en la nube
que se basa en Apache Spark. Puede procesar y transformar grandes cantidades de
datos y explorarlos mediante modelos de ML. Puede escribir trabajos en R, Python,
Java, Scala y Spark SQL.
Azure Synapse Analytics es un servicio de análisis que unifica integración de
datos, almacenamiento de datos empresariales y análisis de macrodatos.
Synapse SQL es un sistema de consultas distribuidas para T-SQL que habilita
escenarios de almacenamiento y virtualización de datos, además de ampliar T-SQL
para responder a escenarios de streaming y ML. Ofrece modelos de recursos sin
servidor y dedicados.
Azure Data Lake Storage es un servicio de almacenamiento seguro y que se
puede escalar de forma masiva para cargas de trabajo de análisis de alto
rendimiento.
Azure Kubernetes Service (AKS) es un servicio de Kubernetes administrado para
la implementación y la administración de aplicaciones contenedorizadas. AKS
simplifica la implementación de un clúster de AKS administrado en Azure, al
descargar la sobrecarga operativa en Azure.
Azure DevOps es un conjunto de servicios para desarrolladores que permiten
administrar todo el ciclo de vida de las aplicaciones y la infraestructura. DevOps
facilita el seguimiento del trabajo, el control de código fuente, la compilación y
CI/CD, la administración de paquetes y las soluciones de pruebas.
Microsoft Power BI es una colección de servicios de software, aplicaciones y
conectores que funcionan conjuntamente para convertir los orígenes de datos no
relacionados en información coherente, interactiva y visualmente atractiva.

Alternativas
Los datos de origen pueden proceder de cualquier base de datos.
Puede usar un punto de conexión en línea administrado o AKS para implementar
la inferencia en tiempo real.

Detalles del escenario


Muchos problemas de aprendizaje automático (ML) son demasiado complejos para que
un solo modelo de ML los pueda resolver. Tanto si se trata de predecir las ventas para
cada artículo de cada almacén como de modelar el tipo de mantenimiento para cientos
de pozos petrolíferos, disponer de un modelo para cada instancia puede mejorar los
resultados para muchos problemas de ML. Este patrón de varios modelos es común en
una amplia variedad de sectores y tiene muchos casos de uso reales. Mediante el uso de
Azure Machine Learning, una canalización de varios modelos de un extremo a otro
puede incluir entrenamiento de modelos, implementación de inferencia por lotes e
implementación en tiempo real.

Una solución de muchos modelos requiere un conjunto de datos diferente para cada
modelo durante el proceso de entrenamiento y puntuación. Por ejemplo, si la tarea
consiste en predecir las ventas de cada artículo y almacén, cada conjunto de datos se
corresponderá con una combinación única de artículo y almacén.

Posibles casos de uso


Venta al por menor: una cadena de tiendas de alimentación necesita crear un
modelo de previsión de ingresos independiente para cada tienda y artículo, con
más de 1000 modelos por tienda.
Cadena de suministro: para cada combinación de almacén y producto, una
empresa de distribución debe optimizar el inventario.
Restaurantes: una cadena con miles de franquicias necesita hacer una previsión de
la demanda de cada una de ellas.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Particiones de datos: la creación de particiones de datos es fundamental para


implementar el patrón de varios modelos. Si desea usar un modelo por almacén,
un conjunto de datos constará de todos los datos para un almacén y habrá tantos
conjuntos de datos como almacenes. Si desea modelar los productos por almacén,
habrá un conjunto de datos para cada combinación de producto y almacén.
Dependiendo del formato de los datos de origen, puede que sea fácil crear
particiones o tal vez haya que transformar y ordenar grandes cantidades de datos.
Spark y Synapse SQL facilitan el escalado para esas tareas, mientras que Pandas de
Python no lo hace, ya que solo se ejecuta en un nodo y proceso.
Administración de modelos: las canalizaciones de entrenamiento y puntuación
identifican e invocan el modelo adecuado para cada conjunto de datos. Para ello,
calculan las etiquetas que caracterizan el conjunto de datos y después usan las
etiquetas para identificar el modelo correspondiente. Las etiquetas identifican la
clave de partición de datos y la versión del modelo. También pueden proporcionar
otra información.
Elección de la arquitectura adecuada:
Spark es adecuado cuando la canalización de entrenamiento impone requisitos
complejos de agrupación y transformación de datos. Ofrece técnicas flexibles de
división y agrupación para organizar los datos por combinaciones de
características, como el producto y el almacén o la ubicación y el producto. Los
resultados se pueden incluir en un dataframe de Spark para usarlos en pasos
posteriores.
Cuando los algoritmos de entrenamiento y puntuación de ML son sencillos, es
posible crear particiones de datos con bibliotecas como Scikit-learn. En esos
casos, puede que no necesite Spark. De este modo, evitará complicaciones que
pueden surgir al instalar Azure Synapse o Azure Databricks.
Cuando los conjuntos de datos de entrenamiento ya están creados (por
ejemplo, se encuentran en archivos, en filas o en columnas independientes), no
se necesita Spark para efectuar transformaciones de datos complejas.
La solución de clústeres de Machine Learning y de proceso ofrece una gran
versatilidad en situaciones que requieren una configuración compleja. Así, por
ejemplo, puede usar un contenedor de Docker personalizado, descargar
archivos o descargar modelos previamente entrenados. El servicio Computer
Vision y el aprendizaje profundo del procesamiento de lenguaje natural (NLP)
son ejemplos de las aplicaciones que pueden requerir esa flexibilidad.
Entrenamiento y puntuación de Spark: al usar la arquitectura de Spark, puede
utilizar la API de función Pandas de Spark para efectuar el entrenamiento y la
puntuación simultáneamente.
Repositorios de modelos independientes: para proteger los modelos
implementados, valore la posibilidad de almacenarlos en su propio repositorio, ya
que las canalizaciones de entrenamiento y pruebas no les afectarán.
Clase ParallelRunStep: la clase ParallelRunStep de Python es una opción eficaz
para ejecutar el entrenamiento y la inferencia de varios modelos. Puede crear
particiones de los datos de varias maneras y, después, aplicar el script de ML en los
elementos de la partición en paralelo. Al igual que otras formas de entrenamiento
de Machine Learning, puede especificar un entorno de entrenamiento
personalizado con acceso a paquetes de índice de paquetes de Python (PyPI) o un
entorno de Docker personalizado más avanzado para las configuraciones que
requieren más de un PyPI estándar. Existen muchas CPU y GPU entre las que elegir.
Inferencia en línea: si una canalización carga y almacena en caché todos los
modelos al principio, los modelos podrían agotar la memoria del contenedor. Por
lo tanto, cargue los modelos a petición en el método de ejecución, aunque la
latencia pueda aumentar ligeramente.
Detalles de implementación: para obtener información detallada sobre cómo
implementar una solución de varios modelos, consulte la implementación de
varios modelos para ML en Azure .
Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Para entender mejor el costo de ejecutar este escenario en Azure, use la calculadora de
precios . Las suposiciones iniciales son las siguientes:

Los modelos de servicios se entrenan diariamente para mantenerse actualizados.


Para un conjunto de datos de 40 millones de filas con 10 000 combinaciones de
almacén y producto, el entrenamiento en Azure Databricks mediante un clúster
con 12 máquinas virtuales que usan instancias de Ls16_v2 tarda unos 30 minutos.
La puntuación por lotes con el mismo conjunto de datos lleva unos 20 minutos.
Puede usar Machine Learning para implementar la inferencia en tiempo real. En
función del volumen de la solicitud, elija un tipo de máquina virtual y un tamaño
de clúster adecuados.
El clúster de AKS se ajusta automáticamente según las necesidades, lo que da
lugar a dos nodos activos al mes como promedio.

Para ver cómo difieren los precios en su caso de uso, cambie las variables para que
coincidan con los requisitos de carga de servicio y tamaño de datos previstos. Para
tamaños de datos de entrenamiento más grandes o pequeños, aumente o reduzca el
tamaño del clúster Azure Databricks. Para administrar más usuarios simultáneamente
durante el servicio de modelos, aumente el tamaño del clúster de AKS.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

James Nguyen | Arquitecto principal de soluciones en la nube

Pasos siguientes
Machine Learning habilitado para Azure Arc
Acelerador de soluciones Many Models
Clase ParallelRunStep
Clase DataTransferStep
Conexión a los servicios de almacenamiento en Azure
¿Qué es Azure Synapse Analytics?
Implementación de un modelo en un clúster de Azure Kubernetes Service

Recursos relacionados
Diseño de arquitectura de análisis
Elección de un almacén de datos analíticos en Azure
Elección de una tecnología de análisis de datos en Azure
Aprendizaje automático de varios modelos a escala en Azure con Spark
Arquitectura de Azure Machine
Learning
Azure Machine Learning Azure Synapse Analytics Azure Container Registry Azure Monitor Power BI

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta arquitectura le muestra los componentes que se usan para compilar, implementar y
administrar modelos de alta calidad con Azure Machine Learning, un servicio para el
ciclo de vida de ML completo.

Architecture
Logs, files and media
(unstructured)
Azure Data Azure Synapse
Power BI
Lake Storage Analytics
Ingest and store Analyze Visualize

1 2 8
Build
and 3
Business / custom apps
train
(structured)

Azure Machine Learning

Retrain Authenticate

7 Azure Active Azure Key


Register Directory Vault

4
Deploy 5

Azure Monitor Azure Kubernetes


Service
Azure Container
Registry

Monitor and log

Azure Virtual Azure Load


Network Balancer
Microsoft
Azure
Descargue un archivo Visio de esta arquitectura.

7 Nota

La arquitectura descrita en este artículo se basa en la CLI de Azure Machine


Learning y el SDK de Python v1. Para más información sobre los nuevos SDK y
CLI v2, consulte ¿Qué es la CLI y el SDK v2?

Flujo de datos
1. Reúna todos los datos estructurados, no estructurados y semiestructurados
(registros, archivos y elementos multimedia) en Azure Data Lake Storage Gen2.
2. Use Apache Spark en Azure Synapse Analytics para limpiar, transformar y analizar
conjuntos de datos.
3. Construya y entrene modelos de Machine Learning con Azure Machine Learning.
4. Controle el acceso y la autenticación de los datos y el área de trabajo de ML con
Microsoft Entra ID y Azure Key Vault. Gestione contenedores con Azure Container
Registry.
5. Implemente el modelo de aprendizaje automático en un contenedor mediante
Azure Kubernetes Services, protegiendo y administrando la implementación con
redes virtuales de Azure y Azure Load Balancer.
6. Con las métricas de registro y la supervisión de Azure Monitor, evalúe el
rendimiento del modelo.
7. Vuelva a entrenar modelos según sea necesario en Azure Machine Learning.
8. Visualice salidas de datos con Power BI.

Componentes
Azure Machine Learning es un servicio de aprendizaje automático (ML) de nivel
empresarial para el ciclo de vida de ML completo.
Azure Synapse Analytics es un servicio unificado donde puede ingerir, explorar,
preparar, transformar, administrar y servir datos para necesidades inmediatas de BI
y aprendizaje automático.
Azure Data Lake Storage Gen2 es un lago de datos seguro y que se puede
escalar de forma masiva para cargas de trabajo de análisis de alto rendimiento.
Azure Container Registry es un registro de imágenes de Docker y Open
Container Initiative (OCI), con compatibilidad con todos los artefactos de OCI.
Compile, almacene, proteja, analice, replique y administre artefactos e imágenes de
contenedor con una instancia totalmente administrada y con replicación
geográfica de distribución de OCI.
Azure Kubernetes Service Azure Kubernetes Service (AKS) ofrece Kubernetes sin
servidor, una experiencia integrada de integración continua y entrega continua
(CI/CD) y una seguridad y gobernanza de nivel empresarial. Implemente y
administre aplicaciones en contenedores más fácilmente con un servicio
Kubernetes totalmente administrado.
Azure Monitor le permite recopilar y analizar los datos de telemetría de sus
entornos de Azure y locales, y actúa sobre dichos datos. Azure Monitor ayuda a
maximizar el rendimiento y la disponibilidad de las aplicaciones y a identificar de
forma proactiva los problemas en cuestión de segundos.
Azure Key Vault protege las claves criptográficas y otros secretos que usan los
servicios y las aplicaciones en la nube.
Azure Load Balancer equilibra la carga del tráfico de red privada y de Internet
con alto rendimiento y baja latencia. Load Balancer funciona en máquinas virtuales,
conjuntos de escalado de máquinas virtuales y direcciones IP.
Power BI es un conjunto de herramientas de análisis empresarial que
proporciona información detallada acerca de toda la organización. Conéctese a
cientos de orígenes de datos, simplifique la preparación de los datos y realice
análisis no planeados. Cree informes atractivos y publíquelos en la organización
para que se usen en la web y en los dispositivos móviles.

Detalles del escenario


Compile, implemente y administre modelos de alta calidad con Azure Machine Learning,
un servicio para el ciclo de vida de ML completo. Use el líder del sector, MLOps
(operaciones de aprendizaje automático), su interoperabilidad de código abierto y sus
herramientas integradas en una plataforma segura y de confianza diseñada para el
aprendizaje automático responsable (ML).

Posibles casos de uso


Uso del aprendizaje automático como servicio
Interfaz de compilación fácil y flexible
Amplia gama de algoritmos admitidos
Implementación sencilla de servicios web
Documentación excelente para soluciones de aprendizaje automático

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Obtener estimaciones de precios

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Sheri Gilley | Desarrolladora sénior de contenido


Larry Franks | Desarrollador de contenido
Lauryn Gayhardt | Desarrolladora de contenido
Samantha Salgado | Desarrolladora de contenido

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Consulte la documentación de los servicios clave de esta solución:

Documentación de Azure Machine Learning


Documentación de Azure Synapse Analytics
Documentación de Azure Data Lake Storage Gen2
Documentación de Azure Container Registry
Documentación de Azure Kubernetes Service
Documentación sobre Azure Monitor
Documentación de Azure Key Vault
Documentación de Azure Load Balancer
Documentación de Power BI

Recursos relacionados
Consulte las instrucciones relacionadas con el Centro de arquitectura de Azure:

Comparación de productos y tecnologías de aprendizaje automático de Microsoft


Marco de las operaciones de Machine Learning (MLOps) para escalar el ciclo de
vida de aprendizaje automático con Azure Machine Learning
Implementación de procesos de inteligencia artificial y aprendizaje automático en
el entorno local y en el perímetro
Aprendizaje automático de varios modelos a escala con Azure Machine Learning
Escalado de iniciativas de IA y aprendizaje automático en sectores regulados
Predicción de las readmisiones en hospitales mediante técnicas de aprendizaje
automático tradicionales y automatizadas
Entorno de investigación seguro para datos regulados
Enseñanza automática con los
sistemas autónomos de Project
Bonsai
Azure Container Instances Azure Container Registry Azure Storage

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Obtenga información sobre la forma en que Project Bonsai crea e implementa sistemas
autónomos con la enseñanza automática, el aprendizaje de refuerzo profundo y las
simulaciones.

Architecture
Project Bonsai acelera la creación de automatización con tecnología de inteligencia
artificial. El desarrollo y la implementación constan de tres fases: creación,
entrenamiento e implementación.
Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. La fase de creación consiste en escribir el programa de enseñanza automática y
conectarse a un simulador de entrenamiento específico del dominio. Los
simuladores generan suficientes datos de entrenamiento para los experimentos y
las prácticas de la máquina.

Los expertos en la materia sin experiencia en IA pueden expresar sus


conocimientos en forma de pasos, tareas, criterios y resultados deseados. Los
ingenieros construyen sistemas autónomos creando modelos precisos y detallados
de sistemas y entornos, y haciendo que los sistemas sean inteligentes utilizando
métodos como el aprendizaje profundo, el aprendizaje por imitación y el
aprendizaje por refuerzo.

2. En la fase de entrenamiento, el motor de entrenamiento automatiza la generación


y el entrenamiento del modelo de aprendizaje de refuerzo profundo mediante la
combinación de modelos de dominio de alto nivel con algoritmos de aprendizaje
de refuerzo profundo y redes neuronales adecuados.

Las simulaciones entrenan los modelos en diferentes tipos de escenarios y


condiciones del entorno, de manera mucho más rápida y segura de lo que es
factible en el mundo real. Los expertos pueden supervisar los agentes a medida
que trabajan para solucionar problemas en entornos simulados, y proporcionan
comentarios e instrucciones que permiten a los agentes adaptarse dinámicamente
dentro de la simulación.

3. En la fase de implementación se implementa el cerebro entrenado en la aplicación


de destino en la nube, en el entorno local o insertado en el sitio. Los SDK y las API
de implementación específicos implementan sistemas de IA entrenados en varias
aplicaciones de destino, llevan a cabo la optimización de la máquina y controlan
los sistemas físicos.

Una vez completado el entrenamiento, los ingenieros implementan estos agentes


entrenados en el mundo real, donde usan su conocimiento para alimentar los
sistemas autónomos.

Componentes
El Proyecto Bonsai simplifica la enseñanza automática con el DRL para entrenar e
implementar sistemas autónomos inteligentes.

Azure Container Registry es un servicio de registro de Docker privado


administrado que se usa para almacenar y administrar imágenes y artefactos de
contenedor para todos los tipos de implementaciones de contenedor. Las
imágenes se almacenan de forma segura y pueden replicarse en otras regiones
para acelerar la implantación. Puedes construir bajo demanda o automatizar las
construcciones con disparadores, como las confirmaciones del código fuente y las
actualizaciones de la imagen base. Container Registry se basa en el registro 2.0 de
Docker de código abierto

Esta arquitectura usa el nivel básico de Container Registry para almacenar cerebros
exportados y simuladores cargados.

Azure Container Instances ejecuta contenedores a petición en un entorno de


Microsoft Azure sin servidor. Container Instances es la forma más rápida y sencilla
de ejecutar un contenedor en Azure, y no requiere aprovisionar máquinas virtuales
ni adoptar un servicio de nivel superior.

Esta arquitectura utiliza instancias de contenedores para ejecutar simulaciones.

Azure Storage es una solución de almacenamiento en la nube que incluye


almacenamiento de objetos, blobs, archivos, discos, colas y tablas.

Esta arquitectura utiliza Storage para almacenar los simuladores cargados como
archivos ZIP.
Detalles del escenario
La inteligencia artificial (IA) y el aprendizaje automático ofrecen oportunidades y
desafíos únicos para la automatización de sistemas industriales complejos. La enseñanza
automática es un nuevo paradigma para la creación de sistemas de aprendizaje
automático, que aleja el foco de los algoritmos y lo pone en la generación e
implementación correctas de modelos.

La enseñanza de máquinas infunde la experiencia en la materia en el entrenamiento del


sistema automatizado de IA mediante el aprendizaje de refuerzo profundo (DRL) y
simulaciones. Abstraerse de la complejidad de la IA para centrarse en la experiencia en la
materia y en las condiciones del mundo real crea modelos que convierten los sistemas
de control automatizados en sistemas autónomos.

Los sistemas autónomos son sistemas de control automatizados que:

Utilice la enseñanza automática para combinar el conocimiento humano del


dominio con la IA y el aprendizaje automático.
Automatice la generación y administración de algoritmos y modelos de
aprendizaje de refuerzo profundo.
Integre simulaciones para la optimización y escalabilidad de los modelos durante
el entrenamiento.
Implemente y escale para el uso en el mundo real.

Posibles casos de uso


Esta solución es ideal para las industrias de educación, instalaciones, bienes raíces,
fabricación, gobierno, automoción y medios de comunicación y entretenimiento. Project
Bonsai acelera la creación de automatización con tecnología de inteligencia artificial
para mejorar la calidad y la eficacia del producto a la vez que reduce el tiempo de
inactividad. Ahora está disponible en versión preliminar y puede usarlo para automatizar
sistemas. Considere Bonsai cuando se enfrente a problemas como:

Los sistemas de control existentes sean frágiles en el momento de la


implementación.
La lógica de aprendizaje automático no cubre adecuadamente todos los
escenarios.
La descripción del comportamiento deseado del sistema requiera expertos en la
materia que entiendan el dominio del problema.
La generación de suficientes datos del mundo real para cubrir todos los escenarios
sea difícil o imposible.
Los sistemas de control tradicionales sean difíciles de implementar y escalar en el
mundo real.

La enseñanza automática une la ciencia y el software de la inteligencia artificial con la


ingeniería tradicional y la experiencia en los distintos campos. Las aplicaciones de
ejemplo son:

Control de movimiento
Calibración de la máquina
Edificios inteligentes
Robótica industrial
control de procesos

Implementación de este escenario


Las siguientes implementaciones son implementaciones de ejemplo. Puede seguir los
recursos para comprender cómo se diseñaron estas soluciones. Use Project Bonsai para
compilar e implementar su propia solución.

Servicio de enseñanza automática


Bonsai se puede usar para:

Enseñar a cerebros adaptables con objetivos intuitivos y objetivos de aprendizaje,


evaluaciones de éxito en tiempo real y control de versiones automático.
Integrar simulaciones de entrenamiento que implementen problemas del mundo
real y proporcionen retroalimentación realista.
Exportar cerebros entrenados e implementarlos en entornos locales, en la nube, o
en dispositivos de IoT Edge o insertados.

Esta es la interfaz de usuario de Bonsai:


En Bonsai, los clústeres de unidades de procesamiento gráfico (GPU) de Azure
administrados ejecutan el entrenamiento de IA en redes neuronales complejas a gran
escala, con compatibilidad integrada para reentrenamiento y análisis de las versiones
del sistema de IA. Los marcos de trabajo de implementación y de tiempo de ejecución
empaquetan e implementan los modelos resultantes del sistema de IA a gran escala.

La plataforma Bonsai se ejecuta en Azure y carga los costos de recursos en su


suscripción a Azure.

Azure Container Registry (nivel básico) para almacenar cerebros exportados y


simuladores cargados.
Azure Container Instances para ejecutar simulaciones.
Azure Storage para almacenar simuladores cargados como archivos ZIP.

Inkling
Inkling es un lenguaje de programación declarativo de tipos estáticos para el
entrenamiento de la IA en Bonsai. Inkling permite abstraerse de los algoritmos de IA
dinámicos que requieren experiencia en aprendizaje automático, lo que hace posible
que más desarrolladores programen en IA. Un archivo de Inkling define los conceptos
necesarios para enseñar a la IA y el plan de estudios, o métodos, para enseñar los
conceptos.
Para obtener más información sobre Inkling, consulte la referencia del lenguaje de
programación Inkling.

Motor de entrenamiento

El motor de entrenamiento de Bonsai compila programas de enseñanza automática para


generar y entrenar automáticamente sistemas de IA. Realiza las operaciones siguientes:

Automatiza la generación, administración y optimización de los modelos.


Define la arquitectura de red neuronal. Especifica características como el número
de capas y la topología, selecciona el mejor algoritmo DRL y ajusta los
hiperparámetros del modelo.
Se conecta al simulador y organiza el entrenamiento.

Al igual que un compilador de lenguaje oculta el código máquina al programador, el


motor de entrenamiento oculta los detalles de los modelos de aprendizaje automático y
los algoritmos de DRL. A medida que se inventan nuevos algoritmos y topologías de
red, el motor de entrenamiento puede recompilar los mismos programas de enseñanza
de la máquina para explotarlos.

Ejemplo de Cartpole
Bonsai incluye dos muestras de enseñanza de máquinas, Cartpole y Moab .

La muestra Cartpole tiene un poste unido a un carro por una articulación no activada. El
carro se mueve a lo largo de una pista sin fricción recta y el poste se mueve hacia
delante y hacia atrás, dependiendo de los movimientos del carro. La información del
sensor disponible incluye la posición y la velocidad del carro y el ángulo y la velocidad
angular del poste. Las acciones admitidas del agente son empujar el carro a la izquierda
o a la derecha.
El poste se inicia en posición vertical, y el objetivo es mantenerlo vertical mientras se
mueve el carro. Se genera una recompensa por cada intervalo de tiempo que el poste
permanece en posición vertical. Un episodio de entrenamiento termina cuando el poste
está a más de 15 grados de la vertical, o cuando el carro se mueve más de un número
predefinido de unidades desde el centro de la pista.

En el ejemplo se usa el lenguaje Inkling para escribir el programa de enseñanza


automática, y el simulador Cartpole proporcionado para acelerar y mejorar el
entrenamiento.

La siguiente captura de pantalla de Bonsai muestra el progreso del entrenamiento de


Cartpole, con la satisfacción del objetivo en el eje Y, y las iteraciones de entrenamiento
en el eje X. En el panel también se muestra el porcentaje de satisfacción del objetivo y el
tiempo total de entrenamiento transcurrido.
Para obtener más información sobre el ejemplo de Cartpole o para probarlo usted
mismo, consulte:

Inicio rápido: Equilibrio de un mástil con IA (Cartpole)


Información sobre cómo enseñar a un agente de IA a equilibrar un mástil

Simuladores
Las simulaciones modelan un sistema en una representación virtual de su entorno físico
previsto. Las simulaciones son un enfoque alternativo para crear políticas de aprendizaje
de forma manual o para recopilar grandes cantidades de datos de entrenamiento del
mundo real. Las simulaciones permiten el entrenamiento en entornos peligrosos, o en
condiciones difíciles de reproducir en el mundo real.

Las simulaciones son el origen de entrenamiento ideal para el aprendizaje de refuerzo


profundo (DRL), ya que:

Pueden crear de forma flexible entornos personalizados.


Son seguros y rentables para la generación de datos.
Pueden ejecutarse simultáneamente en varias máquinas de entrenamiento para
acelerar el entrenamiento.

Las simulaciones están disponibles en una amplia gama de industrias y sistemas, como
ingeniería mecánica y eléctrica, vehículos autónomos, seguridad y redes, transporte y
logística, y robótica.

Entre las herramientas de simulación se incluyen:

Simulink , una herramienta de programación gráfica desarrollada por MathWorks


para modelar, simular y analizar sistemas dinámicos.
Gazebo , que simula poblaciones de robots en complejos entornos interiores y
exteriores.
Microsoft AirSim , plataforma de simulación robótica de código abierto.

La plataforma Bonsai incluye simuladores Simulink y AnyLogic. Puede añadir otros.

AirSim
Microsoft AirSim (simulación de informática y robótica aérea) es una plataforma de
simulación robótica de código abierto diseñada para entrenar sistemas autónomos.
AirSim ofrece una herramienta de simulación realista para que los diseñadores y
desarrolladores generen las grandes cantidades de datos que necesitan para el
entrenamiento y la depuración de los modelos.
AirSim puede capturar datos de vehículos terrestres, robótica con ruedas, drones aéreos
e incluso dispositivos IoT estáticos, y hacerlo sin costosas operaciones de campo.

AirSim funciona como complemento para el editor Unreal Engine de Epic Games, y
brinda control para la creación de entornos y la simulación de eventos reales difíciles de
reproducir, para capturar datos significativos. AirSim aprovecha la representación del
motor de juegos actual, la física y el cálculo de percepciones para crear una simulación
precisa del mundo real.

Este realismo, basado en datos reales generados de manera eficaz, permite el estudio y
la ejecución de misiones complejas que requieren mucho tiempo o son peligrosas en el
mundo real. Por ejemplo, AirSim proporciona entornos realistas, dinámica de vehículos y
detección multimodal para investigadores que construyen vehículos autónomos. Las
colisiones en un simulador no cuestan prácticamente nada, pero proporcionan
información útil para mejorar el diseño del sistema.

Puede usar una plantilla de Azure Resource Manager (ARM) para crear
automáticamente un entorno de desarrollo, y codificar y depurar una aplicación de
Python conectada a AirSim en Visual Studio Code. Para obtener más información,
consulte Entorno de desarrollo de AirSim en Azure .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Jose Contreras | Director principal de ingeniería de software


Pasos siguientes
Sistemas autónomos con IA de Microsoft
Autonomía para sistemas de control industrial
Espacio de innovación: Sistemas autónomos (vídeo)
The AI Blog de Microsoft
Sistemas autónomos de Microsoft
Documentación de Bonsai
Plataforma de informática y robótica aérea (AirSim)
Funcionamiento de Azure Machine Learning: Arquitectura y conceptos

Recursos relacionados
Uso de la experiencia en la materia en la enseñanza automática y el aprendizaje de
refuerzo
Bloques de creación para entornos de simulación de conducción autónoma
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Ciencia de datos y aprendizaje
automático con Azure Databricks
Azure Databricks Azure Data Lake Storage Azure Kubernetes Service (AKS) Azure Machine Learning

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Esta arquitectura le muestra cómo puede mejorar las operaciones mediante


Azure Databricks, Delta Lake y MLflow para la ciencia de datos y el aprendizaje
automático. Puede mejorar la eficacia general y la experiencia del cliente mediante el
desarrollo, el entrenamiento y la implementación de modelos de aprendizaje
automático.

Architecture
Process Serve

4
Azure Databricks Azure Machine Azure
Learning web Kubernetes
services Service (AKS)

1 2 3

Bronze Silver Gold

Azure Data
Lake Storage

Store
Microsoft
Azure

Descargue un archivo Visio de esta arquitectura.

La solución almacena, procesa y sirve datos:

Flujo de datos

Almacenamiento

Data Lake Storage almacena los datos en formato Delta Lake. Delta Lake constituye la
capa mantenida del lago de datos. Una arquitectura de medallas organiza los datos en
tres capas:

Las tablas Bronze tienen datos sin procesar.


Las tablas Silver contienen datos limpios y filtrados.
Las tablas Gold contienen datos agregados, listos para el análisis y los informes.

Proceso
El código de varios lenguajes, marcos y bibliotecas prepara, refina y limpia los
datos sin procesar (1). Entre las posibilidades de codificación se incluyen Python, R,
SQL, Spark, Pandas y Koalas.

Azure Databricks ejecuta las cargas de trabajo de ciencia de datos. Esta plataforma
también compila y entrena modelos de aprendizaje automático (2).
Azure Databricks usa bibliotecas optimizadas preinstaladas. Algunos ejemplos son
scikit-learn, TensorFlow, PyTorch y XGBoost.

El seguimiento de MLflow captura los experimentos de aprendizaje automático, las


ejecuciones de modelos y los resultados (3). Cuando el mejor modelo está listo
para producción, Azure Databricks lo implementa en el repositorio de modelos de
MLflow. Este registro centralizado almacena información sobre los modelos de
producción. El Registro también hace que los modelos estén disponibles para
otros componentes:
Las canalizaciones de Spark y Python pueden ingerir modelos. Estas
canalizaciones controlan las cargas de trabajo por lotes o los procesos ETL de
streaming.
Las API de REST proporcionan acceso a los modelos para muchos fines. Algunos
ejemplos son las pruebas y la puntuación interactiva en aplicaciones móviles y
web.

Servicio

Azure Databricks puede implementar modelos en otros servicios, como


Machine Learning y AKS (4).

Componentes
Azure Databricks es una plataforma de análisis de datos. Sus clústeres de Spark
totalmente administrados ejecutan cargas de trabajo de ciencia de datos.
Azure Databricks también usa bibliotecas optimizadas preinstaladas para compilar
y entrenar modelos de aprendizaje automático. La integración de MLflow con
Azure Databricks proporciona una opción para realizar el seguimiento de los
experimentos, almacenar modelos en repositorios y poner los modelos a
disposición de otros servicios. Azure Databricks ofrece escalabilidad:
Los clústeres de proceso de nodo único controlan conjuntos de datos pequeños
y ejecuciones de un solo modelo.
Para conjuntos de datos grandes, hay disponibles clústeres de proceso de varios
nodos o clústeres de unidad de procesamiento de gráficos (GPU). Estos
clústeres usan bibliotecas y marcos como HorovodRunner e Hyperopt para
ejecuciones de modelos paralelos.

Data Lake Storage es un lago de datos seguro y escalable para cargas de trabajo
de análisis de alto rendimiento. Este servicio puede administrar varios petabytes de
información, al mismo tiempo que mantiene un rendimiento de cientos de
gigabits. Los datos pueden tener estas características:
Ser estructurados, semiestructurados o no estructurados.
Proceder de varios orígenes heterogéneos, como registros, archivos y
elementos multimedia.
Ser estáticos, de lotes o de streaming.

Delta Lake es una capa de almacenamiento que usa un formato de archivo


abierto. Esta capa se ejecuta sobre el almacenamiento en la nube, como Data Lake
Storage. Delta Lake está optimizado para transformar y limpiar datos de lotes y
streaming. Esta plataforma admite estas características y funcionalidades:
Control de versiones y reversión de datos.
Transacciones de atomicidad, coherencia, aislamiento y durabilidad (ACID) para
ofrecer confiabilidad.
Un estándar coherente para la preparación de datos, el entrenamiento del
modelo y el servicio de modelos.
Viaje en el tiempo para instantáneas coherentes de los datos de origen. Los
científicos de datos pueden entrenar modelos en las instantáneas en lugar de
crear copias independientes.

MLflow es una plataforma de código abierto para el ciclo de vida del aprendizaje
automático. Los componentes de MLflow supervisan los modelos de aprendizaje
automático durante el entrenamiento y la ejecución. La información almacenada
incluye código, datos, información de configuración y resultados. MLflow también
almacena modelos y los carga en producción. Dado que MLflow usa marcos
abiertos, varios servicios, aplicaciones, marcos y herramientas pueden consumir los
modelos.

Machine Learning es un entorno basado en la nube que le ayuda a crear,


implementar y administrar soluciones de análisis predictivo. Con estos modelos,
puede predecir comportamientos, resultados y tendencias.

AKS es un servicio de Kubernetes totalmente administrado, de alta


disponibilidad y seguro. AKS facilita la implementación y la administración de
aplicaciones contenedorizadas.

Detalles del escenario


A medida que su organización reconoce la eficacia de la ciencia de datos y el
aprendizaje automático, puede mejorar la eficacia y las experiencias de los clientes, así
como predecir cambios. Para lograr estos objetivos en casos de uso críticos para la
empresa, necesita un patrón coherente y confiable para las operaciones siguientes:

Seguimiento de experimentos.
Reproducción de resultados.
Implementación de modelos en de aprendizaje automático en producción.

En este artículo se describe una solución para un marco de aprendizaje automático


coherente y confiable. Azure Databricks constituye el núcleo de la solución. La capa de
almacenamiento Delta Lake y la plataforma de aprendizaje automático MLflow también
desempeñan roles importantes. Estos componentes se integran perfectamente con
otros servicios, como Azure Data Lake Storage, Azure Machine Learning y
Azure Kubernetes Service (AKS).

Juntos, estos servicios proporcionan una solución de ciencia de datos y aprendizaje


automático que reúne las cualidades siguientes:

Simple: un lago de datos abierto simplifica la arquitectura. El lago de datos


contiene una capa seleccionada, Delta Lake. Esa capa proporciona acceso a los
datos en un formato de código abierto.

Abierto: la solución admite código fuente abierto, estándares abiertos y marcos


abiertos. Este enfoque minimiza la necesidad de futuras actualizaciones.
Azure Databricks y Machine Learning admiten MLflow y Delta Lake de forma
nativa. Juntos, estos componentes proporcionan operaciones de aprendizaje
automático (MLOps) líderes del sector o DevOps para el aprendizaje automático.
Una amplia gama de herramientas de implementación se integran con el formato
de modelo estandarizado de la solución.

Colaborativa: los equipos de ciencia de datos y MLOps trabajan juntos con esta
solución. Estos equipos usan el seguimiento de MLflow para registrar y consultar
experimentos. Los equipos también implementan modelos en el registro de
modelos de MLflow central. A continuación, los ingenieros de datos usan los
modelos implementados en procesos de ingesta de datos y de extracción,
transformación y carga (ETL), así como en canalizaciones de streaming.

Posibles casos de uso


Una plataforma que AGL creó para la previsión de energía inspiró esta solución. Esa
plataforma proporciona procesos de entrenamiento, implementación y administración
del ciclo de vida rápidos y rentables para miles de modelos paralelos.
Además de los proveedores de energía, esta solución puede beneficiar a cualquier
organización que:

Utilice la ciencia de datos.


Compile y entrene modelos de aprendizaje automático.
Ejecute modelos de aprendizaje automático en producción.

Algunos ejemplos son las organizaciones de:

Comercio electrónico y venta al por menor.


Banca y finanzas.
Sanidad y ciencias biológicas.
Sectores de automoción y fabricación.

Pasos siguientes
AGL Energy crea una plataforma estandarizada para miles de modelos paralelos.
La plataforma proporciona procesos de entrenamiento, implementación y
administración del ciclo de vida rápidos y rentables para los modelos.
Open Grid Europa (OGE) usa modelos de inteligencia artificial para supervisar las
canalizaciones de gas. OGE usa Azure Databricks y MLflow para desarrollar los
modelos.
Scandinavian Airlines (SAS) usa Azure Databricks durante una fase de
investigación colaborativa. La compañía también usa Machine Learning para
desarrollar modelos predictivos. Al identificar patrones en los datos de la empresa,
los modelos mejoran las operaciones diarias.

Recursos relacionados
Elección de un almacén de datos analíticos en Azure
Puntuación por lotes de modelos de Spark en Azure Databricks
Procesamiento de flujos de datos con Azure Databricks
Canalizaciones de ingesta, ETL y procesamiento de flujos con Azure Databricks
Arquitectura de análisis moderno con Azure Databricks
Automatización de la
identificación, clasificación y
búsqueda de documentos
mediante Durable Functions
Azure Functions Azure App Service Servicios de Azure AI Azure Cognitive Search

Azure Kubernetes Service (AKS)

En este artículo, se describe una arquitectura para procesar archivos de documentos que
contienen varios documentos de varios tipos. Se utiliza la extensión Durable Functions
de Azure Functions para implementar las canalizaciones que procesan los archivos.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. El usuario proporciona un archivo de documentos y la aplicación web lo carga. El
archivo contiene varios documentos de varios tipos. Por ejemplo, puede ser un
archivo PDF o un archivo TIFF de varias páginas.
a. El archivo de documentos se almacena en Azure Blob Storage.
b. La aplicación web agrega un mensaje de comando a una cola de
almacenamiento para iniciar el procesamiento de la canalización.

2. La orquestación de Durable Functions se desencadena mediante el mensaje de


comando. El mensaje contiene metadatos que identifican la ubicación en Blob
Storage del archivo de documentos que se va a procesar. Cada instancia de
Durable Functions procesa solo un archivo de documentos.

3. La función de la actividad de examen llama a la API de lectura de Computer Vision,


pasando la ubicación en el almacenamiento del documento que se va a procesar.
Los resultados del reconocimiento óptico de caracteres (OCR) se devuelven a la
orquestación para su uso por parte de las actividades posteriores.

4. La función de la actividad de clasificación llama al servicio clasificador de


documentos hospedado en un clúster de Azure Kubernetes Service (AKS). Este
servicio usa la coincidencia de patrones de expresión regular para identificar la
página inicial de cada documento conocido y calcular cuántos tipos de documento
se incluyen en el archivo de documentos. Se calculan los tipos y los intervalos de
páginas de los documentos y se devuelven a la orquestación.

7 Nota

Azure no ofrece un servicio que pueda clasificar varios tipos de documentos


en un único archivo. Esta solución usa un servicio que no es de Azure
hospedado en AKS.

5. La función de la actividad de almacén de metadatos guarda la información del tipo


de documento y del intervalo de páginas en un almacén de Azure Cosmos DB.

6. La función de la actividad de indexación crea un nuevo documento de búsqueda


en el servicio Cognitive Search para cada tipo de documento identificado y usa las
bibliotecas de Azure Cognitive Search para .NET para incluir en el documento de
búsqueda los resultados completos del OCR y la información del documento.
También se agrega un identificador de correlación al documento de búsqueda
para que se puedan buscar coincidencias de los resultados de la búsqueda con los
metadatos del documento correspondientes de Azure Cosmos DB.
7. Los usuarios finales pueden buscar los documentos por contenido y metadatos.
Los identificadores de correlación del conjunto de resultados de la búsqueda se
pueden usar para buscar registros de documentos que se encuentran en Azure
Cosmos DB. Los registros incluyen vínculos al archivo de documentos original en
Blob Storage.

Componentes
Durable Functions es una extensión de Azure Functions que hace posible escribir
funciones con estado en un entorno de proceso sin servidor. En esta aplicación, se
usa para administrar la ingesta de documentos y la orquestación de flujos de
trabajo. Permite definir flujos de trabajo con estado escribiendo funciones de
orquestador que se adhieren al modelo de programación de Azure Functions. En
segundo plano, la extensión administra el estado, los puntos de comprobación y
los reinicios, lo que le permite centrarse en la lógica de negocios.
Azure Cosmos DB es una base de datos multimodelo y de distribución global
que hace posible que las soluciones escalen el rendimiento y la capacidad de
almacenamiento en un número indefinido de regiones geográficas. Los Acuerdos
de Nivel de Servicio (SLA) integrales garantizan el rendimiento, la latencia, la
disponibilidad y la coherencia.
Azure Storage es un conjunto de servicios en la nube seguros y escalables de
forma masiva para datos, aplicaciones y cargas de trabajo. Incluye Blob Storage ,
Azure Files , Azure Table Storage y Azure Queue Storage .
Azure App Service proporciona un marco para compilar, implementar y escalar
aplicaciones web. La característica Web Apps es un servicio basado en HTTP para
hospedar aplicaciones web, API de REST y servidores back-end para dispositivos
móviles. Con Web Apps, puede desarrollar en .NET, .NET Core, Java, Ruby, Node.js,
PHP o Python. Las aplicaciones se ejecutan y escalan fácilmente en los entornos
Windows y Linux.
Azure Cognitive Services proporciona algoritmos inteligentes para ver, oír,
hablar, reconocer e interpretar las necesidades de los usuarios mediante métodos
de comunicación naturales.
Azure Cognitive Search proporciona una experiencia de búsqueda enriquecida a
partir de contenido privado y heterogéneo de aplicaciones web, móviles y
empresariales.
AKS es un servicio de Kubernetes totalmente administrado, de alta
disponibilidad y seguro. AKS facilita la implementación y la administración de
aplicaciones contenedorizadas.

Alternativas
El modelo de lectura (OCR) de Form Recognizer es una alternativa a la lectura de
Computer Vision.
Esta solución almacena los metadatos en Azure Cosmos DB para facilitar la
distribución global. Azure SQL Database es otra opción para el almacenamiento
persistente de los metadatos y la información de los documentos.
Puede usar otras plataformas de mensajería, incluido Azure Service Bus , para
desencadenar instancias de Durable Functions.
Para ver un acelerador de soluciones que ayude a agrupar en clústeres y separar
los datos en plantillas, consulte Azure/form-recognizer-accelerator (github.com) .

Detalles del escenario


En este artículo, se describe una arquitectura que utiliza Durable Functions para
implementar canalizaciones automatizadas para procesar archivos de documentos que
contienen varios documentos de varios tipos. Las canalizaciones identifican los
documentos de un archivo de documentos, los clasifican por tipo y almacenan
información que se puede usar en el procesamiento posterior.

Muchas empresas tienen que administrar y procesar archivos de documentos que


contienen documentos que se han escaneado de forma masiva y que pueden contener
varios tipos de documentos diferentes. Normalmente, los archivos de documentos son
archivos PDF o imágenes TIFF de varias páginas. Normalmente, estos archivos se
originan fuera de la organización y la empresa receptora no controla el contenido.

Dadas estas restricciones, las organizaciones se han visto obligadas a crear sus propias
soluciones de análisis de documentos que pueden incluir tecnología personalizada y
procesos manuales. Una solución puede incluir la intervención humana para dividir los
tipos de documentos individuales en sus propios archivos y agregar calificadores de
clasificaciones a cada documento.

Muchas de estas soluciones personalizadas se basan en el patrón de flujo de trabajo de


máquina de estados y usan sistemas de base de datos para conservar el estado del flujo
de trabajo, con servicios de sondeo que comprueban los estados que son responsables
del procesamiento. El mantenimiento y la mejora de estas soluciones pueden ser
difíciles y lentos.

Las organizaciones buscan soluciones confiables, escalables y resistentes para procesar y


administrar la identificación y clasificación de documentos para los tipos de archivos
que usa la organización. Esto incluye el procesamiento de millones de documentos al
día con observabilidad completa del éxito o error de la canalización de procesamiento.

Posibles casos de uso


Esta solución se aplica a muchas áreas:

Informes de títulos. Muchas agencias gubernamentales y municipios administran


registros en papel que no se han migrado a un formato digital. Una solución
automatizada eficaz puede generar un archivo que contenga todos los
documentos necesarios para satisfacer una solicitud de documento.
Registros de mantenimiento. Siguen existiendo registros de mantenimiento de
aeronaves, locomotoras y maquinaria en formato en papel que requieren que se
escaneen y envíen a organizaciones externas.
Procesamiento de permisos. Los departamentos de permisos de ciudades y
provincias siguen manteniendo documentos en papel que se generan para los
informes de inspección de permisos. La capacidad de tomar una fotografía de
varios documentos de inspección e identificar, clasificar y buscar automáticamente
en estos registros puede ser muy beneficiosa.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Una carga de trabajo de confianza es aquella que es resistente y a la vez está disponible.
La resistencia es la capacidad de un sistema de recuperarse de los errores y seguir
funcionando. El objetivo de la resistencia es devolver la aplicación a un estado
plenamente operativo después de un error. La disponibilidad mide si los usuarios
pueden acceder a la carga de trabajo cuando lo necesiten.

Para obtener información sobre la confiabilidad de los componentes de la solución,


consulte los siguientes recursos:

SLA para Azure Cognitive Search


SLA para Azure Applied AI Services
SLA para Azure Functions
Acuerdo de Nivel de Servicio para App Service
Acuerdo de Nivel de Servicio para cuentas de almacenamiento
SLA para Azure Kubernetes Service (AKS)
SLA para Azure Cosmos DB

Optimización de costos
La optimización de costos trata de reducir los gastos innecesarios y mejorar las
eficiencias operativas. Para más información, vea Información general del pilar de
optimización de costos.

Los costos más significativos de esta arquitectura pueden provenir del almacenamiento
de archivos de imagen en la cuenta de almacenamiento, el procesamiento de imágenes
de Cognitive Services y los requisitos de capacidad de índices en el servicio Azure
Cognitive Search.

Los costos se pueden optimizar mediante el dimensionamiento correcto de la cuenta de


almacenamiento mediante la capacidad reservada y las directivas de ciclo de vida, el
planeamiento adecuado de Azure Cognitive Search para implementaciones regionales y
la programación de escalado vertical operativo, y el uso de los precios del plan de
compromiso disponibles para el servicio OCR de Computer Vision para administrar los
costos predecibles.

Estas son algunas de las directrices para optimizar costos:

Use la estrategia de pago por uso para la arquitectura y escale horizontalmente


según sea necesario, en lugar de invertir en recursos a gran escala desde el
principio.
Recuerde que debe tener en cuenta los costos de oportunidad en la arquitectura y
el equilibrio entre la ventaja de realizar el primer movimiento y realizar un
seguimiento rápido. Use la calculadora de precios para calcular tanto el costo
inicial como los costos operativos.
Fije directivas, presupuestos y controles que establezcan los límites de costo de la
solución.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad que tiene la carga de trabajo de reducirse
horizontalmente de manera eficiente para satisfacer las demandas que los usuarios
hayan realizado sobre ella. Para obtener más información, vea Resumen del pilar de
eficiencia del rendimiento.

Los períodos en los que esta solución procesa grandes volúmenes pueden exponer
cuellos de botella de rendimiento. Asegúrese de comprender y planear las opciones de
escalado de Azure Functions, el escalado automático de Cognitive Services y la creación
de particiones de Azure Cosmos DB para garantizar una eficiencia del rendimiento
adecuada para la solución.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Kevin Kraus | Arquitecto principal de soluciones en la nube


Andrea Martini | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Artículos de información general:

Introducción a Almacenamiento de Azure


¿Qué es Durable Functions?
¿Qué es Azure Cognitive Services?
¿Qué es Azure Cognitive Search?
Información general de App Service
Introducción a Azure Cosmos DB
Azure Kubernetes Service
¿Qué es Azure Service Bus?

Documentación del producto:

Documentación de Azure (todos los productos)


Documentación de Azure Durable Functions
Documentación de Azure Cognitive Services
Documentación de Azure Cognitive Search

Recursos relacionados
Modelos de procesamiento de documentos personalizados en Azure
Automatización del procesamiento de documentos mediante Azure Form
Recognizer
Clasificación de imágenes en Azure
Automatización del
procesamiento de documentos
mediante Azure Form Recognizer
Azure Cognitive Search Servicios de Azure AI Azure Cosmos DB Inteligencia de documentos de Azure

Azure Machine Learning

En este artículo se describe una solución escalable y segura para compilar una
canalización de procesamiento de documentos automatizada. La solución usa Azure
Form Recognizer para la extracción estructurada de datos. Los modelos de
procesamiento de lenguaje natural (NLP) y los modelos personalizados enriquecen los
datos.

Architecture
Other sources of data Extraction Enrichment Analytics and visualizations

Data to be Azure
processed Trigger Cognitive
4 Service for
Attachments 1 Language
(email or social media apps) Azure Blob Storage

Real-time scoring
Back-end
application 2 Power BI

FTP servers
6
Azure Kubernetes
Azure Functions Service (AKS)
5
Azure Web Azure Form
Application Recognizer Other
Firewall 3 Batch scoring Azure Machine Learning applications
1
2

Azure Cosmos
DB Azure Cognitive Search
1 3


File ingestion Browser Azure Back-end
Application application
Gateway

Microsoft
Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
En las secciones siguientes se describen las distintas fases del proceso de extracción de
datos.

Ingesta de datos y extracción


1. Los documentos se ingieren por medio de un explorador en el front-end de una
aplicación web. Los documentos contienen imágenes o están en formato PDF.
Azure App Service hospeda una aplicación de back-end. La solución enruta los
documentos a esa aplicación mediante Azure Application Gateway. Este
equilibrador de carga se ejecuta con Azure Web Application Firewall, lo que ayuda
a proteger la aplicación frente a ataques y vulnerabilidades comunes.

2. La aplicación de back-end envía una solicitud a un punto de conexión de API de


REST de Form Recognizer que usa uno de estos modelos:

Diseño
Factura
Recibo
Documento de identificación
Tarjeta de presentación
Documento general, que se encuentra en versión preliminar

La respuesta de Form Recognizer contiene datos de OCR sin procesar y


extracciones estructuradas. Form Recognizer también asigna [valores de confianza]
[Características y limitaciones de Form Recognizer - Evaluación del cliente] a los
datos extraídos.

3. La aplicación de back-end de App Service usa los valores de confianza para


comprobar la calidad de la extracción. Si la calidad está por debajo de un umbral
especificado, la aplicación marca los datos para comprobación manual. Si la
calidad de la extracción cumple los requisitos, los datos entran en Azure
Cosmos DB para su consumo en aplicaciones de nivel inferior. La aplicación
también puede devolver los resultados al explorador de front-end.

4. Otros orígenes proporcionan imágenes, archivos PDF y otros documentos. Los


orígenes incluyen datos adjuntos de correo y servidores de protocolo de
transferencia de archivos (FTP). Herramientas como Azure Data Factory y AzCopy
transfieren estos archivos a Azure Blob Storage. Azure Logic Apps ofrece
canalizaciones para extraer automáticamente datos adjuntos de correos
electrónicos.

5. Cuando un documento entra en Blob Storage, se desencadena una función de


Azure. La función:

Envía una solicitud al punto de conexión precompilado pertinente de Form


Recognizer.
Recibe la respuesta.
Evalúa la calidad de la extracción.

6. Los datos extraídos entran en Azure Cosmos DB.

Enriquecimiento de datos
La canalización que se usa para el enriquecimiento de datos depende del caso de uso.

1. El enriquecimiento de datos puede incluir las siguientes capacidades de NLP:

Reconocimiento de entidades con nombre (NER)


Extracción de información de personal, frases clave, información sanitaria y
otras entidades dependientes de dominio

Para enriquecer los datos, la aplicación web:

Recupera los datos extraídos de Azure Cosmos DB.

Envía solicitudes a estas características de la API Azure Cognitive Service para


lenguaje:
NER
Información personal
Extracción de frases clave
Text analytics for Health
NER personalizado, que está en versión preliminar
Análisis de opiniones
Minería de opiniones

Recibe respuestas de la API Azure Cognitive Service para lenguaje.

2. Los modelos personalizados realizan detección de fraudes, análisis de riesgos y


otros tipos de análisis en los datos:

Los servicios de Azure Machine Learning entrenan e implementan los


modelos personalizados.
Los datos extraídos se recuperan de Azure Cosmos DB.
Los modelos derivan información de los datos.

Existen estas posibilidades para la inferencia:

Procesos en tiempo real. Los modelos se pueden implementar en puntos de


conexión en línea administrados o puntos de conexión en línea de
Kubernetes, donde el clúster de Kubernetes administrado puede estar en
cualquier lugar, incluido Azure Kubernetes Service (AKS) .
La inferencia por lotes se puede realizar en puntos de conexión por lotes o en
Azure Virtual Machines.

3. Los datos enriquecidos entran en Azure Cosmos DB.

Análisis y visualizaciones
1. Las aplicaciones usan OCR sin procesar, datos estructurados de puntos de
conexión de Form Recognizer y los datos enriquecidos de NLP:

Power BI muestra los datos y presenta informes sobre ellos.


Los datos actúan como origen de Azure Cognitive Search.
Otras aplicaciones consumen los datos.

Componentes
App Service es una oferta de plataforma como servicio (PaaS) de Azure. Puede
usar App Service para hospedar aplicaciones web que se pueden reducir o escalar
horizontalmente de forma manual o automática. El servicio admite varios lenguajes
y marcos, como ASP.NET, ASP.NET Core, Java, Ruby, Node.js, PHP y Python.

Application Gateway es un equilibrador de carga de nivel 7 (nivel de aplicación)


que administra el tráfico a las aplicaciones web. Puede ejecutar Application
Gateway con Azure Web Application Firewall para ayudar a proteger las
aplicaciones web frente a vulnerabilidades de seguridad y otras comunes.

Azure Functions es una plataforma de proceso sin servidor que se puede usar
para compilar aplicaciones. Con Functions, puede usar desencadenadores y
enlaces para reaccionar ante los cambios en servicios de Azure como Blob Storage
y Azure Cosmos DB. Functions puede ejecutar tareas programadas y procesar
datos en tiempo real y colas de mensajería.

Form Recognizer forma parte de Azure Applied AI Services. Form Recognizer


ofrece una colección de puntos de conexión precompilados para extraer datos de
facturas, documentos, recibos, tarjetas de identificación y tarjetas de presentación.
Este servicio asigna cada fragmento de datos extraídos a un campo como par
clave-valor. Form Recognizer también extrae el contenido y la estructura de tablas.
El formato de salida es JSON.

Azure Storage es una solución de almacenamiento en la nube que incluye


almacenamiento de objetos, blobs, archivos, discos, colas y tablas.

Blob Storage es un servicio que forma parte de Azure Storage. Blob Storage
ofrece almacenamiento optimizado de objetos en la nube para grandes cantidades
de datos no estructurados.

Azure Data Lake Storage es un lago de datos seguro y escalable para cargas de
trabajo de análisis de alto rendimiento. Los datos provienen normalmente de
varios orígenes heterogéneos y pueden ser estructurados, semiestructurados o no
estructurados. Azure Data Lake Storage Gen2 combina las capacidades de Azure
Data Lake Storage Gen1 con Blob Storage. Como solución de próxima generación,
Data Lake Storage Gen2 proporciona semántica de sistema de archivos, seguridad
de nivel de archivo y escalado. Además, ofrece las funcionalidades de
almacenamiento por niveles, alta disponibilidad y recuperación ante desastres de
Blob Storage.

Azure Cosmos DB es una base de datos NoSQL escalable totalmente


administrada y con alta capacidad de respuesta. Azure Cosmos DB ofrece
seguridad de nivel empresarial y admite API de muchas bases de datos, lenguajes
y plataformas. Los ejemplos incluyen SQL, MongoDB, Gremlin, Table y Apache
Cassandra. Las opciones de escalado automático sin servidor de Azure Cosmos DB
administran de forma eficaz las demandas de capacidad de las aplicaciones.

Azure Cognitive Service para lenguaje ofrece muchos servicios NLP que se
pueden usar para comprender y analizar texto. Algunos de estos servicios son
personalizables, como NER personalizado, clasificación de texto personalizado,
reconocimiento del lenguaje conversacional y respuesta a preguntas.

Machine Learning es una plataforma abierta para administrar el desarrollo y la


implementación de modelos de aprendizaje automático a gran escala. Machine
Learning atiende a los niveles de aptitud de distintos usuarios, como científicos de
datos o analistas de negocios. La plataforma admite marcos abiertos de uso
frecuente y ofrece caracterización automatizada y selección de algoritmos. Puede
implementar modelos en varios destinos. Los ejemplos incluyen AKS, Azure
Container Instances como un servicio web para la inferencia en tiempo real a gran
escala y Azure Virtual Machines para la puntuación por lotes. Los puntos de
conexión administrados de Machine Learning abstraen la infraestructura necesaria
para la inferencia de modelos en tiempo real o por lotes.

AKS es un servicio de Kubernetes totalmente administrado que facilita la


implementación y la administración de aplicaciones contenedorizadas. AKS ofrece
tecnología Kubernetes sin servidor, una experiencia integrada de integración
continua y entrega continua (CI/CD), así como seguridad de nivel empresarial y
gobernanza.

Power BI es una colección de servicios de software y aplicaciones que muestran


información de análisis.

Azure Cognitive Search es un servicio de búsqueda en la nube que proporciona


infraestructura, API y herramientas para la búsqueda. Puede usar Azure Cognitive
Search para compilar experiencias de búsqueda a partir de contenido privado
heterogéneo de aplicaciones web, móviles y empresariales.
Alternativas
Puede usar Azure Virtual Machines en lugar de App Service para hospedar la
aplicación.

Puede usar cualquier base de datos relacional para el almacenamiento persistente


de los datos extraídos, lo que incluye:
Azure SQL Database .
Azure Database for PostgreSQL .
Azure Database for MySQL .

Detalles del escenario


La automatización del procesamiento de documentos y la extracción de datos es una
tarea integral de las organizaciones de todos los segmentos verticales del sector. La
inteligencia artificial es una de las soluciones probadas de este proceso, aunque lograr
una precisión del 100 % es una realidad lejana. Pero el uso de la inteligencia artificial
para la digitalización en lugar de un proceso puramente manual puede reducir el
esfuerzo manual hasta en un 90 %.

El reconocimiento óptico de caracteres (OCR) puede extraer contenido de imágenes y


archivos PDF, que constituyen la mayoría de los documentos que usan las
organizaciones. Este proceso usa la búsqueda de palabras clave y la coincidencia de
expresiones regulares. Estos mecanismos extraen datos relevantes del texto completo y
luego crean resultados estructurados. Este enfoque tiene inconvenientes. La revisión del
proceso posterior a la extracción para satisfacer formatos de documento cambiantes
requiere un gran esfuerzo de mantenimiento.

Posibles casos de uso


Esta solución es idónea para el sector financiero. También puede aplicarse a los sectores
de automoción, viajes y hostelería. Las siguientes tareas pueden beneficiarse de esta
solución:

Aprobación de informes de gastos


Procesamiento de facturas, recibos y facturas de reclamaciones de seguros y
auditorías financieras
Procesamiento de reclamaciones que incluyen facturas, resúmenes de altas y otros
documentos
Automatización de aprobaciones de declaración del trabajo (SoW)
Automatización de la extracción de identificadores con fines de comprobación,
como en pasaportes o permisos de conducir
Automatización del proceso de especificación de datos de tarjetas de presentación
en sistemas de administración de visitantes
Identificación de patrones de compra y documentos financieros duplicados para la
detección de fraudes

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Tenga en cuenta estos puntos al usar esta solución.

Disponibilidad
La disponibilidad de la arquitectura depende de los servicios de Azure que conformen la
solución:

Form Recognizer forma parte de Applied AI Services. Para conocer la garantía de


disponibilidad de este servicio, vea Acuerdo de Nivel de Servicio de Azure
Applied AI Services .

Azure Cognitive Service para lenguaje forma parte de Azure Cognitive Services.
Para conocer la garantía de disponibilidad de estos servicios, vea SLA para Azure
Cognitive Services .

Azure Cosmos DB proporciona alta disponibilidad al mantener cuatro réplicas de


los datos dentro de cada región y replicar datos entre regiones. La garantía de
disponibilidad exacta depende de si se replica en una sola región o en varias. Para
obtener más información, consulte Lograr una alta disponibilidad con Azure
Cosmos DB.

Blob Storage ofrece opciones de redundancia que ayudan a garantizar la alta


disponibilidad. Puede usar cualquiera de estos enfoques para replicar datos tres
veces en una región primaria:
En una única ubicación física para el almacenamiento con redundancia local
(LRS).
En tres zonas de disponibilidad que usan parámetros de disponibilidad
diferentes. Para obtener más información, vea Parámetros de durabilidad y
disponibilidad. Esta opción funciona mejor en las aplicaciones que requieren
alta disponibilidad.

Para conocer las garantías de disponibilidad de otros servicios de Azure de la


solución, vea estos recursos:
Acuerdo de Nivel de Servicio para App Service
SLA para Azure Functions
SLA para Application Gateway
SLA para Azure Kubernetes Service (AKS)

Escalabilidad
App Service puede escalar horizontalmente y reducir horizontalmente de forma
automática a medida que varía la carga de la aplicación. Para obtener más
información, vea Creación de una configuración de escalabilidad automática para
recursos de Azure basada en los datos de rendimiento o en una programación.

Azure Functions puede escalar de forma automática o manual. El plan de


hospedaje que elija determina el comportamiento de escalado de las aplicaciones
de funciones. Para obtener más información, vea Opciones de hospedaje de Azure
Functions.

De manera predeterminada, Form Recognizer admite quince solicitudes


simultáneas por segundo. Puede aumentar este valor mediante la creación de una
incidencia de soporte técnico de Azure con una solicitud de aumento de cuota.

En el caso de los modelos personalizados que hospeda como servicios web en


AKS, azureml-fe escala automáticamente según sea necesario. Este componente de
front-end enruta las solicitudes de inferencia entrantes a los servicios
implementados.

En el caso de la inferencia por lotes, Machine Learning crea un clúster de proceso a


petición que escala automáticamente. Para obtener más información, vea Tutorial:
Compilación de una canalización de Azure Machine Learning para la puntuación
por lotes. Machine Learning usa la clase ParellelRunStep para ejecutar los trabajos
de inferencia en paralelo.

En el caso de Azure Cognitive Service para lenguaje, se aplican límites de datos y


velocidad. Para obtener más información, vea estos recursos:
Procedimiento para usar Reconocimiento de entidades con nombre (NER)
Detección y redacción de información personal
Uso del análisis de sentimiento y la minería de opiniones
Uso de Text Analytics para el estado
Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Azure Web Application Firewall ayuda a proteger la aplicación frente a


vulnerabilidades comunes. Esta opción de Application Gateway usa reglas de Open
Web Application Security Project (OWASP) para evitar ataques como scripting
entre sitios, secuestros de sesión y otras vulnerabilidades de seguridad.

Para mejorar la seguridad de App Service, tenga en cuenta estas opciones:


App Service puede acceder a los recursos de Azure Virtual Network mediante la
integración de redes virtuales.
Puede usar App Service en una instancia de App Service Environment (ASE), que
se implementa en una red virtual dedicada. Este enfoque ayuda a aislar la
conectividad entre App Service y otros recursos de la red virtual.

Para obtener más información, vea Seguridad en Azure App Service.

Blob Storage y Azure Cosmos DB cifran los datos en reposo. Puede proteger estos
servicios mediante puntos de conexión de servicio o puntos de conexión privados.

Azure Functions admite la integración de redes virtuales. Con esta funcionalidad,


las aplicaciones de funciones pueden acceder a los recursos de una red virtual.
Para obtener más información, vea las opciones de red de Azure Functions.

Puede configurar Form Recognizer y Azure Cognitive Service para lenguaje para el
acceso desde redes virtuales específicas o desde puntos de conexión privados.
Estos servicios cifran los datos en reposo. Es posible usar claves de suscripción,
tokens o Microsoft Entra ID para autenticar solicitudes en estos servicios. Para
obtener más información, vea Autenticación de solicitudes en Azure Cognitive
Services.

Machine Learning ofrece muchos niveles de seguridad:


La autenticación de áreas de trabajo proporciona administración de identidades
y acceso.
Puede usar la autorización para administrar el acceso al área de trabajo.
Al proteger los recursos del área de trabajo, puede mejorar la seguridad de red.
Puede usar Seguridad de la capa de transporte (TLS) para proteger los servicios
web que implemente por medio de Machine Learning.
Para proteger los datos, puede cambiar las claves de acceso de las cuentas de
Azure Storage que usa Machine Learning.
Resistencia
La resistencia de la solución depende de los modos de error de servicios
individuales como App Service, Functions, Azure Cosmos DB, Storage y Application
Gateway. Para obtener más información, vea Lista de comprobación de resistencia
para servicios de Azure específicos.

Puede hacer que Form Recognizer sea resistente. Las posibilidades incluyen
diseñarlo para conmutar por error en otra región y dividir la carga de trabajo en
dos o más regiones. Para obtener más información, vea Copia de seguridad y
recuperación de los modelos de Form Recognizer.

Machine Learning Service depende de muchos servicios de Azure. Para


proporcionar resistencia, debe configurar cada servicio para que sea resistente.
Para obtener más información, vea Conmutación por error para la continuidad
empresarial y la recuperación ante desastres.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

El costo de implementar esta solución depende de los componentes que se usen y de


las opciones que se elijan para cada componente.

Hay muchos factores que pueden afectar al precio de cada componente:

El número de documentos que se procesen


El número de solicitudes simultáneas que reciba la aplicación
El tamaño de los datos que se almacenen después del procesamiento
La región de implementación

Estos recursos proporcionan información sobre las opciones de precios de los


componentes:

Precios de Azure Form Recognizer


Precios de Servicio de aplicaciones
Precios de Azure Functions
Precios de Application Gateway
Precios de Azure Blob Storage
Precios de Azure Cosmos DB
Precios de servicio de lenguaje
Precios de Azure Machine Learning

Después de decidir un plan de tarifa para cada componente, use la Calculadora de


precios de Azure para calcular el costo de la solución.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Jyotsna Ravi | Ingeniero de clientes sénior

Pasos siguientes
¿Qué es Azure Form Recognizer?
[Póngase en marcha: Document Intelligence Studio][Póngase en marcha:
Document Intelligence Studio]
Uso de los SDK o de la API de REST de Form Recognizer
¿Qué es Azure Cognitive Service for Language?
¿Qué es Azure Machine Learning?
Introducción a Azure Functions
Configuración de Azure Functions con una red virtual
¿Qué es Azure Application Gateway?
¿Qué es el firewall de aplicaciones web de Azure en Azure Application Gateway?
Tutorial: Acceso a SQL Server local desde una VNet administrada por Data Factory
mediante un punto de conexión privado
Documentación de Azure Storage

Recursos relacionados
Extracción de texto de objetos mediante Power Automate y AI Builder
[Minería de conocimiento en la administración de procesos empresariales] [Minería
de conocimiento en la administración de procesos empresariales]
[Minería de conocimiento en la administración de contratos] [Minería de
conocimiento en la administración de contratos]
Minería de conocimientos para la investigación de contenido
Automatizar el procesamiento de
formularios PDF
Inteligencia de documentos de Azure Servicios de Azure AI Azure Logic Apps Azure Functions

En este artículo se describe una arquitectura de Azure que puede usar para reemplazar
métodos de procesamiento de formularios costosos e inflexibles con procesamiento
automatizado de PDF flexible y rentable.

Architecture

Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de trabajo
1. Una cuenta de correo electrónico designada de Outlook recibe archivos PDF como
datos adjuntos. La llegada de un correo electrónico desencadena una aplicación
lógica para procesar el correo electrónico. La aplicación lógica se compila
mediante las funcionalidades de Azure Logic Apps.
2. La aplicación lógica carga los archivos PDF en un contenedor en Azure Data Lake
Storage.
3. También puede cargar manualmente o mediante programación archivos PDF en el
mismo contenedor PDF.
4. La llegada de un archivo PDF en el contenedor PDF desencadena otra aplicación
lógica para procesar los formularios PDF que se encuentran en el archivo
mencionado.
5. La aplicación lógica envía la ubicación del archivo PDF a una aplicación de
funciones para su procesamiento. La aplicación de funciones se compila mediante
las funcionalidades de Azure Functions.
6. La aplicación de funciones recibe la ubicación del archivo y lleva a cabo estas
acciones:
a. Divide el archivo en páginas únicas en caso de que el archivo tenga varias. Cada
página contiene un formulario independiente. Los archivos divididos se guardan
en un segundo contenedor en Data Lake Storage.
b. Usa HTTPS POST, una API de REST de Azure, para enviar la ubicación del archivo
PDF de página única a Azure Form Recognizer para su procesamiento. Cuando
Form Recognizer completa su procesamiento, devuelve una respuesta a la
aplicación de funciones, que coloca la información en una estructura de datos.
c. Crea un archivo de datos JSON que contiene los datos de respuesta y almacena
el archivo en un tercer contenedor en Data Lake Storage.
7. La aplicación lógica de procesamiento de formularios recibe los datos de respuesta
procesados.
8. La aplicación lógica de procesamiento de formularios envía los datos procesados a
Azure Cosmos DB, que los guarda en una base de datos y en colecciones.
9. Power BI obtiene los datos de Azure Cosmos DB y proporciona información y
paneles.
10. Puede implementar un procesamiento adicional según sea necesario en los datos
de Azure Cosmos DB.

Componentes
Azure Applied AI Services es una categoría de productos de Azure AI que usa
Azure Cognitive Services, inteligencia artificial específica de tareas y lógica de
negocios para proporcionar servicios de inteligencia artificial inmediata para
procesos empresariales comunes. Uno de estos productos es Form Recognizer ,
que usa modelos de Machine Learning para extraer pares clave-valor, texto y
tablas de documentos.
Azure Logic Apps es un servicio en la nube sin servidor que permite crear y
ejecutar flujos de trabajo automatizados que integren aplicaciones, datos, servicios
y sistemas.
Azure Functions es una solución sin servidor que le permite escribir menos
código, mantener menos infraestructura y ahorrar costos.
Azure Data Lake Storage es una base para crear lagos de datos empresariales en
Azure.
Azure Cosmos DB es una base de datos NoSQL y relacional totalmente
administrada para el desarrollo de aplicaciones modernas.
Power BI es una colección de servicios de software, aplicaciones y conectores
que funcionan conjuntamente para que pueda convertir los orígenes de datos no
relacionados en información coherente, interactiva y visualmente atractiva.

Alternativas
Puede usar Azure SQL Database en vez de Azure Cosmos DB para almacenar los
datos procesados de los formularios.
Puede usar Azure Data Explorer para visualizar los datos de formularios
procesados que se almacenan en Data Lake Storage.

Detalles del escenario


El procesamiento de formularios suele ser una función empresarial crítica. Muchas
empresas siguen confiando en procesos manuales que son costosos, lentos y propensos
a errores. Reemplazar los procesos manuales reduce el costo y el riesgo, además de que
agiliza la empresa.

En este artículo se describe una arquitectura que puede usar para reemplazar el
procesamiento manual de formularios PDF o sistemas heredados costosos que
automatizan el procesamiento de formularios PDF. Form Recognizer procesa los
formularios PDF, Logic Apps proporciona el flujo de trabajo y Functions provee las
funcionalidades de procesamiento de datos.

Para información sobre la implementación, consulte Implementación de este escenario


en este artículo.

Posibles casos de uso


La solución que se describe en este artículo puede procesar muchos tipos de
formularios, entre los que se incluyen:

Facturas
Registros de pago
Registros de seguridad
Registros de incidentes
Registros de cumplimiento
Pedidos de compra
Formularios de autorización de pago
Formularios de comprobación de estado
Formularios de encuestas

Consideraciones
Estas consideraciones constituyen los pilares del Marco de buena arquitectura de Azure,
un conjunto de principios rectores que puede usar para mejorar la calidad de una carga
de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft
Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Una carga de trabajo de confianza es aquella que es resistente y a la vez está


disponible. La resistencia es la capacidad de un sistema de recuperarse de los errores y
seguir funcionando. El objetivo de la resistencia es devolver la aplicación a un estado
plenamente operativo después de un error. La disponibilidad mide si los usuarios
pueden acceder a la carga de trabajo cuando lo necesiten.

Esta arquitectura está pensada como una arquitectura de inicio que puede implementar
rápidamente y crear prototipos para ofrecer una solución empresarial. Si el prototipo es
un éxito, puede ampliar y mejorar la arquitectura para cumplir los requisitos adicionales
(si es necesario).

Esta arquitectura usa tecnologías e infraestructuras de Azure escalables y resistentes. Por


ejemplo, Azure Cosmos DB tiene redundancia integrada y cobertura global que puede
configurar para satisfacer sus necesidades.

Para conocer las garantías de disponibilidad de los servicios de Azure que usa esta
solución, consulte Acuerdo de Nivel de Servicio para Online Services .

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

La cuenta de correo electrónico de Outlook que se usa en esta arquitectura es una


cuenta dedicada que recibe formularios PDF como archivos adjuntos. Se recomienda
limitar los remitentes únicamente a las partes de confianza y evitar que actores
malintencionados envíen correo no deseado a la cuenta de correo electrónico.

La implementación de esta arquitectura que se describe en Implementación de este


escenario toma las siguientes medidas para aumentar la seguridad:

Los scripts de implementación de PowerShell y Bicep usan Azure Key Vault para
almacenar información confidencial y que no se muestre en las pantallas de
terminal ni se almacene en los registros de implementación.
Las identidades administradas proporcionan una identidad administrada
automáticamente en Microsoft Entra ID para que las aplicaciones la utilicen al
conectarse a los recursos que admiten la autenticación de Microsoft Entra. La
aplicación de funciones usa identidades administradas para que el código no
dependa de entidades de seguridad individuales y no contenga información de
identidad confidencial.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Estas son algunas de las directrices para optimizar costos:

Use la estrategia de pago por uso para la arquitectura y escale horizontalmente


según sea necesario, en lugar de invertir en recursos a gran escala desde el
principio.
La implementación de la arquitectura que se describe en Implementación de este
escenario implementa una solución de inicio adecuada para la prueba de
concepto. Los scripts de implementación crean una arquitectura de trabajo con
requisitos mínimos de recursos. Por ejemplo, los scripts de implementación crean
un host de Linux sin servidor más pequeño para ejecutar la aplicación de
funciones.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad que tiene la carga de trabajo para reducir
horizontalmente de manera eficiente con el fin de satisfacer las demandas que le hacen
los usuarios. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.
Esta arquitectura utiliza servicios que tienen funcionalidades de escalado integradas que
puede usar para mejorar la eficiencia del rendimiento. Estos son algunos ejemplos:

Puede hospedar Azure Logic Apps y Azure Functions en una infraestructura sin
servidor. Para más información, consulte Introducción a Azure sin servidor:
creación de soluciones y aplicaciones basadas en la nube con Azure Logic Apps y
Azure Functions.
Puede configurar Azure Cosmos DB para escalar automáticamente su rendimiento.
Para más información, consulte Aprovisionamiento del rendimiento de la
escalabilidad automática en una base de datos o un contenedor de Azure
Cosmos DB: API para NoSQL.

Implementación de este escenario


Puede implementar una versión rudimentaria de esta arquitectura, un acelerador de
soluciones, y usarla como punto inicial para implementar su propia solución. La
implementación de referencia del acelerador incluye código, scripts de implementación
y una guía de implementación.

El acelerador recibe los formularios PDF, extrae los campos de datos y guarda los datos
en Azure Cosmos DB. Power BI visualiza los datos. El diseño usa una metodología
modular controlada por metadatos. No hay campos de formulario codificados de forma
rígida. Puede procesar cualquier formulario PDF.

Puede usar el acelerador tal cual, sin modificaciones de código, para procesar y
visualizar formularios PDF de página única, como formularios de seguridad, facturas,
registros de incidentes y muchos otros. Para usarlo, solo tiene que recopilar formularios
PDF de muestra, entrenar un nuevo modelo para aprender el diseño de los formularios y
conectarlo a la solución. También debe rediseñar el informe de Power BI para los
conjuntos de datos de modo que proporcione la información que desee.

La implementación usa Form Recognizer Studio para crear modelos personalizados. El


acelerador usa los nombres de campo que se guardan en el modelo de Machine
Learning como referencia para procesar otros formularios. Solo se necesitan cinco
formularios de muestra para crear un modelo de Machine Learning personalizado.
Puede combinar hasta 100 modelos personalizados para crear un modelo de Machine
Learning compuesto que pueda procesar una variedad de formularios.

Repositorio de implementación
El repositorio de GitHub para el acelerador de soluciones es:
https://github.com/microsoft/Azure-PDF-Form-Processing-Automation-Solution-
Accelerator

El archivo Léame que se muestra en esa ubicación proporciona información general


sobre el acelerador.

Los archivos de implementación se encuentran en la carpeta Implementación de nivel


superior del repositorio:

https://github.com/microsoft/Azure-PDF-Form-Processing-Automation-Solution-
Accelerator/tree/main/Deployment

El archivo Léame que se muestra en esa ubicación es la guía de implementación. Para


realizar la implementación, siga los pasos.

En el paso 2 se proporcionan detalles sobre el uso de formularios PDF de muestra para


crear un modelo de Machine Learning personalizado. Para conectar el modelo a la
solución, establezca la variable de entorno denominada CUSTOM_BUILT_MODEL_ID en
el nombre del modelo de máquina en la aplicación de funciones. Para más información,
consulte el paso 3.

Requisitos previos de implementación


Para implementar, necesita una suscripción de Azure. Para más información sobre las
suscripciones gratuitas, consulte Compilación en la nube con una cuenta gratuita de
Azure .

Para obtener información sobre los servicios que se usan en el acelerador, consulte los
artículos de información general y referencia que aparecen en:

Documentación de Azure Form Recognizer


Documentación de Azure Logic Apps
Documentación de Azure Functions
Introducción a Azure Data Lake Storage Gen2
Documentación sobre Azure Cosmos DB
Documentación de Power BI

Consideraciones de la implementación
Para procesar un nuevo tipo de formulario PDF, use archivos PDF de muestra para crear
un nuevo modelo de Machine Learning. Cuando el modelo esté listo, conecte el
identificador a la solución.
Este nombre de contenedor se puede configurar en los scripts de implementación que
obtiene del repositorio de GitHub.

La arquitectura no aborda los requisitos de alta disponibilidad (HA) ni de recuperación


ante desastres (DR). Si desea ampliar y mejorar la arquitectura actual para la
implementación de producción, tenga en cuenta las siguientes recomendaciones y
procedimientos recomendados:

Diseñe la arquitectura de alta disponibilidad y recuperación ante desastres en


función de sus requisitos y use las funcionalidades de redundancia integradas
cuando corresponda.
Actualice el código de implementación de Bicep para crear un entorno informático
que pueda controlar los volúmenes de procesamiento.
Actualice el código de implementación de Bicep para crear más instancias de los
componentes de arquitectura para satisfacer los requisitos de alta disponibilidad y
recuperación ante desastres.
Siga las instrucciones de Redundancia de Azure Storage al diseñar y aprovisionar el
almacenamiento.
Siga las instrucciones de Continuidad empresarial y recuperación ante desastres al
diseñar y aprovisionar las aplicaciones lógicas.
Siga las instrucciones de Confiabilidad en Azure Functions al diseñar y aprovisionar
la aplicación de funciones.
Siga las instrucciones de Lograr alta disponibilidad con Azure Cosmos DB al
diseñar y aprovisionar una base de datos que se creó con Azure Cosmos DB.
Si considera la posibilidad de colocar este sistema en producción para procesar
grandes volúmenes de formularios PDF, puede modificar los scripts de
implementación para crear un host de Linux con más recursos. Para hacerlo,
modifique el código dentro de https://github.com/microsoft/Azure-PDF-Form-
Processing-Automation-Solution-
Accelerator/blob/main/Deployment/1_deployment_scripts/deploy-
functionsapp.bicep

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Gail Zhou | Arquitecto sénior

Otros colaboradores:
Nalini Chandhi | Especialista técnico principal
Steve DeMarco | Arquitecto de soluciones en la nube sénior
Travis Hilbert | Especialista técnico Global Black Belt
DB Lee | Especialista técnico sénior
Malory Rose | Especialista técnico Global Black Belt
Oscar Shimabukuro | Arquitecto de soluciones en la nube sénior
Echo Wang | Director de administración de programas

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Vídeo: Acelerador de soluciones de automatización del procesamiento de
formularios PDF de Azure .
Acelerador de soluciones de automatización del procesamiento de formularios
PDF de Azure
Acelerador de soluciones de automatización del procesamiento de facturas de
Azure
Acelerador de automatización de procesos empresariales
Tutorial: Creación de flujos de trabajo para procesar correos electrónicos mediante
Azure Logic Apps, Azure Functions y Azure Storage

Recursos relacionados
Modelos de procesamiento de documentos personalizados en Azure
Indexación de contenido y metadatos de archivos mediante Azure Cognitive
Search
Automatización de la identificación, clasificación y búsqueda de documentos
mediante Durable Functions
Automatización del procesamiento de documentos mediante Azure Form
Recognizer
Modelos de procesamiento de
documentos personalizados en
Azure
Inteligencia de documentos de Azure Servicios de Azure AI Azure Logic Apps

Azure Machine Learning Studio Azure Storage

En este artículo se describen las soluciones de Azure para crear, entrenar, implementar y
usar modelos de procesamiento de documentos personalizados. Estos servicios de
Azure también ofrecen funcionalidades de interfaz de usuario (UI) para realizar etiquetas
o etiquetados para el procesamiento de texto.

Architecture
Data ingestion Labeling, tagging,
Source Data store Deployment
and orchestration and training
Built-in
deployment

Form Recognizer Form Recognizer


Logic Apps
Studio (custom model parameters)
Email servers
Blob Storage

1 2 3
4
Language Cognitive Service for Language
FTP server Data Factory Studio (custom model parameters)

Data Lake
Storage
Machine Learning Kubernetes Batch/online
Web Apps Function Apps managed
Studio Services
endpoints

Microsoft

Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Orquestadores como Azure Logic Apps, Azure Data Factory o Azure Functions
ingerir mensajes y datos adjuntos de servidores de correo electrónico y archivos de
servidores de FTP o aplicaciones web.

Azure Functions y Logic Apps permiten cargas de trabajo sin servidor. El


servicio que elija dependerá de sus preferencias para las funcionalidades de
servicio, como el desarrollo, los conectores, la administración y el contexto de
ejecución. Para obtener más información, consulte Comparativa entre
Azure Functions y Azure Logic Apps.

Considere la posibilidad de usar Azure Data Factory para el movimiento


masivo de datos.

2. Los orquestadores envían datos ingeridos a Azure Blob Storage o Data Lake
Storage, organizando los datos entre almacenes de datos en función de
características como extensiones de archivo o clientes.

3. Form Recognizer Studio, Language Studio o Estudio de Azure Machine Learning


etiquetar y etiquetar datos textuales y compilar los modelos personalizados. Puede
usar estos tres servicios de forma independiente o en varias combinaciones para
abordar diferentes casos de uso.

Si el documento requiere extraer pares clave-valor o crear una tabla


personalizada a partir de un formato de imagen o PDF, use Form Recognizer
Studio para etiquetar los datos y entrenar el modelo personalizado.

Para la clasificación de documentos basada en contenido o para la extracción


de entidades específicas del dominio, puede entrenar un modelo
personalizado de clasificación de texto o reconocimiento de entidades con
nombre (NER) en Language Studio.

Estudio de Azure Machine Learning también puede realizar el etiquetado


para la clasificación de texto o la extracción de entidades con marcos de
código abierto como PyTorch o TensorFlow.

4. Para implementar los modelos personalizados y usarlos para la inferencia:

Form Recognizer tiene implementación de modelos integrada. Use Form


Recognizer SDK o la API de REST para aplicar modelos personalizados para la
inferencia. Incluya el identificador de modelo o el nombre del modelo
personalizado en la dirección URL de la solicitud de Form Recognizer, en
función de la versión de la API. Form Recognizer no requiere más pasos de
implementación.

Language Studio proporciona una opción para implementar modelos de


lenguaje personalizados. Para obtener la dirección URL de predicción del
punto de conexión de REST, seleccione el modelo que se va a implementar.
Puede realizar la inferencia de modelos mediante el punto de conexión REST
o las bibliotecas cliente del SDK de Azure.
Azure Machine Learning puede implementar modelos personalizados en
puntos de conexión administrados de Azure Machine Learning en línea o por
lotes. También puede implementar en Azure Kubernetes Service (AKS) como
servicio web mediante el SDK de Azure Machine Learning.

Componentes
Logic Apps forma parte de Azure Integration Services . Logic Apps crea flujos
de trabajo automatizados que integran aplicaciones, datos, servicios y sistemas.
Con conectores administrados para servicios como Azure Storage y Office 365,
puede desencadenar flujos de trabajo cuando se recibe un archivo en la cuenta de
almacenamiento o el correo electrónico.

Data Factory es un servicio administrado de extracción, transformación y carga


en la nube (ETL) para la integración y transformación de datos. Data Factory puede
agregar actividades de transformación a una canalización que incluya invocar un
punto de conexión REST o ejecutar un cuaderno en los datos ingeridos.

Azure Functions es un servicio de proceso sin servidor que puede hospedar


cargas de trabajo controladas por eventos con procesos de corta duración.

Blob Storage es la solución de almacenamiento de objetos para archivos sin


procesar en este escenario. Blob Storage admite bibliotecas para varios lenguajes,
como .NET, Node.js y Python. Las aplicaciones pueden acceder a archivos en Blob
Storage a través de HTTP/HTTPS. Blob Storage tiene niveles de acceso frecuente,
esporádico y de archivo para admitir la optimización de costos para almacenar
grandes cantidades de datos.

Data Lake Storage es un conjunto de capacidades compiladas sobre Azure Blob


Storage para el análisis de big data. Data Lake Storage conserva la rentabilidad de
Blob Storage y proporciona características como la seguridad de nivel de archivo y
la semántica del sistema de archivos con un espacio de nombres jerárquico.

Form Recognizer , parte de Azure Applied AI Services , tiene funcionalidades de


análisis de documentos integradas para extraer texto impreso y manuscrito, tablas
y pares clave-valor. Form Recognizer tiene modelos precompilados para extraer
datos de facturas, documentos, recibos, tarjetas de identificación y tarjetas de
presentación. Form Recognizer también puede entrenar e implementar modelos
personalizados mediante un modelo de formulario de plantilla personalizada o un
modelo de documento neuronal personalizado.

Form Recognizer Studio proporciona una interfaz de usuario para explorar Form
Recognizer características y modelos, así como para compilar, etiquetar, entrenar e
implementar modelos personalizados.

Azure Cognitive Service para lenguaje consolida los servicios de procesamiento


del lenguaje natural de Azure. El conjunto ofrece opciones precompiladas y
personalizables. Para más información, consulte las característica disponibles de
Cognitive Service para lenguaje.

Language Studio proporciona una interfaz de usuario para explorar y analizar las
características de Azure Cognitive Service para lenguaje. Language Studio también
proporciona opciones para compilar, etiquetar, entrenar e implementar modelos
personalizados.

Azure Machine Learning es una plataforma abierta para administrar el desarrollo


y la implementación de modelos de aprendizaje automático a escala.
Estudio de Azure Machine Learning proporciona opciones de etiquetado de
datos para imágenes y texto.
Exporte los datos etiquetados como conjuntos de datos COCO o Azure
Machine Learning. Puede usar los conjuntos de datos para entrenar e
implementar modelos en cuadernos de Azure Machine Learning.
Implemente modelos en AKS como servicio web para la inferencia en tiempo
real a escala o como puntos de conexión administrados para la inferencia por
lotes y en tiempo real.

Alternativas
Puede agregar más flujos de trabajo a este escenario en función de casos de uso
específicos.

Si el documento está en formato de imagen o PDF, puede extraer los datos


mediante Azure Computer Vision, Form Recognizer Read API o bibliotecas de
código abierto.

Puede realizar el resumen de documentos y conversaciones mediante el modelo


precompilado de Azure Cognitive Service para lenguaje.

Use el código de preprocesamiento para realizar pasos de procesamiento de texto,


como limpiar, detener la eliminación de palabras, la lematización, el stemming y el
resumen de texto en los datos extraídos, según los requisitos de procesamiento de
documentos. Puede exponer el código como API de REST para la automatización.
Realice estos pasos manualmente o automatice mediante la integración con el
proceso de ingesta deLogic Apps o Azure Functions.
Detalles del escenario
El procesamiento de documentos es un área amplia. Puede ser difícil satisfacer todas las
necesidades de procesamiento de documentos con los modelos precompilados
disponibles en Azure Form Recognizer y Azure Cognitive Service para lenguaje. Es
posible que tenga que crear modelos personalizados para automatizar el procesamiento
de documentos para diferentes aplicaciones y dominios.

Entre los principales retos de la personalización de modelos se encuentran:

Etiquetado o etiquetado de datos de texto con entidades de par clave-valor


relevantes para clasificar texto para la extracción.
Implementar modelos de forma segura a escala para facilitar la integración con las
aplicaciones de consumo.

Posibles casos de uso


Los siguientes casos de uso pueden aprovechar los modelos personalizados para el
procesamiento de documentos:

Crear modelos personalizados de clasificación de texto y NER basados en marcos


de código abierto.
Extraer valores clave-valor personalizados de documentos para diversos verticales
del sector, como seguros y servicios sanitarios.
Etiquetar y extraer entidades dependientes del dominio específicas más allá de los
modelos NER precompilados, para dominios como seguridad o finanzas.
Crear tablas personalizadas a partir de documentos.
Extraer firmas.
Etiquetar y clasificar correos electrónicos u otros documentos en función del
contenido.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Para esta carga de trabajo de ejemplo, la implementación de cada pilar depende de la


configuración óptima y el uso de cada servicio de Azure componente.
Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Disponibilidad

Consulte los acuerdos de nivel de servicio de disponibilidad (SLA) para cada


servicio de Azure de componentes:
Azure Form Recognizer: Acuerdo de Nivel de Servicio de Azure Applied AI
Services .
Azure Cognitive Service para lenguaje: Acuerdo de Nivel de Servicio para Azure
Cognitive Services .
Azure Functions: Acuerdo de Nivel de Servicio de Azure Functions .
Azure Kubernetes Service: Acuerdo de Nivel de Servicio de Azure Kubernetes
Service (AKS) .
Azure Storage: Acuerdo de Nivel de Servicio para cuentas de
almacenamiento .

Para ver las opciones de configuración para diseñar aplicaciones de alta


disponibilidad con cuentas de almacenamiento de Azure, consulte Uso de la
redundancia geográfica para diseñar aplicaciones de alta disponibilidad.

Resistencia
Controle los modos de error de servicios individuales, como Azure Functions y
Azure Storage, para garantizar la resistencia de los servicios de proceso y los
almacenes de datos en este escenario. Para obtener más información, vea Lista de
comprobación de resistencia para servicios de Azure específicos.

Para el Form Recognizer, haga una copia de seguridad y recupere sus modelos de
Form Recognizer.

Para la clasificación de texto personalizada con Cognitive Services para lenguaje,


realice una copia de seguridad y recupere los modelos de clasificación de texto
personalizados.

Para NER personalizado en Cognitive Services para lenguaje, realice una copia de
seguridad y recupere los modelos NER personalizados.

Azure Machine Learning depende de servicios constituyentes, como Blob Storage,


servicios de proceso y AKS. Para proporcionar resistencia para Azure Machine
Learning, configure cada uno de estos servicios para que sea resistente. Para
obtener más información, vea Conmutación por error para la continuidad
empresarial y la recuperación ante desastres.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Implementar la protección de datos, la administración de la identidad y el acceso, y


las recomendaciones de seguridad de la red para Blob Storage, Cognitive Services
para Form Recognizer y Language Studio y Azure Machine Learning.

Azure Functions puede acceder a los recursos de una red virtual a través de la
integración de la red virtual.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

El costo total de implementar esta solución depende de los precios de los servicios que
elija.

Los principales costos de esta solución son:

El costo de proceso involucrado en el entrenamiento de Azure Machine Learning.


Elija el tipo de nodo, el tamaño del clúster y el número de nodos adecuados para
ayudar a optimizar los costos. Azure Machine Learning proporciona opciones para
establecer los nodos mínimos a cero y para establecer el tiempo de inactividad
antes de la reducción de escala. Para más información, consulte Administrar y
optimizar los costos de Azure Machine Learning.

Duración y actividades de orquestación de datos. Para Azure Data Factory, los


cargos por actividades de copia en el entorno de ejecución de integración de
Azure se basan en el número de unidades de integración de datos (DIU) utilizadas
y en la duración de la ejecución. Las ejecuciones de actividad de orquestación
agregadas también se cobran en función de su número.

Los planes de precios de Logic Apps dependen de los recursos que cree y use. Los
artículos siguientes pueden ayudarle a elegir el plan adecuado para casos de uso
específicos:
Costos que suelen generarse con Azure Logic Apps
Comparación de las opciones de un solo inquilino, multiinquilino y entorno del
servicio de integración para Azure Logic Apps
Modelos de medición de uso, facturación y precios para Azure Logic Apps

Para más información sobre los precios de componentes específicos, consulte los
siguientes recursos:

Precios de Azure Form Recognizer


Precios de Azure Functions
Precios de Logic Apps
Precios de Azure Data Factory
Precios de Azure Blob Storage
Precios de servicio de lenguaje
Precios de Azure Machine Learning

Use la calculadora de precios de Azure para agregar las opciones de componente


seleccionadas y calcular el costo general de la solución.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

Escalabilidad

Para escalar Azure Functions automáticamente o manualmente, elija el plan de


hospedaje adecuado.

Form Recognizer admite 15 solicitudes simultáneas por segundo de forma


predeterminada. Para solicitar una cuota mayor, cree una incidencia de soporte
técnico de Azure.

Para los modelos personalizados de Azure Machine Learning hospedados como


servicios web en AKS, el front-end azureml-fe se escala automáticamente según
sea necesario. Este componente también dirige las solicitudes de inferencia
entrantes a los servicios implementados.

Para las implementaciones como puntos de conexión administrados, admite el


autoescalado mediante la integración con la característica de escalabilidad
automática de Azure Monitor.
Los límites del servicio de API en NER personalizado y la clasificación de texto
personalizado para la inferencia son 20 solicitudes GET o POST por minuto.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribió el siguiente colaborador.

Autor principal:

Jyotsna Ravi | Sr. Customer Engineer

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Introducción: Form Recognizer Studio
Uso de los SDK o de la API de REST de Form Recognizer
Inicio rápido: Introducción a Language Studio
¿Qué es el reconocimiento óptico de caracteres (OCR)?
Configuración de Azure Functions con una red virtual

Recursos relacionados
Extracción de texto de objetos mediante Power Automate y AI Builder
Sugerencia de etiquetas de contenido con NLP mediante aprendizaje profundo.
Minería de conocimientos para la investigación de contenido
Automatización del procesamiento de documentos mediante Azure Form
Recognizer
Indexación de contenido y
metadatos de archivos mediante
Azure Cognitive Search
Azure AI Search Azure Blob Storage Azure Table Storage

En este artículo se muestra cómo crear un servicio de búsqueda que permita a los
usuarios buscar documentos basados en el contenido del documento, además de los
metadatos asociados a los archivos.

Puede implementar este servicio mediante varios indexadores en Azure Cognitive


Search.

En este artículo se usa una carga de trabajo de ejemplo para demostrar cómo crear un
único índice de búsqueda basado en archivos de Azure Blob Storage. Los metadatos del
archivo se almacenan en Azure Table Storage.

Architecture
Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de datos
1. Los archivos se almacenan en Blob Storage, posiblemente junto con una cantidad
limitada de metadatos (por ejemplo, el autor del documento).
2. Los metadatos adicionales se almacenan en Table Storage, lo que puede almacenar
significativamente más información para cada documento.
3. Un indexador lee el contenido de cada archivo, junto con los metadatos de blob, y
almacena los datos en el índice de búsqueda.
4. Otro indexador lee los metadatos adicionales de la tabla y los almacena en el
mismo índice de búsqueda.
5. Se envía una consulta de búsqueda al servicio de búsqueda. La consulta devuelve
documentos coincidentes, en función del contenido del documento y de los
metadatos del documento.

Componentes
Blob Storage proporciona almacenamiento en la nube rentable para los datos de
archivos, incluidos los datos en formatos como PDF, HTML y CSV, y en archivos de
Microsoft Office.
Table Storage proporciona almacenamiento para datos estructurados no
relacionales. En este escenario, se usa para almacenar los metadatos de cada
documento.
Azure Cognitive Search es un servicio de búsqueda totalmente administrado que
proporciona infraestructura, API y herramientas para crear una experiencia de
búsqueda enriquecida.

Alternativas
En este escenario se usan indexadores en Azure Cognitive Search para detectar
automáticamente contenido nuevo en orígenes de datos admitidos, como blob y table
storage y, a continuación, agregarlo al índice de búsqueda. Como alternativa, puede
usar las API proporcionadas por Azure Cognitive Search para insertar datos en el índice
de búsqueda. Sin embargo, si lo hace, debe escribir código para insertar los datos en el
índice de búsqueda y también para analizar y extraer texto de los documentos binarios
que desea buscar. El indexador de Blob Storage admite muchos formatos de
documento, lo que simplifica significativamente el proceso de extracción e indexación
de texto.

Además, si usa indexadores, opcionalmente puede enriquecer los datos como parte de
una canalización de indexación. Por ejemplo, puede usar Azure Cognitive Services para
realizar el reconocimiento óptico de caracteres (OCR) o el análisis visual de las imágenes
en documentos, detectar el idioma de los documentos o traducir documentos. También
puede definir sus propias aptitudes personalizadas para enriquecer los datos de
maneras relevantes para su escenario empresarial.

Esta arquitectura usa Blob y Table Storage porque son rentables y eficientes. Este diseño
también habilita el almacenamiento combinado de los documentos y metadatos en una
sola cuenta de almacenamiento. Entre los orígenes de datos admitidos alternativos para
los propios documentos se incluyen Azure Data Lake Storage y Azure Files. Los
metadatos del documento se pueden almacenar en cualquier otro origen de datos
compatible que contenga datos estructurados, como Azure SQL Database y Azure
Cosmos DB.

Detalles del escenario

Búsqueda de contenido de archivo


Esta solución permite a los usuarios buscar documentos basados en contenido y
metadatos de archivo adicionales que se almacenan por separado para cada
documento. Además de buscar el contenido de texto de un documento, es posible que
un usuario quiera buscar el autor del documento, el tipo de documento (como papel o
informe) o su impacto empresarial (alto, medio o bajo).

Azure Cognitive Search es un servicio de búsqueda totalmente administrado que puede


crear índices de búsqueda que contengan la información que desea permitir a los
usuarios buscar.

Dado que los archivos que se buscan en este escenario son documentos binarios, puede
almacenarlos en Blob Storage. Si lo hace, puede usar el indexador de Blob Storage
integrado en Azure Cognitive Search para extraer automáticamente texto de los
archivos y agregar su contenido al índice de búsqueda.

Búsqueda de metadatos de archivo


Si desea incluir información adicional sobre los archivos, puede asociar directamente
metadatos a los blobs, sin usar un almacén independiente. El indexador de búsqueda
integrado de Blob Storage puede incluso leer estos metadatos y colocarlos en el índice
de búsqueda. Esto permite a los usuarios buscar metadatos junto con el contenido del
archivo. Sin embargo, la cantidad de metadatos se limita a 8 KB por blob, por lo que la
cantidad de información que puede colocar en cada blob es bastante pequeña. Puede
optar por almacenar solo la información más crítica directamente en los blobs. En este
escenario, solo el autor del documento se almacena en el blob.

Para superar esta limitación de almacenamiento, puede colocar metadatos adicionales


en otro origen de datos que tenga un indexador compatible, como Table Storage. Puede
agregar el tipo de documento, el impacto empresarial y otros valores de metadatos
como columnas independientes en la tabla. Si configura el indexador integrado de Table
Storage para que tenga como destino el mismo índice de búsqueda que el indexador de
blobs, los metadatos de Blob y Table Storage se combinan para cada documento del
índice de búsqueda.
Uso de varios orígenes de datos para un único índice de
búsqueda
Para asegurarse de que ambos indizadores apuntan al mismo documento en el índice
de búsqueda, la clave de documento del índice de búsqueda se establece en un
identificador único del archivo. A continuación, este identificador único se usa para
hacer referencia al archivo en ambos orígenes de datos. El indexador de blobs usa
metadata_storage_path como clave de documento, de forma predeterminada. La

propiedad metadata_storage_path almacena la dirección URL completa del archivo en


Blob Storage, por ejemplo,
https://contoso.blob.core.windows.net/files/paper/Resilience in Azure.pdf . El

indexador realiza la codificación Base64 en el valor para asegurarse de que no hay


caracteres no válidos en la clave del documento. El resultado es una clave de
documento única, como aHR0cHM6...mUucGRm0 .

Si agrega el metadata_storage_path como una columna en Table Storage, sabe


exactamente a qué blob pertenecen los metadatos de las otras columnas, por lo que
puede usar cualquier valor PartitionKey y RowKey en la tabla. Por ejemplo, podría usar
el nombre del contenedor de blobs como PartitionKey y la dirección URL completa
codificada en Base64 del blob como RowKey , lo que garantiza que tampoco hay
caracteres no válidos en estas claves.

A continuación, puede usar una asignación de campos en el indexador de tabla para


asignar la metadata_storage_path columna (u otra columna) de Table Storage al
metadata_storage_path campo de clave del documento en el índice de búsqueda. Si

aplica la función base64Encode en la asignación de campos, termina con la misma clave


de documento ( aHR0cHM6...mUucGRm0 en el ejemplo anterior) y los metadatos de Table
Storage se agregan al mismo documento que se extrajo de Blob Storage.

7 Nota

La documentación del indexador de tablas indica que no debe definir una


asignación de campos a un campo de cadena único alternativo en la tabla. Esto se
debe a que el indexador concatena PartitionKey y RowKey como clave de
documento de forma predeterminada. Dado que ya se basa en la clave de
documento tal como la configura el indexador de blobs (que es la dirección URL
completa codificada en Base64 del blob), la creación de una asignación de campos
para asegurarse de que ambos indexadores hacen referencia al mismo documento
en el índice de búsqueda es adecuada y se admite para este escenario.
Como alternativa, puede asignar RowKey (que se establece en la dirección URL completa
codificada en Base64 del blob) directamente a la clave de documento
metadata_storage_path , sin almacenarla por separado y codificarla en Base64 como

parte de la asignación de campos. Sin embargo, mantener la dirección URL sin codificar
en una columna independiente aclara a qué blob hace referencia y le permite elegir
cualquier partición y claves de fila sin afectar al indexador de búsqueda.

Posibles casos de uso


Este escenario se aplica a las aplicaciones que requieren la capacidad de buscar
documentos en función de su contenido y metadatos adicionales.

Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework,
que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de
una carga de trabajo. Para más información, consulte Marco de buena arquitectura de
Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que tu aplicación puede cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Azure Cognitive Search proporciona un Acuerdo de Nivel de Servicio elevado para las
lecturas (consultas) si tiene al menos dos réplicas. Proporciona un Acuerdo de Nivel de
Servicio elevado para las actualizaciones (actualizando los índices de búsqueda) si tiene
al menos tres réplicas. Por lo tanto, debe aprovisionar al menos dos réplicas si desea
que los clientes puedan realizar búsquedas de forma confiable, y tres si los cambios en
el índice también se consideran operaciones de alta disponibilidad.

Azure Storage siempre almacena varias copias de los datos para ayudar a protegerlos
frente a eventos planeados y no planeados. Azure Storage proporciona opciones de
redundancia adicionales para replicar datos entre regiones. Estas medidas de seguridad
se aplican a los datos de Blob y Table Storage.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.
Azure Cognitive Search proporciona controles de seguridad sólidos que le ayudan a
implementar la seguridad de red, la autenticación y la autorización, la residencia y la
protección de datos, y los controles administrativos que le ayudan a mantener la
seguridad, la privacidad y el cumplimiento.

Siempre que sea posible, use la autenticación de Microsoft Entra para proporcionar
acceso al propio servicio de búsqueda y conecte el servicio de búsqueda a otros
recursos de Azure (como Blob y Table Storage en este escenario) mediante una
identidad administrada.

Puede conectarse desde el servicio de búsqueda a la cuenta de almacenamiento


mediante un punto de conexión privado. Cuando se usa un punto de conexión privado,
los indexadores pueden usar una conexión privada sin necesidad de que el
almacenamiento de blobs y tablas sea accesible públicamente.

Optimización de costos
La optimización de costos trata de reducir los gastos innecesarios y mejorar las
eficiencias operativas. Para más información, vea Información general del pilar de
optimización de costos.

Para obtener información sobre los costos de ejecutar este escenario, consulte esta
estimación preconfigurada en la calculadora de precios de Azure . Todos los servicios
descritos aquí se configuran en esta estimación. La estimación es para una carga de
trabajo que tiene un tamaño total de documento de 20 GB en Blob Storage y 1 GB de
metadatos en Table Storage. Se usan dos unidades de búsqueda para satisfacer el
Acuerdo de Nivel de Servicio con fines de lectura, como se describe en la sección
confiabilidad de este artículo. Para ver cómo cambiarían los precios en su caso concreto,
cambie las variables pertinentes para que coincidan con el uso esperado.

Si revisa la estimación, puede ver que el costo del almacenamiento de blobs y tablas es
relativamente bajo. La mayoría del costo se incurre en Azure Cognitive Search, ya que
realiza la indexación real y el proceso para ejecutar consultas de búsqueda.

Implementación de este escenario


Para implementar esta carga de trabajo de ejemplo, consulte Indexación de contenido y
metadatos de archivos en Azure Cognitive Search . Puede usar esta muestra para:

Cree los servicios de Azure necesarios.


Cargar algunos documentos de ejemplo en Blob Storage.
Rellenar el valor de metadatos del autor en el blob.
Almacenar los valores de metadatos de impacto empresarial y tipo de documento
en Table Storage.
Crear los indexadores que mantienen el índice de búsqueda.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Jelle Druyts | Ingeniero principal de Experiencia del cliente

Otro colaborador:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Introducción a Azure Cognitive Search
Aumentar la relevancia mediante la búsqueda semántica en Azure Cognitive
Search
Filtros de seguridad para restringir los resultados en Azure Cognitive Search
Tutorial: Indexación de varios orígenes de datos mediante el SDK de .NET

Recursos relacionados
Elección de un almacén de datos de búsqueda en Azure
Motor de búsqueda inteligente de productos para comercio electrónico
Analice contenido de vídeo con
Computer Vision y Azure Machine
Learning
Azure Machine Learning Servicios de Azure AI Azure Logic Apps Azure Synapse Analytics

Azure Data Lake Storage

En este artículo se describe una arquitectura que puede usar para reemplazar el análisis
manual de imágenes de vídeo por un proceso de aprendizaje automático automatizado
y, con frecuencia, más preciso.

Los logotipos de FFmpeg y Jupyter Notebook son marcas comerciales de sus respectivas
empresas. El uso de estas marcas no implica ninguna aprobación.

Architecture

Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de trabajo
1. Una colección de imágenes de vídeo, en formato MP4, se carga en Azure Blob
Storage. Idealmente, los vídeos entran en un contenedor "sin procesar".
2. Una canalización configurada previamente en Azure Machine Learning reconoce
que los archivos de vídeo se cargan en el contenedor e inicia un clúster de
inferencia para empezar a separar las imágenes de vídeo en fotogramas.
3. FFmpeg, una herramienta de código abierto, desglosa el vídeo y extrae
fotogramas. Puede configurar cuántos fotogramas por segundo se extraen, la
calidad de la extracción y el formato del archivo de imagen. El formato puede ser
JPG o PNG.
4. El clúster de inferencia envía las imágenes a Azure Data Lake Storage.
5. Una aplicación lógica configurada previamente que supervisa Data Lake Storage
detecta que se cargan nuevas imágenes. Inicia un flujo de trabajo.
6. La aplicación lógica llama a un modelo de Custom Vision previamente entrenado
para identificar objetos, características o cualidades en las imágenes. Como
alternativa o de forma adicional, llama a un modelo de Computer Vision
(reconocimiento óptico de caracteres) para identificar información textual en las
imágenes.
7. Los resultados se reciben en formato JSON. La aplicación lógica analiza los
resultados y crea pares clave-valor. Puede almacenar los resultados en grupos de
SQL dedicados de Azure aprovisionados por Azure Synapse Analytics.
8. Power BI proporciona visualización de datos.

Componentes
Azure Blob Storage proporciona almacenamiento de objetos para cargas de
trabajo nativas de nube y almacenes de aprendizaje automático. En esta
arquitectura, almacena los archivos de vídeo cargados.
Azure Machine Learning es un servicio de aprendizaje automático de nivel
empresarial para el ciclo de vida de aprendizaje automático de un extremo a otro.
Azure Data Lake Storage proporciona almacenamiento en la nube escalable de
forma masiva, de seguridad mejorada y rentable para cargas de trabajo de análisis
de alto rendimiento.
Computer Vision forma parte de Azure Cognitive Services . Se usa para
recuperar información sobre cada imagen.
Custom Vision le permite personalizar e insertar análisis de imágenes de última
generación de Vision para dominios específicos.
Azure Logic Apps automatiza los flujos de trabajo mediante la conexión de
aplicaciones y datos entre entornos. Proporciona una manera de acceder a los
datos y procesarlos en tiempo real.
Azure Synapse Analytics es un servicio de análisis ilimitado que combina la
integración de datos, el almacenamiento de datos empresariales y el análisis de
macrodatos.
Un grupo de SQL dedicado (anteriormente SQL DW) representa una colección de
recursos de análisis que se aprovisionan al usar Azure Synapse SQL.
Power BI es una colección de servicios de software, aplicaciones y conectores
que funcionan conjuntamente para proporcionar visualizaciones de los datos.

Alternativas
Azure Video Indexer es un servicio de análisis de vídeo que usa inteligencia
artificial para extraer información procesable de vídeos almacenados. Puede usarlo
sin tener experiencia en el aprendizaje automático.
Azure Data Factory es un servicio de integración de datos sin servidor
totalmente administrado que le ayuda a construir procesos ETL y ELT.
Azure Functions es una plataforma como servicio (PaaS) sin servidor que ejecuta
un código de una sola tarea, sin necesidad de una nueva infraestructura.
Azure Cosmos DB es una base de datos NoSQL totalmente administrada para el
desarrollo de aplicaciones modernas.

Detalles del escenario


Muchos sectores registran imágenes de vídeo para detectar la presencia o ausencia de
un objeto o entidad concretos o para clasificar objetos o entidades. Normalmente, la
supervisión y los análisis de vídeo se realizan de forma manual. Estos procesos suelen
ser monótonos y propensos a errores, especialmente para tareas difíciles para el ojo
humano. Puede automatizar estos procesos mediante inteligencia artificial y aprendizaje
automático.

Una grabación de vídeo se puede separar en fotogramas individuales para que varias
tecnologías puedan analizar las imágenes. Una de estas tecnologías es Computer Vision:
la capacidad de un equipo de identificar objetos y entidades en una imagen.

Con Computer Vision, la supervisión de imágenes de vídeo se automatiza, estandariza y


potencialmente es más precisa. Se puede entrenar un modelo de Computer Vision y,
según el caso de uso, con frecuencia puede obtener resultados que son al menos tan
buenos como los de la persona que entrenó el modelo. Mediante el uso de operaciones
de Machine Learning (MLOps) para mejorar el modelo continuamente, puede esperar
mejores resultados con el tiempo y reaccionar a los cambios en los datos de vídeo a lo
largo del tiempo.

Posibles casos de uso


Este escenario es relevante para cualquier empresa que analice vídeos. Estos son
algunos casos de uso de ejemplo:

Agricultura. Supervise y analice los cultivos y las condiciones del suelo a lo largo
del tiempo. Mediante el uso de drones o vistas de acceso desordenado, los
agricultores pueden grabar imágenes de vídeo para su análisis.

Ciencias ambientales. Analice las especies acuáticas para comprender dónde se


encuentran y cómo evolucionan. Al agregar cámaras submarinas a barcos, los
investigadores ambientales pueden navegar por la costa para grabar imágenes de
vídeo. Pueden analizar las imágenes de vídeo para comprender las migraciones de
especies y cómo cambian las poblaciones de especies a lo largo del tiempo.

Control de tráfico. Clasifique los vehículos en categorías (todoterreno, coche,


camión, motocicleta) y use la información para planear el control del tráfico. Las
imágenes de vídeo pueden ser proporcionadas por cámaras de videovigilancia en
lugares públicos. La mayoría de las cámaras de videovigilancia registran la fecha y
la hora, detalles que se pueden recuperar fácilmente a través del reconocimiento
óptico de caracteres (OCR).

Control de calidad. Supervise y analice el control de calidad en una planta de


fabricación. Al instalar cámaras en la línea de producción, puede entrenar un
modelo de Computer Vision para detectar anomalías.

Consideraciones
Estas consideraciones constituyen los pilares del Marco de buena arquitectura de Azure,
un conjunto de principios rectores que puede usar para mejorar la calidad de una carga
de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft
Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Una carga de trabajo de confianza es aquella que es resistente y a la vez está disponible.
La resistencia es la capacidad de un sistema de recuperarse de los errores y seguir
funcionando. El objetivo de la resistencia es devolver la aplicación a un estado
plenamente operativo después de un error. La disponibilidad mide si los usuarios
pueden acceder a la carga de trabajo cuando lo necesiten.
Para conocer las garantías de disponibilidad de los servicios de Azure de la solución,
observe estos recursos:

Acuerdo de Nivel de Servicio para cuentas de almacenamiento


Acuerdo de Nivel de Servicio para Azure Machine Learning
Acuerdo de Nivel de Servicio para Azure Cognitive Services
Acuerdo de Nivel de Servicio para Logic Apps
Acuerdo de Nivel de Servicio para Azure Synapse Analytics
Acuerdo de Nivel de Servicio para Power BI

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Considere la posibilidad de utilizar los siguientes recursos:

Administración de identidades
Protección de la infraestructura
Seguridad de las aplicaciones
Cifrado y soberanía de datos
Recursos de seguridad

Optimización de costos
La optimización de costos trata de reducir los gastos innecesarios y mejorar las
eficiencias operativas. Para más información, vea Información general del pilar de
optimización de costos.

Estas son algunas de las directrices para optimizar costos:

Use la estrategia de pago por uso para la arquitectura y escale horizontalmente


según sea necesario, en lugar de invertir en recursos a gran escala desde el
principio.
Recuerde que debe tener en cuenta los costos de oportunidad en la arquitectura y
el equilibrio entre la ventaja de realizar el primer movimiento y realizar un
seguimiento rápido. Use la calculadora de precios para calcular tanto el costo
inicial como los costos operativos.
Fije directivas, presupuestos y controles que establezcan los límites de costo de la
solución.

Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una
aplicación y la mantienen en ejecución en producción. Para más información, consulte
Introducción al pilar de excelencia operativa.

Las implementaciones deben ser de confianza y predecibles. Estas son algunas


directrices:

Automatice las implementaciones para reducir la posibilidad de error humano.


Implemente un proceso de implementación rápido y rutinario para evitar ralentizar
la publicación de nuevas características y correcciones de errores.
Revierta o ponga al día de forma rápida si una actualización provoca problemas.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

El uso adecuado del escalado y la implementación de ofertas de PaaS que tienen


escalado integrado son las principales formas de lograr la eficiencia del rendimiento.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Oscar Shimabukuro Kiyan | Arquitecto sénior de soluciones en la nube: Datos &


Inteligencia artificial

Otros colaboradores:

Mick Alberts | Escritor técnico


Brandon Cowen | Arquitecto sénior de soluciones en la nube: Datos &
Inteligencia artificial
Arash Mosharraf | Arquitecto sénior de soluciones en la nube: Datos &
Inteligencia artificial
Priyanshi Singh | Arquitecta sénior de soluciones en la nube: Datos &
Inteligencia artificial
Julian Soh | Director Especialista: Datos & Inteligencia artificial
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Introducción a Almacenamiento de Azure
¿Qué es Azure Machine Learning?
¿Qué es Azure Cognitive Services?
¿Qué es Azure Logic Apps?
¿Qué es Azure Synapse Analytics?
¿Qué son los análisis integrados de Power BI?
Acelerador de procesos empresariales

Recursos relacionados
Clasificación de imágenes con redes neuronales convolucionales (CNN)
Clasificación de imágenes en Azure
Marco de MLOps para escalar el ciclo de vida de aprendizaje automático
Clasificación de imágenes en
Azure
Azure Blob Storage Azure Computer Vision Azure Cosmos DB Azure Event Grid Azure Functions

Mediante los servicios de Azure, como Computer Vision API y Azure Functions, las
empresas pueden eliminar la necesidad de administrar servidores individuales, al tiempo
que reducen los costos y utilizan los conocimientos que Microsoft ya ha desarrollado
con el procesamiento de imágenes con Cognitive Services. En concreto, este es un
escenario de ejemplo de procesamiento de imágenes. Si tiene distintas necesidades de
inteligencia artificial, tenga en cuenta el conjunto completo de Cognitive Services.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
Este escenario trata los componentes de back-end de una aplicación web o móvil. Los
datos fluyen por el escenario de la siguiente manera:

1. Agregar nuevos archivos (cargas de imágenes) en Blob Storage desencadena un


evento en Azure Event Grid. El proceso de carga se puede orquestar a través de la
web o una aplicación móvil. Como alternativa, las imágenes se pueden cargar por
separado en Azure Blob Storage.
2. Event Grid envía una notificación que desencadena el Azure Functions.
3. Azure Functions llama a la API de Azure Computer Vision para analizar la imagen
recién cargada. Computer Vision accede a la imagen a través de la dirección URL
del blob que analiza Azure Functions.
4. Azure Functions conserva la respuesta de la API de Computer Vision en Azure
Cosmos DB. Esta respuesta incluye los resultados del análisis, junto con los
metadatos de la imagen.
5. Los resultados se pueden consumir y reflejar en el front-end web o móvil. Tenga en
cuenta que este enfoque recupera los resultados de la clasificación, pero no la
imagen cargada.

Componentes
Computer Vision API es parte del conjunto de productos Cognitive Services y se
usa para recuperar información acerca de cada imagen.
Azure Functions proporciona la API de back-end para la aplicación web. Esta
plataforma también proporciona procesamiento de eventos para imágenes
cargadas.
Azure Event Grid desencadena un evento cuando se carga una nueva imagen en
Blob Storage. A continuación, la imagen se procesa con Azure Functions.
Azure Blob Storage almacena todos los archivos de imagen que se cargan en la
aplicación web, así como también los archivos estáticos que consume la aplicación
web.
Azure Cosmos DB almacena los metadatos de cada imagen que se haya
cargado, incluidos los resultados del procesamiento de la API de Computer Vision.

Alternativas
Custom Vision Service . Computer Vision API devuelve un conjunto de categorías
basadas en la taxonomía. Si necesita procesar la información que Computer Vision
API no devuelve, considere la posibilidad de usar Custom Vision Service, que
permite crear clasificadores de imágenes personalizados.
Cognitive Search (anteriormente Azure Search). Si su caso de usuario implica
consultar los metadatos para buscar las imágenes que cumplen determinados
criterios, considere la posibilidad de usar Cognitive Search. Actualmente en versión
preliminar, Cognitive Search se integra sin problemas en este flujo de trabajo.
Logic Apps . Si no necesita reaccionar en tiempo real a los archivos agregados a
un blob, puede considerar el uso de Logic Apps. Una aplicación lógica que puede
comprobar si se ha agregado un archivo podría iniciarse con el desencadenador
de periodicidad o el desencadenador de ventana deslizante.
Detalles del escenario
Este escenario es pertinente para las empresas que necesitan procesar imágenes.

Algunas aplicaciones posibles son clasificar las imágenes de un sitio web de moda,
analizar texto e imágenes para reclamaciones de seguros o reconocer los datos de
telemetría de capturas de pantalla de juegos. Tradicionalmente, las empresas
necesitaban convertirse en expertos en modelos de aprendizaje automático, entrenar los
modelos y, por último, ejecutar las imágenes en su proceso personalizado para extraer
los datos de las imágenes.

Posibles casos de uso


Esta solución es ideal para los sectores de venta al por menor, juegos, finanzas y
seguros. Otros casos de uso pertinentes incluyen:

Clasificar las imágenes en un sitio web de moda. Los vendedores pueden usar la
clasificación de imágenes mientras cargan imágenes de productos en la plataforma
para la venta. Pueden automatizar el consiguiente etiquetado manual implicado.
Los clientes también pueden buscar en la impresión visual de los productos.

Clasificar los datos de telemetría de las capturas de pantalla de juegos. La


clasificación de videojuegos de capturas de pantalla está evolucionando en un
problema relevante en las redes sociales, junto con Computer Vision. Por ejemplo,
cuando los streamers de Twitch juegan diferentes juegos en sucesión, pueden
omitir la actualización manual de su información de transmisión. Si no se actualiza
la información de la secuencia, podría producirse una clasificación incorrecta de
secuencias en las búsquedas de usuarios y podría provocar la pérdida de la posible
audiencia tanto para los creadores de contenido como para las plataformas de
streaming. Al introducir juegos noveles, una ruta de modelo personalizada podría
resultar útil para introducir la capacidad de detectar imágenes nuevas de esos
juegos.

Clasificar imágenes para las reclamaciones de seguros. La clasificación de


imágenes puede ayudar a reducir el tiempo y el costo del procesamiento y la
suscripción de notificaciones. Podría ayudar a analizar los daños ante desastres
naturales, los daños del vehículo e identificar las propiedades residenciales y
comerciales.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Al implementar esta solución, tenga en cuenta estos puntos:

Escalabilidad
La mayoría de los componentes usados en este escenario de ejemplo son servicios
administrados que escalan automáticamente. Hay un par de excepciones destacables:
Azure Functions tiene un límite máximo de 200 instancias. Si necesita escalar más allá de
este límite, considere la posibilidad de usar varias regiones o planes de aplicación.

Solo puede aprovisionar Azure Cosmos DB para la escalabilidad automática en Azure


Cosmos DB for NoSQL. Si tiene previsto usar otras API, consulte la guía sobre cómo
calcular los requisitos en Unidades de solicitud. Para aprovechar al máximo el escalado
en Azure Cosmos DB, obtenga información sobre cómo funcionan las claves de
partición en Azure Cosmos DB.

Las bases de datos NoSQL suelen renunciar a la coherencia (en el sentido del teorema
CAP) frente a la disponibilidad, escalabilidad y creación de particiones. En este escenario
de ejemplo, se usa un modelo de datos de pares clave-valor y la coherencia de la
transacción rara vez es necesaria porque, por definición, la mayoría de las operaciones
son atómicas. Para más información sobre cómo elegir el almacén de datos correcto,
consulte el Centro de arquitectura de Azure. Si su implementación requiere una
coherencia alta, puede elegir el nivel de coherencia en Azure Cosmos DB.

Para obtener instrucciones generales sobre cómo diseñar soluciones escalables, consulte
la lista de comprobación de eficiencia del rendimiento en el Centro de arquitectura de
Azure.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Managed Service Identities para recursos de Azure (MSI) se utiliza para proporcionar a
otros recursos internos acceso a su cuenta y, a continuación, se asigna a Azure
Functions. Permita el acceso solo a los recursos necesarios en esas identidades para
evitar exponer nada que no sea necesario a las funciones (y, potencialmente, a sus
clientes).
Para instrucciones generales de diseño de soluciones seguras, consulte Documentación
de Azure Security Center.

Resistencia
En este escenario, todos los componentes son administrados, por lo que, en un nivel
regional, son resistentes de forma automática.

Para obtener instrucciones generales sobre el diseño de soluciones resistentes, consulte


Diseño de aplicaciones resistentes de Azure.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Para explorar el costo de ejecutar este escenario, todos los servicios están
preconfigurados en la calculadora de costos. Para ver cómo cambiarían los precios en su
caso concreto, cambie las variables pertinentes para que coincidan con el tráfico
esperado.

Hemos proporcionado tres ejemplos de perfiles de costo según la cantidad de tráfico


(hemos dado por hecho que todas las imágenes tienen un tamaño de 100 KB):

Pequeño : se corresponde con un procesamiento de menos de 5000 imágenes al


mes.
Mediano : se corresponde con un procesamiento de 500 000 imágenes al mes.
Grande : se corresponde con un procesamiento de 50 millones de imágenes al
mes.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

David Stanford | Administrador de programas principal


Ashish Chauhan | Arquitecto de soluciones sénior

Pasos siguientes
Documentación del producto

¿Qué es Computer Vision?


Enriquecimiento con inteligencia artificial en Azure Cognitive Search
Introducción a Azure Functions
¿Qué es Azure Event Grid?
Introducción a Azure Blob Storage
Bienvenido a Azure Cosmos DB

Para conocer una ruta de aprendizaje guiado, consulte:

Compilación de una aplicación web sin servidor en Azure


Clasificación de imágenes con el servicio Custom Vision
Uso de IA para reconocer objetos en imágenes con el servicio Custom Vision
Clasificación de especies de pájaros en peligro con Custom Vision
Clasificar imágenes con Microsoft Custom Vision Service
Detección de objetos en imágenes con el servicio Custom Vision

Antes de implementar este escenario de ejemplo en un entorno de producción, consulte


los procedimientos recomendados para optimizar el rendimiento y confiabilidad de
Azure Functions.

Recursos relacionados
Enriquecimiento mediante inteligencia artificial con procesamiento de imágenes y
lenguaje natural en Azure Cognitive Search
Uso de una canalización de
transcripción de voz en texto para
analizar conversaciones grabadas
Voz de Azure AI Lenguaje de Azure AI Servicios de Azure AI Azure Synapse Analytics Azure Logic Apps

El reconocimiento de voz y el análisis de las llamadas de clientes grabadas pueden


proporcionar a la empresa información valiosa sobre las tendencias actuales, las
deficiencias de los productos y los éxitos.

En la solución de ejemplo descrita en este artículo, se describe una canalización


repetible para transcribir y analizar datos de conversaciones.

Architecture
La arquitectura consta de dos canalizaciones: una canalización de transcripción para
convertir el audio en texto y una canalización de enriquecimiento y visualización.

Canalización de transcripción

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

1. Los archivos de audio se cargan en una cuenta de Azure Storage mediante


cualquier método admitido. Puede usar una herramienta basada en la interfaz de
usuario como el Explorador de Azure Storage o usar un SDK o una API de
almacenamiento.
2. La carga en Azure Storage desencadena una aplicación lógica de Azure. La
aplicación lógica accede a las credenciales necesarias en Azure Key Vault y realiza
una solicitud a la API de transcripción por lotes del servicio de Voz.
3. La aplicación lógica envía la llamada de archivos de audio al servicio de Voz,
incluida la configuración opcional para la creación de diarios del hablante.
4. El servicio voz completa la transcripción por lotes y carga los resultados de la
transcripción en la cuenta de almacenamiento.

Canalización de enriquecimiento y visualización

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

5. Se ejecuta una canalización de Azure Synapse Analytics para recuperar y procesar


el texto del audio transcrito.
6. La canalización envía el texto procesado mediante una llamada API al servicio de
lenguaje. El servicio realiza varios enriquecimientos de procesamiento de lenguaje
natural (NLP), como la minería de sentimientos y opiniones, la creación de
resúmenes y el reconocimiento de entidades con nombre, tanto personalizado
como creado previamente.
7. Los datos procesados se almacenan en un grupo de SQL de Azure Synapse
Analytics, donde se pueden servir a herramientas de visualización como Power BI.
Componentes
Azure Blob Storage. Almacenamiento de objetos seguro y escalable de forma
masiva para cargas de trabajo nativas de nube, archivos, lagos de datos,
informática de alto rendimiento y aprendizaje automático. En esta solución,
almacena los archivos de audio y los resultados de la transcripción, y sirve como
lago de datos para el análisis del flujo descendente.
Azure Logic Apps. Una plataforma de integración como servicio (iPaaS) que se
basa en un entorno de ejecución en contenedores. En esta solución, integra el
almacenamiento y los servicios inteligencia artificial de voz.
Servicio de Voz de Azure Cognitive Services. Una API basada en inteligencia
artificial que proporciona funcionalidades de voz, como la conversión de voz en
texto, de texto a voz, la traducción de voz y el reconocimiento del hablante. En
esta solución, se utiliza su funcionalidad de transcripción por lotes.
Azure Cognitive Service para lenguaje. Un servicio administrado basado en
inteligencia artificial que proporciona funcionalidades de lenguaje natural, como el
análisis de sentimiento, la extracción de entidades y la respuesta a preguntas
automatizada.
Azure Synapse Analytics. Un conjunto de servicios que proporcionan integración
de datos, almacenamiento de datos empresariales y análisis de macrodatos. En
esta solución, transforma y enriquece los datos de la transcripción, y sirve los datos
a las herramientas de visualización del flujo descendente.
Power BI. Una herramienta de modelado de datos y análisis visual. En esta
solución, presenta información de audio transcrita a los usuarios y a los
responsables de la toma de decisiones.

Alternativas
Estos son algunos enfoques alternativos para esta arquitectura de solución:

Considere la posibilidad de configurar la cuenta de Blob Storage para usar un


espacio de nombres jerárquico. Esta configuración proporciona controles de
seguridad basados en ACL y puede mejorar el rendimiento de algunas cargas de
trabajo de macrodatos.
Es posible que pueda usar Azure Functions como herramienta de integración con
enfoque de código en lugar de Logic Apps o canalizaciones de Azure Synapse,
según el tamaño y la escala de la carga de trabajo.

Detalles del escenario


Los centros de atención al cliente son una parte integral del éxito de muchas empresas.
Esta solución usa la API de Voz de Azure Cognitive Services para la transcripción de
audio y la creación de diarios de las llamadas de clientes grabadas. Se usa Azure
Synapse Analytics para procesar y realizar tareas de NLP, como el análisis de sentimiento
y el reconocimiento de entidades con nombre personalizado mediante llamadas API a
Azure Cognitive Service para lenguaje.

Puede usar los servicios y la canalización que se describen aquí para procesar el texto
transcrito para reconocer y quitar la información confidencial, realizar análisis de
sentimiento y mucho más. Puede escalar los servicios y la canalización para dar cabida a
cualquier volumen de datos grabados.

Posibles casos de uso


Esta solución puede proporcionar valor a las organizaciones de muchos sectores, como
las telecomunicaciones, los servicios financieros y el gobierno. Se aplica a cualquier
organización que grabe conversaciones. En particular, los centros de llamadas internos o
de atención al cliente pueden beneficiarse de la información derivada de esta solución.

Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework,
que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de
una carga de trabajo. Para más información, consulte Marco de buena arquitectura de
Microsoft Azure.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

La solicitud a la API de Voz puede incluir un identificador URI de firma de acceso


compartido (SAS) para un contenedor de destino en Azure Storage. Un
identificador URI de SAS permite al servicio de Voz generar directamente los
archivos de transcripción en la ubicación del contenedor. Si la organización no
permite el uso de identificadores URI de SAS para el almacenamiento, debe
implementar una función para sondear periódicamente la API de Voz en busca de
los recursos completados.
Las credenciales, como las claves de API o de cuenta, se deben almacenar en Azure
Key Vault como secretos. Configure Logic Apps y las canalizaciones de Azure
Synapse para acceder al almacén de claves mediante identidades administradas
para evitar el almacenamiento de secretos en la configuración o el código de la
aplicación.
Los archivos de audio almacenados en el blob pueden contener datos
confidenciales de los clientes. Si hay varios clientes que usan esta solución, debe
restringir el acceso a estos archivos. Use el espacio de nombres jerárquico en la
cuenta de almacenamiento y aplique permisos de nivel de carpeta y de archivo
para limitar el acceso solo a la instancia de Microsoft Entra necesaria.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Todos los servicios de Azure descritos en esta arquitectura proporcionan una opción
para la facturación de pago por uso, por lo que los costos de la solución se escalan
linealmente.

Azure Synapse proporciona una opción para los grupos de SQL sin servidor, por lo que
el recurso de proceso de la carga de trabajo de almacenamiento de datos se puede
activar a petición. Si no usa Azure Synapse para atender otros casos de uso del flujo
descendente, considere la posibilidad de usar las opciones sin servidor para reducir los
costos.

Consulte Introducción al pilar de optimización de costos para conocer más estrategias


de optimización de costos.

Para conocer los precios de los servicios sugeridos aquí, consulte esta estimación de la
Calculadora de precios de Azure .

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

La API de Voz por lotes está diseñada para un gran volumen, pero otras API de
Cognitive Services podrían tener límites de solicitudes para cada nivel de suscripción.
Considere la posibilidad de incluir en contenedores estas API para evitar la limitación del
procesamiento de grandes volúmenes. Los contenedores proporcionan flexibilidad de
implementación, ya sea en la nube o en el entorno local. También puede mitigar los
efectos secundarios de los lanzamientos de nueva versión mediante el uso de
contenedores. Para más información, consulte Compatibilidad con contenedores en
Azure Cognitive Services.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Dhanashri Kshirsagar | Gerente sénior de programas de contenido


Brady Leavitt | Director especialista (GBB)
Kirpa Singh | Ingeniero sénior de software
Christina Skarpathiotaki | Arquitecto de soluciones en la nube

Otro colaborador:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Inicio rápido: Reconocimiento y conversión de voz en texto
Inicio rápido: Creación de un flujo de trabajo de integración con Azure Logic Apps
multiinquilino en Azure Portal
Inicio rápido: Introducción a Language Studio
Cognitive Services en Azure Synapse Analytics
¿Qué es Speech Service?
¿Qué es Azure Logic Apps?
¿Qué es Azure Cognitive Service for Language?
¿Qué es Azure Synapse Analytics?
Extracción de información del texto con el servicio Language
Modelado, consulta y exploración de datos en Azure Synapse

Recursos relacionados
Tecnología de procesamiento de lenguaje natural
Optimización del marketing con Machine Learning
Análisis de macrodatos con seguridad de nivel empresarial mediante Azure
Synapse
Extraer y analizar datos del centro
de llamadas
Azure Blob Storage Voz de Azure AI Servicios de Azure AI Power BI

En este artículo se describe cómo extraer información de las conversaciones de los


clientes en un centro de llamadas mediante los servicios de Azure AI y Azure OpenAI
Service. Usar estos análisis en tiempo real y posteriores a la llamada para mejorar la
eficacia del centro de llamadas y la satisfacción del cliente.

Architecture

Intelligent transcription Interact and visualize

Extract insights from call transcripts


Insights in Power BI
(Near real-time)
Caller

Extraction Storage Enrichment


File Audio
Person-to-person upload files
conversation
Azure AI Web app
Azure Language
Telephony Azure
Blob Storage
server Azure Blob Storage
Azure
Blob Storage
speech to text
Azure OpenAI CRM
Call-center agent Service

Detailed call
history, summaries,
reasons for calling

Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de datos
1. Una llamada telefónica entre un agente y un cliente se registra y almacena en
Azure Blob Storage. Los archivos de audio se cargan en una cuenta de Azure
Storage a través de un método compatible, como la herramienta basada en la
interfaz de usuario, el Explorador de Azure Storage o un SDK de Storage o una API.

2. Voz de Azure AI se usa para transcribir archivos de audio en modo por lotes de
forma asincrónica con la diarización de altavoz habilitada. Los resultados de la
transcripción se conservan en Blob Storage.
3. Lenguaje de Azure AI se usa para detectar y redactar datos personales en la
transcripción.

Para la transcripción del modo por lotes y la detección y la reacción de datos


personales, use la herramienta Cliente de ingesta de servicios de IA. La herramienta
Cliente de ingesta usa un enfoque sin códigos para la transcripción del centro de
llamadas.

4. Azure OpenAI se usa para procesar la transcripción y extraer entidades, resumir la


conversación y analizar opiniones. La salida procesada se almacena en
Blob Storage y, a continuación, se analiza y visualiza mediante otros servicios.
También puede almacenar la salida en un almacén de datos para realizar un
seguimiento de los metadatos y para la generación de informes. Usar
Azure OpenAI para procesar la información de transcripción almacenada.

5. Power BI o una aplicación web personalizada hospedada por App Service se usa
para visualizar la salida. Ambas opciones proporcionan información casi en tiempo
real. Puede almacenar esta salida en un CRM, por lo que los agentes tienen
información contextual sobre por qué se llamó al cliente y pueden resolver
rápidamente posibles problemas. Este proceso está totalmente automatizado, lo
que ahorra tiempo y esfuerzo a los agentes.

Componentes
Blob Storage es la solución de almacenamiento de objetos para archivos sin
procesar en este escenario. Blob Storage admite bibliotecas para lenguajes como
.NET, Node.js y Python. Las aplicaciones pueden acceder a archivos en Blob
Storage a través de HTTP o HTTPS. Blob Storage tiene niveles de acceso frecuente,
esporádico y de archivo para almacenar grandes cantidades de datos, lo que
optimiza los costes.

Azure OpenAI proprociona acceso a modelos de lenguaje de Azure OpenAI,


como la serie de modelos GPT-3, Codex e Embeddings para la generación de
contenido, el resumen, la búsqueda semántica y la conversión del lenguaje natural
al código. Puede acceder al servicio a través de las API REST, el SDK de Python o la
interfaz basada en web en Azure OpenAI Studio .

Voz de Azure AI es una API basada en inteligencia artificial que proporciona


funcionalidades de voz, como la conversión de voz en texto, de texto a voz, la
traducción de voz y el reconocimiento del hablante. Esta arquitectura usa la
funcionalidad de transcripción por lotes de Voz de Azure AI.
Lenguaje de Azure AI consolida los servicios de procesamiento del lenguaje
natural de Azure. Para obtener más información sobre las opciones precompiladas
y personalizables, consulte Características disponibles del Lenguaje Azure AI.

Language Studio proporciona una interfaz de usuario para explorar y analizar las
características de los servicios de IA para lenguaje. Language Studio proporciona
opciones para compilar, etiquetar, entrenar e implementar modelos
personalizados.

Power BI es un software como servicio (SaaS) que proporciona información


visual e interactiva para el análisis empresarial. Proporciona funcionalidades de
transformación y se conecta a otros orígenes de datos.

Alternativas
En función de su escenario, puede agregar los siguientes flujos de trabajo.

Realizar el resumen de la conversación utilizando el modelo precompilado en


Lenguaje de Azure AI.
Según el tamaño y la escala de la carga de trabajo, puede usar Azure Functions
como una herramienta de integración de código primero para realizar pasos de
procesamiento de texto, como el resumen de texto en los datos extraídos.
Implementar una solución personalizada de conversión de voz en texto.

Detalles del escenario


Esta solución usa Voz de Azure AI para convertir audio en texto escrito. El Lenguaje de
Azure AI redacta información confidencial en la transcripción de conversaciones. Azure
OpenAI extrae información de la conversación del cliente para mejorar la eficiencia del
centro de llamadas y la satisfacción del cliente. Use esta solución para procesar texto
transcrito, reconocer y quitar información confidencial y realizar análisis de opiniones.
Escale los servicios y la canalización para dar cabida a cualquier volumen de datos
grabados.

Posibles casos de uso


Esta solución proporciona valor a organizaciones de sectores como las
telecomunicaciones y los servicios financieros. Se aplica a cualquier organización que
grabe conversaciones. Los centros de llamadas internos o de atención al cliente se
benefician del uso de esta solución.
Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Buscar el acuerdo de nivel de servicio de disponibilidad (SLA) para cada


componente de SLA para servicios en línea .
Para diseñar aplicaciones de alta disponibilidad con cuentas de almacenamiento,
consulte las opciones de configuración.
Para garantizar la resistencia de los servicios de proceso y los almacenes de datos
en este escenario, use el modo de error para servicios como Azure Functions y
Storage. Para obtener más información, vea la Lista de comprobación de
resistencia para servicios de Azure.
Copia de seguridad y recuperación de los modelos de Form Recognizer.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Implementar recomendaciones de protección de datos, administración de


identidades y acceso, y seguridad de red para Blob Storage, servicios de IA y
Azure OpenAI.
Configuración de redes virtuales de servicios de IA.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

El coste total de esta solución depende del nivel de precios de sus servicios. Los factores
que pueden afectar al precio de cada componente son:

El número de documentos que se procesen.


El número de solicitudes simultáneas que reciba la aplicación.
El tamaño de los datos que se almacenen después del procesamiento.
La región de implementación.

Para obtener más información, vea los siguientes recursos:

Precios de Azure OpenAI


Precios de Blob Storage
Precios de Lenguaje de Azure AI
Precios de Azure Machine Learning

Utilizar la calculadora de precios de Azure para estimar el coste de su solución.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad que tiene la carga de trabajo para
satisfacer de manera eficiente las demandas que los usuarios hayan realizado sobre ella.
Para más información, consulte Información general sobre el pilar de eficiencia del
rendimiento.

Cuando se procesan grandes volúmenes de datos, puede exponer cuellos de botella de


rendimiento. Para garantizar una eficiencia de rendimiento adecuada, comprenda y
planee las opciones de escalado que se usarán con la característica de escalado
automático de servicios de IA.

La API de voz por lotes está diseñada para grandes volúmenes, pero otras API de
servicios de IA pueden tener límites de solicitudes, dependiendo del nivel de
suscripción. Considerar la posibilidad de incluir en contenedores las API de servicios de
IA para evitar ralentizar el procesamiento de gran volumen. Los contenedores
proporcionan flexibilidad de implementación en la nube y en el entorno local. Mitigar
los efectos secundarios de los lanzamientos de nueva versión mediante el uso de
contenedores. Para obtener más información, consulte Compatibilidad con
contenedores en servicios de IA.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Dixit Arora | Ingeniero de clientes sénior, ISV DN CoE


Jyotsna Ravi | Ingeniero principal de clientes, ISV DN CoE
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es Voz de Azure AI?
¿Qué es Azure OpenAI?
¿Qué es Azure Machine Learning?
Introducción a Blob Storage
¿Qué es Lenguaje de Azure AI?
Introducción a Azure Data Lake Storage Gen2
¿Qué es Power BI?
Cliente de ingesta con servicios de IA
Análisis y transcripción posterior a la llamadas

Recursos relacionados
Uso de una canalización de transcripción de voz en texto para analizar
conversaciones grabadas
Implementación de una solución personalizada de conversión de voz en texto
Crear modelos acústicos y de lenguaje personalizado
Implementación de una solución personalizada de conversión de voz en texto
Determinación del valor de
tiempo de permanencia del
cliente y del porcentaje de
abandono de estos con los
servicios de Azure AI
Azure Data Lake Storage Azure Databricks Azure Machine Learning Azure Analysis Services

En este escenario se muestra una solución para crear modelos predictivos del valor de
tiempo de permanencia de los clientes y de la tasa de abandono de estos mediante
las tecnologías de Azure AI.

Architecture
Azure Data Factory Azure Databricks Azure Machine Learning Azure Analysis Services
Event Grid Subscriptions MLflow MLflow BI Platforms
Azure Kubernetes Service

Model training
Machine Serving phase
learning registry

Azure
intelligent
analytics and
AI platforms
Power BI
Feature engineering dashboard
Data Factory Machine
learning
deployment
layer
Data processing
Dashboard

Azure storage
technologies

Azure Data Lake Storage Azure SQL Database Azure Analysis Services

Microsoft 
Azure

Descargue un archivo Visio de esta arquitectura.


Flujo de datos
1. Ingesta y orquestación: se ingieren datos históricos, transaccionales y de terceros
para el cliente a partir de orígenes de datos locales. Use Azure Data Factory y
almacene los resultados en Azure Data Lake Storage.

2. Procesamiento de datos: use Azure Databricks para seleccionar y limpiar los datos
sin procesar de Data Lake Storage. Almacene los datos en el nivel Plata de Azure
Data Lake Storage.

3. Ingeniería de características: con Azure Databricks, cargue datos desde el nivel


Plata de Data Lake Storage. Use PySpark para enriquecer los datos. Después de
la preparación, use la ingeniería de características para proporcionar una mejor
representación de los datos. La ingeniería de características también puede
mejorar el rendimiento del algoritmo de aprendizaje automático.

4. Entrenamiento de modelos: en el entrenamiento de modelos, los datos del nivel


Plata constituyen el conjunto de datos de entrenamiento del modelo. Puede usar
MLflow para administrar experimentos de aprendizaje automático. MLflow realiza
un seguimiento de todas las métricas que necesita para evaluar el experimento de
aprendizaje automático.

Los parámetros de MLflow almacenan parámetros relacionados con el modelo,


como los hiperparámetros de entrenamiento. Las métricas de MLflow almacenan
las métricas de rendimiento del modelo. El modelo de aprendizaje automático se
reentrena de forma iterativa mediante canalizaciones de Azure Data Factory. La
canalización de reentrenamiento del modelo obtiene los datos de entrenamiento
actualizados de Azure Data Lake Storage y vuelve a entrenar el modelo. La
canalización de reentrenamiento del modelo se inicia en las condiciones
siguientes:

Cuando la precisión del modelo actual en producción cae por debajo de un


umbral de cuyo seguimiento se encarga MLflow.
Cuando se alcanzan los desencadenadores de calendario, según las reglas
definidas por el cliente.
Cuando se detecta un desfase de datos.

5. Registro de aprendizaje automático: una canalización de Azure Data Factory


registra el mejor modelo de aprendizaje automático del servicio Azure Machine
Learning según las métricas elegidas. El modelo de Machine Learning se
implementa mediante Azure Kubernetes Service .
6. Fase de servicio: en la fase de servicio, puede usar herramientas de informes para
trabajar con las predicciones del modelo. Entre estas herramientas cabe destacar
Power BI y Azure Analyses Services.

Componentes
Azure Analysis Services proporciona modelos de datos de nivel empresarial en la
nube.

Azure Data Factory proporciona una capa de integración y transformación de


datos que funciona en todas las iniciativas de transformación digital.

Azure Databricks es una plataforma de análisis de datos optimizada para la


plataforma de servicios en la nube de Microsoft Azure.

Azure Machine Learning incluye diversas experiencias para crear, entrenar e


implementar modelos de Machine Learning y fomentar la colaboración en equipo.

Azure SQL Database es un motor de base de datos que controla la mayoría de


las funciones de administración sin que sea necesaria su intervención. Azure SQL
Database le permite centrarse en las actividades de optimización y administración
de bases de datos específicas de un dominio para su empresa.

MLflow es una plataforma de código abierto para administrar todo el ciclo de vida
del aprendizaje automático.

Alternativas
Data Factory orquesta los flujos de trabajo para la canalización de datos. Si desea
cargar datos solo una vez o a petición, use herramientas como la copia masiva de
SQL Server y AzCopy para copiar datos en Azure Blob Storage . Posteriormente,
puede cargar los datos directamente en Azure Synapse Analytics con PolyBase.

Algunas herramientas de inteligencia empresarial no admiten Azure Analysis


Services. En su lugar, se puede acceder a los datos seleccionados directamente
desde Azure SQL Database. Los datos se almacenan mediante Azure Data Lake
Storage y se accede a ellos con el almacenamiento de Azure Databricks para su
procesamiento.

Detalles del escenario


El valor del tiempo de permanencia del cliente mide el beneficio neto de un cliente. Esta
métrica incluye los beneficios de toda la relación del cliente con su empresa. La tasa de
abandono o abandono de clientes mide el número de individuos o elementos que se
mueven fuera de un grupo durante un período.

Este escenario de cliente minorista clasifica a los clientes en función de medidas


económicas y de marketing. Este escenario también crea una segmentación de clientes
basada en varias métricas. Entrena un clasificador de varias clases en datos nuevos. El
modelo resultante puntúa los lotes de nuevos pedidos de clientes mediante un trabajo
de cuaderno de Azure Databricks con programación periódica.

Esta solución muestra cómo interconectar las siguientes tecnologías de Azure AI:

Use Azure Data Lake y Azure Databricks para implementar los procedimientos
recomendados de las operaciones de datos.
Use Azure Databricks para realizar análisis exploratorios de datos.
Use MLflow para realizar un seguimiento de los experimentos de aprendizaje
automático.
Realice la puntuación por lotes de los modelos de Machine Learning en Azure
Databricks.
Use Azure Machine Learning para modelar el registro y la implementación.
Use cuadernos de Azure Data Factory y Azure Databricks para orquestar la
canalización de MLOps.

Posibles casos de uso


Esta solución es ideal para el sector minorista. Es útil en los siguientes casos de uso:

En marketing, para determinar cuánto se debe gastar para adquirir un cliente.


En el caso de equipos de productos, para adaptar los productos y servicios a sus
mejores clientes.
En el caso del soporte técnico al cliente, para decidir cuánto se debe gastar para
dar servicio y conservar a un cliente.
En el caso de los representantes de ventas, para decidir a qué tipos de clientes se
debe dedicar más tiempo para conseguirlos.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.
Disponibilidad
Los componentes de Azure ofrecen disponibilidad mediante la redundancia y de la
forma especificada en los Acuerdos de Nivel de Servicio (SLA):

Para más información sobre canalizaciones de Data Factory, consulte Acuerdo de


Nivel de Servicio de Data Factory .
Para más información sobre Azure Databricks, consulte Azure Databricks .
Data Lake Storage ofrece disponibilidad mediante redundancia. Consulte
Redundancia de Azure Storage.

Escalabilidad
En este escenario se usa Azure Data Lake Storage para almacenar datos para modelos y
predicciones de Machine Learning. Azure Storage es escalable. Puede almacenar y
atender muchos exabytes de datos. Esta cantidad de almacenamiento está disponible
con un rendimiento que se mide en gigabits por segundo (Gbps). El procesamiento se
ejecuta en latencias por solicitud casi constantes. Las latencias se miden en los niveles
de servicio, cuenta y archivo.

En este escenario se usan clústeres de Azure Databricks que habilitan el escalado


automático de manera predeterminada. El escalado automático permite a Databricks
durante el tiempo de ejecución reasignar recursos dinámicamente. Con el escalado
automático, no es necesario iniciar un clúster para que coincida con una carga de
trabajo, lo que facilita la obtención de un uso elevado del clúster.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Proteja los recursos mediante controles en el tráfico de red que se origina en Azure,
entre los recursos locales y los hospedados en Azure, y el tráfico hacia y desde Azure.
Por ejemplo, el entorno de ejecución de integración autohospedado de Azure traslada
de forma segura los datos del almacenamiento de datos local a Azure.

Use Azure Key Vault y el secreto con ámbito de Databricks para acceder a los datos de
Azure Data Lake Storage.

Los servicios de Azure se implementan en una red virtual segura o se accede a ellos
mediante la característica Azure Private Link. Si es necesario, la seguridad en el nivel de
fila proporciona acceso granular a usuarios individuales de Azure Analysis Services o
SQL Database.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Azure Databricks es una oferta premium de Apache Spark con un costo asociado.

Puede optar por planes de tarifa estándar y premium de Databricks. En este ejemplo el
plan de tarifa estándar es suficiente. Si la aplicación requiere el escalado automático de
clústeres para controlar cargas de trabajo más grandes o paneles interactivos de
Databricks, es posible que necesite el nivel Premium.

Los costos relacionados con este caso de uso dependen de los precios estándar de los
siguientes servicios para su uso:

Precios de Azure Databricks


Precios de Azure Data Factory
Precios de Azure Data Lake Storage
Precios de Azure Machine Learning

Para calcular el costo de los productos y configuraciones de Azure, visite la calculadora


de precios de Azure.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Giulia Gallo | Arquitecta sénior de soluciones en la nube

Pasos siguientes
Azure Machine Learning
Introducción a Azure Data Lake Storage Gen2
Azure Databricks
Azure Data Factory
Recursos relacionados
Inteligencia artificial
MLOps para modelos de Python con Azure Machine Learning
Predicción del abandono de clientes mediante el análisis en tiempo real
Predicción de la duración de la estancia y el flujo de pacientes
Puntuación por lotes para
modelos de aprendizaje profundo
con canalizaciones de Azure
Machine Learning
Azure Logic Apps Azure Machine Learning Control de acceso basado en rol de Azure Azure Storage

Esta arquitectura de referencia muestra cómo aplicar una transferencia de estilo


neuronal a un vídeo con Azure Machine Learning. La transferencia de estilo es una
técnica de aprendizaje profundo que se compone de una imagen existente con el estilo
de otra imagen. Puede generalizar esta arquitectura para cualquier escenario que usa la
puntuación de Batch con el aprendizaje profundo.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
Esta arquitectura consta de los siguientes componentes.
Proceso
Azure Machine Learning usa canalizaciones para crear secuencias de cálculo
reproducibles y fáciles de administrar. También ofrece un destino de proceso
administrado (en el cual se puede ejecutar un cálculo de la canalización) llamado Azure
Machine Learning Compute para el entrenamiento, la implementación y la puntuación
de modelos de aprendizaje automático.

Storage

Azure Blob Storage almacena todas las imágenes (imágenes de entrada, de estilo y de
salida). Azure Machine Learning se integra con Blob Storage de forma que los usuarios
no tienen que mover manualmente los datos entre las plataformas de proceso y Blob
Storage. Blob Storage también resulta rentable por el rendimiento que requiere esta
carga de trabajo.

Desencadenador
Azure Logic Apps desencadena el flujo de trabajo. Si la aplicación lógica detecta que se
ha agregado un blob al contenedor, desencadena la canalización de Azure Machine
Learning. Logic Apps es una buena elección para esta arquitectura de referencia, ya que
detecta fácilmente los cambios en Blob Storage y proporciona un proceso sencillo para
cambiar el desencadenador.

Preprocesamiento y posprocesamiento de los datos

Esta arquitectura de referencia usa secuencias de vídeo de un orangután en un árbol.

1. Use FFmpeg para extraer el archivo de audio de la secuencia de vídeo para


poder unirlo de nuevo en el vídeo de salida más adelante.
2. Use FFmpeg para dividir el vídeo en fotogramas individuales. Los fotogramas se
procesan de forma independiente y en paralelo.
3. En este momento, puede aplicar la transferencia de estilo neuronal a cada
fotograma individual en paralelo.
4. Una vez procesados todos los fotogramas, use FFmpeg para volver a unirlos de
nuevo.
5. Por último, adjunte de nuevo el archivo de audio a la secuencia que se acaba de
volver a unir.

Componentes
Azure Machine Learning
Azure Blob Storage
Azure Logic Apps

Detalles de la solución
Esta arquitectura de referencia está diseñada para cargas de trabajo que se
desencadenan por la presencia de nuevo contenido multimedia en Azure Storage.

El procesamiento implica los siguientes pasos:

1. Cargue el archivo de vídeo en Azure Blob Storage.


2. El archivo de vídeo desencadena una instancia de Azure Logic Apps que envía una
solicitud al punto de conexión publicado de la canalización de Azure Machine
Learning.
3. La canalización procesa el vídeo, aplica la transferencia de estilo con MPI y procesa
posteriormente el vídeo.
4. La salida se guarda de nuevo en Blob Storage cuando se completa la canalización.

Posibles casos de uso


Una empresa mediática tiene un vídeo cuyo estilo quiere cambiar para que se parezca a
una pintura específica. La organización quiere aplicar este estilo a todos los fotogramas
del vídeo automáticamente cuando proceda. Para más información sobre los algoritmos
de transferencia de estilo neuronal, vea Image Style Transfer Using Convolutional Neural
Networks (Transferencia de estilo de imagen con redes neuronales convolucionales)
(PDF).

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

GPU frente a CPU

Para cargas de trabajo de aprendizaje profundo, las GPU normalmente tienen un


rendimiento bastante más alto que las CPU, tanto es así que se suele necesitar un
clúster de CPU que cambie de tamaño para un rendimiento comparable. Aunque puede
usar solo CPU en esta arquitectura, las GPU ofrecen un perfil bastante mejorado de
costo o rendimiento. Se recomienda utilizar la última instancia de NCv3 series de
máquinas virtuales optimizadas para GPU.

Las GPU no están habilitadas de forma predeterminada en todas las regiones. Asegúrese
de seleccionar una región que tenga GPU habilitadas. Además, las suscripciones tienen
una cuota predeterminada de cero núcleos para máquinas virtuales optimizadas para
GPU. Puede aumentar esta cuota si abre una solicitud de soporte técnico. Asegúrese de
que la suscripción tiene una cuota suficiente para ejecutar la carga de trabajo.

Ejecución en paralelo en máquinas virtuales frente a núcleos

Al ejecutar un proceso de transferencia de estilo como un trabajo por lotes, los trabajos
que se ejecutan principalmente en GPU tienen que ejecutarse en paralelo en todas las
máquinas virtuales. Se admiten dos enfoques: puede crear un clúster más grande con
máquinas virtuales que tienen una sola GPU o crear un clúster más pequeño mediante
máquinas virtuales con muchas GPU.

Para esta carga de trabajo, estas dos opciones presentan un rendimiento comparable. El
uso de menos máquinas virtuales con más GPU por máquina virtual puede ayudar a
reducir el movimiento de datos. Sin embargo, el volumen de datos por trabajo para esta
carga de trabajo no es muy grande, por lo que no observará demasiadas limitaciones de
Blob Storage.

Paso MPI
Al crear la canalización en Azure Machine Learning, uno de los pasos utilizados para
realizar el cálculo en paralelo es el paso MPI (interfaz de procesamiento de mensajes). El
paso MPI le ayuda a dividir los datos uniformemente entre los nodos disponibles. El
paso MPI no se ejecutará hasta que todos los nodos solicitados estén preparados. Si se
produce un error en uno de los nodos o se produce un adelanto del proceso (en caso
de que se trate de una máquina virtual de baja prioridad), se tendrá que ejecutar de
nuevo el paso MPI.
Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.
Esta sección contiene puntos a tener en cuenta para crear soluciones seguras.

Restricción de acceso a Azure Blob Storage


En esta arquitectura de referencia, Azure Blob Storage es el componente de
almacenamiento principal que debe protegerse. La implementación de línea base que se
muestra en el repositorio de GitHub usa las claves de la cuenta de almacenamiento para
acceder a Blob Storage. Para mayor control y protección, en su lugar, considere la
posibilidad de usar una firma de acceso compartido (SAS). Esto concede acceso limitado
a los objetos de almacenamiento, sin necesidad de codificar de forma rígida las claves
de cuenta ni de guardarlas como texto no cifrado. Este enfoque es especialmente útil
porque las claves de cuenta están visibles como texto no cifrado dentro de la interfaz
del diseñador de la aplicación lógica. Mediante una SAS también ayuda a asegurarse de
que la cuenta de almacenamiento tiene una gobernanza corporativa adecuada y que se
concede acceso solo a las personas que deben tenerlo.

Para escenarios con información más confidencial, asegúrese de que todas las claves de
almacenamiento están protegidas, ya que estas claves conceden acceso total a todos los
datos de entrada y salida de la carga de trabajo.

Cifrado de datos y movimiento de datos

Esta arquitectura de referencia usa la transferencia de estilo como un ejemplo de un


proceso de puntuación de Batch. Para escenarios de información más confidencial, los
datos del almacenamiento deben cifrarse en reposo. Al mover datos de una ubicación a
la siguiente, use Seguridad de la capa de transporte (TSL) para proteger la transferencia.
Para obtener más información, vea la Guía de seguridad de Azure Storage.

Protección del cálculo en una red virtual


Al implementar el clúster de proceso de Machine Learning, puede configurar el clúster
para que se aprovisione dentro de una subred de una red virtual. Esta subred permite
que los nodos de proceso del clúster se comuniquen de forma segura con otras
máquinas virtuales.

Protección frente a actividades malintencionadas


En escenarios donde hay varios usuarios, asegúrese de que los datos confidenciales
estén protegidos contra la actividad malintencionada. Si se concede acceso a otros
usuarios a esta implementación para personalizar los datos de entrada, tenga en cuenta
las siguientes precauciones y consideraciones:

Use el control de acceso basado en rol de Azure (RBAC de Azure) para limitar el
acceso de los usuarios solo a los recursos que necesiten.
Aprovisione dos cuentas de almacenamiento independientes. Almacene los datos
de entrada y salida en la primera cuenta. Los usuarios externos pueden acceder a
esta cuenta. Almacene los scripts ejecutables y los archivos de registro de salida en
la otra cuenta. Los usuarios externos no deben tener acceso a esta cuenta. Esta
separación garantiza que los usuarios externos no puedan modificar los archivos
ejecutables (para insertar código malintencionado) ni acceder a los archivos de
registro, que podrían contener información confidencial.
Los usuarios malintencionados pueden realizar ataques de denegación de servicio
distribuido en la cola de trabajos o insertar mensajes dudosos con formato
incorrecto en esta cola, lo que provocaría el bloqueo del sistema o errores al quitar
los errores de la cola.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

En comparación con los componentes de almacenamiento y programación, los recursos


de proceso utilizados en esta arquitectura de referencia predominan sin duda en
términos de costos. Uno de los principales desafíos es paralelizar eficazmente el trabajo
en un clúster de máquinas habilitadas para GPU.

El tamaño del clúster de Proceso de Azure Machine Learning puede escalarse y


reducirse verticalmente de manera automática en función de los trabajos existentes en
la cola. Puede habilitar el escalado automático mediante programación si establece el
número mínimo y máximo de nodos.

Para el trabajo que no requiere un procesamiento inmediato, configure el escalado


automático para que el estado predeterminado (mínimo) sea un clúster de cero nodos.
Con esta configuración, el clúster empieza con cero nodos y solo se escala verticalmente
si detecta trabajos en la cola. Si el proceso de puntuación por lotes solo se produce
unas veces al día o con menos frecuencia, esta configuración supone importantes
ahorros.
La escalabilidad automática puede no resultar apropiada para trabajos por lotes que se
producen demasiado próximos entre sí. El tiempo que tarda un clúster en agilizarse y
ralentizarse también incurre en costos, por tanto, si una carga de trabajo por lotes
empieza solo unos minutos después de que el trabajo anterior termine, puede resultar
más rentable mantener el clúster en ejecución entre los trabajos.

Proceso de Azure Machine Learning también admite máquinas virtuales de prioridad


baja, lo que permite ejecutar el cálculo en máquinas virtuales con descuento, con la
limitación de que se pueden reemplazar en cualquier momento. Las máquinas virtuales
de baja prioridad son idóneas para las cargas de trabajo no críticas de puntuación por
lotes.

Supervisión de trabajos por lotes


Mientras se ejecuta el trabajo, es importante supervisar el progreso y asegurarse de que
funciona según lo previsto. Sin embargo, puede resultar complicado supervisar un
clúster de nodos activos.

Con el fin de comprobar el estado general del clúster, vaya al servicio Machine Learning
en Azure Portal para inspeccionar el estado de los nodos del clúster. Si un nodo está
inactivo o un trabajo presenta algún error, los registros de errores se guardan en Blob
Storage y también se puede acceder a ellos en Azure Portal.

La supervisión puede enriquecerse aún más conectando los registros a Application


Insights o ejecutando procesos independientes para sondear el estado del clúster y sus
trabajos.

Registro con Azure Machine Learning


Azure Machine Learning registrará automáticamente todos los procesos stdout y stderr
en la cuenta de Blob Storage asociada. A menos que se especifique lo contrario, el área
de trabajo de Azure Machine Learning aprovisionará automáticamente una cuenta de
almacenamiento y volcará los registros en ella. También puede usar una herramienta de
navegación de almacenamiento, como el Explorador de Azure Storage , que es una
manera más fácil de explorar los archivos de registro.

Implementación de este escenario


Para implementar esta arquitectura de referencia, siga los pasos descritos en el
repositorio de GitHub .
También puede implementar una arquitectura de puntuación por lotes para modelos de
aprendizaje profundo mediante Azure Kubernetes Service. Siga los pasos descritos en
este repositorio de GitHub .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Jian Tang | Administrador de programas II

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Puntuación por lotes de modelos de Spark en Azure Databricks
Puntuación por lotes de modelos de Python en Azure
Puntuación por lotes con modelos de R para la previsión de ventas

Recursos relacionados
Arquitectura de la inteligencia artificial
¿Qué es Azure Machine Learning?
Canalizaciones de Azure Machine Learning
Puntuación por lotes de modelos
de Python en Azure
Azure Container Registry Azure Event Hubs Azure Machine Learning Azure SQL Database

Azure Stream Analytics

Esta guía de arquitectura muestra cómo crear una solución escalable para los modelos
de puntuación por lotes mediante Azure Machine Learning. La solución se puede usar
como plantilla y se puede generalizar para diferentes problemas.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
Esta guía de arquitectura es aplicable tanto para el streaming como para los datos
estáticos, siempre que el proceso de ingesta se adapte al tipo de datos. Los siguientes
pasos y componentes describen la ingesta de estos dos tipos de datos.

Streaming de datos:

1. Los datos de streaming se originan en sensores de IoT, donde los nuevos eventos
se transmiten a intervalos frecuentes.
2. Los eventos de streaming entrantes se ponen en cola mediante Azure Event Hubs
y, a continuación, se procesan previamente mediante Azure Stream Analytics.

Azure Event Hubs. Este servicio de ingesta de mensajes puede ingerir


millones de mensajes de eventos por segundo. En esta arquitectura, los
sensores envían un flujo de datos al centro de eventos.
Azure Stream Analytics. Un motor de procesamiento de eventos. Un trabajo
de Stream Analytics lee los flujos de datos del centro de eventos y realiza su
procesamiento.

Datos estáticos:

3. Los conjuntos de datos estáticos pueden almacenarse como archivos en Azure


Data Lake Storage o en forma de tabla en Azure Synapse o Azure SQL
Database .
4. Azure Data Factory se puede usar para agregar o procesar previamente el
conjunto de datos almacenado.

La arquitectura restante, después de la ingesta de datos, es igual tanto para el streaming


como para los datos estáticos, y consta de los siguientes pasos y componentes:

5. Los datos ingeridos, agregados o procesados previamente se pueden almacenar


como documentos en Azure Data Lake Storage o en forma de tabla en Azure
Synapse o Azure SQL Database . A continuación, Azure Machine Learning
consumirá estos datos.
6. Azure Machine Learning se usa para entrenar, implementar y administrar modelos
de Machine Learning a escala. En el contexto de puntuación por lotes, Azure
Machine Learning crea un clúster de máquinas virtuales con una opción de
escalado automático, donde los trabajos se ejecutan en paralelo a partir de scripts
de Python.
7. Los modelos se implementan como puntos de conexión por lotes administrados,
que se usan para realizar la inferencia por lotes en grandes volúmenes de datos
durante un período de tiempo. Los puntos de conexión por lotes reciben punteros
hacia los datos y ejecutan trabajos de forma asincrónica para procesar los datos en
paralelo en los clústeres de proceso.
8. Los resultados de la inferencia se pueden almacenar como documentos en Azure
Data Lake Storage o en forma de tabla en Azure Synapse o Azure SQL
Database .
9. Visualización: los resultados del modelo almacenado se pueden consumir
mediante interfaces de usuario, como paneles de Power BI o mediante aplicaciones
web personalizadas.

Componentes
Azure Event Hubs
Azure Stream Analytics
Azure SQL Database
Azure Synapse Analytics
Almacén de Azure Data Lake
Azure Data Factory
Azure Machine Learning
Puntos de conexión de Azure Machine Learning
Microsoft Power BI en Azure
Azure Web Apps

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Rendimiento
En los modelos de Python estándar, se suele aceptar que las CPU son suficientes para
controlar la carga de trabajo. Esta arquitectura utiliza varias CPU. Sin embargo, para
cargas de trabajo de aprendizaje profundo, por lo general las GPU superan a las CPU en
una cantidad considerable (normalmente se necesita un clúster considerable de CPU
para obtener un rendimiento comparable).

Ejecución en paralelo en máquinas virtuales frente a núcleos

Al ejecutar los procesos de puntuación de muchos modelos de puntuación en modo por


lotes, es preciso que los trabajos se ejecuten en paralelo en las máquinas virtuales. Son
posibles dos enfoques:

Crear un clúster mayor mediante máquinas virtuales de bajo costo.


Crear un clúster menor mediante máquinas virtuales de alto rendimiento con más
núcleos disponibles en cada una de ellas.

En general, la puntuación de los modelos de Python estándar no es tan exigente como


la de los de aprendizaje profundo, y un clúster pequeño debería poder controlar de
forma eficaz un gran número de modelos en cola. Puede aumentar el número de nodos
de clúster a medida que aumenten los tamaños de los conjunto de datos.

En este escenario, por comodidad, se envía una tarea de puntuación en un paso


individual de la canalización de Azure Machine Learning. Sin embargo, es posible que
sea más eficaz puntuar varios fragmentos de datos dentro del mismo paso de la
canalización. En esos casos, escriba código personalizado para leer en varios conjuntos
de datos y ejecutar el script de puntuación durante la ejecución de un único paso.

Administración
Supervisión de trabajos. Es importante supervisar el progreso de los trabajos en
ejecución. Sin embargo, puede resultar complicado supervisar un clúster de nodos
activos. Para inspeccionar el estado de los nodos del clúster, use Azure Portal
para administrar el área de trabajo de Machine Learning. Si un nodo está inactivo o
un trabajo presenta algún error, los registros de errores se guardan en Blob
Storage y también se puede acceder a ellos en la sección Canalizaciones. Para que
la supervisión sea más exhaustiva, conecte los registros a Application Insights o
ejecute procesos independientes para sondear el estado del clúster y sus trabajos.
Registro. Machine Learning registra todos los procesos stdout/stderr en la cuenta
de Azure Storage asociada. Para ver con facilidad los archivos de registro, use una
herramienta de exploración de almacenamiento como Explorador de Azure
Storage .

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Los componentes más caros que se usan en esta guía de arquitectura son los recursos
de proceso. El tamaño del clúster de proceso se escala y se reduce verticalmente en
función de los trabajos que haya en la cola. Habilite el escalado automático mediante
programación con el SDK de Python modificando la configuración de aprovisionamiento
del proceso. O use la CLI de Azure para establecer los parámetros de escalado
automático del clúster.

Para el trabajo que no requiera un procesamiento inmediato, configure la fórmula de


escalado automático, con el fin de que el estado predeterminado (mínimo) sea un
clúster de cero nodos. Con esta configuración, el clúster empieza con cero nodos y solo
se escala verticalmente si detecta trabajos en la cola. Si el proceso de puntuación por
lotes solo se produce algunas veces al día o menos, esta configuración permite obtener
importantes ahorros.

Es posible que el escalado no sea apropiado para los trabajos por lotes que se realizan
muy próximos entre sí. Debido a que el tiempo que tarda un clúster en agilizarse y
ralentizarse también genera costos, si una carga de trabajo por lotes empieza solo unos
minutos después de que el trabajo anterior termine, puede resultar más rentable
mantener el clúster en ejecución entre los trabajos. Esta estrategia depende de si los
procesos de puntuación están programados para ejecutarse con mucha frecuencia (por
ejemplo, cada hora), o con poca (por ejemplo, una vez al mes).

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Carlos Alejandro Santos | Arquitecto sénior de soluciones en la nube de IA


especializada
Said Bleik | Responsable principal de científicos aplicados

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Documentación del producto:

¿Qué es Azure Blob Storage?


Introducción a los registros de contenedores privados de Docker en Azure
Azure Event Hubs
¿Qué es Azure Machine Learning?
¿Qué es Azure SQL Database?
Bienvenido a Azure Stream Analytics

Módulos de Microsoft Learn:

Implementación de Azure SQL Database


Habilitación de mensajería confiable para aplicaciones de macrodatos con Azure
Event Hubs
Exploración de Azure Event Hubs
Implementación de una solución de streaming de datos con Azure Stream
Analytics
Introducción al aprendizaje automático
Administración de imágenes de contenedor en Azure Container Registry

Recursos relacionados
Inteligencia artificial (IA): introducción a la arquitectura
Puntuación por lotes para modelos de aprendizaje profundo con canalizaciones de
Azure Machine Learning
Puntuación por lotes de modelos de Spark en Azure Databricks
MLOps para modelos de Python con Azure Machine Learning
Puntuación por lotes con modelos
de R para la previsión de ventas
Azure Batch Azure Blob Storage Azure Container Instances Azure Logic Apps Azure Machine Learning

Esta arquitectura de referencia muestra cómo realizar la puntuación por lotes con
modelos de R mediante Azure Batch. Azure Batch funciona bien con cargas de trabajo
intrínsecamente paralelas e incluye la programación de trabajos y la administración de
procesos. La inferencia por lotes (puntuación) se usa ampliamente para segmentar
clientes, pronosticar ventas, predecir comportamientos de los clientes, predecir el
mantenimiento o mejorar la ciberseguridad.

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
Esta arquitectura consta de los siguientes componentes.

Azure Batch ejecuta trabajos de generación de previsión en paralelo en un clúster de


máquinas virtuales. Las predicciones se realizan mediante modelos de Machine Learning
entrenados previamente e implementados en R. Azure Batch puede escalar
automáticamente el número de máquinas virtuales en función del número de trabajos
enviados al clúster. En cada nodo, un script de R se ejecuta dentro de un contenedor de
Docker para puntuar los datos y generar las previsiones.
Azure Blob Storage almacena los datos de entrada, los modelos de aprendizaje
automático entrenados previamente y los resultados de la previsión. Ofrece un
almacenamiento rentable para el rendimiento que requiere esta carga de trabajo.

Azure Container Instances ofrece proceso sin servidor a petición. En este caso, se
implementa una instancia de contenedor según una programación para desencadenar
los trabajos de Batch que generan las previsiones. Los trabajos de Batch se
desencadenan desde un script de R mediante el paquete doAzureParallel . La instancia
de contenedor se cierra automáticamente una vez finalizados los trabajos.

Azure Logic Apps desencadena todo el flujo de trabajo mediante la implementación de


las instancias de contenedor según una programación. Un conector Azure Container
Instances en Logic Apps permite implementar una instancia en un intervalo de eventos
desencadenadores.

Componentes
Azure Batch
Azure Blob Storage
Azure Container Instances
Azure Logic Apps

Detalles de la solución
Aunque el escenario siguiente se basa en la previsión de ventas de tiendas minoristas,
su arquitectura se puede generalizar para cualquier escenario que requiera la
generación de predicciones a mayor escala mediante modelos de R. Hay disponible una
implementación de referencia de esta arquitectura en GitHub .

Posibles casos de uso


Una cadena de supermercados debe hacer una previsión de las ventas de productos
para el próximo trimestre. La previsión permite a la empresa administrar mejor su
cadena de suministro y asegurarse de que puede satisfacer la demanda de productos en
cada una de sus tiendas. La empresa actualiza sus previsiones cada semana a medida
que los nuevos datos de ventas de la semana anterior estén disponibles y se establezca
la estrategia de marketing del producto para el próximo trimestre. Se generan
previsiones por cuantiles para estimar la incertidumbre de las previsiones de ventas
individuales.

El procesamiento implica los siguientes pasos:


1. Una aplicación lógica de Azure desencadena el proceso de generación de
previsión una vez por semana.

2. La aplicación lógica inicia una instancia de Azure Container que ejecuta el


contenedor de Docker de Scheduler, que desencadena los trabajos de puntuación
en el clúster de Batch.

3. Los trabajos de puntuación se ejecutan en paralelo en los nodos del clúster de


Batch. Cada nodo:

a. Extrae la imagen de Docker de trabajo e inicia un contenedor.

b. Lee los datos de entrada y los modelos de R entrenados previamente de Azure


Blob Storage.

c. Puntúa los datos para generar previsiones.

d. Escribe los resultados de la previsión en Blob Storage.

En la imagen siguiente se muestran las ventas previstas de cuatro productos (SKU) en


una tienda. La línea negra es el historial de ventas, la línea discontinua es la previsión de
la mediana (q50), la banda rosa representa los percentiles veinticinco y setenta y cinco, y
la banda azul representa los percentiles cincuenta y noventa y cinco.
Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Rendimiento

Implementación en contenedores

Con esta arquitectura, todos los scripts de R se ejecutan en contenedores de Docker .


El uso de contenedores garantiza que los scripts se ejecuten siempre en un entorno
coherente, con la misma versión de R y las mismas versiones de paquetes. Se usan
imágenes independientes de Docker para los contenedores de programador y de
trabajo, ya que cada uno tiene un conjunto diferente de dependencias de paquetes
de R.

Azure Container Instances proporciona un entorno sin servidor para ejecutar el


contenedor de Scheduler. El contenedor de Scheduler ejecuta un script de R que
desencadena los trabajos de puntuación individuales que se ejecutan en un clúster de
Azure Batch.

Cada nodo del clúster de Batch ejecuta el contenedor de trabajo, que ejecuta el script
de puntuación.

Paralelización de la carga de trabajo

Cuando haya datos de puntuación por lotes con modelos de R, tenga en cuenta cómo
paralelizar la carga de trabajo. Los datos de entrada se deben particionar para que la
operación de puntuación se pueda distribuir en los nodos del clúster. Pruebe diferentes
enfoques para detectar la mejor opción para distribuir la carga de trabajo. En cada caso,
tenga en cuenta lo siguiente:

Cantidad de datos que se pueden cargar y procesar en la memoria de un solo


nodo.
Sobrecarga de iniciar cada trabajo de Batch.
Sobrecarga de cargar los modelos de R.

En el escenario que se usa en este ejemplo, los objetos de modelo son grandes y solo se
tarda unos segundos en generar una previsión para cada producto. Por esta razón,
puede agrupar los productos y ejecutar un solo trabajo de Batch por nodo. Un bucle
dentro de cada trabajo genera previsiones para los productos de forma secuencial. Este
método es la forma más eficaz de paralelizar esta carga de trabajo concreta. Evita la
sobrecarga que supone iniciar muchos trabajos de Batch más pequeños y cargar
repetidamente los modelos de R.

Un enfoque alternativo es desencadenar un trabajo de Batch por producto. Azure Batch


forma automáticamente una cola de trabajos y los envía para que se ejecuten en el
clúster a medida que los nodos estén disponibles. Use escalado automático para ajustar
el número de nodos del clúster en función del número de trabajos. Este enfoque resulta
útil si se tarda un tiempo relativamente largo en completar cada operación de
puntuación, lo que justifica la sobrecarga que supone iniciar los trabajos y volver a
cargar los objetos del modelo. Este enfoque también es más sencillo de implementar y
ofrece la flexibilidad de usar el escalado automático, una consideración importante si el
tamaño de la carga de trabajo total no se conoce de antemano.
Supervisión de trabajos de Azure Batch
Supervise y finalice los trabajos de Batch del panel Trabajos de la cuenta de Batch en
Azure Portal. Supervise el clúster de Batch, incluido el estado de cada uno de los nodos,
en el panel Grupos.

Registro con doAzureParallel


El paquete doAzureParallel recopila automáticamente los registros de todas las
propiedades stdout/stderr de cada trabajo enviado en Azure Batch. Estos registros se
encuentran en la cuenta de almacenamiento que se creó durante la instalación. Para
verlos, use una herramienta de exploración de almacenamiento como Explorador de
Azure Storage o Azure Portal.

Para depurar rápidamente trabajos por lotes durante el desarrollo, vea los registros en la
sesión de R local. Para más información, consulte Configuración y envío de ejecuciones
de entrenamiento.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Los recursos de proceso que se usan en esta arquitectura de referencia son los
componentes más caros. En este escenario, se crea un clúster de tamaño fijo cada vez
que se desencadena el trabajo y se cierra después de que el trabajo se haya
completado. Solo se generan costos mientras los nodos del clúster se inician, se
ejecutan o se cierran. Este enfoque es adecuado para un escenario en el que los
recursos de proceso necesarios para generar las previsiones permanecen relativamente
constantes de un trabajo a otro.

En escenarios en los que no se conoce de antemano la cantidad de proceso necesaria


para completar el trabajo, puede ser más adecuado usar el escalado automático. Con
este enfoque, el tamaño del clúster se escala o reduce verticalmente en función del
tamaño del trabajo. Azure Batch admite un intervalo de fórmulas de escalado
automático que se pueden establecer al definir el clúster mediante la API de
doAzureParallel .

En algunos escenarios, el tiempo de un trabajo a otro puede ser demasiado corto para
apagar e iniciar el clúster. En estos casos, mantenga el clúster en ejecución entre
trabajos si es necesario.
Azure Batch y doAzureParallel admiten el uso de máquinas virtuales de prioridad baja.
Estas máquinas virtuales tienen un gran descuento, pero corren el riesgo de ser
utilizadas por otras cargas de trabajo de mayor prioridad. Por lo tanto, no se
recomienda el uso de máquinas virtuales de prioridad baja para cargas de trabajo de
producción críticas. No obstante, estas pueden resultar útiles para cargas de trabajo
experimentales o de desarrollo.

Implementación de este escenario


Para implementar esta arquitectura de referencia, siga los pasos descritos en el
repositorio de GitHub .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Angus Taylor | Científico de datos sénior

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es Azure Machine Learning?
Canalizaciones de Azure Machine Learning

Recursos relacionados
Arquitectura de la inteligencia artificial
Puntuación por lotes de modelos de Spark en Azure Databricks
Puntuación por lotes de modelos de Python en Azure
Puntuación de Batch para modelos de aprendizaje profundo
Puntuación por lotes de modelos
de Spark en Azure Databricks
Microsoft Entra ID Azure Databricks Azure Data Factory Azure Blob Storage

Esta arquitectura de referencia muestra cómo crear una solución escalable para la
puntuación por lotes en un modelo de clasificación de Apache Spark en una
programación con Azure Databricks. Azure Databricks es una plataforma de análisis
basada en Apache Spark y optimizada para Azure. Azure Databricks ofrece tres entornos
para desarrollar aplicaciones que consumen muchos datos: Databricks SQL, Databricks
Data Science & Engineering y Databricks Machine Learning. Databricks Machine
Learning es un entorno integral de aprendizaje automático integrado que incorpora
servicios administrados para el seguimiento de experimentos, entrenamiento de
modelos, desarrollo y administración de características, y servicio de características y
modelos. Puede usar esta arquitectura de referencia como una plantilla que a su vez se
puede usar en otros escenarios. Hay disponible una implementación de referencia de
esta arquitectura en GitHub .

Apache® y Apache Spark son marcas comerciales registradas o marcas comerciales de


Apache Software Foundation en los Estados Unidos u otros países. El uso de estas marcas
no implica la aprobación de Apache Software Foundation.

Architecture
Azure Databricks

Ingest Feature engineering Training

Spark MLLib model


Machine data Training data

Databricks store

Scoring data
Batch jobs scheduler

Results data

Microsoft
Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
La arquitectura define un flujo de datos que encontrará al completo en Azure Databricks
y que está basado en un conjunto de cuadernos ejecutados de forma secuencial. Este
consta de los siguientes componentes:

Archivos de datos . La implementación de referencia usa un conjunto de datos


simulados que están en cinco archivos de datos estáticos.

Ingesta . El cuaderno de ingesta de datos descarga los archivos de datos de entrada en


una colección de conjuntos de datos de Databricks. En el mundo real, los datos de los
dispositivos IoT se transmitirían al almacenamiento accesible de Databricks, como Azure
SQL o Azure Blob Storage. Databricks admite varios orígenes de datos .

Canalización de entrenamiento. Este cuaderno ejecuta el cuaderno de ingeniería de


características para crear un conjunto de datos de análisis a partir de los datos
ingeridos. A continuación ejecuta un cuaderno de creación de modelos que entrena el
modelo de Machine Learning mediante la biblioteca de Machine Learning escalable
Apache Spark MLlib .
Canalización de puntuación. Este cuaderno ejecuta el cuaderno de ingeniería de
características para crear un conjunto de datos de puntuación a partir de los datos
ingeridos, y ejecuta el cuaderno de puntuación. El cuaderno de puntuación usa el
modelo entrenado de Spark MLlib para crear predicciones a partir de las
observaciones en el conjunto de datos de puntuación. Las predicciones se guardan en el
almacén de resultados, un nuevo conjunto de datos del almacén de datos de Databricks.

Scheduler. Un trabajo programado de Databricks maneja la puntuación por lotes con


el modelo de Spark. El trabajo ejecuta el cuaderno de canalización de puntuación,
pasando argumentos variables a través de los parámetros del cuaderno para así
especificar los detalles para crear el conjunto de datos de puntuación y saber dónde
almacenar el conjunto de datos de resultados.

Detalles de la solución
El escenario se crea como un flujo de canalización. Cada cuaderno está optimizado para
realizar una configuración por lotes en cada una de estas operaciones: ingestión,
ingeniería de características, compilación de modelos y puntuación de modelos. El
cuaderno de ingeniería de características está diseñado para crear un conjunto de datos
general para cualquiera de las operaciones de entrenamiento, calibración, prueba o
puntuación. En este escenario, usaremos una estrategia de división temporal para estas
operaciones, por lo que los parámetros del cuaderno se usan para configurar el filtrado
del rango de fechas.

Como el escenario crea una canalización por lotes, proporcionaremos un conjunto de


cuadernos de revisión opcionales para así poder explorar la salida de los cuadernos de
canalizaciones. Puede encontrar estos cuadernos en la carpeta de cuadernos del
repositorio de GitHub :

1a_raw-data_exploring.ipynb
2a_feature_exploration.ipynb

2b_model_testing.ipynb

3b_model_scoring_evaluation.ipynb

Posibles casos de uso


Una empresa en una industria de activos pesados quiere minimizar los costos y el
tiempo de inactividad asociados a errores mecánicos inesperados. Al usar los datos de
IoT recopilados de sus máquinas, pueden crear un modelo de mantenimiento
predictivo. Gracias a este modelo, la empresa puede mantener los componentes de
manera proactiva y repararlos antes de que se produzca un error. Al maximizar el uso de
componentes mecánicos, pueden controlar los costos y reducir el tiempo de inactividad.

A su vez, un modelo de mantenimiento predictivo recopila datos de las máquinas y


conserva un historial con ejemplos de los errores de los componentes. A continuación,
el modelo se puede usar para supervisar el estado actual de los componentes y predecir
si un componente dado generará un error próximamente. Para casos de uso comunes y
enfoques de modelado, consulte Guía de Azure AI para soluciones de mantenimiento
predictivo.

Esta arquitectura de referencia está diseñada para cargas de trabajo que se


desencadenan debido a la presencia de nuevos datos de las máquinas componentes. El
procesamiento implica los siguientes pasos:

1. Introduzca los datos del almacén de datos externo en un almacén de datos de


Azure Databricks.

2. Entrene un modelo de Machine Learning transformando los datos en un conjunto


de datos de entrenamiento y, a continuación, compilando un modelo de Spark
MLlib. MLlib consta de los algoritmos y utilidades de Machine Learning más
comunes optimizados para aprovechar las capacidades de escalabilidad de los
datos de Spark.

3. Aplique el modelo entrenado para predecir (o clasificar) los errores de los


componentes transformando los datos en un conjunto de datos de puntuación.
Puntúe los datos con el modelo de Spark MLLib.

4. Almacene los resultados en el almacén de datos de Databricks para usarlos


después del procesamiento.

Los cuadernos se proporcionan en GitHub para realizar cada una de estas tareas.

Recomendaciones
Databricks está configurado para que pueda cargar e implementar los modelos
entrenados y así poder hacer predicciones con datos nuevos. Databricks también
proporciona otras ventajas:

Compatibilidad con el inicio de sesión único con credenciales de Microsoft Entra.


Un programador de trabajos para ejecutar trabajos de procesos de producción.
Un cuaderno totalmente interactivo que permite la colaboración entre usuarios,
además de ofrecer paneles y varias API REST.
Clústeres ilimitados que pueden escalarse en cualquier tamaño.
Seguridad avanzada, controles de acceso basados en roles y registros de auditoría.

Para interactuar con el servicio de Azure Databricks, use la interfaz del área de trabajo
de Databricks en un navegador web o en la interfaz de la línea de comandos (CLI).
Puede obtener acceso a la CLI de Databricks desde cualquier plataforma que admita
Python (versiones 2.7.9 a 3.6).

La implementación de referencia usa cuadernos para ejecutar tareas en secuencia.


Cada cuaderno almacena artefactos de datos intermedios (de entrenamiento, prueba,
puntuación o conjuntos de datos de resultados) en el mismo almacén de datos que los
datos de entrada. El objetivo es facilitarle las cosas según su caso de uso particular. En la
práctica, debe conectar el origen de datos a su instancia de Azure Databricks para que
los cuadernos puedan leer y escribir directamente en el almacenamiento.

Supervise la ejecución de trabajos a través de la interfaz de usuario de Databricks, el


almacén de datos o la CLI de Databricks según sea necesario. Supervise el clúster
mediante el registro de eventos y otras métricas que proporciona Databricks.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Rendimiento
Un clúster de Azure Databricks habilita el escalado automático de manera
predeterminada para que, durante el tiempo de ejecución, Databricks reasigne
dinámicamente los roles de trabajo para que tengan en cuenta las características de su
trabajo. Ciertas partes de la canalización pueden ser más exigentes en el cálculo que
otras. Databricks agrega roles de trabajo adicionales durante estas fases del trabajo (y
los elimina cuando ya no son necesarios). El escalado automático hace que sea más fácil
lograr un uso del clúster elevado, ya que no es necesario aprovisionar ese clúster para
que coincida con una carga de trabajo.

Desarrolle canalizaciones programadas más complejas mediante Azure Data Factory


con Azure Databricks.

Storage
En esta implementación de referencia, los datos se guardan directamente en el
almacenamiento de Databricks para facilitarle las cosas. Sin embargo, en una
configuración de producción, puede almacenar los datos en un almacenamiento de
datos en la nube como Azure Blob Storage . Databricks también es compatible con
Azure Data Lake Store , Azure Synapse Analytics , Azure Cosmos DB , Apache
Kafka y Apache Hadoop .

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

En general, use la calculadora de precios de Azure para calcular los costos. Otras
consideraciones se describen en la sección Costo de Marco de buena arquitectura de
Microsoft Azure.

Azure Databricks es una oferta premium de Spark con un costo asociado. Además,
puede optar por planes de tarifa estándar y premium de Databricks.

En este ejemplo el plan de tarifa estándar es suficiente. Sin embargo, si su aplicación


específica debe escalar clústeres automáticamente para controlar cargas de trabajo más
grandes o paneles interactivos de Databricks, el nivel premium podría aumentar los
costos aún más.

Para eliminar paquetes específicos de Databricks, los cuadernos de soluciones pueden


ejecutarse en cualquier plataforma basada en Spark si se realizan unos cambios
mínimos. Consulte las siguientes soluciones similares para varias plataformas de Azure:

SQL Server R Services


PySpark on an Azure Data Science Virtual Machine (PySpark en Azure Data
Science Virtual Machine)

Implementación de este escenario


Para implementar esta arquitectura de referencia, siga los pasos descritos en el
repositorio de GitHub para crear una solución escalable para puntuar lotes de
modelos de Spark en Azure Databricks.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

John Ehrlinger | Científico aplicado sénior

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Ciencia de datos con Azure Databricks
Implementación de canalizaciones de inferencia por lotes con Azure Machine
Learning
Tutorial: Creación de una canalización de Azure Machine Learning para la
puntuación por lotes

Recursos relacionados
Compilación de una API de recomendaciones en tiempo real en Azure
Puntuación por lotes para modelos de aprendizaje profundo con canalizaciones de
Azure Machine Learning
Puntuación por lotes de modelos de Python en Azure
Creación de un bot
conversacional de nivel
empresarial
Servicio de Bot de Azure AI Servicios de Azure AI

Esta arquitectura de referencia describe cómo crear un bot conversacional (chatbot) de


nivel empresarial mediante Azure Bot Framework .

Architecture
Security and governance
Azure AD Key Vault
Identity and Keys and secrets
access control

2 3
Authenticate,
Token, keys
authorize Data ETL Raw data
Bot logic and UX Bot cognition and intelligence Azure Functions
1 Request Bot Service 4 Queries LUIS Web App Custom serverless
Input channels, Custom model for compute Structured
Intents and entities Data Data
authentication unstructured Q&A CRM, SQL, etc.
Data Factory
Bot Logic QnA Maker Scheduled ETL
User 7 Response 5 Results Azure Search
pipelines
Custom bot code Knowledge base Search index
(FAQs)
Unstructured
Logic Apps
Improved bot intelligence FAQs, PDFs,
Data connectors DOCs, etc.
6
End-to-end testing, Quality assurance and enhancements
Conversations,
new features
feedback, logs Enhanced data collection
Azure DevOps, VS Code

Logs Retraining, testing,


Logging debugging, feedback
analysis Bot testing utility
Application Insights
Web and system
logs Monitoring and reporting
Bot logging utility Cosmos DB Application Insights Power BI
Conversations, Logs Dashboards and Dashboards and Emails, alerts
Bot feedback feedback analytics analytics User initiated
utility
Azure Storage System initiated
SendGrid Web App DevOps
Conversations, Email service Custom dashboard Best-practice
feedback, logs utility sample

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
En la arquitectura que se muestra a continuación se emplean los siguientes servicios de
Azure. Puede que su propio bot no use todos estos servicios o que se incorporen
servicios adicionales.

Lógica del bot y experiencia del usuario


Bot Framework Service (BFS). Este servicio conecta el bot a una aplicación de
comunicación, como Cortana, Facebook Messenger o Slack. Lo que hace es facilitar
la comunicación entre su bot y el usuario.
Azure App Service . La lógica de aplicación del bot se hospeda en Azure App
Service.

Inteligencia y conocimiento del bot


Language Understanding (LUIS). LUIS, parte de Azure Cognitive Services, permite
que el bot comprenda el lenguaje natural mediante la identificación de las
intenciones y entidades del usuario.
Azure Search . Search es un servicio administrado que proporciona un índice
rápido de documentos que permiten búsqueda.
QnA Maker . QnA Maker es un servicio de API basado en la nube que crea una
capa de conversación, preguntas y respuestas mediante los datos. Normalmente,
se carga con contenido semiestructurado, como preguntas frecuentes. Úselo para
crear una base de conocimiento para responder a preguntas en lenguaje natural.
Aplicación web . Si su bot necesita soluciones de inteligencia artificial que no
proporciona un servicio existente, puede implementar su propia inteligencia
artificial personalizada y hospedarla como una aplicación web. De esta forma se
proporciona un punto de conexión web al que llama el bot.

Ingesta de datos

El bot se basará en datos sin procesar que se deben ingerir y preparar. Considere
cualquiera de las siguientes opciones para organizar este proceso:

Azure Data Factory . Data Factory organiza y automatiza el movimiento y la


transformación de datos.
Logic Apps . Logic Apps es una plataforma sin servidor para la creación de flujos
de trabajo que integran aplicaciones, datos y servicios. Logic Apps proporciona
conectores de datos para muchas aplicaciones, incluido Office 365.
Azure Functions . Puede usar Azure Functions para escribir código sin servidor
personalizado que se invoca mediante un desencadenador; por ejemplo, cada vez
que se agrega un documento a Blob Storage o Cosmos DB.

Registro y supervisión
Application Insights . Use Application Insights para registrar las métricas de
aplicación del bot con fines de análisis, supervisión y diagnóstico.
Azure Blob Storage . El almacenamiento de blobs está optimizado para almacenar
grandes cantidades de datos no estructurados.
Azure Cosmos DB . Azure Cosmos DB es ideal para almacenar datos de registro
semiestructurados, como las conversaciones.
Power BI . Use Power BI para crear paneles de supervisión para el bot.

Seguridad y gobernanza
Microsoft Entra ID. Los usuarios se autentican mediante un proveedor de
identidades como Microsoft Entra ID. Bot Service controla el flujo de autenticación
y la administración de tokens de OAuth. Consulte Incorporación de autenticación
al bot mediante Azure Bot Service.
Azure Key Vault . Almacene las credenciales y otros secretos con Key Vault.

Control de calidad y mejoras

Azure DevOps . Proporciona muchos servicios para la administración de


aplicaciones, como control de código fuente, compilación, prueba, implementación
y seguimiento de proyectos.
VS Code . Un editor de código ligero para el desarrollo de aplicaciones. Puede
usar cualquier otro IDE con características similares.

Componentes
Bot Framework Service
Azure App Service
Azure Cognitive Services
Azure Search
Azure Data Factory
Azure Logic Apps
Funciones de Azure
Application Insights es una característica de Azure Monitor
Azure Blob Storage
Azure Cosmos DB
Microsoft Entra ID
Azure Key Vault

Detalles del escenario


Cada bot es diferente, pero hay algunos patrones, flujos de trabajo y tecnologías
comunes que se deben tener en cuenta. En concreto, para que un bot atienda cargas de
trabajo empresariales, hay muchos aspectos de diseño que se deben tener en cuenta
más allá de simplemente la funcionalidad básica.

Los ejemplos de utilidad del procedimiento recomendado que se usan en esta


arquitectura son totalmente de código abierto y están disponibles en GitHub .

Posibles casos de uso


Esta solución es ideal para el sector de las telecomunicaciones. En este artículo se tratan
los aspectos de diseño más esenciales y se presentan las herramientas necesarias para
crear un bot sólido, seguro y de aprendizaje activo.

Recomendaciones
En líneas generales, un bot conversacional se puede dividir en la funcionalidad del bot
(el "cerebro") y un conjunto de requisitos adyacentes (el "cuerpo"). El cerebro incluye los
componentes dependientes del dominio, como la lógica del bot y las funcionalidades de
ML. Otros componentes son independientes del dominio y abordan los requisitos no
funcionales como CI/CD, control de calidad y seguridad.

Antes de entrar en los detalles de esta arquitectura, comencemos con el flujo de datos
que recorre cada subcomponente del diseño. El flujo de datos incluye flujos de datos
iniciados por el sistema e iniciados por el usuario.
Flujo de mensajes de usuario
Autenticación. Para comenzar, los usuarios se autentican mediante cualquier
mecanismo proporcionado por su canal de comunicación con el bot. Bot Framework
admite muchos canales de comunicación, como Cortana, Microsoft Teams, Facebook
Messenger, Kik y Slack. Para ver una lista de canales, consulte Conexión de un bot a
canales. Cuando se crea un bot con Azure Bot Service, el canal Chat en web se configura
automáticamente. Este canal permite a los usuarios interactuar con el bot directamente
en una página web. También puede conectar el bot a una aplicación personalizada
mediante el canal Direct Line. La identidad del usuario se usa para proporcionar control
de acceso basado en rol, así como para servir contenido personalizado.

Mensaje de usuario. Una vez autenticado, el usuario envía un mensaje al bot. El bot lee
el mensaje y lo enruta a un servicio de comprensión de lenguaje natural, como LUIS. En
este paso se obtienen las intenciones (lo que el usuario quiere hacer) y las entidades
(las cosas que le interesan al usuario). Luego, el bot crea una consulta que pasa a un
servicio que proporciona información, como Azure Search para la recuperación de
documentos, QnA Maker para preguntas frecuentes, o a una base de conocimiento
personalizada. El bot usa estos resultados para construir una respuesta. Para
proporcionar el mejor resultado a una consulta determinada, el bot puede realizar varias
llamadas de un lado para otro a estos servicios remotos.

Respuesta. En este momento, el bot ha determinado la mejor respuesta y la envía al


usuario. Si la puntuación de confianza de la mejor respuesta coincidente es baja, la
respuesta podría ser una pregunta de desambiguación o una confirmación de que el
bot no ha podido responder de forma adecuada.

Registro. Cuando se recibe una solicitud de usuario o se envía una respuesta, se deben
registrar todas las acciones de la conversación en un almacén de registro, junto con las
métricas de rendimiento y los errores generales de servicios externos. Estos registros
serán útiles más adelante a la hora de diagnosticar problemas y mejorar el sistema.

Comentarios. Otra buena práctica consiste en recopilar los comentarios y las


puntuaciones de satisfacción de los usuarios. Como seguimiento a la respuesta final del
bot, este debe pedir al usuario que valore su grado de satisfacción con la respuesta. Los
comentarios pueden ayudarle a resolver el problema de arranque en frío de
comprensión del lenguaje natural y a mejorar continuamente la precisión de las
respuestas.

Flujo de datos del sistema


ETL. El bot se basa en la información y los conocimientos extraídos de los datos sin
procesar mediante un proceso de ETL en el back-end. Estos datos pueden ser
estructurados (base de datos SQL), semiestructurados (sistema CRM, preguntas
frecuentes) o no estructurados (documentos de Word, PDF, registros web). Un
subsistema ETL extrae los datos según una programación fija. El contenido se
transforma y enriquece, y luego se carga en un almacén de datos intermedio, como
Azure Cosmos DB o Azure Blob Storage.

A continuación, los datos del almacén intermedio se indexan en Azure Search para la
recuperación de documentos, se cargan en QnA Maker para crear pares de preguntas y
respuestas o se cargan en una aplicación web personalizada para el procesamiento de
texto no estructurado. Los datos también se usan para entrenar un modelo de LUIS para
la extracción de intenciones y entidades.

Control de calidad. Los registros de conversación se usan para diagnosticar y corregir


errores, proporcionar conclusiones sobre cómo se usa un bot y realizar el seguimiento
del rendimiento general. Los datos de comentarios son útiles para volver a entrenar los
modelos de AI a fin de mejorar el rendimiento del bot.

Compilación de un bot
Antes de escribir una sola línea de código, es importante escribir una especificación
funcional para que el equipo de desarrollo tenga una idea clara de lo que se espera que
haga el bot. La especificación debe incluir una lista razonablemente completa de
entradas de usuario y las respuestas del bot esperadas en diversos dominios de
conocimiento. Este documento dinámico será una valiosa guía para desarrollar y probar
el bot.

Ingerir datos
A continuación, identifique los orígenes de datos que permitirán al bot interactuar de
forma inteligente con los usuarios. Como se ha mencionado anteriormente, estos
orígenes de datos podrían contener conjuntos de datos estructurados,
semiestructurados o no estructurados. Al principio, un buen enfoque es hacer una copia
única de los datos en un almacén central, como Azure Cosmos DB o Azure Storage. A
medida que avance, deberá crear una canalización de ingesta de datos automatizada
para mantener estos datos actualizados. Las opciones de una canalización de ingesta
automatizada incluyen Data Factory, Functions y Logic Apps. En función de los
almacenes de datos y los esquemas, puede usar una combinación de estos enfoques.
En los comienzos, es razonable usar Azure Portal para crear manualmente recursos de
Azure. Más tarde, debe centrarse más en automatizar la implementación de estos
recursos.

Lógica básica del bot y UX


Una vez que tenga una especificación y algunos datos, es el momento de empezar a
hacer realidad su bot. Vamos a centrarnos en la lógica básica del bot. Este es el código
que controla la conversación con el usuario, lo que incluye la lógica de enrutamiento, la
lógica de desambiguación y el registro. Para comenzar, familiarícese con Bot
Framework , por ejemplo:

Los conceptos básicos y la terminología usada en el marco de trabajo, en especial


conversaciones, turnos y actividades.
El servicio Bot Connector, que controla la interconexión entre el bot y los canales.
Cómo se mantiene el estado de la conversación, bien en memoria o, mejor aún, en
un almacén como Azure Blob Storage o Azure Cosmos DB.
El middleware, y cómo se puede usar para enlazar el bot con servicios externos,
como Cognitive Services.

Para enriquecer la experiencia del usuario, hay muchas opciones.

Puede usar tarjetas para incluir botones, imágenes, carruseles y menús.


Un bot puede admitir voz.
Incluso puede insertar el bot en una aplicación o sitio web y usar las
funcionalidades de la aplicación que lo hospeda.

Para comenzar, puede crear su bot en línea mediante Azure Bot Service; para ello,
seleccione entre las plantillas de C# y Node.js disponibles. Sin embargo, a medida que el
bot se haga más sofisticado, deberá crear el bot localmente y, luego, implementarlo en
la web. Elija un IDE, como Visual Studio o Visual Studio Code, y un lenguaje de
programación. Hay disponibles SDK para los siguientes lenguajes:

C#
JavaScript
Java (versión preliminar)
Python (versión preliminar)

Como punto de partida, puede descargar el código fuente del bot que creó con Azure
Bot Service. También puede encontrar ejemplo de código , desde bots de eco sencillos
a bots más sofisticados que se integran con diversos servicios de inteligencia artificial.
Incorporación de inteligencia al bot
En el caso de un bot sencillo con una lista de comandos bien definida, podría usar un
enfoque basado en reglas para analizar la entrada del usuario mediante regex. La
ventaja de este enfoque es que es determinista y comprensible. Sin embargo, cuando el
bot necesite comprender las intenciones y entidades de un mensaje en un lenguaje más
natural, hay servicios de inteligencia artificial que pueden ayudar.

LUIS está diseñado específicamente para comprender las intenciones y entidades


de los usuarios. Se entrena con una colección de tamaño medio de entradas de
usuario apropiadas y respuestas deseadas, y devuelve las intenciones y entidades
para el mensaje de un usuario determinado.

Azure Search puede funcionar en combinación con LUIS. Con Search, se crean
índices que permiten búsqueda sobre todos los datos apropiados. El bot consulta
estos índices para encontrar las entidades extraídas por LUIS. Azure Search
también admite sinónimos, que pueden ampliar la red de asignaciones de palabras
correctas.

QnA Maker es otro servicio que está diseñado para devolver respuestas a
preguntas dadas. Normalmente se entrena sobre datos semiestructurados, como
preguntas frecuentes.

El bot puede usar otros servicios de inteligencia artificial para enriquecer todavía más la
experiencia del usuario. El conjunto de aplicaciones de Cognitive Services de servicios de
inteligencia artificial pregenerados (que incluye LUIS y QnA Maker) dispone de
servicios de visión, voz, lenguaje, búsqueda y ubicación. Puede agregar rápidamente
funcionalidades, como traducción de idiomas, corrector ortográfico, análisis de
opiniones, OCR, reconocimiento de ubicación y moderación de contenido. Estos
servicios pueden estar conectados en el bot como módulos de middleware para
interactuar de forma más natural e inteligente con el usuario.

Otra opción consiste en integrar su propio servicio de inteligencia artificial


personalizado. Este enfoque es más complejo, pero le ofrece una flexibilidad completa
en cuanto al algoritmo, el entrenamiento y el modelo de aprendizaje automático. Por
ejemplo, podría implementar su propio modelado de temas y usar un algoritmo, como
LDA para buscar documentos similares o apropiados. Un buen enfoque es exponer la
solución de inteligencia artificial personalizada como un punto de conexión de servicio
web y llamar al punto de conexión desde la lógica básica del bot. El servicio web podría
hospedarse en App Service o en un clúster de máquinas virtuales. Azure Machine
Learning proporciona una serie de servicios y bibliotecas para ayudarle a entrenar e
implementar sus modelos.
Control de calidad y mejora
Registro. Registre las conversaciones del usuario con el bot, como las métricas de
rendimiento subyacente y los posibles errores. Estos registros son muy valiosos para
depurar problemas, comprender las interacciones del usuario y mejorar el sistema.
Distintos almacenes de datos podrían ser adecuados para distintos tipos de registros.
Por ejemplo, considere la posibilidad de usar Application Insights para registros web,
Azure Cosmos DB para conversaciones y Azure Storage para grandes cargas. Consulte
Escritura directa en Azure Storage.

Comentarios. También es importante comprender el grado de satisfacción de los


usuarios con sus interacciones del bot. Si tiene un registro de comentarios del usuario,
puede usar estos datos para centrar su trabajo en mejorar ciertas interacciones y volver
a entrenar los modelos de inteligencia artificial para mejorar el rendimiento. Use los
comentarios para volver a entrenar los modelos, por ejemplo, LUIS, en el sistema.

Pruebas Probar un bot supone pruebas unitarias, pruebas de integración, pruebas de


regresión y pruebas funcionales. Para las pruebas, se recomienda registrar las respuestas
HTTP reales de servicios externos, como Azure Search o QnA Maker, para que se puedan
reproducir durante la prueba unitaria sin necesidad de realizar llamadas de red reales a
servicios externos.

7 Nota

Para iniciar el desarrollo en estas áreas, examine las utilidades de Botbuilder para
JavaScript . Este repositorio contiene código de utilidad de ejemplo para los bots
creados con Microsoft Bot Framework v4 que se ejecutan en Node.js. Incluye los
siguientes paquetes:

Almacén de registro de Azure Cosmos DB . Muestra cómo almacenar y


consultar registros de bots en Azure Cosmos DB.
Almacén de registro de Application Insights . Muestra cómo almacenar y
consultar registros de bots en Application Insights.
Middleware de recopilación de comentarios . Middleware de ejemplo que
proporciona un mecanismo de solicitud de comentarios de usuarios del bot.
Grabadora de prueba HTTP . Registra el tráfico HTTP de servicios externos
al bot. Viene pregenerada con compatibilidad para LUIS, Azure Search y
QnAMaker, pero hay extensiones disponibles para admitir cualquier servicio.
Esto le ayuda a automatizar las pruebas del bot.
Estos paquetes se proporcionan como ejemplo de código de utilidades y se
incluyen sin garantía de compatibilidad o actualización.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Disponibilidad
Al implementar nuevas características o corregir errores en el bot, es mejor usar varios
entornos de implementación, como ensayo y producción. El uso de ranuras de
implementación de Azure DevOps le permite hacer esto sin tiempo de inactividad.
Puede probar las actualizaciones más recientes en el entorno de ensayo antes de
pasarlas al entorno de producción. En términos de control de carga, App Service está
diseñado para escalarse vertical u horizontalmente de forma manual o automática.
Como el bot se hospeda en la infraestructura del centro de datos global de Microsoft, el
Acuerdo de Nivel de Servicio de App Service promete alta disponibilidad.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Al igual que con cualquier otra aplicación, el bot puede diseñarse para gestionar datos
confidenciales. Por lo tanto, restrinja quién puede iniciar sesión y usar el bot. También,
limite a qué datos se puede tener acceso, según la identidad o el rol del usuario. Use
Microsoft Entra ID para el control de identidad y acceso y Key Vault para administrar
claves y secretos.

DevOps

Supervisión e informes
Una vez que su bot se ejecuta en producción, necesitará un equipo de DevOps para
mantenerlo así. Supervise continuamente el sistema para asegurarse de que el bot
funciona a pleno rendimiento. Use los registros que se enviaron a Application Insights o
Azure Cosmos DB para crear paneles de supervisión, mediante Application Insights,
Power BI o un panel de aplicación web personalizado. Envíe alertas al equipo de DevOps
si se producen errores críticos o el rendimiento cae por debajo de un umbral aceptable.

Implementación automatizada de recursos


El bot en sí mismo es solo una parte de un sistema más grande que proporciona los
datos más recientes y garantiza su funcionamiento correcto. Se deben implementar
todos estos otros recursos de Azure: servicios de orquestación de datos como Data
Factory, servicios de almacenamiento como Azure Cosmos DB, etc. Azure Resource
Manager proporciona una capa de administración coherente a la que se puede acceder
mediante Azure Portal, PowerShell o la CLI de Azure. Por velocidad y coherencia, es
mejor automatizar la implementación mediante uno de estos enfoques.

Implementación continua de bots

Puede implementar la lógica del bot directamente desde el IDE o desde una línea de
comandos, como la CLI de Azure. A medida que crezca su bot, sin embargo, es mejor
usar un proceso de implementación continua mediante una solución de CI/CD como
Azure DevOps, como se describe en el artículo Configurar la implementación continua.
Esta es una buena manera de eliminar la fricción en la prueba de nuevas características y
corregir el bot en un entorno cercano al de producción. También es una buena idea
tener varios entornos de implementación, al menos normalmente ensayo y producción.
Azure DevOps admite este enfoque.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Puede usar la calculadora de precios de Azure para calcular los costos. Estas son
algunas otras consideraciones.

Aplicación de bot
En esta arquitectura, el principal generador de costos es la instancia de Azure App
Service donde se hospeda la lógica de aplicación de bot. Elija el nivel del plan de App
Service que mejor se adapte a sus necesidades. Estas son algunas recomendaciones:
Use los niveles Gratis y Compartido (versión preliminar) para realizar pruebas, ya
que los recursos compartidos no se pueden escalar horizontalmente.
Ejecute la carga de trabajo de producción en los niveles Básico, Estándar y
Premium, ya que la aplicación se ejecuta en instancias de máquina virtual
dedicadas y tiene recursos asignados que se pueden escalar horizontalmente. Los
planes de App Service se facturan por segundo.

Se le cobra por las instancias del plan de App Service, aunque la aplicación esté
detenida. Elimine los planes que no pretenda usar a largo plazo, como las
implementaciones de pruebas.

Vea ¿Cuánto cuesta mi plan de App Service? para obtener más información.

Ingesta de datos
Azure Data Factory

En esta arquitectura, Data Factory automatiza la canalización de la ingesta de


datos. Explore una variedad de capacidades de integración de datos para ajustarse
a sus necesidades presupuestarias, desde SQL Server Integration Services
administrado para realizar una migración sin problemas de proyectos de
SQL Server a la nube (opción rentable) hasta canalizaciones de datos sin servidor a
gran escala para la integración de datos de todas las formas y tamaños.

Para obtener un ejemplo, vea Azure Data Factory: ejemplo de análisis de costos.

Azure Functions

En esta arquitectura de referencia, Azure Functions se factura según el plan


Consumo. La cantidad que se cobra se basa en el consumo de recursos por
segundo y cada vez que un evento desencadena la ejecución de la función. El
procesamiento de varios eventos en una sola ejecución o los lotes pueden reducir
el costo.

Azure escala la infraestructura necesaria para ejecutar funciones según sea


necesario. Cuando la carga de trabajo es baja, la infraestructura se reduce
verticalmente a cero sin ningún costo asociado. Siempre que la carga de trabajo
crece, Azure usa la capacidad suficiente para atender toda la demanda. Dado que
paga por el uso real, debe administrar el costo exacto de cada componente.

Logic Apps
Para calcular los precios de Logic Apps se usa el modelo de pago por uso. Logic Apps
tiene un modelo de precios de pago por uso. Cada vez que se ejecuta una aplicación
lógica se miden los desencadenadores, las acciones y las ejecuciones de conectores.
Todas las acciones, tanto las correctas como las incorrectas, entre las que se incluyen los
desencadenadores, se consideran ejecuciones.

Por ejemplo, su aplicación lógica procesa 1000 mensajes al día desde Azure Service Bus.
Un flujo de trabajo de cinco acciones costará menos de 6 USD. Para obtener más
información, consulte Precios de Logic Apps .

Para obtener otras consideraciones sobre el costo, vea la sección Costo de Marco de
buena arquitectura de Microsoft Azure.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Robert Alexander | Ingeniero sénior de software


Abhinav Mithal | Ingeniero principal de software

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Revise la plantilla Asistente virtual para empezar a crear rápidamente bots de
conversación.

Documentación del producto:

Language Understanding (LUIS)


Azure App Service
QnA Maker
Azure Data Factory
¿Qué es Azure Logic Apps?
Funciones de Azure

Módulos de entrenamiento de Microsoft Learn:

Creación de bots inteligentes con Azure Bot Service


Compilación de un bot con QnA Maker y Azure Bot Service
Recursos relacionados
Conversión de voz a texto
Compilación de una API de
recomendaciones en tiempo real
en Azure
Azure Cosmos DB Azure Databricks Azure Kubernetes Service (AKS) Azure Machine Learning

Esta arquitectura de referencia muestra cómo entrenar un modelo de recomendación


mediante Azure Databricks y cómo implementarlo después como una API mediante el
uso de Azure Cosmos DB, Azure Machine Learning y Azure Kubernetes Service (AKS).
Para consultar una implementación de referencia de esta arquitectura, vea Creación de
una API de recomendaciones en tiempo real en GitHub.

Architecture

Descargue un archivo Visio de esta arquitectura.

Esta arquitectura de referencia sirve para entrenar e implementar una API del servicio de
recomendaciones en tiempo real que pueda proporcionar las recomendaciones de las
diez mejores películas para un usuario.

Flujo de datos
1. Seguimiento de los comportamientos de los usuarios. Por ejemplo, un servicio de
back-end podría crear un registro cada vez que un usuario evalúa una película o
hace clic en un artículo acerca de un producto o una noticia.
2. Cargue los datos en Azure Databricks desde un origen de datos disponible.
3. Prepare los datos y divídalos en conjuntos de entrenamiento y de pruebas para
entrenar el modelo (en esta guía se describen las opciones para dividir los
datos).
4. Ajuste el modelo de filtrado en colaboración de Spark a los datos.
5. Evalúe la calidad del modelo mediante métricas de clasificación. (En esta guía se
proporcionan detalles sobre las métricas que puede usar para evaluar los
recomendadores).
6. Calcule previamente las diez principales recomendaciones por usuario y
almacénelas como una memoria caché en Azure Cosmos DB.
7. Implemente un servicio de API en AKS mediante las API de Machine Learning para
incluir la API en un contenedor e implementarla.
8. Cuando el servicio de back-end recibe una solicitud de un usuario, llame a la API
de recomendaciones hospedada en AKS para obtener las diez principales
recomendaciones y mostrárselas al usuario.

Componentes
Azure Databricks . Databricks es un entorno de desarrollo que se usa para
preparar los datos de entrada y entrenar el modelo de recomendación en un
clúster de Spark. Azure Databricks también proporciona un área de trabajo
interactiva para ejecutar cuadernos y colaborar en ellos en todas las tareas de
procesamiento de datos o aprendizaje automático.
Azure Kubernetes Service (AKS). AKS se usa para implementar y hacer operativa
una API de servicio de un modelo de Machine Learning en un clúster de
Kubernetes. AKS hospeda el modelo en contenedores, lo que proporciona una
escalabilidad que cumple los requisitos de rendimiento, la administración de
identidades y accesos, y la supervisión del registro y mantenimiento.
Azure Cosmos DB . Azure Cosmos DB es un servicio de base de datos distribuida
globalmente que se utiliza para almacenar las diez películas recomendadas a cada
usuario. Azure Cosmos DB es ideal para este escenario, ya que proporciona baja
latencia (10 ms en el percentil 99) para leer los principales elementos
recomendados para un usuario dado.
Aprendizaje automático . Este servicio se utiliza para realizar un seguimiento y
administrar modelos de Machine Learning y, después, empaquetar e implementar
dichos modelos en un entorno de AKS escalable.
Microsoft Recommenders . Este repositorio de código abierto contiene código y
ejemplos de la utilidad que ayudan a los usuarios empezar a compilar, evaluar y
poner en marcha un sistema de recomendaciones.

Detalles del escenario


Esta arquitectura se puede generalizar para la mayoría de los escenarios del motor de
recomendaciones, lo que incluye recomendaciones de productos, películas y noticias.

Posibles casos de uso


Escenario: Una organización de elementos multimedia desea proporcionar
recomendaciones de películas o vídeos a sus usuarios. Al proporcionar
recomendaciones personalizadas, la organización cumple varios objetivos empresariales,
entre los que se incluyen una mayor proporción de clics, un aumento en la interacción
en su sitio web y una mayor satisfacción del usuario.

Esta solución está optimizada para el sector minorista y los sectores de multimedia y
entretenimiento.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

En Puntuación por lotes de modelos de Spark en Azure Databricks se describe una


arquitectura de referencia que usa Spark y Azure Databricks para ejecutar procesos de
puntuación por lotes programados. Se recomienda este enfoque para generar nuevas
recomendaciones.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

El rendimiento es una consideración primordial para las recomendaciones en tiempo


real, ya que las recomendaciones normalmente se encuentran en la ruta crítica de la
solicitud que un usuario realiza en su sitio web.

La combinación de AKS y Azure Cosmos DB permite a esta arquitectura proporcionar un


buen punto de partida para ofrecer recomendaciones para una carga de trabajo de
tamaño medio con una sobrecarga mínima. En una prueba de carga con 200 usuarios
simultáneos, esta arquitectura proporciona recomendaciones a una latencia mediana de
aproximadamente 60 ms y funciona con un rendimiento de 180 solicitudes por
segundo. La prueba de carga se ejecutó en la configuración de implementación
predeterminado [un clúster de AKS 3x D3 v2 con 12 vCPU, 42 GB de memoria y 11 000
unidades de solicitud (RU) por segundo aprovisionadas para Azure Cosmos DB].

Azure Cosmos DB se recomienda por su distribución global llave en mano y su utilidad


para satisfacer todos los requisitos de base de datos que tiene la aplicación. Para reducir
la latencia ligeramente, considere la posibilidad de usar Azure Cache for Redis en
lugar de Azure Cosmos DB para atender las búsquedas. Azure Cache for Redis puede
mejorar el rendimiento de los sistemas que usan intensamente los datos de almacenes
de back-end.

Escalabilidad
Si no planea usar Spark o tiene una carga de trabajo más pequeña que no necesita la
distribución, considere la posibilidad de usar Data Science Virtual Machine (DSVM) en
lugar de Azure Databricks. DSVM es una máquina virtual de Azure con marcos y
herramientas de aprendizaje profundo para el aprendizaje automático y la ciencia de
datos. Igual que sucede con Azure Databricks, cualquier modelo que se crea en una
instancia de DSVM puedan usarse como un servicio en AKS mediante Machine Learning.

Durante el entrenamiento, aprovisione un clúster de Spark de mayor tamaño fijo en


Azure Databricks o configure el escalado automático. Cuando el escalado automático
está habilitado, Databricks supervisa la carga en el clúster y escala y reduce
verticalmente según sea necesario. Aprovisione o escale horizontalmente un clúster
mayor si tiene un tamaño de datos grande y desea reducir el tiempo que tarda en
preparar datos o modelar tareas.

Escale el clúster de AKS para satisfacer sus necesidades de rendimiento. Procure escalar
verticalmente el número de pods para utilizar plenamente el clúster y escalar la nodos
del clúster para satisfacer la demanda del servicio. También puede configurar el escalado
automático en un clúster de AKS. Para más información, consulte el documento
Implementación de un modelo en el clúster de Azure Kubernetes Service.

Para administrar el rendimiento de Azure Cosmos DB, calcule el número de operaciones


de lectura necesarias por segundo y aprovisione el número de RU por segundo
(rendimiento) necesarias. Utilice los procedimientos recomendados para crear
particiones y realizar el escalado horizontal.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Los controladores principales del costo en este escenario son:

El tamaño de clúster de Azure Databricks necesario para el entrenamiento.


El tamaño de clúster de AKS necesario para cumplir los requisitos de rendimiento.
Las unidades de solicitud de Azure Cosmos DB aprovisionadas para cumplir los
requisitos de rendimiento.
Administre los costos de Azure Databricks mediante la reducción de la frecuencia del
entrenamiento y la desactivación del clúster de Spark cuando no esté en uso. Los costos
de AKS y de Azure Cosmos DB están enlazados al rendimiento que requiere su sitio y se
escalarán y reducirán verticalmente en función del volumen de tráfico del sitio.

Implementación de este escenario


Para implementar esta arquitectura, siga las instrucciones de Azure Databricks del
documento de configuración . Brevemente, las instrucciones le indican que haga lo
siguiente:

1. Cree un área de trabajo de Azure Databricks.


2. Cree un nuevo clúster con la siguiente configuración en Azure Databricks:

Modo de clúster: Estándar


Versión de Databricks Runtime: 4.3 (incluye Apache Spark 2.3.1 y Scala 2.11)
Versión de Python: 3
Tipo de controlador: Standard_DS3_v2
Tipo de trabajo: Standard_DS3_v2 (mínimo y máximo según sea necesario)
Terminación automática: (según sea necesario)
Configuración de Spark: (según sea necesario)
Variables de entorno: (según sea necesario)

3. Cree un token de acceso personal en el área de trabajo de Azure Databricks.


Consulte la documentación de autenticación de Azure Databricks para obtener
más información.
4. Clone el repositorio de Microsoft Recommenders en un entorno en el que pueda
ejecutar scripts (por ejemplo, el equipo local).
5. Siga las instrucciones de Instalación rápida para instalar las bibliotecas
pertinentes en Azure Databricks.
6. Siga las instrucciones de configuración de Instalación rápida para preparar Azure
Databricks para la operacionalización .
7. Importe el cuaderno de operacionalización de ALS Movie en su área de trabajo.
Después de iniciar sesión en el área de trabajo de Azure Databricks, haga lo
siguiente:
a. Haga clic en Inicio en el lado izquierdo del área de trabajo.
b. Haga clic con el botón derecho en el espacio en blanco del directorio principal.
Seleccione Import (Importar).
c. Seleccione URL y pegue lo siguiente en el campo de texto:
https://github.com/Microsoft/Recommenders/blob/master/examples/05_operation
alize/als_movie_o16n.ipynb
d. Haga clic en Import.
8. Abra el cuaderno en Azure Databricks y conecte el clúster configurado.
9. Ejecute el cuaderno para crear los recursos de Azure necesarios para crear una API
de recomendaciones que proporcione las diez recomendaciones de películas
principales para un usuario determinado.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Miguel Fierro | Responsable principal de científicos de datos


Nikhil Joglekar | Responsable de producto, algoritmos de Azure y ciencia de
datos

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Compilación de una API de recomendaciones en tiempo real
¿Qué es Azure Databricks?
Azure Kubernetes Service
Bienvenido a Azure Cosmos DB
¿Qué es Azure Machine Learning?

Recursos relacionados
Puntuación por lotes de modelos de Spark en Azure Databricks
Creación de un sistema de recomendaciones basado en contenido
Asistente de venta al por menor con funcionalidades visuales
Creación de soluciones de marketing personalizadas casi en tiempo real
Ofertas personalizadas
Compilación e implementación de
una solución de análisis de redes
sociales
Servicios de Azure AI Azure Synapse Analytics Azure Machine Learning Azure Data Lake

Power BI Embedded

Para satisfacer mejor las necesidades de los clientes, las organizaciones deben extraer
información de las redes sociales sobre sus clientes. En este artículo se presenta una
solución para analizar noticias y datos de redes sociales. La solución extiende el
Acelerador de soluciones de análisis de redes sociales de Azure , que proporciona a los
desarrolladores los recursos necesarios para compilar e implementar una plataforma de
supervisión de redes sociales en Azure en pocas horas. Esa plataforma recopila datos de
redes sociales y sitios web y presenta los datos en un formato que admite el proceso de
toma de decisiones empresariales.

Apache®, Apache Spark y el logotipo de la llama son marcas registradas o marcas


comerciales de Apache Software Foundation en Estados Unidos y otros países. El uso de
estas marcas no implica la aprobación de Apache Software Foundation.

Architecture

Descargue un archivo Visio de esta arquitectura.


Flujo de datos
1. Las canalizaciones de Azure Synapse Analytics ingieren datos externos y
almacenan esos datos en Azure Data Lake. Una canalización ingiere datos de las
API de noticias. La otra canalización ingiere datos de la API de Twitter.

2. Los grupos de Apache Spark en Azure Synapse Analytics se usan para procesar y
enriquecer los datos.

3. Los grupos de Spark usan los siguientes servicios:

Azure Cognitive Service para lenguaje, para el reconocimiento de entidades


con nombre (NER), la extracción de frases clave y el análisis de opiniones
Azure Cognitive Services Translator, para traducir texto
Azure Maps, para vincular datos a coordenadas geográficas

4. Los datos enriquecidos se almacenan en Data Lake.

5. Un grupo de SQL sin servidor en Azure Synapse Analytics hace que los datos
enriquecidos estén disponibles para Power BI.

6. Los paneles de Power BI Desktop proporcionan información sobre los datos.

7. Como alternativa al paso anterior, los paneles de Power BI insertados en


aplicaciones web de Azure App Service proporcionan a los usuarios de
aplicaciones web y móviles información sobre los datos.

8. Como alternativa a los pasos del 5 al 7, los datos enriquecidos se usan para
entrenar un modelo de Machine Learning personalizado en Azure Machine
Learning.

9. El modelo se implementa en un punto de conexión de Machine Learning.

10. Un punto de conexión en línea administrado se usa para la inferencia en línea y en


tiempo real, por ejemplo, en una aplicación móvil (A). Como alternativa, se usa un
punto de conexión por lotes para la inferencia de modelos sin conexión (B).

Componentes
Azure Synapse Analytics es un servicio de análisis integrado que acelera el
tiempo necesario para extraer información de los almacenes de datosy sistemas de
macrodatos.

Cognitive Service for Language consta de servicios basados en la nube que


proporcionan funcionalidad de inteligencia artificial. Puede usar las API de REST y
los SDK de la biblioteca cliente para crear inteligencia cognitiva en aplicaciones,
incluso si no tiene aptitudes de inteligencia artificial o ciencia de datos.
Características incluidas:
Reconocimiento de entidades con nombre (NER) para identificar y clasificar
personas, lugares, organizaciones y cantidades en texto no estructurado.
Extracción de frases clave para identificar puntos clave de conversación en una
publicación o un artículo.
Análisis de sentimiento para proporcionar información sobre la opinión de las
publicaciones mediante la detección de contenido positivo, negativo, neutro y
mixto.

Translator le ayuda a traducir texto al instante o por lotes en más de


100 idiomas. Este servicio usa las últimas innovaciones en la traducción
automática. Translator admite una amplia gama de casos de uso, como la
traducción de centros de llamadas, agentes de conversación multilingües y la
comunicación en la aplicación. Para conocer los idiomas que admite Translator,
consulte Traducción.

Azure Maps es un conjunto de servicios geoespaciales que le ayudan a


incorporar datos basados en la ubicación en soluciones web y móviles. Puede usar
los datos de ubicación y mapa para generar información, informar las decisiones
controladas por datos, mejorar la seguridad y mejorar las experiencias de los
clientes. Esta solución usa Azure Maps para vincular noticias y publicaciones a
coordenadas geográficas.

Data Lake es un lago de datos escalable de forma masiva para cargas de trabajo
de análisis de alto rendimiento.

App Service proporciona un marco para compilar, implementar y escalar


aplicaciones web. La característica Web Apps es un servicio para hospedar
aplicaciones web, API de REST y servidores back-end para dispositivos móviles.

Machine Learning es un entorno basado en la nube que permite entrenar,


implementar, automatizar, administrar y realizar un seguimiento de los modelos de
aprendizaje automático.

Power BI es una colección de servicios y aplicaciones de análisis. Puede usar


Power BI para conectarse y mostrar orígenes de datos no relacionados.

Alternativas
Para simplificar esta solución, elimine Machine Learning y los modelos de Machine
Learning personalizados, como se muestra en el diagrama siguiente. Para más
información, consulte Implementación de este escenario más adelante en este artículo.

Descargue un archivo Visio de esta arquitectura.

Detalles del escenario


Las campañas de marketing consisten en algo más que el mensaje que se entrega.
Cuándo y cómo entrega ese mensaje es igual de importante. Sin un enfoque analítico
controlado por datos, las campañas pueden perder fácilmente a oportunidades o
esforzarse para ganar atracción. En la actualidad, las campañas se basan a menudo en el
análisis de redes sociales, que se ha vuelto cada vez más importante para las empresas y
organizaciones de todo el mundo. Este análisis es una herramienta eficaz que se puede
usar para recibir comentarios instantáneos sobre productos y servicios, mejorar las
interacciones con los clientes para incrementar su satisfacción, mantenerse a la altura de
la competencia, etc. A menudo, las empresas carecen de formas eficaces y viables de
supervisar las conversaciones en redes sociales. Como resultado, pierden oportunidades
de usar estas conclusiones para aportar datos a sus estrategias y planes.

La solución de este artículo beneficia a un amplio espectro de aplicaciones de análisis de


noticias y redes sociales. Al implementar la solución en lugar de implementar
manualmente sus recursos, puede reducir el tiempo de comercialización. También
puede:

Extraer noticias y publicaciones de Twitter sobre un tema específico.


Traducir el texto extraído a su idioma preferido.
Extraer puntos clave y entidades de las noticias y publicaciones.
Identificar la opinión sobre el asunto.
Por ejemplo, para ver las últimas discusiones sobre Satya Nadella, escriba su nombre en
una consulta. A continuación, la solución accede a las API de noticias y a la API de
Twitter para proporcionar la información que existe sobre él en la web.

Posibles casos de uso


Extraer información de sus clientes de las redes sociales puede ayudarle a mejorar la
experiencia del cliente, aumentar su satisfacción, obtener nuevos clientes potenciales y
evitar el abandono de clientes. Estas aplicaciones de análisis de redes sociales se dividen
en tres áreas principales:

Medición del estado de la marca:


Captura de reacciones y comentarios de los clientes acerca de nuevos
productos en redes sociales
Análisis de la opinión de las interacciones en redes sociales relativas a un nuevo
producto o servicio
Captura de la opinión sobre una marca y determinación de si la percepción
general es positiva o negativa

Creación y mantenimiento de relaciones con los clientes:


Identificación rápida los problemas de los clientes
Escucha de menciones de marca sin etiquetar

Optimización de las inversiones en marketing:


Extracción de información de redes sociales para el análisis de campañas
Realización de la optimización de marketing dirigido
Obtención de un público más amplio mediante la búsqueda de nuevos clientes
potenciales e influenciadores

El marketing es una parte integral de cada organización. Como resultado, puede usar
esta solución de análisis de redes sociales para estos casos de uso en varios sectores:

Minoristas
Finance
Fabricación
Atención sanitaria
Gobierno
Sector energético
Telecomunicaciones
Automoción
Sin ánimo de lucro
Juegos
Ocio y elementos multimedia
Viajes, incluida la hospitalidad y los restaurantes
Instalaciones, incluida la propiedad
Deportes

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Use Azure Monitor y Application Insights para supervisar el estado de los recursos
de Azure.
Azure Synapse Analytics
App Service
Para más información sobre la resistencia en Azure, consulte Diseño de
aplicaciones confiables de Azure.
Acuerdo de Nivel de Servicio para Azure Synapse Analytics
Acuerdo de Nivel de Servicio para cuentas de almacenamiento
Acuerdo de Nivel de Servicio para Azure Maps
Acuerdo de Nivel de Servicio para Azure Cognitive Services
Acuerdo de Nivel de Servicio para Azure Machine Learning
Acuerdo de Nivel de Servicio para App Service

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.
Para estimar el costo de esta solución, use la Calculadora de precios de Azure .

Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una
aplicación y la mantienen en ejecución en producción. Para más información, consulte
Introducción al pilar de excelencia operativa.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad de la carga de trabajo para escalar con el
fin de satisfacer de manera eficiente las demandas que los usuarios hayan ejercido
sobre ella. Para obtener más información, vea Resumen del pilar de eficiencia del
rendimiento.

Para información sobre el escalado de grupos de Spark y los tamaños de nodo,


consulte Configuraciones de grupos de Apache Spark en Azure Synapse Analytics.
Puede escalar y reducir verticalmente las canalizaciones de entrenamiento de
Azure Machine Learning en función del tamaño de los datos y otros parámetros de
configuración.
Los grupos de SQL sin servidor están disponibles a petición. No requieren que se
escalen o reduzcan vertical u horizontalmente.
Azure Synapse Analytics admite Apache Spark 3.1.2, que ofrece importantes
mejoras de rendimiento sobre sus predecesores .

Implementación de este escenario


Para implementar esta solución y ejecutar un escenario de análisis de redes sociales de
ejemplo, consulte la guía de implementación en Introducción . Esta guía le ayuda a
configurar los recursos del Acelerador de soluciones de análisis de redes sociales , que
se muestra en el diagrama de arquitectura de Alternativas. La implementación no
incluye los siguientes componentes: Machine Learning, los puntos de conexión
administrados y la aplicación web App Service.

Requisitos previos
Para usar el acelerador de soluciones, necesita acceso a una suscripción de
Azure .
Un conocimiento básico de Azure Synapse Analytics, Azure Cognitive Services,
Azure Maps y Power BI es útil, pero no es necesario.
Se requiere una cuenta de API de noticias.
Se requiere una cuenta de desarrollador de Twitter con privilegios de acceso
elevados para las características de la API de Twitter.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribió el siguiente colaborador.

Autor principal:

Christina Skarpathiotaki | Arquitecto de soluciones en la nube especializada en


IA

Pasos siguientes
¿Qué es Azure Synapse Analytics?
Documentación de Azure Machine Learning
¿Qué es Azure Cognitive Services?
Documentación de Azure Cognitive Service para lenguaje
¿Qué es Translator de Azure Cognitive Services?
¿Qué es Azure Maps?
¿Qué es Power BI?
Tutorial: Análisis de sentimiento con Cognitive Services en Azure Synapse Analytics
Tutorial: Text Analytics con Cognitive Services en Azure Synapse Analytics

Recursos relacionados
Diseño de arquitectura de la inteligencia artificial (IA)
Elección de una tecnología de servicios cognitivos de Microsoft
Optimización del marketing con Machine Learning
Análisis de datos espaciales con Azure Synapse Analytics
Implementación del registro y la
supervisión de modelos de Azure
OpenAI
Servicios de Azure AI Azure API Management Azure Monitor Microsoft Entra ID

Esta solución proporciona un registro y una supervisión completos y una seguridad


mejorada para las implementaciones empresariales de la API de Azure OpenAI Service.
La solución permite funcionalidades avanzadas de registro para realizar un seguimiento
del uso y el rendimiento de la API y medidas de seguridad sólidas para ayudar a
proteger los datos confidenciales y ayudar a evitar actividades malintencionadas.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. Las aplicaciones cliente acceden a los puntos de conexión de Azure OpenAI para
realizar la generación de texto (finalizaciones) y el entrenamiento del modelo
(ajuste preciso).

2. Azure Application Gateway proporciona un único punto de entrada a los modelos


de Azure OpenAI y equilibrio de carga para las API.
7 Nota

No se admite el equilibrio de carga de operaciones con estado, como el ajuste


de modelos, las implementaciones y la inferencia de modelos ajustados.

3. Azure API Management habilita controles de seguridad y auditoría y supervisión


de los modelos de Azure OpenAI.
a. En API Management, se concede acceso de seguridad mejorada a través de
grupos de Microsoft Entra con permisos de acceso basados en suscripciones.
b. La auditoría está habilitada para todas las interacciones con los modelos
mediante el registro de solicitudes de Azure Monitor.
c. La supervisión proporciona métricas y KPI detallados del uso del modelo de
Azure OpenAI, incluida la información de aviso y las estadísticas de token para la
rastreabilidad del uso.

4. API Management se conecta a todos los recursos de Azure a través de Azure


Private Link. Esta configuración proporciona seguridad mejorada para todo el
tráfico a través de puntos de conexión privados y contiene tráfico en la red
privada.

5. Varias instancias de Azure OpenAI permiten escalar horizontalmente el uso de la


API para garantizar la alta disponibilidad y la recuperación ante desastres para el
servicio.

Componentes
Application Gateway . Equilibrador de carga de aplicaciones para ayudar a
garantizar que todos los usuarios de las API de Azure OpenAI obtengan la
respuesta más rápida y el rendimiento más alto para las finalizaciones del modelo.
API Management . Plataforma de API Management para acceder a puntos de
conexión de Azure OpenAI de back-end. Proporciona supervisión y registro que no
está disponible de forma nativa en Azure OpenAI.
Azure Virtual Network . Infraestructura de red privada en la nube. Proporciona
aislamiento de red para que todo el tráfico de red de los modelos se enrute de
forma privada a Azure OpenAI.
Azure OpenAI . Servicio que hospeda modelos y proporciona salidas de
finalización de modelos generativas.
Supervisión . Observabilidad de un extremo a otro para aplicaciones. Proporciona
acceso a los registros de aplicación a través de Lenguaje de consulta Kusto.
También habilita los informes del panel y las funcionalidades de supervisión y
alertas.
Azure Key Vault Almacenamiento de seguridad mejorada para claves y secretos
que usan las aplicaciones.
Azure Storage . Almacenamiento de aplicaciones en la nube. Proporciona a Azure
OpenAI accesibilidad a los artefactos de entrenamiento del modelo.
Microsoft Entra ID . Administrador de identidades de seguridad mejorada.
Permite la autenticación y autorización de usuario a la aplicación y a los servicios
de plataforma que admiten la aplicación. También proporciona directiva de grupo
para asegurarse de que el principio de privilegios mínimos se aplica a todos los
usuarios.

Alternativas
Azure OpenAI proporciona registro y supervisión nativos. Puede usar esta funcionalidad
nativa para realizar un seguimiento de la telemetría del servicio, pero el registro
predeterminado de Cognitive Services no realiza un seguimiento ni registra entradas y
salidas del servicio, como avisos, tokens y modelos. Estas métricas son especialmente
importantes para el cumplimiento y para asegurarse de que el servicio funciona según
lo previsto. Además, mediante el seguimiento de las interacciones con los modelos de
lenguaje grande implementados en Azure OpenAI, puede analizar cómo usa su
organización el servicio para identificar los patrones de costo y uso que pueden ayudar
a informar sobre el escalado y la asignación de recursos.

En la tabla siguiente se proporciona una comparación de las métricas proporcionadas


por el registro predeterminado de Azure OpenAI y los proporcionados por esta
solución.

ノ Expand table

Métrica Registro predeterminado Esta solución


de Azure OpenAI

Recuento de solicitudes x x

Datos en (tamaño) / salida x x


de datos (tamaño)

Latencia x x

Transacciones del token x x


(total)
Métrica Registro predeterminado Esta solución
de Azure OpenAI

Dirección IP del autor de la x (último octeto x


llamada enmascarado)

Uso del modelo x

Uso de tokens x x
(entrada/salida)

Detalle del símbolo del x (limitado a


sistema de entrada 8192 caracteres de
respuesta)

Detalles de finalización de x (limitado a


salida 8192 caracteres de
respuesta)

Operaciones de x x
implementación

Operaciones de inserción x x (limitado a


8192 caracteres de
respuesta)

Detalles del escenario


Las grandes empresas que usan modelos de IA generativos deben implementar la
auditoría y el registro del uso de estos modelos para garantizar el uso responsable y el
cumplimiento corporativo. Esta solución proporciona registro y supervisión de nivel
empresarial para todas las interacciones con los modelos de IA para mitigar el uso
perjudicial de los modelos y ayudar a garantizar que se cumplan los estándares de
seguridad y cumplimiento. La solución se integra con las API existentes para Azure
OpenAI con poca modificación para aprovechar las bases de código existentes. Los
administradores también pueden supervisar el uso del servicio para informes.

La solución proporciona estas ventajas:

Registro completo de la ejecución del modelo de Azure OpenAI, en el que se


realiza un seguimiento de la dirección IP de origen. La información de registro
incluye texto que los usuarios envían al modelo y el texto recibido del modelo. Este
registro ayuda a garantizar que los modelos se usen de forma responsable y
dentro de los casos de uso aprobados del servicio.
Alta disponibilidad de las API del modelo para asegurarse de que se cumplen las
solicitudes de usuario incluso si el tráfico supera los límites de un único servicio de
Azure OpenAI.
Acceso basado en rol administrado a través de Microsoft Entra ID para asegurarse
de que se aplica el principio de privilegios mínimos.

Consulta de ejemplo para la supervisión del uso

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend modelkey = substring(parse_json(BackendResponseBody)['model'], 0,
indexof(parse_json(BackendResponseBody)['model'], '-', 0, -1, 2))
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])
['prompt_tokens']
| extend completiontokens = parse_json(parse_json(BackendResponseBody)
['usage'])['completion_tokens']
| extend totaltokens = parse_json(parse_json(BackendResponseBody)['usage'])
['total_tokens']
| extend ip = CallerIpAddress
| summarize
sum(todecimal(prompttokens)),
sum(todecimal(completiontokens)),
sum(todecimal(totaltokens)),
avg(todecimal(totaltokens))
by ip, model

Salida:

Consulta de ejemplo para la supervisión del uso de la solicitud

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])
['prompt_tokens']
| extend prompttext = substring(parse_json(parse_json(BackendResponseBody)
['choices'])[0], 0, 100)

Salida:

Posibles casos de uso


Implementación de Azure OpenAI para usuarios empresariales internos para
acelerar la productividad.
Alta disponibilidad de Azure OpenAI para aplicaciones internas.
Uso de la seguridad mejorada de Azure OpenAI en sectores regulados.

Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework,
que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de
una carga de trabajo. Para más información, consulte Marco de buena arquitectura de
Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que tu aplicación puede cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Este escenario garantiza la alta disponibilidad de los modelos de lenguaje grandes para
los usuarios empresariales. Azure Application Gateway proporciona un mecanismo
eficaz de entrega de aplicaciones de nivel 7 para garantizar un acceso rápido y
coherente a las aplicaciones. Puede usar API Management para configurar, administrar y
supervisar el acceso a los modelos. La alta disponibilidad inherente de servicios de
plataforma como Storage, Key Vault y Virtual Network garantiza una alta confiabilidad
para la aplicación. Por último, varias instancias de Azure OpenAI garantizan la resistencia
del servicio en caso de errores en el nivel de aplicación. Estos componentes de
arquitectura pueden ayudarle a garantizar la confiabilidad de la aplicación a escala
empresarial.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Mediante la implementación de procedimientos recomendados para el aislamiento de


nivel de aplicación y de red de los servicios en la nube, este escenario mitiga los riesgos
de filtración de datos y pérdida de datos. Todo el tráfico de red que contiene datos
potencialmente confidenciales que se introducen en el modelo está aislado en una red
privada. Este tráfico no atraviesa rutas públicas de Internet. Puede usar Azure
ExpressRoute para aislar aún más el tráfico de red a la intranet corporativa y ayudar a
garantizar la seguridad de red de un extremo a otro.

Optimización de costos
La optimización de costos trata de reducir los gastos innecesarios y mejorar las
eficiencias operativas. Para más información, vea Información general del pilar de
optimización de costos.

Para ayudarle a explorar el costo de ejecución de este escenario, hemos preconfigurado


todos los servicios de la calculadora de precios de Azure. Para obtener información
sobre cómo cambiarían los precios en su caso de uso, cambie las variables apropiadas
para que coincidan con el tráfico esperado.

Los tres perfiles de costo de ejemplo siguientes proporcionan estimaciones basadas en


la cantidad de tráfico. (Las estimaciones suponen que un documento contiene
aproximadamente 1000 tokens).

Pequeño : para procesar 10 000 documentos al mes.


Medio : para procesar 100 000 documentos al mes.
Grande : para procesar 10 millones de documentos al mes.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:


Ashish Chauhan | Arquitecto de soluciones en la nube: datos/IA
Jake Wang | Arquitecto de soluciones en la nube: IA/aprendizaje automático

Otros colaboradores:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Formulario de solicitud de Azure OpenAI
Procedimientos recomendados para la ingeniería de solicitudes con OpenAI API
Azure OpenAI: documentación, inicios rápidos y referencia de API
Azure-Samples/openai-python-enterprise-logging (GitHub)
Configuración de redes virtuales de Azure Cognitive Services

Recursos relacionados
Protección de las API con Azure Application Gateway y Azure API Management
Resumen de documentos basados en consultas
Diseño de arquitectura de IA
Entorno de investigación seguro
para datos regulados
Azure Data Science Virtual Machine Azure Machine Learning Azure Data Factory

Esta arquitectura muestra un entorno de investigación seguro diseñado para permitir


que los investigadores accedan a datos confidenciales con un mayor nivel de control y
protección de datos. Este artículo es aplicable a las organizaciones que están obligadas
a cumplir con la normativa o con otros requisitos estrictos de seguridad.

Architecture

Approver

Network
6 security
group
Logic app
4 3
Researcher
7 Approved Data science virtual Azure Virtual
data Desktop
machine
2 Managed
Data Factory identity
Blob Storage 5 Virtual Virtual
(private) network network
gateway gateway
8 Azure Machine
Learning compute

User-defined routing
Virtual network
1 table

Firewall
Data owner Blob Storage policy
(public) Key Vault Azure Firewall

Virtual network
Resource group Resource group

Azure Active Microsoft Azure


Defender for Cloud Azure Policy
Directory Sentinel Monitor

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
1. Los propietarios de datos cargan los conjuntos de datos en una cuenta pública de
almacenamiento de blobs. Los datos se cifran mediante claves administradas por
Microsoft.
2. Azure Data Factory usa un desencadenador que comienza a copiar el conjunto de
datos cargado en una ubicación específica (ruta de acceso de importación) de otra
cuenta de almacenamiento con controles de seguridad. Solo se puede acceder a la
cuenta de almacenamiento mediante un punto de conexión privado. Además, una
entidad de servicio tiene acceso a ella con permisos limitados. Data Factory elimina
la copia original, lo que hace que el conjunto de datos sea inmutable.

3. Los investigadores acceden al entorno seguro mediante una aplicación de


streaming con Azure Virtual Desktop como un jumpbox con privilegios.

4. El conjunto de datos de la cuenta de almacenamiento seguro se presenta a las VM


de ciencia de datos aprovisionadas en un entorno de red seguro para el trabajo de
investigación. Gran parte de la preparación de los datos se realiza en esas VM.

5. El entorno seguro tiene un proceso de Azure Machine Learning que puede acceder
al conjunto de datos mediante un punto de conexión privado para los usuarios
para las funcionalidades de AML, como entrenar, implementar, automatizar y
administrar los modelos de aprendizaje automático. En este momento, se crean
modelos que cumplen las directrices normativas. Se elimina la información
personal de todos los datos del modelo para que sean anónimos.

6. Los modelos o datos anónimos se guardan en una ubicación independiente del


almacenamiento seguro (ruta de acceso de exportación). Cuando se agregan
nuevos datos a la ruta de exportación, se desencadena una aplicación lógica. En
esta arquitectura, la aplicación lógica se encuentra fuera del entorno seguro
porque no se envía ningún dato a la aplicación lógica. Su única función es enviar
una notificación e iniciar el proceso de aprobación manual.

La aplicación inicia un proceso de aprobación que solicita una revisión de los datos
que se ponen en cola para exportarse. Los revisores manuales garantizan que no
se exporten datos confidenciales. Después del proceso de revisión, los datos se
aprueban o se deniegan.

7 Nota

Si no se requiere un paso de aprobación en la filtración, el paso de la


aplicación lógica podría omitirse.

7. Si se aprueban los datos anónimos, se envían a la instancia de Data Factory.

8. Data Factory traslada los datos a la cuenta de almacenamiento pública en un


contenedor independiente para permitir que los investigadores externos tengan
acceso a sus modelos y datos exportados. Como alternativa, se puede aprovisionar
otra cuenta de almacenamiento en un entorno de seguridad inferior.

Componentes
Esta arquitectura se compone de varios servicios de Azure que escalan los recursos
según sea necesario. Aquí se describen los servicios y sus roles. Para obtener vínculos a
la documentación del producto para comenzar a trabajar con estos servicios, consulte
Pasos siguientes.

Componentes principales de la carga de trabajo

Estos son los componentes principales que trasladan los datos de investigación y los
procesan.

Data Science Virtual Machine (DSVM) de Azure: VM configuradas con


herramientas que se usan para el análisis de datos y el aprendizaje automático.

Azure Machine Learning: se usa para entrenar, implementar, automatizar y


administrar modelos de Machine Learning y para administrar la asignación y el uso
de recursos de proceso de ML.

Proceso de Azure Machine Learning: clúster de nodos que se usa para entrenar y
probar modelos de aprendizaje automático y de IA. El proceso se asigna a petición
en función de una opción de escalado automático.

Almacenamiento de Azure Blob: hay dos instancias. La instancia pública se usa


para almacenar temporalmente los datos cargados por los propietarios de los
datos. Además, almacena datos anónimos después del modelado en un
contenedor independiente. La segunda instancia es privada. Recibe los conjuntos
de datos de entrenamiento y prueba de Machine Learning usados por los scripts
de entrenamiento. El almacenamiento se monta como una unidad virtual en cada
nodo de un clúster de Proceso de Machine Learning.

Azure Data Factory: traslada automáticamente los datos entre cuentas de


almacenamiento de distintos niveles de seguridad para garantizar la separación de
tareas.

Azure Virtual Desktop se usa como un jumpbox para obtener acceso a los
recursos del entorno seguro con aplicaciones de streaming y un escritorio
completo, según sea necesario. También se puede usar Azure Bastion . Pero
conviene tener claras las diferencias de control de seguridad entre las dos
opciones. Virtual Desktop tiene algunas ventajas:
Capacidad de transmitir una aplicación como VSCode para ejecutar cuadernos
en los recursos de proceso de aprendizaje automático.
Capacidad de limitar las operaciones de copiar, pegar y las capturas de pantalla.
Compatibilidad con la autenticación de Microsoft Entra en DSVM.

Azure Logic Apps proporciona un flujo de trabajo automatizado de poco código


para desarrollar las partes del desencadenador y de la versión del proceso de
aprobación manual.

Componentes de administración de posición

Estos componentes supervisan continuamente la posición de la carga de trabajo y su


entorno. Su finalidad es detectar y mitigar los riesgos en cuanto se detecten.

Microsoft Defender for Cloud se usa para evaluar la posición de seguridad


general de la implementación y proporcionar un mecanismo de atestación para el
cumplimiento normativo. Los problemas que se encontraron anteriormente
durante las auditorías o valoraciones se pueden descubrir con anticipación. Use
características para supervisar el progreso, como la puntuación de seguridad y la
de cumplimiento.

Microsoft Sentinel es una solución de Administración de eventos e información


de seguridad (SIEM) y de respuesta automatizada de orquestación de seguridad
(SOAR). Se pueden ver de forma centralizada los registros y alertas de varios
orígenes y aprovechar las ventajas de los análisis avanzados de la IA y la seguridad
para detectar amenazas buscarlas, evitarlas y responder a ellas.

Azure Monitor proporciona observabilidad en todo el entorno. Vea métricas,


registros de actividad y registros de diagnóstico de la mayoría de los recursos de
Azure sin una configuración agregada. Las herramientas de administración, como
las de Microsoft Defender for Cloud, también envían cambios de datos de registro
a Azure Monitor.

Componentes de la gobernanza

Azure Policy ayuda a aplicar los estándares de la organización y a evaluar el


cumplimiento a gran escala.

Alternativas
La solución usa Data Factory para trasladas los datos a la cuenta de
almacenamiento pública en un contenedor independiente, para permitir que los
investigadores externos tengan acceso a sus modelos y datos exportados. Como
alternativa, se puede aprovisionar otra cuenta de almacenamiento en un entorno
de seguridad inferior.
Esta solución usa Azure Virtual Desktop como un jumpbox para obtener acceso a
los recursos del entorno seguro con aplicaciones de streaming y un escritorio
completo. También se puede usar Azure Bastion. Sin embargo, Virtual Desktop
tiene algunas ventajas, que incluyen la capacidad de transmitir una aplicación,
limitar las capturas de pantalla y copiar y pegar, y admitir la autenticación de AAC.
También puede considerar la posibilidad de configurar VPN de punto a sitio para el
entrenamiento sin conexión localmente. Esto también ayudará a ahorrar costos al
tener varias máquinas virtuales para estaciones de trabajo.
Para proteger los datos en reposo, esta solución cifra todas las instancias de Azure
Storage con claves administradas por Microsoft mediante una criptografía segura.
O bien se pueden usar claves administradas por el cliente. Las claves se deben
almacenar en un almacén de claves administrado.

Detalles del escenario

Posibles casos de uso


Esta arquitectura se creó originalmente para instituciones de investigación de educación
superior con requisitos HIPAA. Sin embargo, este diseño se puede usar en cualquier
sector que requiera un aislamiento de datos para perspectivas de investigación. Estos
son algunos ejemplos:

Sectores que procesan datos regulados según los requisitos de NIST


Centros médicos que colaboran con investigadores internos o externos
Banca y finanzas

Si sigue las instrucciones, puede mantener el control total de los datos de investigación,
separar las tareas y cumplir los estándares estrictos de cumplimiento normativo.
Además, puede facilitar la colaboración entre los roles típicos implicados en una carga
de trabajo orientada a la investigación, los propietarios de datos, los investigadores y los
aprobadores.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

El objetivo principal de esta arquitectura es proporcionar un entorno de investigación


seguro y de confianza que limite de forma estricta la filtración de datos desde el área
segura.

Seguridad de las redes

Los recursos de Azure usados para almacenar, probar y entrenar conjuntos de datos de
investigación se aprovisionan en un entorno seguro. Ese entorno es una instancia de
Azure Virtual Network (VNet) que tiene reglas de grupos de seguridad de red (NSG)
para restringir el acceso, principalmente:

Acceso entrante y saliente a la red pública de Internet y en la red virtual.

Acceso entre puertos y servicios específicos. Por ejemplo, esta arquitectura


bloquea todos los rangos de puertos, excepto los necesarios para los servicios de
Azure (como Azure Monitor). Encontrará una lista completa de etiquetas de
servicio y los servicios correspondientes aquí.

Además, se acepta el acceso desde la red virtual con Azure Virtual Desktop (AVD)
en puertos limitados a los mecanismos de acceso aprobados, y se deniega el resto
del tráfico. En comparación con este entorno, la otra red virtual (con AVD) es
relativamente abierta.

El almacenamiento de blobs principal del entorno seguro se encuentra fuera de la red


pública de Internet. Solo es accesible dentro de la red virtual mediante las conexiones
de punto de conexión privado y los firewalls de Azure Storage. Se usa para limitar las
redes desde las que los clientes pueden conectarse a los recursos compartidos de
archivos de Azure.

Esta arquitectura usa la autenticación basada en credenciales para el almacén de datos


principal que se encuentra en el entorno seguro. En este caso, la información de
conexión, como el identificador de suscripción y la autorización del token, se almacena
en un almacén de claves. Otra opción es crear el acceso a datos basado en identidades,
donde se usa la cuenta de Azure para confirmar si tiene acceso al servicio Storage. En el
escenario de acceso a datos basado en identidades, no se guardarán las credenciales de
autenticación. Para más información sobre cómo usar el acceso a datos basado en
identidades, consulte Conectar al almacenamiento mediante el acceso a datos basado
en identidades.

El clúster de proceso solo puede comunicarse dentro de la red virtual mediante el


ecosistema de Azure Private Link y los puntos de conexión privados o de servicio, en
lugar de usar la dirección IP pública para la comunicación. Asegúrese de habilitar
Ninguna dirección IP pública. Para más información sobre esta característica, que se
encuentra actualmente en versión preliminar (a partir del 7 de marzo de 2022), consulte
No hay ninguna dirección IP pública para instancias de proceso.

El entorno seguro tiene un proceso de Azure Machine Learning que puede acceder al
conjunto de datos mediante un punto de conexión privado. Además, Azure Firewall
puede usar para controlar el acceso saliente desde el proceso de Azure Machine
Learning. Para obtener información sobre cómo configurar Azure Firewall para controlar
el acceso a un proceso de Azure Machine Learning, que reside en un área de trabajo de
aprendizaje automático, consulte Configuración del tráfico de red entrante y saliente.

Para obtener información sobre una de las formas de proteger un entorno de Azure
Machine Learning, consulte la entrada de blog Entorno de Secure Azure Machine
Learning Service (AMLS) .

En el caso de los servicios de Azure que no se pueden configurar eficazmente con


puntos de conexión privados o para proporcionar una inspección de paquetes con
estado, considere la posibilidad de usar Azure Firewall o una aplicación virtual de red
(NVA) de terceros.

Administración de identidades

El acceso a Blob Storage se obtiene mediante controles de acceso basados en roles de


Azure.

Azure Virtual Desktop admite la autenticación de Microsoft Entra en DSVM.

Data Factory usa una identidad administrada para acceder a los datos desde el
almacenamiento de blobs. Las DSVM también usan una identidad administrada para las
tareas de corrección.

Seguridad de los datos

Para proteger los datos en reposo, todas las instancias de Azure Storage se cifran con
claves administradas por Microsoft mediante una criptografía segura.
O bien se pueden usar claves administradas por el cliente. Las claves se deben
almacenar en un almacén de claves administrado. En esta arquitectura, Azure Key Vault
se implementa en el entorno seguro para almacenar secretos como claves de cifrado y
certificados. Los recursos de la red virtual segura acceden a Key Vault mediante un
punto de conexión privado.

Consideraciones de gobernanza
Habilite Azure Policy para aplicar estándares y proporcionar una corrección
automatizada para que los recursos cumplan las directivas específicas. Las directivas se
pueden aplicar a una suscripción de proyecto o a un nivel de grupo de administración
como una única directiva o como parte de una iniciativa normativa.

Por ejemplo, en esta arquitectura, la configuración de invitado de Azure Policy se aplicó


a todas las VM del ámbito. La directiva puede auditar los sistemas operativos y la
configuración de las máquinas de Data Science VM.

Imagen de la máquina virtual


Las instancias de Data Science VM ejecutan imágenes de base personalizadas. Para
compilar la imagen de base, se recomienda usar tecnologías como Azure Image Builder.
De este modo, puede crear una imagen repetible que se pueda implementar cuando sea
necesario.

Es posible que la imagen de base necesite actualizaciones, tales como más archivos
binarios. Esos archivos binarios deben cargarse en el almacenamiento de blobs público
y fluir por el entorno seguro, del mismo modo que los propietarios de datos cargan los
conjuntos de datos.

Otras consideraciones
La mayoría de las soluciones de investigación son cargas de trabajo temporales y no es
necesario que estén disponibles durante períodos prolongados. Esta arquitectura está
diseñada como una implementación de una sola región con zonas de disponibilidad. Si
los requisitos empresariales exigen mayor disponibilidad, replique esta arquitectura en
varias regiones. Necesitará otros componentes, como el equilibrador de carga global y
el distribuidor, para enrutar el tráfico a todas esas regiones. Como parte de la estrategia
de recuperación, se recomienda capturar y crear una copia de la imagen de base
personalizada con Azure Image Builder.
El tamaño y el tipo de las instancias de Data Science VM deben ser adecuados para el
estilo de trabajo que se realice. Esta arquitectura está diseñada para admitir un único
proyecto de investigación y la escalabilidad se logra mediante el ajuste del tamaño y el
tipo de las VM y de las opciones adoptadas para los recursos de proceso disponibles
para AML.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

El costo de las DSVM depende de la elección de la serie de VM subyacentes. Dado que


la carga de trabajo es temporal, se recomienda el plan de consumo para el recurso de
aplicación lógica. Use la calculadora de precios de Azure para calcular los costos en
función del dimensionamiento estimado de los recursos necesarios.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Clayton Barlow | Especialista sénior en Azure

Pasos siguientes
Microsoft Data Science Virtual Machine (DSVM)
¿Qué es Azure Machine Learning?
Proceso de Azure Machine Learning
Introducción a Azure Blob Storage
Introducción al servicio Azure Data Factory
Azure Virtual Desktop
Microsoft Defender for Cloud
Microsoft Sentinel
Azure Monitor
Azure Policy
Configuración de invitado de Azure Policy
Recursos relacionados
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Arquitectura de Azure Machine Learning
Escalado de iniciativas de IA y aprendizaje automático en sectores regulados
Aprendizaje automático de varios modelos a escala con Azure Machine Learning
Comparación de productos y
tecnologías de aprendizaje automático
de Microsoft
Artículo • 13/09/2023

Más información acerca de los productos y tecnologías de aprendizaje automático de


Microsoft. Compare las opciones para ayudarle a elegir cómo compilar, implementar y
administrar de forma más eficaz las soluciones de aprendizaje automático.

Productos de aprendizaje automático basados


en la nube
Las siguientes opciones están disponibles para el aprendizaje automático en la nube de
Azure.

Opciones de nube ¿Qué es? Qué puede hacer con él

Azure Machine Plataforma administrada Use un modelo entrenado previamente. O


Learning para el aprendizaje bien entrene, implemente y administre
automático modelos en Azure con Python y la CLI

Azure Cognitive Funcionalidades de IA Cree aplicaciones inteligentes con rapidez


Services preintegradas mediante lenguajes de programación
implementadas mediante estándares. No se requieren conocimientos
API REST y SDK sobre aprendizaje automático ni ciencia de
datos

Machine Learning Aprendizaje automático en Entrenar e implementar modelos en Azure


Services en Azure la base de datos para SQL SQL Managed Instance
SQL Managed
Instance

Aprendizaje Servicio de análisis con Entrenar e implementar modelos en Azure


automático en Azure aprendizaje automático Synapse Analytics
Synapse Analytics

Aprendizaje Aprendizaje automático en Entrenar e implementar modelos en Azure


automático e IA con SQL en IoT SQL Edge
ONNX en Azure SQL
Edge

Azure Databricks Plataforma de análisis Cree e implemente modelos y flujos de


basada en Apache Spark trabajo de datos con integraciones con
Opciones de nube ¿Qué es? Qué puede hacer con él

bibliotecas de aprendizaje automático de


código abierto y la plataforma MLFlow.

Productos de aprendizaje automático locales


Las siguientes opciones están disponibles para el aprendizaje automático de forma
local. En los servidores locales también se pueden ejecutar en una máquina virtual en la
nube.

Opciones en el entorno local ¿Qué es? Qué puede hacer con él

SQL Server Machine Learning Aprendizaje automático Entrenar e implementar modelos


Services en la base de datos para en SQL Server
SQL

Machine Learning Services en Aprendizaje automático Entrenar e implementar modelos


Clústeres de macrodatos de en Clústeres de en Clústeres de macrodatos de
SQL Server macrodatos SQL Server

Plataformas y herramientas de desarrollo


Las siguientes plataformas y herramientas de desarrollo están disponibles para el
aprendizaje automático.

Plataformas/herramientas ¿Qué es? Qué puede hacer con él

Azure Data Science Virtual Máquina virtual con Desarrollar soluciones de


Machine herramientas de ciencia de aprendizaje automático en un
datos previamente entorno preconfigurado
instaladas

ML.NET SDK de aprendizaje Desarrollar soluciones de


automático aprendizaje automático para
multiplataforma de código aplicaciones .NET
abierto

Windows ML Plataforma de aprendizaje Evaluar modelos entrenados en


automático de Windows un dispositivo Windows 10
10

MMLSpark Marco de código abierto, Crear e implementar aplicaciones


distribuido, de aprendizaje de aprendizaje automático
automático y de escalables para Scala y Python.
Plataformas/herramientas ¿Qué es? Qué puede hacer con él

microservicios para
Apache Spark

Extensión de Machine Learning Extensión de aprendizaje Administrar paquetes, importar


para Azure Data Studio automático modelos de aprendizaje
multiplataforma de código automático, realizar predicciones
abierto para Azure Data y crear cuadernos para ejecutar
Studio experimentos para las bases de
datos SQL

Azure Machine Learning


Azure Machine Learning es un servicio en la nube totalmente administrado que se utiliza
para entrenar, implementar y administrar modelos de aprendizaje automático a escala.
Además, es totalmente compatible con las tecnologías de código abierto, por lo que
puede utilizar decenas de miles de paquetes de Python de código abierto como
TensorFlow, PyTorch y scikit-learn. También hay una variedad de herramientas
disponibles, como Compute Instances, cuadernos de Jupyter Notebook o la extensión
Azure Machine Learning para Visual Studio Code, una extensión gratuita que permite
administrar los recursos, los flujos de trabajo de entrenamiento de modelos y las
implementaciones en Visual Studio Code. Azure Machine Learning incluye características
que automatizan la generación y el ajuste de modelos con facilidad, eficacia y precisión.

Use el SDK de Python, cuadernos de Jupyter Notebook, R y la CLI para aprendizaje


automático a escala de la nube. Para una opción con poco código o sin código, use el
diseñador interactivo de Azure Machine Learning en Studio para crear, probar e
implementar con facilidad y rapidez modelos mediante algoritmos de aprendizaje
automático pregenerados.

Pruebe Azure Machine Learning de forma gratuita .

Elemento Descripción

Type Solución de aprendizaje automático basada en la nube

Idiomas admitidos Python, R

Fases de aprendizaje Entrenamiento del modelo


automático Implementación
MLOps/Administración

Ventajas principales Opciones de creación de interfaz web de diseñador de arrastrar y


colocar y Code First (SDK) y Studio.
Elemento Descripción

La administración centralizada de scripts y el historial de ejecución que


facilitan la comparación entre las versiones de un modelo.

Fácil implementación y administración de modelos en la nube o en


dispositivos perimetrales.

Consideraciones Se necesitan algunos conocimientos sobre el modelo de


administración de modelos.

Azure Cognitive Services


Azure Cognitive Services es un conjunto de API pregeneradas que permiten compilar
aplicaciones que usan métodos naturales de comunicación. El término pregenerado
sugiere que no es necesario incorporar conjuntos de datos o conocimientos de ciencia
de datos para entrenar los modelos que se van a usar en las aplicaciones. Todo esto se
realiza automáticamente y se empaqueta en forma de API y SDK que permiten a las
aplicaciones ver, escuchar, hablar, comprender e interpretar las necesidades del usuario
con solo unas pocas líneas de código. Puede agregar fácilmente características
inteligentes a las aplicaciones, como:

Visión: Detección de objetos, reconocimiento facial, OCR, etc. Consulte Computer


Vision, Face y Form Recognizer.
Voz: Voz a texto, texto a voz, reconocimiento del hablante, etc. Consulte Servicio
de Voz.
Idioma: Traducción, análisis de sentimiento, extracción de frases clave,
reconocimiento del lenguaje, etc. Consulte Translator, Text Analytics, Language
Understanding y QnA Maker.
Decisión: Detección de anomalías, moderación de contenido y aprendizaje de
refuerzo. Consulte Anomaly Detector, Content Moderator y Personalizer.

Cognitive Services se puede usar para desarrollar aplicaciones en distintos dispositivos y


plataformas. Las API siguen mejorando y son fáciles de configurar.

Elemento Descripción

Type API para compilar aplicaciones inteligentes

Idiomas admitidos Distintas opciones dependen del servicio. Los estándar son C#, Java,
JavaScript y Python.

Fases de aprendizaje Implementación


automático
Elemento Descripción

Ventajas principales Compilación de aplicaciones inteligentes con modelos entrenados


previamente disponibles a través de la API de REST y el SDK.
Variedad de modelos para métodos de comunicación naturales con
visión, voz, idioma y decisión.
No se requiere aprendizaje automático ni conocimientos de ciencia de
datos.

Aprendizaje automático de SQL


El aprendizaje automático de SQL agrega análisis estadísticos, visualización de datos y
análisis predictivo en Python y R tanto en el entorno local como en la nube. Las
plataformas y herramientas actuales incluyen:

SQL Server Machine Learning Services


Machine Learning Services en clústeres de macrodatos de SQL Server
Machine Learning Services en Azure SQL Managed Instance
Aprendizaje automático en Azure Synapse Analytics
Aprendizaje automático e IA con ONNX en Azure SQL Edge
Extensión de Machine Learning para Azure Data Studio

Use el aprendizaje automático de SQL cuando necesite análisis predictivo e inteligencia


artificial integrados en datos relacionales en SQL.

Elemento Descripción

Type Análisis predictivo local para datos relacionales

Idiomas admitidos Python, R, SQL

Fases de aprendizaje Preparación de los datos


automático Entrenamiento del modelo
Implementación

Ventajas principales Permite encapsular la lógica predictiva en una función de base de


datos, lo cual hace que sea más fácil de incluir en una lógica de capa de
datos.

Consideraciones Presupone una base de datos de SQL como la capa de datos de la


aplicación.

Máquina virtual de ciencia de datos de Azure


Azure Data Science Virtual Machine es un entorno de máquina virtual personalizado en
la nube de Microsoft Azure. Está disponible en las versiones Ubuntu de Linux y
Windows. El entorno está diseñado específicamente para hacer ciencia de datos y
desarrollar soluciones de ML. Tiene muchas ciencias de datos conocidas, marcos de ML
y otras herramientas preinstaladas y preconfiguradas para impulsar la creación de
aplicaciones inteligentes para análisis avanzado.

Use la máquina virtual de ciencia de datos cuando necesite ejecutar u hospedar trabajos
en un único nodo. O bien si necesita escalar de forma remota el procesamiento en un
único equipo.

Elemento Descripción

Type Entorno de máquinas virtuales personalizado para la ciencia de datos

Ventajas Menor tiempo de instalación, administración y solución de problemas de las


principales herramientas y plataformas de ciencia de datos.

Se incluyen las versiones más recientes de todas las herramientas y


plataformas usadas habitualmente.

Las opciones de máquina virtual incluyen imágenes altamente escalables con


funcionalidades GPU para el modelado de datos intensivo.

Consideraciones No se puede acceder a la máquina virtual sin conexión.

Si ejecuta una máquina virtual incurrirá en gastos de Azure, por lo que solo
deberá ejecutarla en caso de necesidad.

Azure Databricks
Azure Databricks es una plataforma de análisis basada en Apache Spark optimizada para
la plataforma de servicios en la nube de Microsoft Azure. Databricks está integrado con
Azure para proporcionar una configuración con un solo clic, flujos de trabajo
optimizados y un área de trabajo interactiva que permite la colaboración entre
científicos de datos, ingenieros de datos y analistas empresariales. Use código de
Python, Scala, R y SQL en cuadernos web para consultar, visualizar y modelar datos.

Utilice Databricks cuando desea colaborar creando soluciones de aprendizaje


automático en Apache Spark.

Elemento Descripción

Type Plataforma de análisis basada en Apache Spark


Elemento Descripción

Idiomas admitidos Python, R, Scala y SQL

Fases de aprendizaje automático Preparación de los datos


Preprocesamiento de datos
Entrenamiento del modelo
Ajuste de modelos
Inferencia de modelos
Administración
Implementación

ML.NET
ML.NET es un marco de aprendizaje automático de código abierto y multiplataforma.
Con ML.NET, puede crear soluciones de aprendizaje automático personalizadas e
integrarlas en sus aplicaciones .NET. ML.NET ofrece diferentes niveles de
interoperabilidad con marcos populares, como TensorFlow y ONNX, para el
entrenamiento y la puntuación de modelos de aprendizaje automático y aprendizaje
profundo. Para las tareas con uso intensivo de recursos, como el entrenamiento de
modelos de clasificación de imágenes, puede aprovechar Azure para entrenar los
modelos en la nube.

Utilice ML.NET cuando desee integrar soluciones de aprendizaje automático en


aplicaciones. NET. Elija entre la API para una experiencia de Code First y Model Builder o
la CLI para una experiencia de código bajo.

Elemento Descripción

Type Marco multiplataforma de código abierto para desarrollar aplicaciones


de aprendizaje automático personalizadas con .NET

Idiomas admitidos C#, F#

Fases de aprendizaje Preparación de los datos


automático Cursos
Implementación

Ventajas principales No se requiere experiencia en ML y ciencia de datos


Uso de herramientas (Visual Studio, VS Code) y lenguajes conocidos
Implementación donde se ejecuta .NET
Extensible
Escalable
Experiencia primero local
Windows ML
El motor de inferencia de Windows ML permite usar modelos de aprendizaje automático
entrenados en sus aplicaciones, de forma que se evalúan los modelos entrenados
localmente en dispositivos Windows 10.

Use Windows ML cuando desee modelos de aprendizaje automático entrenados en


aplicación Windows.

Elemento Descripción

Type Motor de inferencia para modelos entrenados en dispositivos Windows

Idiomas admitidos C#/C++, JavaScript

MMLSpark
Microsoft ML for Apache Spark (MMLSpark) es una biblioteca de código abierto que
amplía el marco de computación distribuida Apache Spark . MMLSpark agrega muchas
herramientas de ciencia de datos y aprendizaje profundo al ecosistema de Spark,
incluida la perfecta integración de canalizaciones de Spark Machine Learning con
Microsoft Cognitive Toolkit (CNTK), LightGBM , LIME (interpretabilidad de modelos)
y OpenCV . Puede usar estas herramientas para crear modelos predictivos eficaces en
cualquier clúster de Spark, como Azure Databricks o Cosmic Spark.

MMLSpark también aporta nuevas capacidades de red al ecosistema de Spark. Con el


proyecto HTTP en Spark, los usuarios pueden insertar cualquier servicio web en sus
modelos SparkML. Además, MMLSpark proporciona herramientas fáciles de usar para
orquestar Azure Cognitive Services a gran escala. En el caso de una implementación
de nivel de producción, el proyecto de Spark Serving permite un alto rendimiento,
servicios web de latencia de submilisegundos y está respaldado por el clúster de Spark.

Elemento Descripción

Type Marco de código abierto, distribuido, de aprendizaje automático y


de microservicios para Apache Spark

Idiomas admitidos Scala 2.11, Java, Python 3.5 y versiones posteriores, R (beta)

Fases de aprendizaje Preparación de los datos


automático Entrenamiento del modelo
Implementación

Ventajas principales Escalabilidad


Compatibilidad de streaming y Serving
Elemento Descripción

Tolerancia a errores

Consideraciones Requiere Apache Spark

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Zoiner Tejada | Director ejecutivo y arquitecto

Pasos siguientes
Para más información sobre todos los productos de desarrollo de inteligencia
artificial (IA) disponibles en Microsoft, consulte el artículo sobre la plataforma de
inteligencia artificial de Microsoft .
Para la formación sobre el desarrollo de soluciones de inteligencia artificial y
aprendizaje automático con Microsoft, consulte la formación de Microsoft Learn.

Recursos relacionados
Elección de una tecnología de servicios cognitivos de Microsoft
Diseño de arquitectura de la inteligencia artificial (IA)
Funcionamiento de Azure Machine Learning: recursos
Resumen de documentos basados en
consultas
Artículo • 13/09/2023

En esta guía se muestra cómo realizar el resumen de documentos mediante el modelo


GPT-3 de Azure OpenAI. Describe conceptos relacionados con el proceso de resumen
de documentos, enfoques para el proceso y recomendaciones sobre qué modelo usar
para casos de uso específicos. Por último, presenta dos casos de uso, junto con
fragmentos de código de ejemplo, para ayudarle a comprender los conceptos clave.

Architecture
En el diagrama siguiente se muestra cómo una consulta de usuario captura los datos
pertinentes. El generador de resumen usa GPT-3 para generar un resumen del texto del
documento más relevante. En esta arquitectura, el punto de conexión GPT-3 se usa para
resumir el texto.

Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de trabajo
Este flujo de trabajo se produce casi en tiempo real.

1. Un usuario envía una consulta. Por ejemplo, un empleado de una empresa de


fabricación busca información específica sobre una pieza de máquina en el portal
de empresa. La consulta se procesa primero mediante un reconocedor de
intenciones como el reconocimiento del lenguaje conversacional. Las entidades o
conceptos pertinentes de la consulta de usuario se usan para seleccionar y
presentar un subconjunto de documentos de un knowledge base que se rellena sin
conexión (en este caso, la base de datos knowledge base de la empresa). La salida
se introduce en un motor de búsqueda y análisis como Azure Elastic Search , que
filtra los documentos pertinentes para devolver un conjunto de documentos de
cientos en lugar de miles o decenas de miles.
2. La consulta de usuario se vuelve a aplicar en un punto de conexión de búsqueda
como Azure Cognitive Search para clasificar el conjunto de documentos
recuperado en orden de relevancia (clasificación de páginas). Se selecciona el
documento con la clasificación más alta.
3. El documento seleccionado se examina en busca de oraciones pertinentes. Este
proceso de examen usa un método grueso, como extraer todas las oraciones que
contienen la consulta del usuario o un método más sofisticado, como las
incrustaciones GPT-3, para buscar material semánticamente similar en el
documento.
4. Una vez extraído el texto pertinente, el punto de conexión de finalizaciones de
GPT-3 con el generador de resumen resume el contenido extraído. En este
ejemplo, se devuelve el resumen de detalles importantes sobre la parte
especificada por el empleado en la consulta.

Este artículo se centra en el componente de resumen de la arquitectura.

Detalles del escenario


Las empresas suelen crear y mantener una knowledge base sobre procesos
empresariales, clientes, productos e información. Sin embargo, devolver contenido
relevante basado en una consulta de usuario de un conjunto de datos grande suele ser
difícil. El usuario puede consultar el knowledge base y buscar un documento aplicable
mediante métodos como la clasificación de páginas, pero profundizar más en el
documento para buscar información relevante normalmente se convierte en una tarea
manual que tarda tiempo. Sin embargo, con los avances recientes en los modelos de
transformador de base como el desarrollado por OpenAI, el mecanismo de consulta se
ha refinado mediante métodos de búsqueda semántica que usan información de
codificación como incrustaciones para encontrar información relevante. Estos
desarrollos permiten resumir el contenido y presentarlo al usuario de forma concisa y
concreta.

El resumen de documentos es el proceso de creación de resúmenes a partir de grandes


volúmenes de datos, a la vez que se mantienen elementos informativos importantes y
contenido de valor. En este artículo se muestra cómo usar las funcionalidades de GPT-3
de Azure OpenAI Service para un caso de uso específico. GPT-3 es una herramienta
eficaz que puede usarse para una gran variedad de tareas de procesamiento de
lenguaje natural, como traducciones de idiomas, bots de chat, hacer resúmenes de
textos y crear contenido. Los métodos y la arquitectura que se describen aquí son
personalizables y se pueden aplicar a muchos conjuntos de datos.

Posibles casos de uso


El resumen de documentos se aplica a cualquier dominio organizativo que requiera que
los usuarios busquen grandes cantidades de datos de referencia y generen un resumen
que describa concisamente la información pertinente. Los dominios típicos incluyen
organizaciones legales, financieras, de noticias, sanitarias y académicas. Los posibles
casos de uso para hacer resúmenes son:

Generar resúmenes para resaltar información clave sobre noticias, informes


financieros, etc.
Crear una referencia rápida para hacer referencia a un argumento, por ejemplo, en
procedimientos legales.
Proporcionar contexto para la tesis de un documento, como en la configuración
académica.
Escribir reseñas literarias.
Anotar una bibliografía.

Algunas ventajas de usar un servicio de resumen para cualquier caso de uso son:

Se reduce el tiempo de lectura.


Búsquedas más eficaces en grandes volúmenes de datos dispares.
Menor probabilidad de sesgo de técnicas de resumen humano. (Esta ventaja
depende de la parcialidad de los datos de entrenamiento).
Permitir que los empleados y los usuarios se centren en un análisis más detallado.

Aprendizaje en contexto
El servicio OpenAI de Azure usa un modelo de finalización generativa. El modelo usa
instrucciones de lenguaje natural para identificar la tarea solicitada y la aptitud
requerida, un proceso conocido como ingeniería de solicitud. Al usar este enfoque, la
primera parte de la solicitud incluye instrucciones de lenguaje natural o ejemplos de la
tarea que se quiere llevar a cabo. El modelo termina la terea prediciendo el texto
siguiente más probable. Esta técnica se conoce como aprendizaje en contexto.

Con el aprendizaje en contexto, los modelos de lenguaje pueden aprender tareas a


partir de unos pocos ejemplos. El modelo de lenguaje se proporciona con una solicitud
que contiene una lista de pares de entrada-salida que determinan una tarea y prosigue
con una entrada de prueba. El modelo realiza una predicción mediante el
acondicionamiento en la solicitud y la predicción de los siguientes tokens.

Hay tres enfoques principales para el aprendizaje en contexto: el aprendizaje zero-shot,


el aprendizaje few-shot y los métodos de ajuste preciso que cambian y mejoran la salida.
Estos enfoques varían en función de la cantidad de datos específicos de la tarea que se
proporcionan al modelo.

Zero-shot: En este enfoque, no se proporciona ningún ejemplo al modelo. Solo se


proporciona la solicitud de la tarea como entrada. En el aprendizaje zero-shot, el
modelo depende de los conceptos entrenados previamente. Responde solo en función
de los datos en los que está entrenado. No comprende necesariamente el significado
semántico, pero tiene un conocimiento estadístico que se basa en todo lo que se
aprende de Internet sobre lo que se debe generar a continuación. El modelo intenta
relacionar la tarea dada con las categorías existentes que ya ha aprendido y responde
en consecuencia.

Few-shot: En este caso, un usuario incluye varios ejemplos en la solicitud de llamada


que muestran el formato y el contenido de respuesta que espera. El modelo se
proporciona con un conjunto de datos de entrenamiento muy pequeño para guiar sus
predicciones. El entrenamiento con un pequeño conjunto de ejemplos permite que el
modelo generalice y comprenda las tareas no relacionadas pero no vistos previamente.
La creación de algunos ejemplos puede ser difícil porque necesita articular con precisión
la tarea que desea que el modelo realice. Un problema observado habitualmente es que
los modelos son sensibles al estilo de escritura que se usa en los ejemplos de
entrenamiento, especialmente los modelos pequeños.

Ajuste preciso: El ajuste preciso es un proceso de adaptación de modelos a sus propios


conjuntos de datos. En este paso de personalización, puede mejorar el proceso
haciendo lo siguiente:

Incluir un conjunto de datos más grande (al menos 500 ejemplos).


Usar técnicas de optimización tradicionales con la propiedad de retropropagación
para reajustar los pesos del modelo. Estas técnicas permiten obtener resultados de
mayor calidad que los que los enfoques zero-shot o few-shot proporcionan por sí
mismos.
Mejorar el enfoque de pocos pasos mediante el entrenamiento de los pesos del
modelo con avisos específicos y una estructura concreta. Esta técnica permite
obtener mejores resultados en un mayor número de tareas sin necesidad de
proporcionar ejemplos en la solicitud. El resultado es menos texto enviado y
menos tokens.
Al crear una solución en GPT-3, el esfuerzo principal es el diseño y el contenido de la
solicitud de entrenamiento.

Ingeniería rápida
La ingeniería rápida es una materia de procesamiento de lenguaje natural que implica la
detección de entradas que producen salidas deseables o útiles. Cuando un usuario hace
una solicitud al sistema, la forma en que se expresa el contenido puede cambiar
drásticamente la salida. El diseño de la solicitud es el proceso más significativo para
garantizar que el modelo GPT-3 proporciona una respuesta adaptada al contexto y a lo
que se quiere.

La arquitectura descrita en este artículo usa el punto de conexión de finalizaciones para


el hacer resumen. El punto de conexión de finalizaciones es una API de Azure Cognitive
Services que acepta un mensaje parcial o contexto como entrada y devuelve una o
varias salidas que continúan o completan el texto de entrada. Un usuario proporciona
texto de entrada a modo de solicitud y el modelo genera un texto que intenta coincidir
con el contexto o patrón proporcionado. El diseño de la solicitud depende en gran
medida de la tarea y los datos. La incorporación de ingeniería rápida en un conjunto de
datos de ajuste preciso e investigación de lo que funciona mejor antes de usar el
sistema en producción requiere un tiempo y un esfuerzo significativos.

Diseño de la solicitud
Los modelos GPT-3 pueden realizar varias tareas, por lo que debe ser explícito en los
objetivos del diseño. Los modelos calculan la salida deseada en función de la solicitud
proporcionada.

Por ejemplo, si entra las palabras "dame una lista de razas de gatos", el modelo no
asumirá automáticamente que le pide una lista de razas de gatos. Podría estar
pidiéndole al modelo que continuara una conversación en la que las primeras palabras
fueran "Dame una lista de razas de gatos" y las siguientes "y te diré cuáles me gustan".
Si el modelo solo asumiera que quiere una lista de gatos, no sería tan bueno en la
creación de contenidos, en la clasificación o en otras tareas.

Como se describe en Aprenda a generar o manipular texto, hay tres directrices básicas
para crear solicitudes:

Mostrar y contar Mejore la claridad sobre lo que desea proporcionando


instrucciones, ejemplos o una combinación de estos dos. Si quiere que el modelo
clasifique una lista de elementos por orden alfabético o que clasifique un párrafo
por opinión, muéstrele que eso es lo que quiere.
Proporcionar datos de calidad. Si va a crear un clasificador o quiere que un
modelo siga un patrón, asegúrese de proporcionar suficientes ejemplos. También
debe revisar estos ejemplos. Normalmente, el modelo puede reconocer errores
ortográficos y devolver una respuesta, pero podría suponer que los errores
ortográficos son intencionales, lo que puede afectar a la respuesta.
Compruebe la configuración. La configuración de temperature y el top_p controla
cómo de determinante es el modelo a la hora de generar una respuesta. Si
pregunta para obtener una respuesta que solo tenga una respuesta correcta,
configure estas opciones en un nivel inferior. Si quiere respuestas más diversas, es
posible que quiera configurar las opciones en un nivel superior. Un error común es
suponer que estas configuraciones son controles de "inteligencia" o "creatividad".

Alternativas
El reconocimiento del lenguaje conversacional de Azure es una alternativa al generador
de resumen que se usa aquí. El propósito principal de la comprensión del lenguaje
conversacional es crear modelos que predigan la intención general de una expresión
entrante, extraigan información valiosa de ella y generen una respuesta que se alinee
con el tema. Resulta útil en las aplicaciones de bot de chat cuando puede hacer
referencia a un knowledge base existente para encontrar la sugerencia que mejor se
corresponda con la expresión entrante. No ayuda mucho cuando el texto de entrada no
requiere una respuesta. La intención de esta arquitectura es generar un breve resumen
de los contenidos textuales largos. La esencia del contenido se describe de forma
concisa y se representa toda la información importante.

Escenarios de ejemplo

Caso de uso: Resumen de documentos legales


En este caso de uso, se resume una colección de proyectos legislativos aprobados a
través del Congreso. El resumen está ajustado para acercarlo a un resumen generado
por personas, lo que se conoce como resumen de verdad fundamentada.

La ingeniería rápida zero-shot se usa para resumir las facturas. A continuación, se


modifican la solicitud y la configuración para generar diferentes resúmenes como
salidas.

Dataset
El primer conjunto de datos es el conjunto de datos BillSum para resumir las facturas
estatales del Congreso de Estados Unidos y California. En este ejemplo solo se usan las
leyes del Congreso. Los datos se dividen en 18.949 facturas que se usarán para el
entrenamiento y 3.269 facturas que se usarán para las pruebas. BillSum se centra en la
legislación de longitud media que tiene entre 5.000 y 20.000 caracteres. Está limpiado y
preprocesado.

Para obtener más información sobre el conjunto de datos y las instrucciones para su
descarga, vea FiscalNote /BillSum .

Esquema BillSum

El esquema del conjunto de datos BillSum incluye:

bill_id . Identificador del error.

text . Texto de la factura.


summary . Un resumen escrito por una persona de la factura.

title . Título de la factura.


text_len . Longitud del carácter de la entidad.

sum_len . Longitud del carácter del resumen de la factura.

En este caso de uso, se usan los elementos text y summary .

Zero-shot
El objetivo aquí es enseñar el modelo GPT-3 para aprender la entrada de estilo de
conversación. El punto de conexión de finalizaciones se usa para crear una API de Azure
OpenAI y una solicitud que genera el mejor resumen posible de la factura. Es
importante crear cuidadosamente las solicitudes para que se extraiga información
relevante. Para extraer resúmenes generales de una factura determinada, se usa el
siguiente formato.

Prefijo: lo que desea que haga.


Introducción al contexto: contexto.
Contexto: la información necesaria para proporcionar una respuesta. En este caso,
el texto que se va a resumir.
Sufijo: forma prevista de la respuesta. Por ejemplo, una respuesta, una finalización
o un resumen.

Python
API_KEY = # SET YOUR OWN API KEY HERE
RESOURCE_ENDPOINT = " -- # SET A LINK TO YOUR RESOURCE ENDPOINT -- "

openai.api_type = "azure"
openai.api_key = API_KEY
openai.api_base = RESOURCE_ENDPOINT
openai.api_version = "2022-12-01-preview"
prompt_i = 'Summarize the legislative bill given the title and the
text.\n\nTitle:\n'+" ".join([normalize_text(bill_title_1)])+ '\n\nText:\n'+
" ".join([normalize_text(bill_text_1)])+'\n\nSummary:\n'
response = openai.Completion.create(
engine=TEXT_DAVINCI_001
prompt=prompt_i,
temperature=0.4,
max_tokens=500,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
stop=['\n\n###\n\n'], # The ending token used during inference. Once it
reaches this token, GPT-3 knows the completion is over.
best_of=1
)
= 1

Texto original:SAMPLE_BILL_1 .

Verdad fundamentada: Ley Nacional de Incentivos Fiscales a la Educación Científica


para Empresas en 2007: Modifica el Código de Rentas Internas para permitir un crédito
fiscal empresarial general para las contribuciones de bienes o servicios a las escuelas
primarias y secundarias y para la formación del profesorado con el fin de promover la
educación en ciencia, tecnología, ingeniería o matemáticas.

Resumen del modelo zero-shot: La Ley nacional de incentivos fiscales para la educación
científica para empresas de 2007 crearía un nuevo crédito fiscal para empresas que
hagan contribuciones a la ciencia, la tecnología, la ingeniería y la educación matemática
(STEM) en el nivel de escuela primaria y secundaria. El crédito sería igual al 100 por
ciento de las contribuciones STEM calificadas del contribuyente para el año sujeto
pasivo. Las contribuciones de STEM calificadas incluyen contribuciones a la escuela
STEM, gastos de externificación de maestros DE STEM y gastos de formación de
profesores de STEM.

Observaciones: El modelo de captura cero genera un resumen concisa y generalizado


del documento. Es similar a la verdad fundamentada en escritos por personas y captura
los mismos puntos clave. Se organiza como un resumen escrito por personas y
permanece centrado en el punto.
Ajuste preciso
El ajuste preciso mejora el aprendizaje zero-shot mediante el entrenamiento en más
ejemplos de los que puede incluir en la solicitud, por lo que se obtienen mejores
resultados en un mayor número de tareas. Después de ajustar un modelo, no es
necesario proporcionar ejemplos en la solicitud. El ajuste preciso ahorra dinero al
reducir el número de tokens necesarios y permite solicitudes de menor latencia.

En un nivel alto, el ajuste preciso incluye estos pasos:

Preparar y cargar los datos de entrenamiento.


Entrenar un nuevo modelo ajustado.
Usar el modelo con ajuste preciso.

Para más información, consulte Personalización de un modelo con el servicio OpenAI de


Azure.

Preparar datos para el ajuste preciso

Este paso permite mejorar el modelo zero-shot mediante la incorporación de ingeniería


rápida en las solicitudes que se usan para el ajuste preciso. Esto ayuda a proporcionar
instrucciones al modelo sobre cómo acercarse a los pares de solicitud y finalización. En
un modelo de ajuste preciso, las solicitudes proporcionan un punto de partida del que
el modelo puede aprender y usarse para realizar predicciones. Este proceso permite que
el modelo comience con una comprensión básica de los datos, lo que se puede mejorar
gradualmente a medida que el modelo se expone a más datos. Además, las solicitudes
pueden ayudar al modelo a identificar patrones en los datos que, de lo contrario,
podrían perderse.

La misma estructura de ingeniería de solicitudes también se usa durante la inferencia,


una vez finalizado el entrenamiento del modelo, de modo que el modelo reconozca el
comportamiento que ha aprendido durante el entrenamiento y pueda generar
finalizaciones como se indica.

Python

#Adding variables used to design prompts consistently across all examples


#You can learn more here: https://learn.microsoft.com/azure/cognitive-
services/openai/how-to/prepare-dataset

LINE_SEP = " \n "


PROMPT_END = " [end] "
#Injecting the zero-shot prompt into the fine-tune dataset
def stage_examples(proc_df):
proc_df['prompt'] = proc_df.apply(lambda x:"Summarize the legislative
bill. Do not make up facts.\n\nText:\n"+"
".join([normalize_text(x['prompt'])])+'\n\nSummary:', axis=1)
proc_df['completion'] = proc_df.apply(lambda x:"
"+normalize_text(x['completion'])+PROMPT_END, axis=1)

return proc_df

df_staged_full_train = stage_examples(df_prompt_completion_train)
df_staged_full_val = stage_examples(df_prompt_completion_val)

Ahora que los datos están almacenados provisionalmente para el ajuste preciso en el
formato adecuado, puede empezar a ejecutar los comandos de ajuste.

A continuación, puede usar la CLI de OpenAI para ayudar con algunos de los pasos de
preparación de datos. La herramienta OpenAI valida los datos, proporciona sugerencias
y vuelve a formatear los datos.

Python

openai tools fine_tunes.prepare_data -f


data/billsum_v4_1/prompt_completion_staged_train.csv

openai tools fine_tunes.prepare_data -f


data/billsum_v4_1/prompt_completion_staged_val.csv

Ajuste del conjunto de datos

Python

payload = {
"model": "curie",
"training_file": " -- INSERT TRAINING FILE ID -- ",
"validation_file": "-- INSERT VALIDATION FILE ID --",
"hyperparams": {
"n_epochs": 1,
"batch_size": 200,
"learning_rate_multiplier": 0.1,
"prompt_loss_weight": 0.0001
}
}

url = RESOURCE_ENDPOINT + "openai/fine-tunes?api-version=2022-12-01-preview"


r = requests.post(url,
headers={
"api-key": API_KEY,
"Content-Type": "application/json"
},
json = payload
)
data = r.json()
print(data)
fine_tune_id = data['id']
print('Endpoint Called: {endpoint}'.format(endpoint = url))
print('Status Code: {status}'.format(status= r.status_code))
print('Fine tuning job ID: {id}'.format(id=fine_tune_id))
print('Response Information \n\n {text}'.format(text=r.text))

Evaluación del modelo con ajuste preciso

En esta sección se muestra cómo evaluar el modelo con ajuste preciso.

Python

#Run this cell to check status


url = RESOURCE_ENDPOINT + "openai/fine-tunes/<--insert fine-tune id-->?api-
version=2022-12-01-preview"
r = requests.get(url,
headers={
"api-key": API_KEY,
"Content-Type": "application/json"
}
)

data = r.json()
print('Endpoint Called: {endpoint}'.format(endpoint = url))
print('Status Code: {status}'.format(status= r.status_code))
print('Fine tuning ID: {id}'.format(id=fine_tune_id))
print('Status: {status}'.format(status = data['status']))
print('Response Information \n\n {text}'.format(text=r.text))

Texto original:SAMPLE_BILL_1 .

Verdad fundamentada: Ley Nacional de Incentivos Fiscales a la Educación Científica


para Empresas en 2007: Modifica el Código de Rentas Internas para permitir un crédito
fiscal empresarial general para las contribuciones de bienes o servicios a las escuelas
primarias y secundarias y para la formación del profesorado con el fin de promover la
educación en ciencia, tecnología, ingeniería o matemáticas.

Resumen del modelo con ajuste preciso: Este proyecto de ley proporciona un crédito
fiscal para las contribuciones a las escuelas primarias y secundarias que benefician a la
ciencia, la tecnología, la ingeniería y la educación matemática. El crédito es igual al 100%
de las contribuciones STEM calificadas realizadas por los contribuyentes durante el año
sujeto pasivo. Las contribuciones de STEM calificadas incluyen: (1) contribuciones a la
escuela STEM, (2) gastos de externificación de maestros DE STEM y (3) gastos de
formación de profesores de STEM. El presupuesto también ofrece un crédito fiscal para
las contribuciones a las escuelas primarias y secundarias que benefician a la ciencia, la
tecnología, la ingeniería o la educación matemática. El crédito es igual al 100% de las
contribuciones del servicio STEM calificadas realizadas por los contribuyentes durante el
año sujeto pasivo. Las contribuciones calificadas a los servicios STEM incluyen: (1)
contribuciones de servicio STEM pagadas o incurridas durante el año sujeto pasivo para
los servicios prestados en el Estados Unidos o en una base militar fuera de la Estados
Unidos; y (2) propiedad de inventario STEM aportada durante el año sujeto pasivo que
utiliza una organización educativa ubicada en el Estados Unidos o en una base militar
fuera del Estados Unidos para proporcionar educación en los grados K-12 en ciencia,
tecnología, ingeniería o matemáticas.

Para obtener los resultados de resumir algunas facturas más mediante los enfoques
zero-shot y ajuste preciso, consulte Resultados del conjunto de datos BillSum .

Observaciones: En general, el modelo ajustado hace un excelente trabajo de resumir la


factura. Captura la jerga específica del dominio y los puntos clave que se representan,
pero no se explican en la verdad fundamentada en escritos por personas. Se diferencia
del modelo de captura cero proporcionando un resumen más detallado y completo.

Caso de uso: informes financieros


En este caso de uso, la ingeniería rápida de disparo cero se usa para crear resúmenes de
informes financieros. A continuación, se usa un resumen del enfoque de resúmenes para
generar los resultados.

Resumen del enfoque de resúmenes


Al escribir mensajes, el total de solicitudes y finalizaciones resultantes de GPT-3 debe
incluir menos de 4000 tokens, por lo que se ha de limitar a un par de páginas de texto
de resumen. En el caso de los documentos que normalmente contienen más de 4000
tokens (aproximadamente 3000 palabras), puede usar un resumen del enfoque de
resúmenes . Cuando se usa este enfoque, todo el texto se divide primero para cumplir
las restricciones de token. A continuación, se derivan resúmenes de los textos más
cortos. En el paso siguiente, se crea un resumen de los resúmenes. En este caso de uso
se muestra el resumen del enfoque de resúmenes con un modelo zero-shot. Esta
solución es útil para documentos largos. Además, en esta sección se describe cómo las
diferentes prácticas de ingeniería rápida pueden variar los resultados.

7 Nota

El ajuste preciso no se aplica en el caso de uso financiero porque no hay suficientes


datos disponibles para completar ese paso.
Dataset
El conjunto de datos para este caso de uso es técnico e incluye métricas cuantitativas
clave para evaluar el rendimiento de una empresa.

El conjunto de datos financieros incluye:

url : la dirección URL del informe financiero.

pages : la página del informe que contiene información clave que se va a resumir
(indizada 1).
completion : el resumen de la verdad fundamentada del informe.
comments : cualquier información adicional necesaria.

En este caso de uso, se resumirá el informe financiero de Rathbone , del conjunto de


datos. Rathbone es una empresa individual de gestión de inversiones y riquezas para
clientes privados. El informe destaca el rendimiento de Rathbone en 2020 y menciona
métricas de rendimiento como beneficios, FUMA e ingresos. La información clave que se
va a resumir está en la página 1 del PDF.

Python

API_KEY = # SET YOUR OWN API KEY HERE


RESOURCE_ENDPOINT = "# SET A LINK TO YOUR RESOURCE ENDPOINT"

openai.api_type = "azure"
openai.api_key = API_KEY
openai.api_base = RESOURCE_ENDPOINT
openai.api_version = "2022-12-01-preview"
name = os.path.abspath(os.path.join(os.getcwd(), '---INSERT PATH OF LOCALLY
DOWNLOADED RATHBONES_2020_PRELIM_RESULTS---')).replace('\\', '/')

pages_to_summarize = [0]
# Using pdfminer.six to extract the text
# !pip install pdfminer.six
from pdfminer.high_level import extract_text
t = extract_text(name
, page_numbers=pages_to_summarize
)
print("Text extracted from " + name)
t

Enfoque zero-shot

Al usar el enfoque de disparo cero, no se proporcionan ejemplos resueltos. Solo se


proporciona el comando y la entrada sin resolver. En este ejemplo, se usa el modelo
Instruct. Este modelo está diseñado específicamente para tomar una instrucción y
registrar una respuesta para él sin contexto adicional, que es ideal para el enfoque zero-
shot.

Después de extraer el texto, puede usar varias solicitudes para ver cómo influyen en la
calidad del resumen:

Python

#Using the text from the Rathbone's report, you can try different prompts to
see how they affect the summary

prompt_i = 'Summarize the key financial information in the report using


qualitative metrics.\n\nText:\n'+" ".join([normalize_text(t)])+'\n\nKey
metrics:\n'

response = openai.Completion.create(
engine="davinci-instruct",
prompt=prompt_i,
temperature=0,
max_tokens=2048-int(len(prompt_i.split())*1.5),
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)
print(response.choices[0].text)
>>>
- Funds under management and administration (FUMA) reached £54.7 billion at
31 December 2020, up 8.5% from £50.4 billion at 31 December 2019
- Operating income totalled £366.1 million, 5.2% ahead of the prior year
(2019: £348.1 million)
- Underlying1 profit before tax totalled £92.5 million, an increase of 4.3%
(2019: £88.7 million); underlying operating margin of 25.3% (2019: 25.5%)

# Different prompt

prompt_i = 'Extract most significant money related values of financial


performance of the business like revenue, profit, etc. from the below text
in about two hundred words.\n\nText:\n'+"
".join([normalize_text(t)])+'\n\nKey metrics:\n'

response = openai.Completion.create(
engine="davinci-instruct",
prompt=prompt_i,
temperature=0,
max_tokens=2048-int(len(prompt_i.split())*1.5),
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)
print(response.choices[0].text)
>>>
- Funds under management and administration (FUMA) grew by 8.5% to reach
£54.7 billion at 31 December 2020
- Underlying profit before tax increased by 4.3% to £92.5 million,
delivering an underlying operating margin of 25.3%
- The board is announcing a final 2020 dividend of 47 pence per share, which
brings the total dividend to 72 pence per share, an increase of 2.9% over
2019

Desafíos

Como puede ver, el modelo podría generar métricas que no se mencionan en el


texto original.

Solución propuesta: puede resolver este problema cambiando la solicitud.

El resumen podría centrarse en una sección del artículo y descuidar otra


información importante.

Solución propuesta: puede probar un resumen del enfoque de resúmenes. Divida


el informe en secciones y cree resúmenes más pequeños que puede resumir para
crear el resumen de salida.

Este código implementa las soluciones propuestas:

Python

# Body of function

from pdfminer.high_level import extract_text

text = extract_text(name
, page_numbers=pages_to_summarize
)

r = splitter(200, text)

tok_l = int(2000/len(r))
tok_l_w = num2words(tok_l)

res_lis = []
# Stage 1: Summaries
for i in range(len(r)):
prompt_i = f'Extract and summarize the key financial numbers and
percentages mentioned in the Text in less than {tok_l_w}
words.\n\nText:\n'+normalize_text(r[i])+'\n\nSummary in one paragraph:'

response = openai.Completion.create(
engine=TEXT_DAVINCI_001,
prompt=prompt_i,
temperature=0,
max_tokens=tok_l,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)
t = trim_incomplete(response.choices[0].text)
res_lis.append(t)

# Stage 2: Summary of summaries


prompt_i = 'Summarize the financial performance of the business like
revenue, profit, etc. in less than one hundred words. Do not make up values
that are not mentioned in the Text.\n\nText:\n'+"
".join([normalize_text(res) for res in res_lis])+'\n\nSummary:\n'

response = openai.Completion.create(
engine=TEXT_DAVINCI_001,
prompt=prompt_i,
temperature=0,
max_tokens=200,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)

print(trim_incomplete(response.choices[0].text))

La solicitud de entrada incluye el texto original del informe financiero de Rathbone para
un año específico.

Verdad fundamentada: Rathbones ha notificado ingresos de £366,1m en 2020, hasta


£348,1m en 2019, y un aumento del beneficio subyacente antes de impuestos de hasta
£92,5m desde £88,7m. Los activos bajo gestión aumentaron el 8,5% de £50,4bn a
£54,7bn, con activos en gestión de la riqueza aumentando 4,4% a £44,9bn. Los flujos
netos fueron de 2,100 millones de libras en 2020 en comparación con los 600 millones
de libras del año anterior, impulsados principalmente por 1,500 millones de libras en su
negocio de fondos y 400 millones debido a la transferencia de activos de Barclays
Wealth.

Resumen zero-shot de los resúmenes de salida: Rathbones entregó un fuerte


desempeño en 2020, con fondos bajo gestión y administración (FUMA) creciendo un
8,5% para alcanzar £54,7 mil millones al final del año. El beneficio subyacente antes del
impuesto aumentó un 4,3% a 92,5 millones de libras, lo que proporciona un margen
operativo subyacente del 25,3%. Los flujos netos totales en el grupo eran de 2,100
millones de libras, lo que representa una tasa de crecimiento del 4,2%. El beneficio antes
de impuestos del año fue de 43,8 millones de libras, con beneficios básicos por acción
que totalizaron 49,6p. Los ingresos operativos del año fueron del 5,2% por delante del
año anterior, lo que totalizó 366,1 millones de libras.

Observaciones: El resumen del enfoque de resúmenes genera un gran conjunto de


resultados que resuelve los desafíos encontrados inicialmente cuando se proporcionó
un resumen más detallado y completo. Hace un gran trabajo de capturar el jerga
específico del dominio y los puntos clave, que se representan en la verdad
fundamentada, pero no se explican bien.

El modelo zero-shot funciona bien para resumir documentos estándar. Si los datos son
específicos del sector o específicos del tema, contiene jerga específica del sector o
requiere conocimientos específicos del sector, el ajuste preciso funciona mejor. Por
ejemplo, este enfoque funciona bien para revistas médicas, formularios legales y
estados financieros. Puede usar el enfoquefew-shot en lugar de zero-shot para
proporcionar al modelo ejemplos de cómo formular un resumen, por lo que puede
aprender a imitar el resumen proporcionado. Para el enfoque zero-shot, esta solución
no vuelve a entrenar el modelo. El conocimiento del modelo se basa en el
entrenamiento GPT-3. GPT-3 está entrenado con casi todos los datos disponibles de
Internet. Funciona bien para las tareas que no requieren conocimientos específicos.

Para obtener los resultados del uso del resumen de resumen de resúmenes sobre
algunos informes del conjunto de datos financiero, consulte Resultados para resumen
de resúmenes .

Recomendaciones
Hay muchas maneras de abordar el resumen mediante GPT-3, incluyendo el zero-shot,
el few-shot y el ajuste preciso. Los enfoques generan resúmenes de calidad variable.
Puede explorar qué enfoque genera los mejores resultados para su caso de uso previsto.

En función de las observaciones sobre las pruebas presentadas en este artículo, estas
son algunas recomendaciones:

Zero-shot es mejor para los documentos estándar que no requieren


conocimientos de dominio específicos. Este enfoque intenta capturar toda la
información de alto nivel de una manera concisa, similar a la humana y
proporciona un resumen de línea base de alta calidad. Zero-shot crea un resumen
de alta calidad para el conjunto de datos legal que se usa en las pruebas de este
artículo.
Few-shot es difícil de usar para resumir documentos largos porque se supera la
limitación del token cuando se proporciona un texto de ejemplo. En su lugar,
puede usar un resumen zero-shot del enfoque de resúmenes para documentos
largos o aumentar el conjunto de datos para habilitar el ajuste preciso. El resumen
del enfoque de resúmenes genera excelentes resultados para el conjunto de datos
financiero que se usa en estas pruebas.
El ajuste preciso resulta más útil para casos de uso técnicos o específicos de
dominio cuando la información no está disponible fácilmente. Para lograr los
mejores resultados con este enfoque, necesita un conjunto de datos que contenga
un par de miles de muestras. El ajuste preciso captura el resumen de algunas
maneras con plantilla, intentando cumplir con la forma en que el conjunto de
datos presenta los resúmenes. Para el conjunto de datos legal, este enfoque
genera una mayor calidad de resumen que la creada por el enfoque zero-shot.

Evaluación del resumen


Hay varias técnicas para evaluar el rendimiento de los modelos de resumen.

Estas son algunas:

ROUGE (Subestudio orientado a la recuperación para la evaluación de Gisting). Esta


técnica incluye medidas para determinar automáticamente la calidad de un resumen
comparándolo con resúmenes ideales creados por humanos. Las medidas cuentan el
número de unidades superpuestas, como n-gramas, secuencias de palabras y pares de
palabras, entre el resumen generado por el equipo que se evalúa y los resúmenes
ideales.

Este es un ejemplo:

Python

reference_summary = "The cat ison porch by the tree"


generated_summary = "The cat is by the tree on the porch"
rouge = Rouge()
rouge.get_scores(generated_summary, reference_summary)
[{'rouge-1': {'r':1.0, 'p': 1.0, 'f': 0.999999995},
'rouge-2': {'r': 0.5714285714285714, 'p': 0.5, 'f': 0.5333333283555556},
'rouge-1': {'r': 0.75, 'p': 0.75, 'f': 0.749999995}}]

BERTScore. Esta técnica calcula las puntuaciones de similitud mediante la alineación de


resúmenes generados y de referencia en un nivel de token. Las alineaciones de tokens
se calculan de forma expanstina para maximizar la similitud coseno entre las
incrustaciones de tokens contextualizadas de BERT.

Este es un ejemplo:

Python
import torchmetrics
from torchmetrics.text.bert import BERTScore
preds = "You should have ice cream in the summer"
target = "Ice creams are great when the weather is hot"
bertscore = BERTScore()
score = bertscore(preds, target)
print(score)

Matriz de similitud. Una matriz de similitud es una representación de las similitudes


entre diferentes entidades en una evaluación de resumen. Puede usarlo para comparar
distintos resúmenes del mismo texto y medir su similitud. Se representa mediante una
cuadrícula bidimensional, donde cada celda contiene una medida de la similitud entre
dos resúmenes. Puede medir la similitud mediante varios métodos, como la similitud de
coseno, la similitud de Jaccard y la distancia de edición. A continuación, use la matriz
para comparar los resúmenes y determinar cuál es la representación más precisa del
texto original.

Este es un comando de ejemplo que obtiene la matriz de similitud de una comparación


BERTScore de dos oraciones similares:

Python

bert-score-show --lang en -r "The cat is on the porch by the tree"


-c "The cat is by the tree on the porch"
-f out.png

La primera frase, "el gato está en el porche junto al árbol", se conoce como candidato.
La segunda frase se conoce como referencia. El comando usa BERTScore para comparar
las oraciones y generar una matriz.

Esta matriz siguiente muestra la salida generada por el comando anterior:


Para obtener más información, vea SummEval: reevaluación de la evaluación de
resúmenes . Para obtener un kit de herramientas de PyPI para resúmenes, consulte
summ-eval 0.892 .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Noa Ben-Efraim | Científica orientada a datos &

Otros colaboradores:

Mick Alberts | Escritor técnico


Rania Bayoumy | Administradora de programas técnicos sénior
Harsha Viswanath | Directora principal de ciencias aplicadas

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Azure OpenAI: documentación, inicios rápidos y referencia de API
¿Cuáles son las intenciones en LUIS?
Reconocimiento del lenguaje conversacional
Jupyter Notebook con detalles técnicos y ejecución de este caso de uso

Recursos relacionados
Diseño de arquitectura de IA
Elección de una tecnología de servicios cognitivos de Microsoft
Tecnología de procesamiento de lenguaje natural
Compilación de canalizaciones del
modelo de lenguaje con memoria
Bing Web Search Azure Cache for Redis Azure Pipelines

Adelántese a la competencia al estar informado y tener un profundo conocimiento de


sus productos y productos de la competencia. Una canalización de IA y aprendizaje
automático ayuda a recopilar, analizar y resumir información pertinente de forma rápida
y eficaz. Esta arquitectura incluye varios modelos eficaces de Azure OpenAI Service.
Estos modelos se emparejan con el popular marco de LangChain de código abierto que
se usa para desarrollar aplicaciones con tecnología de modelos de lenguaje.

7 Nota

Algunas partes de la introducción, los componentes y el flujo de trabajo de este


artículo se generaron con la ayuda de ChatGPT. Pruébelo para usted o pruébelo
para su empresa.

Architecture

Descargue un archivo de PowerPoint de esta arquitectura.


Flujo de trabajo
La canalización por lotes almacena información interna del producto de la empresa en
una base de datos de búsqueda vectorial rápida. Para lograr este resultado, se lleva
acabo el siguiente procedimiento:

1. Los documentos internos de la empresa para los productos se importan y se


convierten en vectores utilizables en búsquedas. Los documentos relacionados con
los productos se recopilan de los departamentos, como ventas, marketing y
desarrollo de productos. A continuación, estos documentos se examinan y se
convierten en texto con la tecnología de reconocimiento óptico de caracteres
(OCR).
2. Una utilidad de fragmentación de LangChain fragmenta los documentos en partes
más pequeñas y más fáciles de administrar. La fragmentación divide el texto en
frases u oraciones significativas que se pueden analizar por separado y mejora la
precisión de las funcionalidades de búsqueda de la canalización.
3. El modelo de lenguaje convierte cada fragmento en una inserción vectorizada. Las
inserciones son un tipo de representación que captura el significado y el contexto
del texto. Al convertir cada fragmento en una inserción vectorizada, puede
almacenar y buscar los documentos en función de su significado en lugar de su
texto sin formato. Para evitar la pérdida de contexto en cada fragmento de los
documentos, LangChain proporciona varias utilidades para este paso de la división
de texto, como funcionalidades para ventanas deslizantes o la especificación de
superposición de texto. Entre algunas características clave se incluyen utilidades
para etiquetar fragmentos con metadatos de los documentos, optimizar el paso de
recuperación de documentos y la referencia descendente.
4. Cree un índice en una base de datos de almacén de vectores para almacenar el
texto sin formato del documento, los vectores de inserción y los metadatos. Las
inserciones resultantes se almacenan en una base de datos de almacén de vectores
junto con el texto sin formato del documento y los metadatos pertinentes, como el
título y el origen del documento.

Una vez completada la canalización por lotes, la canalizaciónasincrónica en tiempo real


busca información pertinente. Se lleva a cabo el procedimiento siguiente:

5. Introduzca una consulta y los metadatos pertinentes, como su rol en la empresa o


la unidad de negocio en la que trabaja. Luego, un modelo de inserciones convierte
la consulta en una inserción vectorizada.
6. El modelo de lenguaje de orquestador descompone la consulta, o la tarea
principal, en el conjunto de subtareas necesarias para responder a la consulta. La
conversión de la tarea principal en una serie de subtareas más sencillas permite al
modelo de lenguaje abordar cada tarea con mayor precisión, lo que da como
resultado mejores respuestas con menos tendencia a imprecisiones.
7. Las subtareas de inserción y descompuestas resultantes se almacenan en la
memoria del modelo de LangChain.
a. Los fragmentos de documentos principales internos que son pertinentes para la
consulta se recuperan de la base de datos interna. Se hace una búsqueda rápida
de vectores para los principales documentos similares n que se almacenan
como vectores en Azure Cache for Redis.
b. En paralelo, se hace una búsqueda web de productos externos similares a través
del complemento del modelo de lenguaje de Bing Search para LangChain con
una consulta de búsqueda generada que redacta el modelo de lenguaje de
orquestador. Los resultados se almacenan en el componente de memoria del
modelo externo.
8. Se consulta la base de datos del almacén de vectores y devuelve las páginas de
información de productos de mayor pertinencia (fragmentos y referencias). El
sistema consulta la base de datos del almacén de vectores mediante la inserción
de consultas y devuelve las páginas de información de productos de mayor
pertinencia, junto con los fragmentos de texto y las referencias pertinentes. La
información pertinente se almacena en la memoria del modelo de LangChain.
9. El sistema usa la información almacenada en la memoria del modelo de LangChain
para crear una nueva solicitud que se envía al modelo de lenguaje de orquestador
para crear un informe de resumen en función de la consulta, la knowledge base
interna de la empresa y los resultados web externos.
10. Como opción, la salida del paso anterior se pasa a un filtro de moderación para
quitar la información no deseada. El informe final del producto competitivo se le
envía.

Componentes
Azure OpenAI Service proporciona acceso mediante la API de REST a los eficaces
modelos de lenguaje de OpenAI, incluidas las series de modelos de inserciones,
GPT-3, GPT-3.5 y GPT-4. Puede adaptar con facilidad estos modelos a la tarea
específica, como la generación de contenido, el resumen, la búsqueda semántica,
la conversión de texto a vectores de inserción semánticamente eficaces y la
traducción de lenguaje natural a código.

LangChain es un marco de código abierto de terceros que puede usar para


desarrollar aplicaciones con la tecnología de modelos de lenguaje. LangChain
facilita el trabajo y la creación con los modelos de inteligencia artificial al
proporcionar el marco de orquestación de canalización y las utilidades asistentes
para ejecutar canalizaciones eficaces y de varios modelos.
La memoria hace referencia a la captura de información. De manera
predeterminada, las cadenas de modelado de lenguaje (o las canalizaciones) y los
agentes funcionan sin estado. Controlan cada consulta entrante de manera
independiente, al igual que los modelos de lenguaje subyacentes y los modelos de
chat que usan. Pero en aplicaciones determinadas, como los bots de chat, es
fundamental conservar la información de las interacciones pasadas a corto y largo
plazo. En este ámbito es donde se aplica el concepto de "memoria". LangChain
proporciona herramientas de utilidad prácticas para administrar y manipular los
mensajes de chat pasados. Estas utilidades están diseñadas para ser modulares,
independientemente de su uso específico. LangChain también ofrece métodos sin
complicaciones para integrar estas utilidades en la memoria de las cadenas
mediante los modelos de lenguaje .

El kernel semántico es un kit de desarrollo de software (SDK) de código abierto


que puede usar para orquestar e implementar los modelos de lenguaje. Puede
explorar el kernel semántico como una posible alternativa a LangChain.

Detalles del escenario


Esta arquitectura usa una canalización de IA y aprendizaje automático, LangChain y
modelos de lenguaje para crear un análisis completo de la comparación del producto
con los productos similares de la competencia. La canalización consta de dos
componentes principales: una canalización por lotes y una canalización asincrónica en
tiempo real. Cuando se envía una consulta a la canalización en tiempo real, el modelo
de lenguaje de orquestador, a menudo GPT-4 o el modelo de lenguaje más eficaz
disponible, deriva un conjunto de tareas para responder a la pregunta. Estas subtareas
invocan otros modelos de lenguaje y API para extraer la base de datos interna de
productos de la empresa y la red pública de Internet para crear un informe que muestre
la posición competitiva de sus productos frente a los productos de la competencia.

Posibles casos de uso


Puede aplicar esta solución a los escenarios siguientes:

Compare la información interna del producto de la empresa que tiene una


knowledge base interna con los productos de la competencia que tienen
información que se recupera de una búsqueda web de Bing.
Haga una búsqueda de documentos y una recuperación de información.
Cree un bot de chat para uso interno que tenga una knowledge base interna y
también se mejore mediante una búsqueda web externa.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Brandon Cowen | Arquitecto sénior especialista en soluciones en la nube de IA

Otro colaborador:

Ashish Chauhun | Arquitecto sénior especialista en soluciones en la nube de IA

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Acelerador de procesos empresariales de Azure
Azure OpenAI
PyR de inserciones de Azure OpenAI
ChatGPT
Búsqueda empresarial con arquitectura de OpenAI
IA generativa para desarrolladores: Exploración de nuevas herramientas y API en
Azure OpenAI Service
LangChain
Memoria con modelos de lenguaje
Inicio rápido: Introducción a la generación de texto mediante Azure OpenAI
Service
Redis en Azure OpenAI
Revolucionar los datos empresariales con ChatGPT: aplicaciones de nueva
generación con Azure OpenAI y Azure Cognitive Search
Kernel semántico
Bases de datos vectoriales con Azure OpenAI

Recursos relacionados
Diseño de arquitectura de IA
Tipos de servicios de API de lenguaje
Implementación de conversión de
voz en texto personalizada
Servicios de Azure AI Voz de Azure AI Azure Machine Learning

En esta guía de dos partes se describen varios enfoques para implementar eficazmente
aplicaciones compatibles con voz de alta calidad. Se centra en ampliar y personalizar el
modelo de línea base de la funcionalidad de conversión de voz en texto que
proporciona el servicio de voz de Azure Cognitive Services.

En este artículo se describe el espacio de problemas y el proceso de toma de decisiones


para diseñar la solución. En el segundo artículo, Implementación de una solución
personalizada de conversión de voz en texto, se proporciona un caso de uso para
aplicar estas instrucciones y prácticas recomendadas.

El espectro de IA personalizado y pregenerado


El espectro de inteligencia artificial personalizado y pregenerado representa varios
niveles de personalización y desarrollo de modelos de IA, que van desde modelos
pregenerados listos para usar hasta soluciones de inteligencia artificial totalmente
personalizadas.

En el lado izquierdo del espectro, Azure Cognitive Services permite una


implementación rápida y de baja fricción de las funcionalidades de inteligencia artificial
en aplicaciones mediante modelos entrenados previamente. Microsoft mantiene
extensos conjuntos de datos para entrenar y crear estos modelos de línea base. Como
resultado, puede usar modelos de línea base sin datos de entrenamiento adicionales. Se
consumen gracias a llamadas API mediante programación de seguridad mejorada.

Cognitive Services incluye:

Voz, Conversión de voz a texto, texto a voz, traducción de voz y reconocimiento


del hablante
Idioma. Reconocimiento de entidades, análisis de sentimiento, respuesta a
preguntas, reconocimiento del lenguaje conversacional y traductor
Visión. Computer Vision y Face API
Decisión. Anomaly Detector, Content Moderator y Personalizer
OpenAI Service. Modelos de lenguaje avanzados

Cuando los modelos de línea base pregenerados no funcionan con la precisión


suficiente con los datos, puede personalizarlos agregando datos de entrenamiento
relativos al dominio del problema. Esta personalización requiere el trabajo adicional de
recopilar los datos adecuados para entrenar y evaluar un modelo aceptable. Cognitive
Services que se pueden personalizar incluyen Custom Vision, Traductor personalizado,
Habla personalizada y CLU. La extensión de modelos pregenerados de Cognitive
Services está en el centro del espectro. La mayor parte de este artículo se centra en esa
área central.

Como alternativa, cuando los modelos y los datos de entrenamiento se centran en un


escenario específico y requieren un conjunto de datos de entrenamiento de su
propiedad, Azure Machine Learning proporciona recursos de soluciones personalizados,
herramientas, proceso y guía de flujo de trabajo para admitir la creación de modelos
completamente personalizados. Este escenario aparece en el lado derecho del espectro.
Estos modelos se crean desde cero. El desarrollo de un modelo mediante Azure
Machine Learning suele oscilar entre usar herramientas visuales como AutoML y
desarrollar el modelo mediante programación con cuadernos.

Servicio de voz de Azure


El servicio de voz de Azure unifica la funcionalidad de conversión de voz en texto, texto
en voz, traducción de voz, asistente de voz y reconocimiento del hablante en una sola
suscripción basada en Cognitive Services. Puede habilitar una aplicación para voz
mediante la integración con el servicio de voz con SDK y API fáciles de usar.

El servicio de conversión de voz en texto de Azure analiza el audio en tiempo real o de


forma asincrónica para transcribir la palabra hablada a texto. De forma predeterminada,
la conversión de voz en texto de Azure usa un modelo de lenguaje universal como base
de referencia que refleja el lenguaje hablado que se usa habitualmente. Este modelo de
línea base se entrena previamente con dialectos y fonética que representan una
variedad de dominios comunes. Como resultado, consumir el modelo de línea base no
requiere ninguna configuración adicional y funciona bien en la mayoría de los
escenarios.

Tenga en cuenta, sin embargo, que es posible que el modelo de línea base no sea
suficiente si el audio contiene ruido ambiental o incluye una gran cantidad de jerga
específica del sector y del dominio. En estos casos, la creación de un modelo de voz
personalizado tiene sentido. Para ello, puede realizar el entrenamiento con datos
adicionales asociados al dominio específico.

Según el tamaño del dominio personalizado, también puede tener sentido entrenar
varios modelos y compartimentar un modelo para una aplicación individual. Por
ejemplo, los analistas olímpicos informan sobre varios deportes, cada uno con su propia
jerga. Dado que el vocabulario de cada evento deportivo difiere significativamente de
otros, la creación de un modelo personalizado específico de un deporte aumenta la
precisión al limitar los datos de expresión relativos a ese deporte en particular. Como
resultado, el modelo puede aprender de un conjunto preciso y específico de datos.

Por lo tanto, hay tres enfoques para implementar la conversión de voz en texto de
Azure:

El modelo de línea de base es adecuado cuando el audio está claro y no contiene


ruido ambiente y la voz transcrita usa un lenguaje hablado habitualmente.
Un modelo personalizado aumenta el modelo de línea base para incluir
vocabulario específico del dominio compartido en todas las áreas del dominio
personalizado.
Tiene sentido usar varios modelos personalizados cuando el dominio
personalizado tiene numerosas áreas, cada una con un vocabulario específico.


Posibles casos de uso
Estos son algunos escenarios genéricos y casos de uso en los que resulta útil la
conversión de voz en texto personalizada:

Transcripción de voz para un dominio específico, como transcripción médica o


transcripción de un centro de llamadas
Transcripción en directo, como en una aplicación o para proporcionar subtítulos
para streaming de vídeo en directo

SDK de Microsoft y herramientas de código


abierto
Al trabajar con la conversión de voz en texto, es posible que estos recursos le resulten
útiles:

SDK de Voz de Azure


Speech Studio
FFMpeg / SOX

Consideraciones de diseño
En esta sección se describen algunas consideraciones de diseño para crear una
aplicación basada en voz.

Comparación entre un modelo de línea base y el modelo


personalizado
Azure Speech incluye modelos de línea base que admiten varios idiomas. Estos modelos
se entrenan previamente con una gran cantidad de vocabulario y dominios. Sin
embargo, es posible que tenga un vocabulario especializado que sea necesario
reconocerlo. En estas situaciones, los modelos de línea base podrían ser insuficientes. La
mejor forma para determinar si el modelo base será suficiente es analizar la
transcripción generada a partir del modelo de línea base y compararla con una
transcripción generada por el usuario para el mismo audio. En el artículo de
implementación de esta guía se describe el uso de Speech Studio para comparar las
transcripciones y obtener una puntuación de tasa de errores de palabras (WER). Si hay
varias sustituciones de palabras incorrectas en los resultados, se recomienda entrenar un
modelo personalizado para reconocer esas palabras.
Comparación entre un modelo y muchos modelos
personalizados
Si el escenario se beneficiará de un modelo personalizado, debe determinar cuántos
modelos se van a crear. Un modelo suele ser suficiente si las expresiones están
estrechamente relacionadas con un área o dominio. Sin embargo, varios modelos son
mejores si el vocabulario es significativamente diferente en las áreas de dominio. En este
escenario, también necesita un conjunto de datos de entrenamiento.

Volvamos al ejemplo de los Juegos Olímpicos. Supongamos que necesita incluir la


transcripción de comentarios de audio para varios deportes, incluyendo hockey sobre
hielo, luge, snowboarding, esquí alpino, etc. La creación de un modelo de voz
personalizado para cada deporte mejorará la precisión porque cada deporte tiene
terminología única. Sin embargo, cada modelo debe tener diversos datos de
entrenamiento. Es demasiado restrictivo y limitado crear un modelo para cada
comentador de cada deporte. Un enfoque más práctico es crear un modelo único para
cada deporte, pero incluir audio de un grupo que incluye comentadores con diferentes
acentos, de ambos sexos y de varias edades. Todas las frases específicas del dominio
relacionadas con el deporte capturadas por los diversos analistas residen en el mismo
modelo.

También debe tener en cuenta qué idiomas y configuraciones regionales admitir. Es


posible que tenga sentido crear estos modelos en función de la configuración regional.

Adaptación del modelo acústico y de idioma


Azure Speech proporciona tres opciones para entrenar un modelo personalizado:

La adaptación del modelo de lenguaje es la personalización más usada. Un modelo de


lenguaje ayuda a entrenar cómo se usan juntas determinadas palabras en un contexto
determinado o en un dominio específico. La creación de un modelo de lenguaje
también es relativamente fácil y rápida. En primer lugar, entrene el modelo
proporcionando una variedad de expresiones y frases para el dominio determinado. Por
ejemplo, si el objetivo es generar una transcripción para esquí alpino, recopile
transcripciones generadas por humanos de varios eventos de esquí. Limpie y combine
las transcripciones para crear un archivo de datos de entrenamiento con
aproximadamente 50 000 frases y oraciones. Para obtener más información sobre los
requisitos de datos para el entrenamiento del modelo de lenguaje personalizado,
consulte Conjuntos de datos de entrenamiento y pruebas.

La personalización del modelo de pronunciación también es una de las


personalizaciones más usadas. Un modelo de pronunciación ayuda al modelo
personalizado a reconocer palabras poco frecuentes que no tienen una pronunciación
estándar. Por ejemplo, parte de la terminología de esquí alpino toma préstamos de
otros idiomas, como los términos schuss y mogul. Estas palabras son excelentes
candidatas para un entrenamiento con un conjunto de datos de pronunciación. Para
obtener más información sobre cómo mejorar el reconocimiento mediante un archivo
de pronunciación, consulte Datos de pronunciación para entrenamiento. Para obtener
más información sobre cómo crear un modelo personalizado mediante Speech Studio,
consulte ¿Qué es Habla personalizada?.

La adaptación del modelo acústico proporciona entrenamiento fonético sobre la


pronunciación de determinadas palabras para que Voz de Azure pueda reconocerlas
correctamente. Para crear un modelo acústico, necesita ejemplos de audio y
transcripciones generadas por humanos. Si el lenguaje de reconocimiento coincide con
configuraciones regionales comunes, como en-US, el uso del modelo de línea base
actual debe ser suficiente. Los modelos de línea base tienen un entrenamiento diverso
que usa las voces de hablantes nativos y no nativos de inglés para cubrir una gran
cantidad de vocabulario inglés. Por lo tanto, la creación de una adaptación de modelos
acústicos en el modelo base en-US podría no proporcionar mucha mejora. El
entrenamiento de un modelo acústico personalizado también tarda un poco más. Para
obtener más información sobre los requisitos de datos para el entrenamiento acústico
personalizado, consulte Conjuntos de datos de entrenamiento y pruebas.

El modelo personalizado final puede incluir conjuntos de datos que usan una
combinación de las tres personalizaciones descritas en esta sección.

Entrenamiento de un modelo personalizado


Hay dos enfoques para entrenar un modelo personalizado:

Entrene con numerosos ejemplos de frases y expresiones del dominio. Por


ejemplo, incluya transcripciones de audio de eventos de esquí alpino limpias y
normalizadas y transcripciones generadas por humanos de eventos anteriores.
Asegúrese de que las transcripciones incluyen los términos utilizados en el esquí
alpino y varios ejemplos de cómo los autores los pronuncian. Si sigue este
proceso, el modelo personalizado resultante debe ser capaz de reconocer palabras
y frases específicas del dominio.

Entrene con datos específicos que se centren en áreas problemáticas. Este enfoque
funciona bien cuando no hay muchos datos de entrenamiento, por ejemplo, si se
usan nuevos términos de jerga durante los eventos de esquí alpino y deben
incluirse en el modelo. Este tipo de entrenamiento usa el siguiente enfoque:
Use Speech Studio para generar una transcripción y compararla con
transcripciones generadas por humanos.
Identifique áreas problemáticas de patrones sobre lo que dicen los
comentadores. Identifique:
Contextos en los que se aplican la palabra o expresión problemáticas.
Diferentes inflexiones y pronunciaciones de la palabra o expresión.
Cualquier aplicación específica de la palabra o expresión por parte del
comentador.

El entrenamiento de un modelo personalizado con datos específicos puede llevar


mucho tiempo. Los pasos incluyen analizar cuidadosamente las lagunas de
transcripción, agregar manualmente frases de entrenamiento y repetir este proceso
varias veces. Sin embargo, al final, este enfoque proporciona un entrenamiento centrado
para las áreas problemáticas que se transcribieron previamente incorrectamente. Y es
posible crear este modelo de forma iterativa mediante el entrenamiento selectivo en
áreas críticas y, a continuación, continuar con la lista en orden de importancia. Otra
ventaja es que el tamaño del conjunto de datos incluirá varios cientos de expresiones en
lugar de unos pocos miles, incluso después de muchas iteraciones de la creación de los
datos de entrenamiento.

Después de compilar el modelo


Después de compilar el modelo, tenga en cuenta las siguientes recomendaciones:

Tenga en cuenta la diferencia entre texto léxico y texto para mostrar. Speech
Studio genera WER basado en texto léxico. Sin embargo, lo que ve el usuario es el
texto para mostrar con signos de puntuación, mayúsculas y palabras numéricas
representadas como números. A continuación se muestra un ejemplo de una
comparación del texto léxico y el texto para mostrar.

Texto léxico: la velocidad es excelente y el tiempo es aún mejor cincuenta y siete


cero seis tres segundos para el alemán

Texto para mostrar: La velocidad es excelente. Y el tiempo es aún mejor. 57063


segundos para el alemán.

Lo que se espera (implícito) es: La velocidad es excelente. Y el tiempo es aún mejor.


57,063 segundos para el alemán

El modelo personalizado tiene una tasa WER baja, pero eso no significa que la tasa
de errores percibida por el usuario (errores en el texto para mostrar) sea baja. Este
problema se produce principalmente en la entrada alfanumérica porque diferentes
aplicaciones pueden tener formas alternativas de representar la entrada. No debe
confiar solo en WER. También debe revisar el resultado final del reconocimiento.

Cuando el texto para mostrar parece incorrecto, revise el resultado de


reconocimiento detallado del SDK, que incluye texto léxico, en el que todo está
escrito. Si el texto léxico es correcto, el reconocimiento es preciso. Después, puede
resolver errores en el texto para mostrar (el resultado final reconocido) agregando
reglas posteriores al procesamiento.

Administre conjuntos de datos, modelos y sus versiones. En Speech Studio, al


crear proyectos, conjuntos de datos y modelos, solo hay dos campos: nombre y
descripción. Al compilar conjuntos de datos y modelos de forma iterativa, debe
seguir un buen esquema de nomenclatura y control de versiones para facilitar la
identificación del contenido de un conjunto de datos y qué modelo refleja qué
versión del conjunto de datos. Para obtener más información sobre esta
recomendación, consulte Implementación de una solución personalizada de
conversión de voz en texto.

Vaya a la segunda parte de esta guía: implementación

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Pratyush Mishra | Director de ingeniería principal

Otros colaboradores:

Mick Alberts | Escritor técnico


Rania Bayoumy | Administradora de programas técnicos sénior

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es Habla personalizada?
¿Qué es el texto a voz?
Entrenamiento de un modelo de Habla personalizada
Implementación de una solución personalizada de conversión de voz en texto
Recursos relacionados
Diseño de arquitectura de la inteligencia artificial (IA)
Uso de una canalización de transcripción de voz en texto para analizar
conversaciones grabadas
Control de dispositivos IoT con una aplicación de asistente para voz
Implementación de una solución
personalizada de conversión de
voz en texto
Servicios de Azure AI Voz de Azure AI Azure Machine Learning

Ideas de solución

Este artículo es una idea de solución. Si te gustaría que ampliemos este artículo con
más información, como posibles casos de uso, servicios alternativos,
consideraciones de implementación o una guía de precios, comunícalo a través de
los Comentarios de GitHub .

Este artículo es una guía de implementación y un escenario de ejemplo que proporciona


una implementación de ejemplo de la solución que se describe en Implementación de
conversión de voz en texto personalizada:

Vaya a la primera parte de esta guía

Architecture
Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. Recopile transcripciones existentes que se usarán para entrenar un modelo de voz
personalizado.
2. Si las transcripciones están en formato WebVTT o SRT, limpie los archivos para que
incluyan solo las partes de texto de las transcripciones.
3. Normalice el texto quitando cualquier puntuación, separando palabras repetidas y
deletreando cualquier valor numérico grande. Puede combinar varias
transcripciones limpiadas en una para crear un conjunto de datos. Del mismo
modo, cree un conjunto de datos para realizar pruebas.
4. Una vez que los conjuntos de datos estén listos, cárguelos mediante Speech
Studio. Como alternativa, si el conjunto de datos está en un almacén de blobs,
puede usar la API de conversión de voz en texto de Azure y la CLI de Voz. En la API
y la CLI, puede pasar el URI del conjunto de datos a una entrada para crear un
conjunto de datos para el entrenamiento y las pruebas del modelo.
5. En Speech Studio o mediante la API o la CLI, use el nuevo conjunto de datos para
entrenar un modelo de voz personalizado.
6. Evalúe el modelo recién entrenado en el conjunto de datos de prueba.
7. Si el rendimiento del modelo personalizado cumple las expectativas de calidad,
publíquelo para su uso en la transcripción de voz. De lo contrario, use Speech
Studio para revisar la tasa de errores de palabras (WER) y detalles de errores
específicos y determinar qué datos adicionales se necesitan para el entrenamiento.
8. Use las API y la CLI para ayudar a operacionalizar el proceso de creación,
evaluación e implementación del modelo.

Componentes
Azure Machine Learning es un servicio de nivel empresarial para el ciclo de vida
de aprendizaje automático completo.
Azure Cognitive Services es un conjunto de API, SDK y servicios que le pueden
ayudar a hacer que sus aplicaciones sean más inteligentes, atractivas y detectables.
Speech Studio es un conjunto de herramientas basadas en interfaz de usuario
para compilar e integrar características del servicio Voz de Cognitive Services en
las aplicaciones. Aquí es una alternativa para el entrenamiento de conjunto de
datos. También se usa para revisar los resultados del entrenamiento.
La API REST de conversión de voz en texto es una API que puede usar para
cargar sus propios datos, probar y entrenar un modelo personalizado, comparar
la precisión entre los modelos e implementar un modelo en un punto de
conexión personalizado. También puede usarla para operacionalizar la creación,
evaluación e implementación del modelo.
La CLI del servicio de Voz es una herramienta de la línea de comandos para usar
el servicio de Voz sin necesidad de escribir código. Proporciona otra alternativa
para crear y entrenar conjuntos de datos y para operacionalizar los procesos.

Detalles del escenario


Este artículo se basa en el siguiente escenario ficticio:

Contoso, Ltd., es una empresa de medios de radiodifusión que emite programas y


retransmisiones sobre eventos olímpicos. Como parte del contrato de radiodifusión,
Contoso proporciona una transcripción de los eventos para la accesibilidad y la minería
de datos.

Contoso quiere usar el servicio de Voz de Azure para proporcionar subtítulos y


transcripción de audio en directo para eventos olímpicos. Contoso emplea a hombres y
mujeres comentaristas de todo el mundo que hablan con diversos acentos. Además,
cada deporte individual tiene terminología específica que puede dificultar la
transcripción. En este artículo se describe el proceso de desarrollo de aplicaciones para
este escenario: proporcionar subtítulos para una aplicación que necesita ofrecer una
transcripción de eventos precisa.
Contoso ya tiene estos componentes de requisitos previos necesarios en vigor:

Transcripciones generadas por personas para eventos olímpicos anteriores. Las


transcripciones representan comentarios de diferentes deportes y diversos
analistas.
Un recurso de Azure Cognitive Services. Puede crear uno en Azure Portal .

Desarrollo de una aplicación personalizada


basada en voz
Una aplicación basada en voz usa el SDK de Voz de Azure para conectarse al servicio
Voz de Azure para generar una transcripción de audio basada en texto. El servicio voz
admite varios idiomas y dos modos de fluidez: conversación y dictado. Para desarrollar
una aplicación personalizada basada en voz, normalmente debe completar estos pasos:

1. Use Speech Studio, el SDK de Voz de Azure, la CLI de Voz o la API REST para
generar transcripciones para oraciones y expresiones habladas.
2. Compare la transcripción generada con la transcripción generada por el usuario.
3. Si ciertas palabras específicas del dominio se transcriben incorrectamente,
considere la posibilidad de crear un modelo de voz personalizado para ese
dominio específico.
4. Revise varias opciones para crear modelos personalizados. Decida si uno o varios
modelos personalizados funcionarán mejor.
5. Recopile los datos de entrenamiento y pruebas.
6. Asegúrese de que los datos están en un formato aceptable.
7. Entrene, pruebe y evalúe e implemente el modelo.
8. Use el modelo personalizado para la transcripción.
9. Operacionalice el proceso de creación, evaluación e implementación del modelo.

Echemos un vistazo más detenidamente a estos pasos:

1. Use Speech Studio, el SDK de Voz de Azure, la CLI de Voz o la API REST para
generar transcripciones para oraciones y expresiones habladas

Azure Speech proporciona un SDK, una interfaz de la CLI y una API REST para generar
transcripciones a partir de archivos de audio o directamente desde la entrada del
micrófono. Si el contenido está en un archivo de audio, debe tener un formato
compatible. En este escenario, Contoso tiene grabaciones de eventos anteriores (audio y
vídeo) en archivos .avi. Contoso puede usar herramientas como FFmpeg para extraer
audio de los archivos de vídeo y guardarlo en un formato compatible con el SDK de Voz
de Azure, como .wav.
En el código siguiente, el códec de audio PCM estándar, pcm_s16le , se usa para extraer
audio en un solo canal (mono) que tiene una frecuencia de muestreo de 8 KHz.

ffmpeg.exe -i INPUT_FILE.avi -acodec pcm_s16le -ac 1 -ar 8000


OUTPUT_FILE.wav

2. Compare la transcripción generada con la transcripción generada por el usuario

Para realizar la comparación, Contoso muestrea audio de comentarios de varios


deportes y usa Speech Studio para comparar la transcripción generada por el usuario
con los resultados transcritos por el servicio Azure Speech. Las transcripciones
generadas por personas de Contoso tienen un formato WebVTT. Para usar estas
transcripciones, Contoso las limpia y genera un archivo .txt simple que tiene texto
normalizado sin la información de marca de tiempo.

Para obtener información sobre el uso de Speech Studio para crear y evaluar un
conjunto de datos, consulte Conjuntos de datos de entrenamiento y pruebas.

Speech Studio proporciona una comparación en paralelo de la transcripción generada


por el usuario y las transcripciones generadas a partir de los modelos seleccionados
para la comparación. Los resultados de las pruebas incluyen un WER para los modelos,
como se muestra aquí:

Modelo Frecuencia Inserción Sustitución Eliminación


de errores

Modelo 1: 20211030 14,69 % 6 (2,84 22 (10,43 3 (1,42 %)


%) %)

Modelo 2: 6,16 % 3 (1,42 8 (3,79 %) 2 (0,95 %)


Olympics_Skiing_v6 %)

Para obtener más información sobre WER, consulte Evaluación de la tasa de errores de
palabras.

En función de estos resultados, el modelo personalizado (Olympics_Skiing_v6) es mejor


que el modelo base (20211030) para el conjunto de datos.

Observe las tasas de inserción y eliminación, que indican que el archivo de audio está
relativamente limpio y tiene poco ruido de fondo.
3. Si ciertas palabras específicas del dominio se transcriben incorrectamente,
considere la posibilidad de crear un modelo de voz personalizado para ese dominio
específico

En función de los resultados de la tabla anterior, para el modelo base, Modelo 1:


20211030, se sustituye aproximadamente el 10 % de las palabras. En Speech Studio, use
la característica de comparación detallada para identificar palabras específicas del
dominio que faltan. En la tabla siguiente se muestra una sección de la comparación.

Transcripción generada Modelo 1 Modelo 2


por el usuario

la campeona olímpica la campeona olímpica la campeona olímpica


vuelve a descender desde vuelve a descender desde vuelve a descender desde
mil novecientos noventa y mil novecientos noventa y mil novecientos noventa y
ocho la gran katja seizinger ocho la gran catch a ocho la gran katja
de Alemania menudos sizing de Alemania seizinger de Alemania
noventa cuatro y noventa menudos noventa cuatro menudos noventa cuatro
ocho y noventa ocho y noventa ocho

ha derrotado al campeón ha derrotado al campeón ha derrotado al campeón


olímpico goggia olímpico georgia olímpico goggia

El modelo 1 no reconoce palabras específicas del dominio como los nombres de los
atletas "Katia Seizinger" y "Goggia". Sin embargo, cuando el modelo personalizado se
entrena con datos que incluyen los nombres de los atletas y otras palabras y frases
específicas del dominio, es capaz de aprender y reconocerlos.

4. Revise varias opciones para crear modelos personalizados. Decida si uno o varios
modelos personalizados funcionarán mejor

Al experimentar con varias maneras de crear modelos personalizados, Contoso


descubrió que podrían lograr una mejor precisión mediante la personalización del
modelo de pronunciación y lenguaje. (Consulte el primer artículo de esta guía.) Contoso
también constató ciertas mejoras cuando incluían datos acústicos (audio original) para
crear el modelo personalizado. Sin embargo, las ventajas no eran lo suficientemente
significativas como para que valiera la pena mantener y entrenar para un modelo
acústico personalizado.

Contoso descubrió que la creación de modelos de lenguaje personalizados


independientes para cada deporte (un modelo para esquí alpino, un modelo para luge,
un modelo para el snowboarding, etc.) proporcionó mejores resultados de
reconocimiento. También constataron que no era necesario crear modelos acústicos
independientes basados en el tipo de deporte para mejorar los modelos de lenguaje.

5. Recopile los datos de entrenamiento y pruebas

En el artículo Conjuntos de datos de entrenamiento y pruebas se proporcionan detalles


sobre cómo recopilar los datos necesarios para entrenar un modelo personalizado.
Contoso recopiló transcripciones de varios deportes olímpicos de diversos analistas y
usó la adaptación del modelo de lenguaje para crear un modelo por cada tipo de
deporte. Sin embargo, usaron un archivo de pronunciación para todos los modelos
personalizados (uno para cada deporte). Dado que los datos de prueba y entrenamiento
se mantienen separados, después de crear un modelo personalizado, Contoso usó audio
de eventos cuyas transcripciones no se incluyeron en el conjunto de datos de
entrenamiento para la evaluación del modelo.

6. Asegúrese de que los datos están en un formato aceptable

Como se describe en Conjuntos de datos de entrenamiento y pruebas, los conjuntos de


datos que se usan para crear un modelo personalizado o para probar el modelo deben
estar en un formato específico. Los datos de Contoso están en archivos WebVTT.
Crearon algunas herramientas sencillas para generar archivos de texto que contienen
texto normalizado para la adaptación del modelo de lenguaje.

7. Entrene, pruebe y evalúe e implemente el modelo

Las nuevas grabaciones de eventos se usan para probar y evaluar aún más el modelo
entrenado. Puede que sean necesarias un par de iteraciones de pruebas y evaluación
para ajustar un modelo. Por último, cuando el modelo genera transcripciones que tienen
tasas de error aceptables, se implementa (publica) para que se consuma desde el SDK.

8. Use el modelo personalizado para la transcripción

Una vez implementado el modelo personalizado, puede usar el siguiente código de C#


para usar el modelo en el SDK para la transcripción:

C#

String endpoint = "Endpoint ID from Speech Studio";


string locale = "en-US";
SpeechConfig config = SpeechConfig.FromSubscription(subscriptionKey:
speechKey, region: region);
SourceLanguageConfig sourceLanguageConfig =
SourceLanguageConfig.FromLanguage(locale, endPoint);
recognizer = new SpeechRecognizer(config, sourceLanguageConfig, audioInput);
Notas sobre el código:

endpoint es el identificador de punto de conexión del modelo personalizado que

se implementa en el paso 7.
subscriptionKey y region son la clave de suscripción y la región de Azure

Cognitive Services. Para obtener estos valores desde Azure Portal , vaya al grupo
de recursos donde se creó el recurso de Cognitive Services y examine sus claves.

9. Operacionalice el proceso de creación, evaluación e implementación del modelo

Una vez publicado el modelo personalizado, debe evaluarse periódicamente y


actualizarse si se agrega nuevo vocabulario. Es posible que la empresa evolucione y
necesite más modelos personalizados para aumentar la cobertura de más dominios. El
equipo de Voz de Azure también publica nuevos modelos base, que se entrenan con
más datos, a medida que están disponibles. La automatización puede ayudarle a
mantenerse al día con estos cambios. En la siguiente sección de este artículo se
proporcionan más detalles sobre la automatización de los pasos anteriores.

Implementación de este escenario


Para obtener información sobre cómo usar el scripting para simplificar y automatizar
todo el proceso de creación de conjuntos de datos para el entrenamiento y las pruebas,
la creación y evaluación de modelos y la publicación de nuevos modelos según sea
necesario, consulte custom-speech-stt en GitHub .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Pratyush Mishra | Director de ingeniería principal

Otros colaboradores:

Mick Alberts | Escritor técnico


Rania Bayoumy | Administradora de programas técnicos sénior

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es Habla personalizada?
¿Qué es el texto a voz?
Entrenamiento de un modelo de Habla personalizada
Implementación de conversión de voz en texto personalizada
Azure/custom-speech-stt en GitHub

Recursos relacionados
Diseño de arquitectura de la inteligencia artificial (IA)
Uso de una canalización de transcripción de voz en texto para analizar
conversaciones grabadas
Control de dispositivos IoT con una aplicación de asistente para voz
Implementación de conversión de voz en texto personalizada
Resumen de conversación
Servicios de Azure AI

La mayoría de las empresas proporcionan soporte de servicio al cliente para ayudar a los
clientes con las consultas de productos, la solución de problemas y el mantenimiento o
actualización de características o del propio producto. Para proporcionar una resolución
satisfactoria, los especialistas de atención al cliente deben responder rápidamente y con
información precisa. OpenAI puede ayudar a las organizaciones con soporte técnico al
cliente de varias maneras.

En esta guía se describe cómo generar los resúmenes de las interacciones entre el
agente y el cliente mediante el modelo GPT-3 de Azure OpenAI. Contiene una
arquitectura de ejemplo de un extremo a otro que ilustra los componentes clave
implicados en la obtención de un resumen de una entrada de texto. La generación de la
entrada de texto está fuera del ámbito de esta guía. El objetivo de esta guía es describir
el proceso de implementación del resumen de un conjunto de conversaciones de
ejemplo entre el agente y el cliente y analizar los resultados de varios enfoques para la
creación del resumen.

Escenarios de conversación
Bots de chat de autoservicio (totalmente automatizados). En este escenario, los
clientes pueden interactuar con un bot de chat con tecnología de GPT-3 y
entrenado con datos específicos del sector. El bot de chat puede comprender las
preguntas de los clientes y responder adecuadamente en función de las respuestas
aprendidas de una knowledge base.
Bot de chat con intervención del agente (semiautomatizado). Las preguntas
planteadas por los clientes a veces son complejas y requieren de intervención
humana. En tales casos, GPT-3 puede proporcionar un resumen de la conversación
entre el bot de chat y el cliente, y ayudar al agente con búsquedas rápidas de
información adicional de una gran knowledge base.
Resumen de transcripciones (totalmente automatizadas o semiautomatizadas). En
la mayoría de los centros de atención al cliente, los agentes son necesarios para
resumir las conversaciones y mantener el registro, hacer seguimientos futuros,
llevar a cabo entrenamiento y realizar otros procesos internos. GPT-3 puede
proporcionar resúmenes automatizados o semiautomatizados que capturan los
detalles destacados de las conversaciones para su uso posterior.
Esta guía se centra en el proceso de resumen de transcripciones mediante Azure OpenAI
GPT-3.

En promedio, un agente tarda entre 5 y 6 minutos en resumir una sola conversación


entre el agente y el cliente. Dados los grandes volúmenes de solicitudes que manejan
los equipos de servicio normalmente, realizar esta tarea adicional puede sobrecargar al
equipo. OpenAI es una buena manera de ayudar a los agentes con las actividades
relacionadas con el resumen. Puede mejorar la eficacia del proceso de soporte al cliente
y proporcionar una mayor precisión. El resumen de conversaciones se puede aplicar a
cualquier tarea de soporte técnico al cliente que implique la interacción entre agente y
cliente.

Servicio de resumen de conversaciones


El resumen de conversaciones es adecuado en escenarios en los que las conversaciones
de soporte técnico al cliente siguen un formato de pregunta y respuesta.

Algunas ventajas de usar un servicio de resumen son:

Mayor eficiencia: permite a los agentes de servicio al cliente resumir rápidamente


las conversaciones de los clientes, lo que elimina la necesidad de intercambios
largos. Esta eficiencia ayuda a acelerar la resolución de problemas de los clientes.
Servicio al cliente mejorado: los agentes pueden usar resúmenes de
conversaciones en interacciones futuras para encontrar rápidamente la
información necesaria para resolver con precisión los problemas de los clientes.
Uso compartido de conocimientos mejorado: el resumen de conversaciones puede
ayudar a los equipos de servicio al cliente a compartir conocimientos entre sí de
forma rápida y eficaz. Equipa a los equipos de atención al cliente con mejores
resoluciones y les ayuda a proporcionar un soporte más rápido.

Architecture
Una arquitectura típica para un generador de resumen de conversación tiene tres fases
principales: preprocesamiento, resumen y posprocesamiento. Si la entrada contiene una
conversación verbal o cualquier forma de voz, la voz debe transcribirse a texto. Para más
información, consulte Servicio de conversión de voz en texto de Azure .

Esta es una arquitectura de ejemplo:


Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de trabajo
1. Recopile los datos de entrada: introduzca los datos de entrada pertinentes en la
canalización. Si el origen es un archivo de audio, debe convertirlo en texto
mediante un servicio de TTS como texto a voz de Azure.
2. Preprocese los datos: quite la información confidencial y cualquier conversación
que no sea importante de los datos.
3. Incorpore los datos al generador de resúmenes: pase los datos en una solicitud a
través de las API de Azure OpenAI. Los modelos de aprendizaje en contexto
incluyen zero-shot, few-shot o el modelo personalizado.
4. Genere el resumen: el modelo generará un resumen de la conversación.
5. Procesamiento posterior a los datos: aplique un filtro de palabras soeces y varias
comprobaciones de validación al resumen. Agregue los datos confidenciales que
se quitaron durante el paso previo al proceso en el resumen.
6. Evalúe los resultados: revise y evalúe los resultados. Este paso puede ayudarle a
identificar las áreas en las que el modelo debe mejorarse y a encontrar errores.

En las secciones siguientes se proporcionan más detalles sobre las tres fases principales.

Procesamiento previo
El objetivo del preprocesamiento es asegurarse de que los datos proporcionados al
servicio de generación de resumen sean relevantes y no incluyan información
confidencial.
Estos son algunos pasos de preprocesamiento que pueden ayudar a condicionar los
datos sin procesar. Es posible que tenga que aplicar uno o varios pasos, según el caso
de uso.

Quite la información de identificación personal (DCP). Puede usar la API de DCP


conversacional (versión preliminar) para quitar la DCP del texto transcrito o escrito.
En este ejemplo se muestra la salida después de que la API ha quitado la DCP:

Document text: Parker Doe has repaid all of their loans as of


2020-04-25. Their SSN is 999-99-9999. To contact them, use
their phone number 555-555-0100. They are originally from
Brazil and have Brazilian CPF number 998.214.865-68
Redacted document text: ******* has repaid all of their
loans as of *******. Their SSN is *******. To contact
them, use their phone number *******. They are originally from
Brazil and have Brazilian CPF number 998.214.865-68

...Entity 'Parker Doe' with category 'Person' got redacted


...Entity '2020-04-25' with category 'DateTime' got redacted
...Entity '999-99-9999' with category 'USSocialSecurityNumber' got
redacted
...Entity '555-555-0100' with category 'PhoneNumber' got redacted

Quite la información irrelevante. Los agentes del cliente inician conversaciones


con intercambios casuales que no incluyen información relevante. Se puede
agregar un desencadenador a una conversación para identificar el punto en el que
se aborda la cuestión o la pregunta pertinente por primera vez. Quitar ese
intercambio del contexto puede mejorar la precisión del servicio generador de
resúmenes, ya que el modelo se ajustará a la información más relevante de la
conversación. El motor Curie GPT-3 es una opción popular para esta tarea porque
se entrena ampliamente, mediante el contenido de Internet, para identificar este
tipo de conversación casual.

Quite conversaciones excesivamente negativas. Las conversaciones también


pueden incluir opiniones negativas de clientes infelices. Puede usar métodos de
filtrado de contenido de Azure como Azure Content Moderator para quitar del
análisis conversaciones que contengan información confidencial. Como alternativa,
OpenAI ofrece un punto de conexión de moderación, una herramienta que puede
usar para comprobar si el contenido cumple las directivas de contenido de
OpenAI.

Generador de resúmenes
El punto de conexión de la API de finalización de texto de OpenAI se denomina punto
de conexión de finalizaciones. Para iniciar el proceso de finalización de texto, se requiere
una solicitud. La ingeniería de solicitud es un proceso que se usa en modelos de
lenguaje grandes. La primera parte de la solicitud incluye instrucciones de lenguaje
natural o ejemplos de la tarea específica solicitada (en este escenario, la creación del
resumen). Las solicitudes permiten a los desarrolladores proporcionar contexto a la API,
lo que puede ayudar a generar finalizaciones de texto más relevantes y precisas. El
modelo termina la tarea prediciendo el texto siguiente más probable. Esta técnica se
conoce como aprendizaje en contexto.

7 Nota

El resumen mediante extracción intenta identificar y extraer información destacada


de un texto y agruparla para generar un resumen conciso sin comprender el
significado ni el contexto.

El resumen abstracto reescribe un texto creando primero una representación


semántica interna y a continuación, creando un resumen mediante el
procesamiento del lenguaje natural. Este proceso implica paráfrasis.

Hay tres enfoques principales para entrenar a los modelos para el aprendizaje en
contexto: zero-shot, few-shot y ajuste preciso. Estos enfoques varían en función de la
cantidad de datos específicos de la tarea que se proporcionan al modelo.

Zero-shot: En este enfoque, no se proporciona ningún ejemplo al modelo. La


solicitud de tarea es la única entrada. En el aprendizaje zero-shot, el modelo se
basa en los datos en los que GPT-3 ya está entrenado (casi todos los datos
disponibles de Internet). El modelo intenta relacionar la tarea dada con las
categorías existentes que ya ha aprendido y responde en consecuencia.

Few-shot: Al usar este enfoque, se incluye un pequeño número de ejemplos en la


solicitud que muestran el formato de respuesta esperado y el contexto. El modelo
se proporciona con una cantidad muy pequeña de datos de entrenamiento,
normalmente solo algunos ejemplos, para guiar sus predicciones. El entrenamiento
con un pequeño conjunto de ejemplos permite que el modelo generalice y
comprenda las tareas relacionadas pero no vistas previamente. La creación de
estos ejemplos de few-shot puede ser difícil porque necesitan aclarar la tarea que
desea que realice el modelo. Un problema observado habitualmente es que los
modelos son sensibles al estilo de escritura que se usa en los ejemplos de
entrenamiento, especialmente los modelos pequeños.
Las principales ventajas de este enfoque son una reducción significativa de la
necesidad de datos específicos de la tarea y un potencial reducido para aprender
una distribución excesivamente estrecha de un conjunto de datos de ajuste preciso
estrecho pero grande.

Con este enfoque, no se pueden actualizar los pesos del modelo entrenado
previamente.

Para obtener más información, consulte Los modelos de lenguaje son aprendices
de few-shot .

Ajuste preciso: El ajuste preciso es el proceso de adaptar modelos para obtener un


resultado deseado específico a partir de sus propios conjuntos de datos. Implica
volver a entrenara los modelos con los datos nuevos. Para más información, vea
Aprenda a personalizar un modelo para la aplicación.

Puede usar este paso de personalización para mejorar el proceso al:


Incluir un conjunto mayor de datos de ejemplo.
Usar técnicas de optimización tradicionales con la propiedad de
retropropagación para reajustar los pesos del modelo. Estas técnicas permiten
obtener resultados de mayor calidad que los que los enfoques zero-shot o few-
shot proporcionan por sí mismos.
Mejorar el enfoque de few-shot mediante el entrenamiento de los pesos del
modelo con solicitudes específicas y una estructura concreta. Esta técnica
permite obtener mejores resultados en un mayor número de tareas sin
necesidad de proporcionar ejemplos en la solicitud. El resultado es menos texto
enviado y menos tokens.

Las desventajas incluyen la necesidad de un gran conjunto de datos nuevo para


cada tarea, la posibilidad de una generalización deficiente fuera de la distribución y
la posibilidad de aprovechar características falsas de los datos de entrenamiento,
lo que da lugar a altas posibilidades de comparación injusta con el rendimiento
humano.

La creación de un conjunto de datos para la personalización del modelo es


diferente del diseño de solicitudes para usar con otros modelos. Las solicitudes de
finalización suelen usar instrucciones detalladas o técnicas de aprendizaje de few-
shot y consisten en múltiples ejemplos. Para el ajuste preciso, recomendamos que
cada ejemplo de entrenamiento consista en un solo ejemplo de entrada y su salida
deseada. No es necesario dar instrucciones detalladas o ejemplos en la solicitud.

A medida que aumenta el número de ejemplos de entrenamiento, los resultados


mejoran. Se recomienda incluir al menos 500 ejemplos. Es habitual usar entre miles
y cientos de miles de ejemplos etiquetados. En general, comprobamos que cada
vez que se duplique el tamaño del conjunto de datos se produzca un aumento
lineal de la calidad del modelo.

En esta guía se muestran los motores curie-instruct/text-curie-001 y davinci-


instruct/text-davinci-001. Estos motores se actualizan con frecuencia. La versión que use
puede ser diferente.

Posprocesamiento
Se recomienda comprobar la validez de los resultados obtenidos de GPT-3. Implemente
comprobaciones de validez mediante un enfoque mediante programación o
clasificadores, según el caso de uso. Estas son algunas comprobaciones críticas:

Compruebe que no se han perdido puntos significativos.


Compruebe si hay imprecisiones fácticas.
Compruebe si hay sesgos introducidos por los datos de entrenamiento usados en
el modelo.
Compruebe que el modelo no cambie el texto agregando nuevas ideas o puntos.
Este problema se conoce como alucinación.
Compruebe si hay errores gramaticales y ortográficos.
Use un filtro de contenido de palabras soeces como Content Moderator para
asegurarse de que no se incluya contenido inapropiado o irrelevante.

Por último, vuelva a introducir cualquier información vital que se haya quitado
previamente del resumen, como la información confidencial.

En algunos casos, también se envía un resumen de la conversación al cliente, junto con


la transcripción original. En estos casos, el procesamiento posterior implica anexar la
transcripción al resumen. También puede incluir la adición de oraciones introductorias
como "Consulte el resumen siguiente".

Consideraciones
Es importante ajustar los modelos base con un conjunto de datos de entrenamiento
específico del sector y cambiar el tamaño de los conjuntos de datos disponibles. Los
modelos con ajuste preciso funcionan mejor cuando los datos de entrenamiento
incluyen al menos 1000 puntos de datos y los datos ciertos (resúmenes generados por
el usuario) que se usan para entrenar los modelos son de alta calidad.

El inconveniente es el costo. El proceso de etiquetado y limpieza de conjuntos de datos


puede ser costoso. Para garantizar datos de entrenamiento de alta calidad, es posible
que tenga que inspeccionar manualmente los resúmenes ciertos y reescribir los
resúmenes de baja calidad. Tenga en cuenta los siguientes puntos sobre la fase de
resumen:

Ingeniería de solicitud: cuando se proporcionan pocas instrucciones, Davinci a


menudo funciona mejor que otros modelos. Para optimizar los resultados,
experimente con diferentes solicitudes de modelos diferentes.
Tamaño del token: un generador de resumen basado en GPT-3 se limita a un total
de 4 098 tokens, incluidas la solicitud y la finalización. Para resumir pasajes más
grandes, separe el texto en partes que cumplan estas restricciones. Resuma cada
parte individualmente y, a continuación, recopile los resultados en un resumen
final.
Descarte la información no utilizada: los modelos entrenados son tan buenos
como los datos de entrenamiento que proporcione. Asegúrese de que los
resúmenes ciertos en los datos de entrenamiento sean adecuados para la
información que finalmente desea resumir en los diálogos.
Punto de detención: el modelo deja de resumir cuando alcanza un punto de
detención natural o una secuencia de detención que usted proporcione. Pruebe
este parámetro para elegir entre varios resúmenes y comprobar si los resúmenes
tienen un aspecto incompleto.

Escenario de ejemplo: Resumen de las


transcripciones de centros de llamadas
En este escenario se muestra cómo la característica de resumen de Azure OpenAI puede
ayudar a los agentes de servicio al cliente con las tareas de resumen. Prueba los
enfoques de zero-shot, few-shot y ajuste preciso, y compara los resultados contra los
resúmenes generados por el usuario.

El conjunto de datos que se usa en este escenario es un conjunto de conversaciones


hipotéticas entre clientes y agentes en el centro de atención al cliente de Xbox sobre
diversos productos y servicios de Xbox. El chat hipotético se etiqueta con Solicitud. El
resumen abstracto escrito por personas se etiqueta con Finalización.

Prompt Completion

Cliente: Pregunta sobre XAIL El cliente quiere saber si necesita


registrarse para los anillos de versión
Agente: ¡Hola! ¿Cómo puedo ayudarte hoy? preliminar para unirse a Xbox Accessibility
Insider League. El agente responde que no
Cliente: Hola, tengo una pregunta sobre el
Prompt Completion

anillo de Accessibility Insider es obligatorio, aunque algunas


experiencias pueden requerirlo.
Agente: Muy bien. Sin duda, puedo
ayudarte con eso.

Cliente: ¿Necesito suscribirme al anillo de la


versión preliminar para unirme a la
Accessibility League?

Agente: No. Puedes dejar la consola fuera


de los anillos de Xbox Preview y aun así
unirte a la liga. Sin embargo, ten en cuenta
que algunas experiencias disponibles para ti
pueden requerir que te unas a un anillo de
Xbox Preview.

Cliente: Está bien. ¿Y puedo suscribirme al


anillo de versión preliminar más adelante?

Agente: Correcto.

Cliente: Perfecto.

Salida ideal. El objetivo es crear resúmenes que sigan este formato: "El cliente dijo x. El
agente respondió y". Otro objetivo es capturar características destacadas del cuadro de
diálogo, como la queja del cliente, la resolución sugerida y las acciones de seguimiento.

Este es un ejemplo de una interacción de asistencia al cliente, seguida de un resumen


completo escrito por el usuario:

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo estás hoy?

Cliente: Estoy bien.

Agente. Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento (o el mejor precio con descuento
disponible) para seguir jugando el juego una vez que salga del catálogo.

Cliente: Entiendo, gracias.

Resumen cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Zero-shot
El enfoque de zero-shot es útil cuando no tiene suficientes datos de entrenamiento
etiquetados. En este caso, no hay suficientes resúmenes ciertos. Es importante diseñar
las solicitudes cuidadosamente para extraer la información relevante. El siguiente
formato se usa para extraer resúmenes generales de los chats entre el agente y el
cliente:

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

Este es un ejemplo que muestra cómo ejecutar un modelo zero-shot:

Python

rouge = Rouge()
# Run zero-shot prediction for all engines of interest
deploymentNames = ["curie-instruct","davinci-instruct"] # also known as
text-davinci/text-instruct
for deployment in deploymentNames:
url = openai.api_base + "openai/deployments/" + deployment + "/completions?
api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling…" + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = build_prompt(prefix, [test['prompt'][i]], suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the
dataset
)
scores = rouge.get_scores(normalize_text(response_i[‘choices’][ 0]
['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i[‘choices’][0][‘text’]) for i in
response_list]
test[deployment + "_zeroshotsummary"] = summary_list
test[deployment + "_zeroshotroguescore"] = rouge_list

Resultados y observaciones
La salida del modelo zero-shot se genera directamente desde el modelo base. En este
caso, tanto Curie como Davinci resumen el cuadro de diálogo bastante bien. La única
diferencia notable es que el modelo Curie proporciona un poco menos de detalle. Curie
inicia el resumen con "el cliente pregunta al agente sobre Xbox Game Pass". La frase
correspondiente en Davinci es "el cliente preguntó por cuánto tiempo podía acceder a
los juegos después de salgan del catálogo de Xbox Game Pass".

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo te va?

Cliente: Estoy bien.

Agente: Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento, o el mejor precio con descuento
disponible, para seguir jugando el juego una vez que sale del catálogo.

Cierto
El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado de Davinci

El cliente preguntó por cuánto tiempo podía acceder a los juegos después de que salen
del catálogo de Xbox Game Pass. El agente le dijo que necesitaría comprar una copia
digital del juego desde la aplicación Xbox para Windows o la Microsoft Store para poder
continuar jugando. El agente también recordó al cliente que se le notificaría antes de
que un juego salga del catálogo de Xbox Game Pass. Como miembro, el cliente podrá
comprar cualquier juego en el catálogo con un máximo de 20 % de descuento o el
mejor precio con descuento disponible.

Resultado de Curie

El cliente pregunta al agente sobre Xbox Game Pass. El agente indica al cliente que una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El agente también le recuerda al cliente que Xbox notificará a los
miembros antes de que un juego salga del catálogo de Xbox Game Pass.

Few-shot
Cuando se usa el enfoque few-shot, el modelo se proporciona con un pequeño número
de ejemplos.

context_primer = "Below are examples of conversations and their corresponding

summaries:"

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

Este es un ejemplo que muestra cómo ejecutar un modelo de few-shot:

Python

train_small = train[]
train_small_json = train_small.to_dict(orient='records')
compiled_train_prompt = build_prompt_fewshot(prefix,context_primer,
train_small_json, suffix)

for deployment in deploymentNames:


url = openai.api_base + "openai/deployments/" + deployment + "/completions?
api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling…" + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = compiled_train_prompt+build_prompt(prefix, [test['prompt'][i]],
suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the
dataset
)
scores = rouge.get_scores(normalize_text(response_i['choices'][ 0]
['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i['choices'][0]['text']) for i in
response_list]
test[deployment + "_fewshot"] = summary_list
test[deployment + "_FSscore1"] = rouge_list

Resultados y observaciones
Con el enfoque de few-shot, los resúmenes continúan capturando características
destacadas de la conversación. El resumen de Davinci es más compacto y más cercano a
ser cierto. Curie fabrica algunos detalles triviales.

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo te va?

Cliente: Estoy bien.

Agente: Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento, o el mejor precio con descuento
disponible, para seguir jugando el juego una vez que sale del catálogo.

Cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado de Davinci

El cliente quería saber por cuánto tiempo podía acceder a los juegos después de que
salen de Game Pass. El agente informa que una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente tendría que comprar una copia digital u obtener otra forma
de derecho para continuar jugando el juego.

Resultado de Curie

El cliente tiene una pregunta sobre el Game Pass. El cliente está bien. El agente necesita
ayuda con el Xbox Game Pass. El cliente pregunta por cuánto tiempo puede acceder a
los juegos después de que salen del catálogo de Game Pass. El agente informa que, una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El cliente está encantado de escuchar esto y agradece al agente.

Ajuste preciso
El ajuste preciso es el proceso de adaptar los modelos para obtener un resultado
deseado específico a partir de sus propios conjuntos de datos.

Este es un formato de ejemplo:

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}


{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

Resultados y observaciones
Las pruebas sugieren que un modelo Curie de ajuste preciso conduce a resultados que
son comparables a los de un modelo de few-shot de Davinci. Ambos resúmenes
capturan la pregunta del cliente y la respuesta del agente sin capturar los detalles sobre
los descuentos y sin agregar contenido. Ambos resúmenes son similares al cierto.

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo te va?

Cliente: Estoy bien.

Agente: Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento, o el mejor precio con descuento
disponible, para seguir jugando el juego una vez que sale del catálogo.

Cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado de Curie

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que
salen de Game Pass. El agente explica que, una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente debe comprar una copia digital desde la aplicación Xbox
para Windows o la Microsoft Store, reproducirlo desde un disco u obtener otra forma de
derecho para poder continuar jugando el juego.

Conclusiones
Por lo general, el modelo Davinci requiere menos instrucciones para realizar las tareas
que otros modelos, como Curie. Davinci es más adecuado para resumir texto que
requiera una comprensión del contexto o del lenguaje específico. Dado que Davinci es
el modelo más complejo, su latencia es mayor que la de otros modelos. Curie es más
rápido que Davinci y es capaz de resumir conversaciones.

Estas pruebas sugieren que puede generar mejores resúmenes al proporcionar más
instrucciones al modelo a través de los métodos few-shot o de ajuste preciso. Los
modelos de ajuste preciso son mejores para adaptarse a la estructura y el contexto
aprendidos a partir de un conjunto de datos de entrenamiento. Esta funcionalidad es
especialmente útil cuando los resúmenes son específicos del dominio (por ejemplo,
generar resúmenes a partir de las notas de un médico o de la atención al cliente con
una receta en línea). Si usa el ajuste preciso, tiene más control sobre los tipos de
resúmenes que ve.

Para facilitar la comparación, este es un resumen de los resultados presentados


anteriormente:

Cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado zero-shot de Davinci

El cliente preguntó por cuánto tiempo podía acceder a los juegos después de que salen
del catálogo de Xbox Game Pass. El agente le dijo que necesitaría comprar una copia
digital del juego desde la aplicación Xbox para Windows o la Microsoft Store para poder
continuar jugando. El agente también recordó al cliente que se le notificaría antes de
que un juego salga del catálogo de Xbox Game Pass. Como miembro, el cliente podrá
comprar cualquier juego en el catálogo con hasta 20 % de descuento o el mejor precio
con descuento disponible.

Resultado zero-shot de Curie

El cliente pregunta al agente sobre Xbox Game Pass. El agente indica al cliente que una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El agente también le recuerda al cliente que Xbox notificará a los
miembros antes de que un juego salga del catálogo de Xbox Game Pass.

Resultado few-shot de Davinci


El cliente quería saber por cuánto tiempo podía acceder a los juegos después de que
salen de Game Pass. El agente informa que una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente tendría que comprar una copia digital u obtener otra forma
de derecho para continuar jugando el juego.

Resultado few-shot de Curie

El cliente tiene una pregunta sobre el Game Pass. El cliente está bien. El agente necesita
ayuda con el Xbox Game Pass. El cliente pregunta por cuánto tiempo puede acceder a
los juegos después de que salen del catálogo de Game Pass. El agente informa que, una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El cliente está encantado de escuchar esto y agradece al agente.

Resultado de ajuste preciso de Curie

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que
salen de Game Pass. El agente explica que, una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente debe comprar una copia digital desde la aplicación Xbox
para Windows o la Microsoft Store, reproducirlo desde un disco u obtener otra forma de
derecho para poder continuar jugando el juego.

Evaluación del resumen


Hay varias técnicas para evaluar el rendimiento de los modelos de resumen.

Estas son algunas:

ROUGE (Subestudio orientado a la recuperación para la evaluación de Gisting). Esta


técnica incluye medidas para determinar automáticamente la calidad de un resumen
comparándolo con resúmenes ideales creados por humanos. Las medidas cuentan el
número de unidades superpuestas, como n-gramas, secuencias de palabras y pares de
palabras, entre el resumen generado por el equipo que se evalúa y los resúmenes
ideales.

Este es un ejemplo:

Python

reference_summary = "The cat ison porch by the tree"


generated_summary = "The cat is by the tree on the porch"
rouge = Rouge()
rouge.get_scores(generated_summary, reference_summary)
[{'rouge-1': {'r':1.0, 'p': 1.0, 'f': 0.999999995},
'rouge-2': {'r': 0.5714285714285714, 'p': 0.5, 'f': 0.5333333283555556},
'rouge-1': {'r': 0.75, 'p': 0.75, 'f': 0.749999995}}]

BertScore. Esta técnica calcula las puntuaciones de similitud mediante la alineación de


resúmenes generados y de referencia en un nivel de token. Las alineaciones de tokens
se calculan de forma expanstina para maximizar la similitud coseno entre las
incrustaciones de tokens contextualizadas de BERT.

Este es un ejemplo:

Python

import torchmetrics
from torchmetrics.text.bert import BERTScore
preds = "You should have ice cream in the summer"
target = "Ice creams are great when the weather is hot"
bertscore = BERTScore()
score = bertscore(preds, target)
print(score)

Matriz de similitud. Una matriz de similitud es una representación de las similitudes


entre diferentes entidades en la evaluación del resumen. Puede usarlo para comparar
distintos resúmenes del mismo texto y medir su similitud. Se representa mediante una
cuadrícula bidimensional, donde cada celda contiene una medida de la similitud entre
dos resúmenes. Puede medir la similitud mediante varios métodos, como la similitud de
coseno, la similitud de Jaccard y la distancia de edición. A continuación, use la matriz
para comparar los resúmenes y determinar cuál es la representación más precisa del
texto original.

Este es un comando de ejemplo que genera la matriz de similitud de una comparación


BERTScore de dos oraciones similares:

Python

bert-score-show --lang en -r "The cat is on the porch by the tree"


-c "The cat is by the tree on the porch"
-f out.png

La primera frase, "El gato está en el porche junto al árbol", se conoce como candidato.
La segunda frase se conoce como referencia. El comando usa BERTScore para comparar
las oraciones y generar una matriz.

Esta matriz siguiente muestra la salida generada por el comando anterior:


Para obtener más información, vea SummEval: reevaluación de la evaluación de


resúmenes . Para obtener un kit de herramientas de PyPI para resúmenes, consulte
summ-eval 0.892 .

Uso responsable
GPT puede producir excelentes resultados, pero debe comprobar la salida en busca de
sesgos sociales, éticos y legales, y también resultados dañinos. Al ajustar los modelos,
debe quitar los puntos de datos que pueda ser perjudicial que aprenda el modelo.
Puede formar equipos de alerta para identificar las salidas dañinas del modelo. Puede
implementar este proceso manualmente y respaldarlo mediante métodos
semiautomatizados. Puede generar casos de prueba mediante modelos de lenguaje y, a
continuación, usar un clasificador para detectar comportamientos dañinos en los casos
de prueba. Por último, debe realizar una comprobación manual de los resúmenes
generados para asegurarse de que estén listos para usarse.
Para obtener más información, vea Equipos de alerta para modelos de lenguaje con
modelos de lenguaje .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Meghna Jani | Científico de datos & aplicado II

Otro colaborador:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Más información sobre Azure OpenAI
Artículo de referencia de ROUGE
Módulo de entrenamiento: Introducción a Azure OpenAI Service
Ruta de aprendizaje: Desarrollo de soluciones de IA con Azure OpenAI

Recursos relacionados
Resumen de documentos basados en consultas
Elección de una tecnología de servicios cognitivos de Microsoft
Tecnología de procesamiento de lenguaje natural
Operaciones de aprendizaje automático
(MLOps) v2
Artículo • 13/09/2023

En este artículo se describen tres arquitecturas de Azure para las operaciones de


aprendizaje automático. Todas tienen canalizaciones de integración continua (CI),
entrega continua (CD) y reentrenamiento. Las arquitecturas son para estas aplicaciones
de inteligencia artificial:

Aprendizaje automático clásico


Computer Vision (CV)
Procesamiento del lenguaje natural (NLP)

Las arquitecturas son el producto del proyecto MLOps v2. Incorporan los
procedimientos recomendados que los arquitectos de soluciones han detectado
durante la creación de varias soluciones de aprendizaje automático. El resultado se
puede implementar, es repetible y fácil de mantener, como se describe aquí.

Todas las arquitecturas usan Azure Machine Learning Service.

Para obtener una implementación con plantillas de implementación de ejemplo para


MLOps v2, vea Acelerador de soluciones de Azure MLOps (v2) en GitHub.

Posibles casos de uso


Aprendizaje automático clásico: la previsión de series temporales, la regresión y la
clasificación en datos estructurados tabulares son los casos de uso más comunes
de esta categoría.
Clasificación binaria y de varias etiquetas
Regresión lineal, polinómica, contraída, de lazo, cuantil y bayesiana
ARIMA, autorregresiva (AR), SARIMA, VAR, SES, LSTM
CV: el marco MLOps que se presenta aquí se centra principalmente en los casos de
uso de CV de segmentación y clasificación de imágenes.
Reconocimiento de entidades con nombre
Clasificación de textos
Generación de texto
análisis de opiniones
Traducción
Respuesta a preguntas
Resumen
Detección de frases
Detección de idiomas
Etiquetado de categorías gramaticales

En este artículo no se describen las simulaciones, el aprendizaje de refuerzo profundo y


otras formas de inteligencia artificial.

Architecture
El patrón arquitectónico de MLOps v2 se compone de cuatro elementos modulares
principales que representan estas fases del ciclo de vida de MLOps:

Patrimonio de datos
Administración y configuración
Desarrollo de modelos (bucle interno)
Implementación de modelos (bucle externo)

Estos elementos, las relaciones entre ellos y los roles a los que normalmente se asocian
son comunes para todas las arquitecturas de escenarios de MLOps v2. Puede haber
variaciones en los detalles de cada uno, en función del escenario.

La arquitectura base de MLOps v2 para Machine Learning es el escenario de aprendizaje


automático clásico sobre datos tabulares. Las arquitecturas CV y NLP se basan en esta
arquitectura base y la modifican.

Arquitecturas actuales
Las arquitecturas que se tratan actualmente en MLOps v2 y que se describen en este
artículo son las siguientes:

Arquitectura de aprendizaje automático clásico


Arquitectura de CV de aprendizaje automático
Arquitectura NLP de aprendizaje automático

Arquitectura de aprendizaje automático clásico


Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo para la arquitectura de aprendizaje automático


clásico
1. Patrimonio de datos

Este elemento muestra el patrimonio de datos de la organización y los posibles


orígenes de datos y destinos para un proyecto de ciencia de datos. Los ingenieros
de datos son los propietarios principales de este elemento del ciclo de vida de
MLOps v2. Las plataformas de datos de Azure de este diagrama no son exhaustivas
ni prescriptivas. Los orígenes de datos y los destinos que representan
procedimientos recomendados basados en el caso de uso del cliente se indican
mediante una marca de verificación verde.

2. Administración y configuración

Este elemento es el primer paso de la implementación del acelerador de


MLOps v2. Consta de todas las tareas relacionadas con la creación y administración
de recursos y roles asociados al proyecto. Esto puede incluir las siguientes tareas y
posiblemente otras:
a. Creación de repositorios de código fuente del proyecto
b. Creación de áreas de trabajo de Machine Learning mediante Bicep, ARM o
Terraform
c. Creación o modificación de conjuntos de datos y recursos de proceso que se
usan para el desarrollo y la implementación de modelos
d. Definición de usuarios del equipo del proyecto, sus roles y controles de acceso
a otros recursos
e. Creación de canalizaciones de CI/CD
f. Creación de monitores para la recopilación y notificación de métricas de
modelo e infraestructura

El rol principal asociado a esta fase es el equipo de infraestructura, pero también


puede haber ingenieros de datos, ingenieros de aprendizaje automático y
científicos de datos.

3. Desarrollo de modelos (bucle interno)

El elemento de bucle interno consta del flujo de trabajo de ciencia de datos


iterativo que actúa dentro de un área de trabajo de Machine Learning dedicada y
segura. En el diagrama se muestra un flujo de trabajo típico. Procede de la ingesta
de datos, el análisis exploratorio de los datos, la experimentación, el desarrollo y la
evaluación de modelos, hasta el registro de un modelo candidato para producción.
Este elemento modular, tal y como se implementa en el acelerador de MLOps v2,
es independiente y adaptable al proceso que usa el equipo de ciencia de datos
para desarrollar modelos.

Entre los roles asociados a esta fase se incluyen científicos de datos e ingenieros
de aprendizaje automático.

4. Registros de Machine Learning

Después de que el equipo de ciencia de datos desarrolle un modelo que sea


candidato para la implementación en producción, el modelo se puede registrar en
el registro del área de trabajo de Machine Learning. Las canalizaciones de CI que
se desencadenan, ya sea automáticamente mediante el registro del modelo o por
la intervención humana en el bucle controlada, promueven el modelo y cualquier
otra dependencia del modelo a su fase de implementación.

Los roles asociados a esta fase suelen ser ingenieros de aprendizaje automático.

5. Implementación de modelos (bucle externo)

La fase de implementación del modelo, o bucle externo, consta de


almacenamiento provisional y pruebas de preproducción, implementación en
producción y supervisión del modelo, los datos y la infraestructura. Las
canalizaciones de CD administran la promoción del modelo y los recursos
relacionados mediante la producción, la supervisión y el posible reentrenamiento,
a medida que se cumplen los criterios adecuados para la organización y el caso de
uso.

Los roles asociados a esta fase son principalmente ingenieros de aprendizaje


automático.
6. Almacenamiento provisional y prueba

La fase de almacenamiento provisional y prueba puede variar con los


procedimientos del cliente, pero normalmente incluye operaciones como el
reentrenamiento y las pruebas del modelo candidato sobre datos de producción,
las implementaciones de prueba para el rendimiento del punto de conexión, las
comprobaciones de calidad de datos, las pruebas unitarias y las comprobaciones
de inteligencia artificial responsable para el modelo y el sesgo de datos. Esta fase
tiene lugar en una o varias áreas de trabajo de Machine Learning dedicadas y
seguras.

7. Implementación en producción

Después de que un modelo supere la fase de almacenamiento provisional y


prueba, se puede promover a producción mediante una aprobación controlada
por intervención humana en el bucle. Las opciones de implementación de modelos
incluyen un punto de conexión por lotes administrado para escenarios por lotes o,
para escenarios en línea casi en tiempo real, un punto de conexión en línea
administrado o una implementación de Kubernetes mediante Azure Arc.
Normalmente, la producción tiene lugar en una o varias áreas de trabajo de
Machine Learning dedicadas y seguras.

8. Supervisión

La supervisión en el almacenamiento provisional, las pruebas y la producción le


permite recopilar métricas y actuar sobre los cambios en el rendimiento del
modelo, los datos y la infraestructura. La supervisión de modelos y datos puede
incluir la comprobación del modelo y el desfase de datos, el rendimiento del
modelo con los datos nuevos y los problemas de la inteligencia artificial
responsable. La supervisión de la infraestructura puede inspeccionar la respuesta
lenta del punto de conexión, la capacidad de proceso inadecuada o los problemas
de red.

9. Supervisión de datos y modelos: eventos y acciones

En función de los criterios para los aspectos de modelo y datos relacionados, como
los umbrales de métricas o las programaciones, los desencadenadores
automatizados y las notificaciones pueden implementar las acciones adecuadas
que se deben realizar. Esto puede programar de manera periódica el
reentrenamiento automatizado del modelo sobre los datos de producción más
recientes y un bucle invertido en el almacenamiento provisional y las pruebas para
la evaluación de preproducción. O bien, se puede deber a desencadenadores en
problemas del modelo o los datos que necesitan un bucle invertido en la fase de
desarrollo del modelo en la que los científicos de datos pueden investigar y
desarrollar potencialmente un modelo nuevo.

10. Supervisión de la infraestructura: eventos y acciones

En función de los criterios de importancia de la infraestructura, como el retraso de


respuesta del punto de conexión o un proceso insuficiente para la
implementación, los desencadenadores automatizados y las notificaciones pueden
implementar las acciones adecuadas que se deben realizar. Desencadenan un
bucle invertido en la fase de instalación y administración en el que el equipo de
infraestructura puede investigar y volver a configurar los recursos de proceso y
red.

Arquitectura de CV de aprendizaje automático

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo para la arquitectura de CV


La arquitectura de CV de Machine Learning se basa en la arquitectura de aprendizaje
automático clásica, pero tiene modificaciones que son específicas de los escenarios de
CV supervisados.

1. Patrimonio de datos

Este elemento muestra el patrimonio de datos de la organización y los posibles


orígenes de datos y destinos para un proyecto de ciencia de datos. Los ingenieros
de datos son los propietarios principales de este elemento del ciclo de vida de
MLOps v2. Las plataformas de datos de Azure de este diagrama no son exhaustivas
ni prescriptivas. Las imágenes para escenarios de CV pueden provenir de muchos
orígenes de datos diferentes. Para mejorar la eficacia al desarrollar e implementar
modelos de CV con Machine Learning, los orígenes de datos de Azure
recomendados para imágenes son Azure Blob Storage y Azure Data Lake Storage.

2. Administración y configuración

Este elemento es el primer paso de la implementación del acelerador de


MLOps v2. Consta de todas las tareas relacionadas con la creación y administración
de recursos y roles asociados al proyecto. En escenarios de CV, la administración y
la configuración del entorno de MLOps v2 es en gran medida igual que para el
aprendizaje automático clásico, pero con un paso adicional: la creación de
proyectos de etiquetado y anotación de imágenes mediante la característica de
etiquetado de Machine Learning u otra herramienta.

3. Desarrollo de modelos (bucle interno)

El elemento de bucle interno consta del flujo de trabajo de ciencia de datos


iterativo realizado dentro de un área de trabajo de Machine Learning dedicada y
segura. La principal diferencia entre este flujo de trabajo y el escenario de
aprendizaje automático clásico es que el etiquetado y la anotación de imágenes
son un elemento clave de este bucle de desarrollo.

4. Registros de Machine Learning

Después de que el equipo de ciencia de datos desarrolle un modelo que sea


candidato para la implementación en producción, el modelo se puede registrar en
el registro del área de trabajo de Machine Learning. Las canalizaciones de CI que
se desencadenan, ya sea automáticamente mediante el registro del modelo o por
la intervención humana en el bucle controlada, promueven el modelo y cualquier
otra dependencia del modelo a su fase de implementación.

5. Implementación de modelos (bucle externo)

La fase de implementación del modelo, o bucle externo, consta de


almacenamiento provisional y pruebas de preproducción, implementación en
producción y supervisión del modelo, los datos y la infraestructura. Las
canalizaciones de CD administran la promoción del modelo y los recursos
relacionados mediante la producción, la supervisión y el posible reentrenamiento,
a medida que se cumplen los criterios adecuados para la organización y el caso de
uso.

6. Almacenamiento provisional y prueba


La fase de almacenamiento provisional y pruebas puede variar con los
procedimientos del cliente, pero normalmente incluye operaciones como las
implementaciones de prueba para el rendimiento del punto de conexión, las
comprobaciones de calidad de datos, las pruebas unitarias y las comprobaciones
de inteligencia artificial responsable para el modelo y el sesgo de datos. En
escenarios de CV, se puede omitir el reentrenamiento del modelo candidato con
los datos de producción, debido a restricciones de tiempo y recursos. En su lugar,
el equipo de ciencia de datos puede usar datos de producción para el desarrollo
del modelo y el modelo candidato registrado desde el bucle de desarrollo es el
que se evalúa para producción. Esta fase tiene lugar en una o varias áreas de
trabajo de Machine Learning dedicadas y seguras.

7. Implementación en producción

Después de que un modelo supere la fase de almacenamiento provisional y


prueba, se puede promover a producción mediante aprobaciones controladas por
intervención humana en el bucle. Las opciones de implementación de modelos
incluyen un punto de conexión por lotes administrado para escenarios por lotes o,
para escenarios en línea casi en tiempo real, un punto de conexión en línea
administrado o una implementación de Kubernetes mediante Azure Arc.
Normalmente, la producción tiene lugar en una o varias áreas de trabajo de
Machine Learning dedicadas y seguras.

8. Supervisión

La supervisión en las fases de almacenamiento provisional, pruebas y producción


le permite recopilar métricas y actuar sobre los cambios en el rendimiento del
modelo, los datos y la infraestructura. La supervisión de modelos y datos puede
incluir la comprobación del rendimiento del modelo con nuevas imágenes. La
supervisión de la infraestructura puede inspeccionar la respuesta lenta del punto
de conexión, la capacidad de proceso inadecuada o los problemas de red.

9. Supervisión de datos y modelos: eventos y acciones

Las fases de supervisión de datos y modelos, y eventos y acciones de MLOps para


NLP son las diferencias clave con respecto al aprendizaje automático clásico.
Normalmente, el reentrenamiento automatizado no se realiza en escenarios de CV
cuando se detecta una degradación del rendimiento del modelo con las nuevas
imágenes. En este caso, las nuevas imágenes con las que el modelo no funciona
correctamente se deben revisar y anotar mediante un proceso de intervención
humana en el bucle y, a menudo, la siguiente acción vuelve al bucle de desarrollo
del modelo para actualizarlo con las nuevas imágenes.
10. Supervisión de la infraestructura: eventos y acciones

En función de los criterios de importancia de la infraestructura, como el retraso de


respuesta del punto de conexión o un proceso insuficiente para la
implementación, los desencadenadores automatizados y las notificaciones pueden
implementar las acciones adecuadas que se deben realizar. Esto desencadena un
bucle invertido en la fase de instalación y administración en el que el equipo de
infraestructura puede investigar y volver a configurar el entorno y los recursos de
proceso y red.

Arquitectura NLP de aprendizaje automático

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo para la arquitectura NLP


La arquitectura NLP de Machine Learning se basa en la arquitectura de aprendizaje
automático clásica, pero tiene algunas modificaciones que son específicas de los
escenarios de NLP.

1. Patrimonio de datos

Este elemento muestra el patrimonio de datos de la organización y los posibles


orígenes de datos y destinos para un proyecto de ciencia de datos. Los ingenieros
de datos son los propietarios principales de este elemento del ciclo de vida de
MLOps v2. Las plataformas de datos de Azure de este diagrama no son exhaustivas
ni prescriptivas. Los orígenes de datos y los destinos que representan
procedimientos recomendados basados en el caso de uso del cliente se indican
mediante una marca de verificación verde.
2. Administración y configuración

Este elemento es el primer paso de la implementación del acelerador de


MLOps v2. Consta de todas las tareas relacionadas con la creación y administración
de recursos y roles asociados al proyecto. En escenarios de NLP, la administración
y la configuración del entorno de MLOps v2 es en gran medida igual que para el
aprendizaje automático clásico, pero con un paso adicional: la creación de
proyectos de etiquetado y anotación de imágenes mediante la característica de
etiquetado de Machine Learning u otra herramienta.

3. Desarrollo de modelos (bucle interno)

El elemento de bucle interno consta del flujo de trabajo de ciencia de datos


iterativo realizado dentro de un área de trabajo de Machine Learning dedicada y
segura. El bucle de desarrollo de modelos NLP típico puede ser significativamente
diferente del escenario de aprendizaje automático clásico, ya que los pasos de
desarrollo típicos para este escenario son los anotadores para oraciones y
tokenización, normalización e inserciones de datos de texto.

4. Registros de Machine Learning

Después de que el equipo de ciencia de datos desarrolle un modelo que sea


candidato para la implementación en producción, el modelo se puede registrar en
el registro del área de trabajo de Machine Learning. Las canalizaciones de CI que
se desencadenan, ya sea automáticamente mediante el registro del modelo o por
la intervención humana en el bucle controlada, promueven el modelo y cualquier
otra dependencia del modelo a su fase de implementación.

5. Implementación de modelos (bucle externo)

La fase de implementación del modelo, o bucle externo, consta de


almacenamiento provisional y pruebas de preproducción, implementación en
producción y supervisión del modelo, los datos y la infraestructura. Las
canalizaciones de CD administran la promoción del modelo y los recursos
relacionados mediante la producción, la supervisión y el posible reentrenamiento,
a medida que se cumplen los criterios para la organización y el caso de uso.

6. Almacenamiento provisional y prueba

La fase de almacenamiento provisional y prueba puede variar con los


procedimientos del cliente, pero normalmente incluye operaciones como el
reentrenamiento y las pruebas del modelo candidato sobre datos de producción,
las implementaciones de prueba para el rendimiento del punto de conexión, las
comprobaciones de calidad de datos, las pruebas unitarias y las comprobaciones
de inteligencia artificial responsable para el modelo y el sesgo de datos. Esta fase
tiene lugar en una o varias áreas de trabajo de Machine Learning dedicadas y
seguras.

7. Implementación en producción

Después de que un modelo supere la fase de almacenamiento provisional y


prueba, se puede promover a producción mediante una aprobación controlada
por intervención humana en el bucle. Las opciones de implementación de modelos
incluyen un punto de conexión por lotes administrado para escenarios por lotes o,
para escenarios en línea casi en tiempo real, un punto de conexión en línea
administrado o una implementación de Kubernetes mediante Azure Arc.
Normalmente, la producción tiene lugar en una o varias áreas de trabajo de
Machine Learning dedicadas y seguras.

8. Supervisión

La supervisión en el almacenamiento provisional, las pruebas y la producción le


permite recopilar cambios en el rendimiento del modelo, los datos y la
infraestructura, y actuar sobre ellos. La supervisión de modelos y datos puede
incluir la comprobación del modelo y el desfase de datos, el rendimiento del
modelo con datos de texto nuevos y los problemas de la inteligencia artificial
responsable. La supervisión de la infraestructura puede inspeccionar problemas
como la respuesta lenta del punto de conexión, la capacidad de proceso
inadecuada y problemas de red.

9. Supervisión de datos y modelos: eventos y acciones

Como sucede con la arquitectura de CV, las fases de supervisión de datos y


modelos, y eventos y acciones de MLOps para NLP son las diferencias clave con
respecto al aprendizaje automático clásico. Normalmente, el reentrenamiento
automatizado no se realiza en escenarios de NLP cuando se detecta una
degradación del rendimiento del modelo con el texto nuevo. En este caso, los
nuevos datos de texto con los que el modelo no funciona correctamente se deben
revisar y anotar mediante un proceso de intervención humana en el bucle. A
menudo, la siguiente acción es volver al bucle de desarrollo del modelo para
actualizar el modelo con los nuevos datos de texto.

10. Supervisión de la infraestructura: eventos y acciones

En función de los criterios de importancia de la infraestructura, como el retraso de


respuesta del punto de conexión o un proceso insuficiente para la
implementación, los desencadenadores automatizados y las notificaciones pueden
implementar las acciones adecuadas que se deben realizar. Desencadenan un
bucle invertido en la fase de instalación y administración en el que el equipo de
infraestructura puede investigar y volver a configurar los recursos de proceso y
red.

Componentes
Machine Learning : un servicio en la nube para entrenar, puntuar, implementar y
administrar modelos de Machine Learning a gran escala.
Azure Pipelines : este sistema de compilación y prueba se basa en Azure DevOps
y se usa para las canalizaciones de compilación y versión. Azure Pipelines divide
estas canalizaciones en pasos lógicos denominados tareas.
GitHub : una plataforma de hospedaje de código para el control de versiones, la
colaboración y los flujos de trabajo de CI/CD.
Azure Arc : una plataforma para administrar recursos locales y de Azure mediante
Azure Resource Manager. Los recursos pueden incluir máquinas virtuales, clústeres
de Kubernetes y bases de datos.
Kubernetes : un sistema de código abierto para automatizar la implementación,
el escalado y la administración de aplicaciones en contenedores.
Azure Data Lake : un sistema de archivos compatible con Hadoop. Tiene un
espacio de nombres jerárquico integrado y la escala y economía masivas de Blob
Storage.
Azure Synapse Analytics : servicio de análisis ilimitado que combina la
integración de datos, el almacenamiento de datos empresariales y el análisis de
macrodatos.
Azure Event Hubs . Un servicio que ingiere flujos de datos generados por las
aplicaciones cliente. Después, ingiere y almacena los datos de streaming, al tiempo
que conservan la secuencia de los eventos recibidos. Los consumidores pueden
conectarse a los puntos de conexión del centro para recuperar mensajes para su
procesamiento. Aquí se saca provecho de la integración con Data Lake Storage.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Scott Donohoo | Arquitecto sénior de soluciones en la nube


Moritz Steller | Arquitecto sénior de soluciones en la nube
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es Azure Pipelines?
Introducción a Azure Arc
¿Qué es Azure Machine Learning?
Datos en Azure Machine Learning
Acelerador de soluciones de Azure MLOps (v2)
Operaciones de aprendizaje automático de un extremo a otro (MLOps) con Azure
Machine Learning
Introducción a Azure Data Lake Storage Gen2
Documentación de Azure DevOps
Documentación de GitHub
Documentación de Azure Synapse Analytics
Documentación de Azure Event Hubs

Recursos relacionados
Elección de una tecnología de servicios cognitivos de Microsoft
Tecnología de procesamiento de lenguaje natural
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Funcionamiento de Azure Machine Learning: recursos (v2)
¿Qué son las canalizaciones de Azure Machine Learning?
Marco de las operaciones de Machine Learning (MLOps) para escalar el ciclo de
vida de aprendizaje automático con Azure Machine Learning
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
MLOps para modelos de Python
con Azure Machine Learning
Azure Blob Storage Azure Container Registry Azure DevOps Azure Machine Learning Azure Pipelines

Esta arquitectura de referencia muestra cómo implementar la integración continua (CI),


la entrega continua (CD) y una canalización de reentrenamiento para una aplicación de
inteligencia artificial mediante Azure DevOps y Azure Machine Learning. La solución se
basa en el conjunto de datos sobre diabetes scikit-learn, pero se puede adaptar
fácilmente a cualquier escenario de inteligencia artificial y a otros sistemas de
compilación conocidos, como Jenkins y Travis.

Hay disponible una implementación de referencia de esta arquitectura en GitHub .

Architecture

Descargue un archivo Visio de esta arquitectura.


Flujo de trabajo
La arquitectura consta de los siguientes servicios:

Azure Pipelines . Este sistema de compilación y prueba se basa en Azure DevOps y se


usa para las canalizaciones de compilación y versión. Azure Pipelines divide estas
canalizaciones en pasos lógicos denominados tareas. Por ejemplo, la tarea de la CLI de
Azure facilita el trabajo con los recursos de Azure.

Azure Machine Learning es un servicio en la nube que se usa para entrenar, puntuar,
implementar y administrar modelos de aprendizaje automático a gran escala. Esta
arquitectura usa el SDK de Python de Azure Machine Learning para crear un área de
trabajo, los recursos de proceso, la canalización de aprendizaje automático y la imagen
de puntuación. El área de trabajo de Azure Machine Learning proporcionan el espacio
necesario para experimentar, entrenar e implementar los modelos de aprendiaje
automático.

Proceso de Azure Machine Learning es un clúster de máquinas virtuales a petición con


escalado automático y opciones de nodos con GPU y CPU. El trabajo de entrenamiento
se ejecuta en este clúster.

Las canalizaciones de Azure Machine Learning proporcionan flujos de trabajo de


aprendizaje automático que se pueden reutilizar en varios escenarios. El entrenamiento,
la evaluación y el registro de modelos, y la creación de imágenes se producen en pasos
distintos en estas canalizaciones en este caso de uso. La canalización se publica o se
actualiza al final de la fase de compilación y se desencadena cuando llegan nuevos
datos.

Azure Blob Storage . Los contenedores de blobs se utilizan para almacenar los registros
del servicio de puntuación. En este caso, se recopilan tanto los datos de entrada como la
predicción del modelo. Después de cierta transformación, estos registros se pueden
usar para el reentrenamiento de modelos.

Azure Container Registry . El script de Python de puntuación se empaqueta como una


imagen de Docker y se crean versiones en el registro.

Azure Container Instances . Como parte de la canalización de versión, el entorno de


control de calidad y ensayo se imita mediante la implementación de la imagen del
servicio web de puntuación en Container Instances, lo que permite ejecutar un
contenedor de forma fácil y sin servidor.

Azure Kubernetes Service . Una vez que la imagen del servicio web de puntuación se
prueba exhaustivamente en el entorno de control de calidad, se implementa en el
entorno de producción en un clúster de Kubernetes administrado.
Azure Application Insights . Este servicio de supervisión se usa para detectar anomalías
en el rendimiento.

Canalización de MLOps
Esta solución muestra una automatización completa, de varias fases, de un proyecto de
inteligencia artificial, mediante herramientas con las que los ingenieros de software ya
están familiarizados. El problema del aprendizaje automático es simple, centrarse en la
canalización de DevOps. La solución usa el conjunto de datos sobre diabetes de scikit-
learn y crea un modelo de regresión lineal de cresta para predecir la probabilidad de
diabetes.

Esta solución se basa en las tres canalizaciones siguientes:

Canalización de compilación. Compila el código y ejecuta un conjunto de pruebas.


Canalización de reentrenamiento. Vuelve a entrenar el modelo según una
programación o cuando haya nuevos datos disponibles.
Canalización de versión. Operacionaliza la imagen de puntuación y la promociona
de forma segura en diferentes entornos.

En las secciones siguientes se describen todas estas canalizaciones.

Canalización de compilación
La canalización de CI se desencadena cada vez que se sincroniza el código. Publica una
canalización de Azure Machine Learning actualizada después de compilar el código y
ejecutar un conjunto de pruebas. La canalización de compilación consta de las
siguientes tareas:

Calidad del código. Estas pruebas garantizan que el código se ajusta a los
estándares del equipo.

Prueba unitaria. Estás pruebas garantizan que el código funciona, tiene una
cobertura de código adecuada y es estable.

Prueba de datos. Estás pruebas verifican que los ejemplos de datos se ajustan al
esquema y a la distribución esperados. Personalice esta prueba para otros casos de
uso y ejecútela como una canalización de validez de los datos independiente que
se desencadena cuando llegan datos nuevos. Por ejemplo, mueva la tarea de
prueba de los datos a una canalización de ingesta de datos para poder probarla
antes.
7 Nota

Debería plantearse la posibilidad de habilitar los procedimientos de DevOps en los


datos utilizados para entrenar los modelos de aprendizaje automático, pero ese
tema no se trata en este artículo. Para más información sobre la arquitectura y
procedimientos recomendados para CI/CD de una canalización de ingesta de
datos, consulte DevOps para una canalización de ingesta de datos.

Las siguientes tareas se realizan una sola vez y se producen al configurar la


infraestructura para Azure Machine Learning y el SDK de Python:

Cree el área de trabajo que hospeda todos los recursos relacionados con Azure
Machine Learning.
Cree los recursos de proceso que ejecutan el trabajo de entrenamiento.
Cree la canalización de aprendizaje automático con el script de entrenamiento
actualizado.
Publique la canalización de aprendizaje automático como si fuera un punto de
conexión de REST para organizar el flujo de trabajo de entrenamiento. En la
siguiente sección se describe este paso.

Canalización de reentrenamiento
La canalización de aprendizaje automático organiza el proceso de reentrenamiento del
modelo de una forma asincrónica. El reentrenamiento se puede desencadenar según
una programación o cuando haya nuevos datos disponibles mediante la llamada al
punto de conexión REST de la canalización publicada del paso anterior.

Esta canalización abarca los siguientes pasos:

Entrenamiento de un modelo. El script de entrenamiento de Python se ejecuta en


el recurso Proceso de Azure Machine Learning para obtener un archivo de modelo
que se almacena en el historial de ejecución. Dado que el entrenamiento es la
tarea que hace un uso más intensivo del proceso en cualquier proyecto de
inteligencia artificial, la solución usa Proceso de Azure Machine Learning.

Evaluación del modelo. Una sencilla prueba de evaluación compara el modelo


nuevo con el existente. El modelo nuevo solo se promociona si es mejor. En caso
contrario, el modelo no se registra y la canalización se cancela.

Registro del modelo. El modelo reentrenado se registra en el registro de modelos


de Azure Machine Learning. Este servicio proporciona el control de versiones de
los modelos, junto con etiquetas de metadatos, con el fin de que se puedan
reproducir fácilmente.

Canalización de versión
Esta canalización muestra cómo operacionalizar la imagen de puntuación y
promocionarla de forma segura en diferentes entornos. Esta canalización se subdivide
en dos entornos, control de calidad y producción:

Entorno de control de calidad


Desencadenador del artefacto de modelo. Las canalizaciones de versión se
desencadenan cada vez que hay un artefacto nuevo disponible. Los modelos
nuevos registrados en Administración de modelos de Azure Machine Learning se
tratan como artefactos de publicación. En ese caso, se desencadena una
canalización por cada modelo nuevo que se registra.

Cree una imagen de puntuación. El modelo registrado se empaqueta junto con un


script de puntuación y las dependencias de Python (archivo YAML de Conda ) en
una imagen de Docker de operacionalización. La imagen obtiene automáticamente
las versiones a través de Azure Container Registry.

Implementación en Container Instances. Este servicio se usa para crear un


entorno que no es de producción. Aquí también se implementa la imagen de
puntuación y se usa principalmente para la realización de pruebas. Container
Instances proporciona una forma fácil y rápida de probar la imagen de Docker.

Prueba de servicio web. Una sencilla prueba de la API garantiza que la imagen se
ha implementado correctamente.

Entorno de producción

Implementación en Azure Kubernetes Service. Este servicio se usa para


implementar una imagen de puntuación como si fuera un servicio web a gran
escala en un entorno de producción.

Prueba de servicio web. Una sencilla prueba de la API garantiza que la imagen se
ha implementado correctamente.

Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Escalabilidad
Las canalizaciones de compilación de Azure DevOps se pueden escalar para cualquier
aplicación, sea cual sea su tamaño. Las canalizaciones de compilación tienen un tiempo
de expiración máximo que varía en función del agente en que se ejecutan. Las
compilaciones se pueden ejecutar de forma indefinida en agentes autohospedados
(agentes privados). En el caso de los agentes hospedados en Microsoft para un proyecto
público, las compilaciones se pueden ejecutar durante seis horas. En el caso de los
proyectos privados, el límite es 30 minutos.

Para usar el tiempo de expiración máximo, establezca la siguiente propiedad en el


archivo YAML de Azure Pipelines:

YAML

jobs:
- job: <job_name>
timeoutInMinutes: 0

Lo ideal es que la canalización de compilación finalice rápidamente y que se ejecuten


solo pruebas unitarias y un subconjunto de otras pruebas. Esto permite validar los
cambios rápidamente y solucionar los problemas que aparezcan. Ejecute las pruebas de
ejecución prolongada fuera del horario laboral.

La canalización de versión publica un servicio web de puntuación en tiempo real. Las


publicaciones en el entorno de control de calidad se realizan mediante Container
Instances por comodidad, pero se puede usar cualquier otro clúster de Kubernetes que
se ejecute en el entorno de ensayo o de control de calidad.

Escale el entorno de producción según el tamaño del clúster de Azure Kubernetes


Service. El tamaño del clúster depende de la carga que se espere para el servicio web de
puntuación implementado. En el caso de las arquitecturas de puntuación en tiempo real,
el rendimiento es una métrica de optimización clave. En escenarios que no sean de
aprendizaje profundo, la CPU debe ser suficiente para controlar la carga; sin embargo,
en las cargas de trabajo de aprendizaje profundo, si la velocidad supone un cuello de
botella, las GPU habitualmente proporcionan mejor rendimiento que las CPU. Azure
Container Service admite los tipos de nodo CPU y GPU, y ese es el motivo por el que
esta solución lo usa para la implementación de imágenes. Para más información,
consulte GPU frente a CPU para la implementación de modelos de aprendizaje
profundo .

Escale y reduzca verticalmente la canalización de reentrenamiento en función del


número de nodos del recurso Proceso de Azure Machine Learning y use la opción de
escalabilidad automática para administrar el clúster. Esta arquitectura utiliza varias CPU.
Para las cargas de aprendizaje profundo, es mejor elegir GPU, ya que son compatibles
con Proceso de Azure Machine Learning.

Administración
Trabajo de supervisión de reentrenamiento. Las canalizaciones de aprendizaje
automático organizan el reentrenamiento en un clúster de máquinas y
proporcionan una forma sencilla de supervisarlas. Use la interfaz de usuario de
Azure Machine Learning y mire en la sección de canalizaciones de los registros.
Como alternativa, estos registros también se escriben en un blob y se pueden leer
desde allí, así como usar herramientas como Azure Storage Explorer .

Registro. Azure Machine Learning proporciona una forma sencilla de realizar el


registro en cada uno de los pasos del ciclo de vida del aprendizaje automático. Los
registros se almacenan en un contenedor de blobs. Para más información, consulte
Habilitación del registro en Azure Machine Learning. Para mejorar la supervisión,
configure Application Insights para que use los registros.

Seguridad. Todos los secretos y credenciales se almacenan en Azure Key Vault y se


accede a ellos en Azure Pipelines mediante los grupos de variables.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

Azure DevOps es gratis para proyectos de código abierto y proyectos pequeños, con
un máximo de cinco usuarios. Para equipos mayores, compre un plan basado en el
número de usuarios.

El proceso es el principal factor determinante del costo de esta arquitectura y varía en


función del caso de uso. Esta arquitectura usa Proceso de Azure Machine Learning, pero
hay otras opciones. Azure Machine Learning no agrega ningún recargo sobre el costo
de las máquinas virtuales que respaldan el clúster de proceso. Configure el clúster de
proceso para que tenga 0 nodos como mínimo, y así, cuando no esté en uso, se pueda
reducir verticalmente a 0 nodos y no incurrir en ningún costo. El costo de proceso
depende del tipo de nodo, el número de nodos y el modo de aprovisionamiento
(prioridad baja o dedicado). Para calcular el costo de Machine Learning y de otros
servicios, use la calculadora de precios de Azure.

Implementación de este escenario


Para implementar esta arquitectura de referencia, siga los pasos descritos en la guía de
introducción del repositorio de GitHub .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Praneet Singh Solanki | Ingeniero sénior de software

Pasos siguientes
¿Quiere saber más? Consulte la ruta de aprendizaje relacionada Iniciar el ciclo de
vida del aprendizaje automático con MLOps.
Protección de soluciones de
MLOps con seguridad de red de
Azure
Azure DevOps Azure DNS Azure Machine Learning Azure Private Link Azure Virtual Network

DevOps de aprendizaje automático (MLOps), resaltado por primera vez en Deuda


técnica oculta en los sistemas de aprendizaje automático en 2015, está creciendo
rápidamente. Se espera que el mercado de MLOps alcance los 4 mil millones de USD en
2025. Mientras tanto, trabajar para proteger las soluciones de MLOps es cada vez más
importante.

En este artículo, se describe cómo proteger las soluciones de MLOps mediante


funcionalidades de seguridad de red de Azure, como Azure Virtual Network, el
emparejamiento de red, Azure Private Link y Azure DNS. También se presenta cómo
usar:

Azure Pipelines para acceder a los recursos de la red virtual


Las configuraciones necesarias de Azure Container Registry y las instancias y
clústeres de proceso de Azure Machine Learning de una red virtual.

Por último, este artículo describe los costos de usar los servicios de seguridad de red.

Architecture
Azure Blob Azure Machine Azure Container Azure Key
Storage Learning workspace Registry Vault User
Azure VPN
Gateway

Private endpoints Azure Bastion


Jump host

Self-hosted
Compute Compute Azure Pipelines
agent
instance cluster
Virtual network
peering

BASTION VNET
10.2.0.0/16
Azure Kubernetes cluster

AML VNET
10.1.0.0/16

Private DNS zones Azure Monitor

Resource group

Microsoft
Azure

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
El diagrama de arquitectura muestra una solución de MLOps de muestra.

La red virtual llamada AML VNET ayuda a proteger área de trabajo de Azure
Machine Learning y sus recursos asociados.

El host de salto, Azure Bastion y los agentes autohospedados se encuentran en


otra red virtual llamada BASTION VNET. Esta disposición simula tener otra
solución que requiera acceso a los recursos dentro de la red virtual de AML.

Con la compatibilidad con el emparejamiento de redes virtuales y las zonas DNS


privadas, Azure Pipelines puede ejecutarse en agentes autohospedados y
desencadenar las canalizaciones de Azure Machine Learning publicadas en el área
de trabajo de Azure Machine Learning para entrenar, evaluar y registrar los
modelos de aprendizaje automático.

Por último, el modelo se implementa en puntos de conexión en línea o puntos de


conexión por lotes compatibles con el proceso de Azure Machine Learning o los
clústeres de Azure Kubernetes Service.
Componentes
La solución de ejemplo de MLOps consta de estos componentes:

Almacenamiento de datos: Azure Blob Storage para el almacenamiento de


datos.
Entrenamiento, validación y registro del modelo: área de trabajo de Azure Machine
Learning
Implementación de modelos: Puntos de conexión de Azure Machine Learning y
Azure Kubernetes Service
Supervisión de modelos: Azure Monitor para Application Insights
Canalizaciones de MLOps: Azure DevOps y Azure Pipelines

En este escenario de ejemplo también se usan los siguientes servicios para ayudar a
proteger la solución de MLOps:

Azure Key Vault


Azure Policy
Virtual Network

Detalles del escenario


MLOps es un conjunto de prácticas en la intersección entre Machine Learning, DevOps e
ingeniería de datos que pretende implementar y mantener modelos de aprendizaje
automático en producción de forma fiable y eficaz.

En el diagrama siguiente se muestra un modelo de proceso de MLOps simplificado. Este


modelo ofrece una solución que automatiza la preparación de datos, el entrenamiento
de modelos, la evaluación de modelos, el registro de modelos, la implementación de
modelos y la supervisión.

Al implementar una solución de MLOps, es posible que desee ayudar a proteger estos
recursos:

Canalizaciones de DevOps
Datos de entrenamiento de aprendizaje automático
Canalizaciones de Machine Learning
Modelos de Machine Learning

Para ayudar a proteger los recursos, tenga en cuenta estos métodos:

Autenticación y autorización
Use entidades de servicio o identidades administradas en lugar de la
autenticación interactiva.
Use el control de acceso basado en roles para definir el ámbito del acceso de un
usuario a los recursos.

Seguridad de las redes


Use Virtual Network para aislar completamente o parcialmente el entorno de la
red pública de Internet para reducir la superficie expuesta a ataques y la
posibilidad de filtración de datos.
En el área de trabajo de Azure Machine Learning, si sigue usando la CLI de
Azure Machine Learning v1 y el SDK de Python de Azure Machine
Learning v1 (por ejemplo, la API v1), agregar un punto de conexión privado
al área de trabajo proporciona aislamiento de red para todo excepto las
operaciones CRUD en el área de trabajo o los recursos de proceso.
Para aprovechar las ventajas de las nuevas características del área de trabajo
de Azure Machine Learning, utilizar la CLI de Azure Machine Learning v2 y el
SDK de Python de Azure Machine Learning v2 (por ejemplo, la API v2), en la
que habilitar un punto de conexión privado en el área de trabajo no
proporciona el mismo nivel de aislamiento de red. Sin embargo, la red virtual
seguirá protegiendo los datos de entrenamiento y los modelos de Machine
Learning. Se recomienda evaluar la API v2 antes de adoptarla en las
soluciones empresariales. Consulte ¿Cuál es la nueva plataforma API en
Azure Resource Manager (ARM)? para más información.

Cifrado de datos
Cifre los datos de entrenamiento en tránsito y en reposo mediante claves de
acceso administradas por la plataforma o administradas por el cliente.

Directiva y supervisión
Use Azure Policy y Microsoft Defender for Cloud para aplicar directivas.
Use Azure Monitor para recopilar y agregar datos (como métricas y registros)
de varios orígenes en una plataforma de datos común para el análisis, la
visualización y las alertas.

El área de trabajo de Azure Machine Learning es el recurso de nivel superior para Azure
Machine Learning y el componente principal de una solución de MLOps. El área de
trabajo proporciona un lugar centralizado para trabajar con todos los artefactos que
cree al usar Azure Machine Learning.

Al crear una nueva área de trabajo, se crean automáticamente los recursos siguientes de
Azure que el área de trabajo utiliza:

Azure Application Insights


Azure Container Registry
Azure Key Vault
Cuenta de Azure Storage

Posibles casos de uso


Esta solución se adapta a escenarios en los que un cliente usa una solución de MLOps
para implementar y mantener modelos de Machine Learning en un entorno más
protegido. Los clientes pueden proceder de diversos sectores, como la fabricación, las
telecomunicaciones, el comercio minorista, la atención sanitaria, etc. Por ejemplo:

Un operador de telecomunicaciones protege las imágenes, los datos y los modelos


de Machine Learning de un cliente en su sistema de supervisión de vídeo para
tiendas minoristas.

Un fabricante de motores necesita una solución más segura para ayudar a


proteger los datos y los modelos de Machine Learning de sus fábricas y productos
para su sistema, que utiliza Computer Vision para detectar defectos en las piezas.

Las soluciones de MLOps para estos escenarios y otros pueden usar áreas de trabajo de
Azure Machine Learning, Azure Blob Storage, Azure Kubernetes Service, Container
Registry y otros servicios de Azure.

Puede usar todo o parte de este ejemplo para cualquier escenario similar que tenga un
entorno de MLOps que se implemente en Azure y use las funcionalidades de seguridad
de Azure para ayudara a proteger los recursos pertinentes. El cliente original de esta
solución está en el sector de las telecomunicaciones.

Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework,
que es un conjunto de principios rectores que mejoran la calidad de una carga de
trabajo cuando se aplica. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.
Seguridad
La seguridad proporciona más garantías contra ataques deliberados y el abuso de datos
y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Considere cómo ayudar a proteger la solución de MLOps comenzando con el diseño de


la arquitectura. Es posible que los entornos de desarrollo no necesiten una seguridad
significativa, pero es importante en los entornos de ensayo y producción.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

La configuración de Virtual Network es gratuita, pero hay cargos por los demás servicios
que pueda requerir su escenario, como los vínculos privados, las zonas DNS y el
emparejamiento de red virtual. En la tabla siguiente se describen los cargos por esos
servicios y otros que podrían ser necesarios.

Servicio de Azure Precios

Virtual Network Gratis.

Private Link Pague solo por horas de recursos de punto de conexión privado
y los datos que se procesan a través del punto de conexión
privado.

Azure DNS, zona La facturación se basa en el número de zonas DNS que se


privada hospedan en Azure y el número de consultas de DNS recibidas.

Emparejamiento de El tráfico de entrada y de salida se cobra en ambos extremos de


redes virtuales las redes emparejadas.

puerta de enlace de Los cargos dependen del tiempo de aprovisionamiento y de la


VPN disponibilidad de la puerta de enlace.

ExpressRoute Los cargos son para ExpressRoute y las puertas de enlace de


ExpressRoute.

Azure Bastion La facturación implica una combinación de precios por hora en


función de la SKU, las unidades de escalado y las tasas de
Servicio de Azure Precios

transferencia de datos.

Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una
aplicación y la mantienen en ejecución en producción. Para más información, consulte
Introducción al pilar de excelencia operativa.

Para simplificar la integración continua y la entrega continua (CI/CD), el procedimiento


recomendado es usar herramientas y servicios para la infraestructura como código (IaC),
como Terraform o plantillas de Azure Resource Manager, Azure DevOps y Azure
Pipelines.

Implementación de este escenario


En las secciones siguientes, se describe cómo implementar, acceder y ayudar a proteger
los recursos en este escenario de ejemplo.

Virtual Network

El primer paso para ayudar a proteger el entorno de MLOps es ayudar a proteger el área
de trabajo de Azure Machine Learning y sus recursos asociados. Un método eficaz de
protección consiste en utilizar Virtual Network. Virtual Network es el bloque de creación
básico de una red privada en Azure. Virtual Network permite que muchos tipos de
recursos de Azure se comuniquen entre sí, con Internet y con redes del entorno local de
forma más segura.

Colocar el área de trabajo de Azure Machine Learning y sus recursos asociados en una
red virtual garantiza que los componentes se puedan comunicar entre sí sin exponerlos
a la red pública de Internet. Al hacerlo, se reduce su superficie expuesta a ataques y se
ayuda a evitar la filtración de datos.

El siguiente fragmento de código de Terraform muestra cómo crear un clúster de


proceso para Azure Machine Learning, asociarlo a un área de trabajo y colocarlo en una
subred de una red virtual.

Terraform
resource "azurerm_machine_learning_compute_cluster" "compute_cluster" {
name = "my_compute_cluster"
location = "eastasia"
vm_priority = "LowPriority"
vm_size = "Standard_NC6s_v3"
machine_learning_workspace_id =
azurerm_machine_learning_workspace.my_workspace.id
subnet_resource_id = azurerm_subnet.compute_subnet.id
ssh_public_access_enabled = false
scale_settings {
min_node_count = 0
max_node_count = 3
scale_down_nodes_after_idle_duration = "PT30S"
}
identity {
type = "SystemAssigned"
}
}

Private Link y punto de conexión privado de Azure


Private Link permite el acceso mediante un punto de conexión privado de la red virtual a
las opciones de plataforma como servicio (PaaS) de Azure, como un área de trabajo de
Azure Machine Learning y Azure Storage, y a los servicios propiedad del cliente y
propiedad de los asociados hospedados en Azure. Un punto de conexión privado es una
interfaz de red que se conecta solo a recursos específicos, lo que ayuda a protegerse
frente a la filtración de datos.

En este escenario de ejemplo, hay cuatro puntos de conexión privados que están
vinculados a opciones de PaaS de Azure y que se administran mediante una subred de
la red virtual AML VNET, como se muestra en el diagrama de arquitectura. Por lo tanto,
estos servicios solo son accesibles para los recursos de la misma red virtual, la red virtual
de AML. Estos servicios son:

Área de trabajo de Azure Machine Learning


Azure Blob Storage
Azure Container Registry
Azure Key Vault

El siguiente fragmento de código de Terraform muestra cómo usar un punto de


conexión privado para vincularlo a un área de trabajo de Azure Machine Learning, que
está más protegida por la red virtual como resultado. El fragmento de código también
muestra el uso de una zona DNS privada, que se describe en Zonas DNS privadas.

Terraform
resource "azurerm_machine_learning_workspace" "aml_ws" {
name = "my_aml_workspace"
friendly_name = "my_aml_workspace"
location = "eastasia"
resource_group_name = "my_resource_group"
application_insights_id = azurerm_application_insights.my_ai.id
key_vault_id = azurerm_key_vault.my_kv.id
storage_account_id = azurerm_storage_account.my_sa.id
container_registry_id = azurerm_container_registry.my_acr_aml.id

identity {
type = "SystemAssigned"
}
}

# Configure private DNS zones

resource "azurerm_private_dns_zone" "ws_zone_api" {


name = "privatelink.api.azureml.ms"
resource_group_name = var.RESOURCE_GROUP
}

resource "azurerm_private_dns_zone" "ws_zone_notebooks" {


name = "privatelink.notebooks.azure.net"
resource_group_name = var.RESOURCE_GROUP
}

# Link DNS zones to the virtual network

resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_api_link"


{
name = "ws_zone_link_api"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.ws_zone_api.name
virtual_network_id = azurerm_virtual_network.aml_vnet.id
}

resource "azurerm_private_dns_zone_virtual_network_link"
"ws_zone_notebooks_link" {
name = "ws_zone_link_notebooks"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.ws_zone_notebooks.name
virtual_network_id = azurerm_virtual_network.aml_vnet.id
}

# Configure private endpoints

resource "azurerm_private_endpoint" "ws_pe" {


name = "my_aml_ws_pe"
location = "eastasia"
resource_group_name = "my_resource_group"
subnet_id = azurerm_subnet.my_subnet.id

private_service_connection {
name = "my_aml_ws_psc"
private_connection_resource_id =
azurerm_machine_learning_workspace.aml_ws.id
subresource_names = ["amlworkspace"]
is_manual_connection = false
}

private_dns_zone_group {
name = "private-dns-zone-group-ws"
private_dns_zone_ids = [azurerm_private_dns_zone.ws_zone_api.id,
azurerm_private_dns_zone.ws_zone_notebooks.id]
}

# Add the private link after configuring the workspace


depends_on = [azurerm_machine_learning_compute_instance.compute_instance,
azurerm_machine_learning_compute_cluster.compute_cluster]
}

El código anterior para azurerm_machine_learning_workspace usará la plataforma de


API v2 de manera predeterminada. Si todavía desea usar la API v1 o tiene una directiva
de empresa que prohíba el envío de comunicaciones mediante redes públicas, puede
habilitar el parámetro v1_legacy_mode, como se muestra en el siguiente fragmento de
código. Cuando se habilita, este parámetro desactiva la API v2 para el área de trabajo.

Terraform

resource "azurerm_machine_learning_workspace" "aml_ws" {


...
public_network_access_enabled = false
v1_legacy_mode_enabled = true
}

Zonas DNS privadas


Azure DNS proporciona un servicio DNS confiable y más seguro para administrar y
resolver los nombres de dominio en una red virtual sin necesidad de agregar una
solución DNS personalizada. Al utilizar zonas DNS privadas, puede usar nombres de
dominio personalizados en lugar de los nombres proporcionados por Azure. La
resolución de DNS en una zona DNS privada solo funciona desde redes virtuales
vinculadas a ella.

Esta solución de ejemplo usa puntos de conexión privados para el área de trabajo de
Azure Machine Learning y para sus recursos asociados, como Azure Storage, Azure Key
Vault o Container Registry. Por lo tanto, debe definir la configuración de DNS para
resolver las direcciones IP de los puntos de conexión privados del nombre de dominio
completo (FQDN) de la cadena de conexión.
Puede vincular una zona DNS privada a una red virtual para resolver dominios
específicos.

El fragmento de código de Terraform en Private Link y el punto de conexión privado de


Azure crea dos zonas DNS privadas mediante los nombres de zona que se recomiendan
en la configuración de zona DNS de los servicios de Azure:

privatelink.api.azureml.ms
privatelink.notebooks.azure.net

Emparejamiento de redes virtuales

El emparejamiento de redes virtuales permite el acceso de la máquina virtual (VM) de


host de salto o de las máquinas virtuales del agente autohospedado en la red virtual
BASTIÓN a los recursos de la red virtual de AML. Con fines de conectividad, las dos
redes virtuales funcionan como una. El tráfico entre máquinas virtuales y recursos de
Azure Machine Learning en redes virtuales emparejadas usa la infraestructura troncal de
Azure. El tráfico entre las redes virtuales se enruta a través de la red privada de Azure.

El siguiente fragmento de código de Terraform configura el emparejamiento de red


virtual entre la red virtual de AML y la red virtual BASTIÓN.

Terraform

# Virtual network peering for AML VNET and BASTION VNET


resource "azurerm_virtual_network_peering" "vp_amlvnet_basvnet" {
name = "vp_amlvnet_basvnet"
resource_group_name = "my_resource_group"
virtual_network_name = azurerm_virtual_network.amlvnet.name
remote_virtual_network_id = azurerm_virtual_network.basvnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
}

resource "azurerm_virtual_network_peering" "vp_basvnet_amlvnet" {


name = "vp_basvnet_amlvnet"
resource_group_name = "my_resource_group"
virtual_network_name = azurerm_virtual_network.basvnet.name
remote_virtual_network_id = azurerm_virtual_network.amlvnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
}

Acceso a los recursos de la red virtual


Para acceder al área de trabajo de Azure Machine Learning en una red virtual, como la
red virtual de AML en este escenario, use uno de los métodos siguientes:

Azure VPN Gateway


Azure ExpressRoute
Azure Bastion y la máquina virtual del host de salto

Para más información, consulte Conexión al área de trabajo.

Ejecución de Azure Pipelines que acceden a los recursos


de la red virtual
Azure Pipelines crea y prueba automáticamente proyectos de código para ponerlos a
disposición de otros. Azure Pipelines combina la integración continua y la entrega
continua para probar y compilar el código y enviarlo a cualquier destino.

Agentes hospedados en Azure frente a agentes autohospedados

La solución de MLOps de este escenario de ejemplo consta de dos canalizaciones, que


pueden desencadenar canalizaciones de Azure Machine Learning y acceder a los
recursos asociados. Dado que el área de trabajo de Azure Machine Learning y su recurso
asociado están en una red virtual, este escenario debe proporcionar una manera de que
un agente de Azure Pipelines acceda a ellos. Un agente es una infraestructura
informática con software de agente instalado que ejecuta trabajos de Azure Pipelines de
uno en uno. Hay varias maneras de implementar el acceso:

Use agentes autohospedados en la misma red virtual o en la red virtual de


emparejamiento, como se muestra en el diagrama de arquitectura.

Use agentes hospedados en Azure y agregue sus intervalos de direcciones IP a una


lista de permitidos en la configuración del firewall de los servicios de Azure de
destino.

Use agentes hospedados en Azure (como clientes VPN) y VPN Gateway.

Cada una de estas opciones tiene ventajas y desventajas. En la tabla siguiente se


comparan los agentes hospedados en Azure con agentes autohospedados.

Agente hospedado en Agente autohospedado


Azure

Costee Inicie gratis para un Comience de forma gratuita para un


trabajo paralelo con trabajo paralelo con minutos
Agente hospedado en Agente autohospedado
Azure

1800 minutos al mes y ilimitados al mes y un cargo por cada


un cargo por cada trabajo paralelo de CI/CD
trabajo paralelo de CI/CD autohospedado adicional con minutos
hospedado en Azure. ilimitados. Esta opción ofrece trabajos
paralelos menos costosos.

Mantenimiento Microsoft se encarga Mantenido por usted con más control


para usted. de la instalación del software de su
elección.

Tiempo de Tarda más tiempo, ya Ahorra tiempo porque mantiene


compilación que se actualiza por todos los archivos y memorias caché.
completo cada vez que
se inicia una compilación
y siempre se compila
desde cero.

7 Nota

Para ver los precios actuales, consulte Precios de Azure DevOps .

En función de las comparaciones de la tabla y de las consideraciones de seguridad y


complejidad, este escenario de ejemplo usa un agente autohospedado para Azure
Pipelines para desencadenar canalizaciones de Azure Machine Learning en la red virtual.

Para configurar un agente autohospedado, dispone de las siguientes opciones:

Instale el agente en Azure Virtual Machines.

Instalar los agentes en un conjunto de escalado de máquinas virtuales de Azure,


que se puede escalar automáticamente para satisfacer la demanda.

Instale el agente en un contenedor Docker. Esta opción no es factible, ya que este


escenario podría requerir la ejecución del contenedor Docker en el agente para el
entrenamiento del modelo de Machine Learning.

El código de ejemplo siguiente aprovisiona dos agentes autohospedados mediante la


creación de máquinas virtuales y extensiones de Azure:

Terraform
resource "azurerm_linux_virtual_machine" "agent" {
...
}

resource "azurerm_virtual_machine_extension" "update-vm" {


count = 2
name = "update-vm${format("%02d", count.index)}"
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.1"
virtual_machine_id = element(azurerm_linux_virtual_machine.agent.*.id,
count.index)

settings = <<SETTINGS
{
"script":
"${base64encode(templatefile("../scripts/terraform/agent_init.sh", {
AGENT_USERNAME = "${var.AGENT_USERNAME}",
ADO_PAT = "${var.ADO_PAT}",
ADO_ORG_SERVICE_URL = "${var.ADO_ORG_SERVICE_URL}",
AGENT_POOL = "${var.AGENT_POOL}"
}))}"
}
SETTINGS
}

Como se muestra en el bloque de código anterior, el script de Terraform llama a


agent_init.sh, que se muestra en el siguiente bloque de código, para instalar el software
del agente y las bibliotecas necesarias en la máquina virtual del agente según los
requisitos del cliente.

Bash

#!/bin/sh
# Install other required libraries
...

# Creates directory and downloads Azure DevOps agent installation files


sudo mkdir /myagent
cd /myagent
sudo wget https://vstsagentpackage.azureedge.net/agent/2.194.0/vsts-agent-
linux-x64-2.194.0.tar.gz
sudo tar zxvf ./vsts-agent-linux-x64-2.194.0.tar.gz
sudo chmod -R 777 /myagent

# Unattended installation
sudo runuser -l ${AGENT_USERNAME} -c '/myagent/config.sh --unattended --url
${ADO_ORG_SERVICE_URL} --auth pat --token ${ADO_PAT} --pool ${AGENT_POOL}'

cd /myagent
#Configure as a service
sudo ./svc.sh install ${AGENT_USERNAME}
#Start service
sudo ./svc.sh start

Uso de Container Registry en la red virtual


Hay algunos requisitos previos para proteger un área de trabajo de Azure Machine
Learning en una red virtual. Para obtener más información, consulte Requisitos previos.
Container Registry es un servicio necesario cuando se usa un área de trabajo de Azure
Machine Learning para entrenar e implementar los modelos.

En este escenario de ejemplo, para asegurarse de que el agente autohospedado puede


acceder al registro de contenedor en la red virtual, usamos el emparejamiento de red
virtual y agregamos un vínculo de red virtual para vincular la zona DNS privada,
privatelink.azurecr.io, a la red virtual BASTIÓN. El siguiente fragmento de código de
Terraform muestra la implementación.

Terraform

# Azure Machine Learning Container Registry is for private access


# by the Azure Machine Learning workspace
resource "azurerm_container_registry" "acr" {
name = "my_acr"
resource_group_name = "my_resource_group"
location = "eastasia"
sku = "Premium"
admin_enabled = true
public_network_access_enabled = false
}

resource "azurerm_private_dns_zone" "acr_zone" {


name = "privatelink.azurecr.io"
resource_group_name = "my_resource_group"
}

resource "azurerm_private_dns_zone_virtual_network_link" "acr_zone_link" {


name = "link_acr"
resource_group_name = "my_resource_group"
private_dns_zone_name = azurerm_private_dns_zone.acr_zone.name
virtual_network_id = azurerm_virtual_network.amlvnet.id
}

resource "azurerm_private_endpoint" "acr_ep" {


name = "acr_pe"
resource_group_name = "my_resource_group"
location = "eastasia"
subnet_id = azurerm_subnet.aml_subnet.id

private_service_connection {
name = "acr_psc"
private_connection_resource_id = azurerm_container_registry.acr.id
subresource_names = ["registry"]
is_manual_connection = false
}

private_dns_zone_group {
name = "private-dns-zone-group-app-acr"
private_dns_zone_ids = [azurerm_private_dns_zone.acr_zone.id]
}
}

Este escenario de ejemplo también garantiza que el registro de contenedor tenga un rol
de colaborador para la identidad administrada asignada por el sistema del área de
trabajo de Azure Machine Learning.

Uso de un clúster de proceso o una instancia en la red virtual


Un clúster de proceso o una instancia de Azure Machine Learning en una red virtual
requiere un grupo de seguridad de red (NSG) con algunas reglas específicas para su
subred. Para obtener una lista de esas reglas, consulte Limitaciones.

Tenga en cuenta también que, para el clúster o la instancia de proceso, ahora es posible
quitar la dirección IP pública, lo que ayuda a proporcionar una mejor protección para los
recursos de proceso de la solución de MLOps. Para más información, consulte No hay
ninguna dirección IP pública para las instancias de proceso.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Gary Wang | Ingeniero principal de software

Otros colaboradores:

Gary Moore | Programador/escritor

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Terraform en la documentación de Azure
Ejemplo de Terraform de Azure Machine Learning
Acelerador de soluciones de Azure MLOps (v2)
Precios de Azure Virtual Network
Precios de Azure DevOps

Recursos relacionados
Marco de las operaciones de Machine Learning (MLOps) para escalar el ciclo de
vida de aprendizaje automático con Azure Machine Learning
Protección de un área de trabajo de Azure Machine Learning con redes virtuales
Agentes de Azure Pipelines
Modelo de madurez de operaciones
de Machine Learning
Azure Machine Learning

El propósito de este modelo de madurez es ayudar a aclarar las prácticas y los principios de
las operaciones de Machine Learning (MLOps). El modelo de madurez muestra la mejora
continua en la creación y el funcionamiento de un entorno de aplicación de Machine
Learning de nivel de producción. Puede usarlo como una métrica para establecer los
requisitos progresivos necesarios para medir la madurez de un entorno de producción de
aprendizaje automático y sus procesos asociados.

Modelo de madurez
El modelo de madurez de MLOps ayuda a aclarar las prácticas y los principios de las
operaciones de desarrollo (DevOps) necesarios para ejecutar un entorno de MLOps correcto.
Está diseñado para identificar brechas en el intento de implementación de un entorno de
este tipo por parte de una organización existente. También es una manera de mostrar cómo
aumentar la capacidad de MLOps en incrementos en lugar de abrumarle con los requisitos
de un entorno totalmente maduro. Úselo como una guía para:

Estimar el ámbito del trabajo para nuevas involucraciones.

Establecer criterios de éxito realistas.

Identificar las entregas que transferirá al término de la involucración.

Al igual que con la mayoría de los modelos de madurez, el modelo de madurez de MLOps
realiza la evaluación cualitativa de personas o cultura, procesos o estructuras y objetos o
tecnología. A medida que el nivel de madurez aumenta, crece la probabilidad de que
incidentes o errores den lugar a mejoras en la calidad de los procesos de desarrollo y
producción.

El modelo de madurez de MLOps abarca cinco niveles de funcionalidad técnica:

Nivel Descripción Aspectos destacados Technology

0 Sin MLOps Ciclo de vida del Compilaciones e


modelo de Machine implementaciones
Learning completo manuales
difícil de administrar Pruebas manuales
Los equipos son de modelo y
dispares y los aplicación
Nivel Descripción Aspectos destacados Technology

lanzamientos son Sin seguimiento


complicados centralizado del
La mayoría de los rendimiento del
sistemas existen como modelo
"cajas negras", pocos El entrenamiento del
comentarios durante y modelo es manual
después de la
implementación

1 DevOps sin Los lanzamientos son Compilaciones


MLOps menos complicados automatizadas
que sin MLOps, pero Pruebas
dependen del equipo automatizadas para
de datos para cada el código de
nuevo modelo aplicación
Los comentarios sobre
la ejecución de un
modelo en producción
siguen siendo limitados
Dificultad para trazar o
reproducir resultados

2 Aprendizaje El entorno de Entrenamiento de


automatizado entrenamiento es modelos
totalmente automatizado
administrado y Seguimiento
rastreable centralizado del
Modelo fácil de rendimiento del
reproducir entrenamiento del
Los lanzamientos son modelo
manuales, pero de baja Administración de
fricción modelos

3 Implementación Los lanzamientos son Pruebas A/B


de modelo de baja fricción y integradas del
automatizada automáticos rendimiento del
Rastreabilidad modelo para la
completa desde la implementación
implementación hasta Pruebas
los datos originales automatizadas para
Todo el entorno todo el código
administrado: Seguimiento
entrenamiento > centralizado del
prueba > producción rendimiento del
Nivel Descripción Aspectos destacados Technology

entrenamiento del
modelo

4 Operaciones Totalmente Entrenamiento y


automatizadas de automatizado por el pruebas de modelos
MLOps sistema y supervisado automatizados
completas con facilidad Métricas detalladas y
Los sistemas de centralizadas del
producción modelo
proporcionan implementado
información sobre
cómo mejorar y, en
algunos casos, mejorar
automáticamente con
nuevos modelos
Enfoque de un sistema
sin tiempo de
inactividad

Las tablas siguientes identifican las características detalladas de ese nivel de madurez del
proceso. El modelo continuará evolucionando. Esta versión se actualizó por última vez en
junio de 2020.

Nivel 0: sin MLOps


Personas Creación del Lanzamiento del Integración de
modelo modelo aplicaciones

Científicos de Datos Proceso Depende en


datos: en silos, recopilados manual gran medida de
no en manualmente El script de la experiencia
comunicaciones Es probable puntuación del científico de
regulares con el que el puede crearse datos para
equipo más proceso no manualmente realizar la
grande esté después de implementación
Ingenieros de administrado los Los
datos (si No se realiza experimentos; lanzamientos
existen): en un sin control de son manuales
silos, no en seguimiento versiones cada vez
comunicaciones previsible de Versión
regulares con el los controlada
equipo más experimentos por el
grande El resultado científico de
final puede datos o por el
Personas Creación del Lanzamiento del Integración de
modelo modelo aplicaciones

Ingenieros de ser un único ingeniero de


software: en archivo de datos
silos, reciben el modelo que solamente
modelo de se entrega
forma remota manualmente
de los demás con entradas
miembros del o salidas
equipo

Nivel 1: DevOps sin MLOps


Personas Creación del modelo Lanzamiento del Integración de
modelo aplicaciones

Científicos de La canalización Proceso Existen


datos: en silos, de datos recopila manual pruebas de
no en datos El script de integración
comunicaciones automáticamente puntuación básicas para el
regulares con el Proceso puede crearse modelo
equipo más administrado o manualmente Depende en
grande sin administrar después de los gran medida
Ingenieros de No se realiza un experimentos; de la
datos (si seguimiento probablemente experiencia
existen): en previsible de los con control de del científico
silos, no en la experimentos versiones de datos para
comunicación El resultado final Se entrega a implementar
normal con el puede ser un ingenieros de el modelo
equipo más único archivo de software Lanzamientos
grande modelo que se automatizados
Ingenieros de entrega El código de
software: en manualmente aplicación
silos, reciben el con entradas o tiene pruebas
modelo de salidas unitarias
forma remota
de los demás
miembros del
equipo

Nivel 2: entrenamiento automatizado


Personas Creación del modelo Lanzamiento del Integración de
modelo aplicaciones

Científicos de La canalización Lanzamiento Existen


datos: trabajan de datos recopila manual pruebas de
directamente datos El script de integración
con ingenieros automáticamente puntuación básicas para
de datos para Proceso tiene control el modelo
convertir el administrado de versiones Depende en
código de Resultados del con pruebas gran medida
experimentación experimento con Lanzamiento de la
en scripts o seguimiento administrado experiencia
trabajos Tanto el código por el del
repetibles de equipo de científico de
Ingenieros de entrenamiento ingeniería de datos para
datos: trabajan como los software implementar
con científicos modelos el modelo
de datos resultantes El código de
Ingenieros de tienen control de aplicación
software: en versiones tiene
silos, reciben el pruebas
modelo de unitarias
forma remota
de los demás
miembros del
equipo

Nivel 3: implementación del modelo


automatizada
Personas Creación del modelo Lanzamiento del Integración de
modelo aplicaciones

Científicos de La canalización Lanzamiento Pruebas


datos: trabajan de datos recopila automático unitarias y
directamente datos El script de de
con ingenieros automáticamente puntuación integración
de datos para Proceso tiene control para cada
convertir el administrado de versiones versión del
código de Resultados del con pruebas modelo
experimentación experimento con Lanzamiento Menos
en scripts o seguimiento administrado dependencia
trabajos Tanto el código por la de la
repetibles de canalización experiencia
Ingenieros de entrenamiento de entrega del científico
datos: trabajan como los de datos
Personas Creación del modelo Lanzamiento del Integración de
modelo aplicaciones

con científicos modelos continua para


de datos e resultantes (CI/CD) implementar
ingenieros de tienen control de el modelo
software para versiones El código de
administrar aplicación
entradas o tiene
salidas pruebas
Ingenieros de unitarias o
software: de
trabajan con integración
ingenieros de
datos para
automatizar la
integración del
modelo en el
código de
aplicación

Nivel 4: nuevo entrenamiento completo de


MLOps automatizado
Personas Creación del modelo Lanzamiento del Integración de
modelo aplicaciones

Científicos de La canalización Lanzamiento Pruebas


datos: trabajan de datos recopila automático unitarias y
directamente datos El script de de
con ingenieros automáticamente puntuación integración
de datos para Nuevo tiene control para cada
convertir el entrenamiento de versiones lanzamiento
código de desencadenado con pruebas del modelo
experimentación automáticamente Lanzamiento Menos
en scripts o en función de las administrado dependencia
trabajos métricas de por la de la
repetibles; producción integración experiencia
trabajan con Proceso continua y la del científico
ingenieros de administrado canalización de datos
software para Resultados del de CI/CD para
identificar experimento con implementar
marcadores seguimiento el modelo
para ingenieros Tanto el código El código de
de datos de aplicación
entrenamiento tiene
Personas Creación del modelo Lanzamiento del Integración de
modelo aplicaciones

Ingenieros de como los pruebas


datos: trabajan modelos unitarias o
con científicos resultantes de
de datos e tienen control de integración
ingenieros de versiones
software para
administrar
entradas o
salidas
Ingenieros de
software:
trabajan con
ingenieros de
datos para
automatizar la
integración del
modelo en el
código de la
aplicación
Implementación
de la
recopilación de
métricas
posterior a la
implementación

Pasos siguientes
Ruta de aprendizaje: Introducción a las operaciones de aprendizaje automático (MLOps)
Módulo de entrenamiento: Inicio del ciclo de vida de aprendizaje automático con
MLOps
MLOps: Administración, implementación y supervisión de modelos con
Azure Machine Learning.
¿Qué son las canalizaciones de Azure Machine Learning?

Recursos relacionados
Marco de las operaciones de Machine Learning (MLOps) para escalar el ciclo de vida de
aprendizaje automático con Azure Machine Learning
Orquestación de MLOps mediante Azure Databricks
Protección de soluciones de MLOps con seguridad de red de Azure
MLOps para modelos de Python con Azure Machine Learning
Marco de las operaciones de
Machine Learning (MLOps) para
escalar el ciclo de vida de
aprendizaje automático con Azure
Machine Learning
Azure Data Factory Azure Machine Learning

Este proyecto cliente ayudó a una empresa alimentaria Fortune 500 a mejorar su previsión
de la demanda. La empresa envía productos directamente a varios puntos de venta al por
menor. La mejora les ayudó a optimizar las existencias de sus productos en diferentes
almacenes de varias regiones de EE. UU. Para lograrlo, el equipo de ingeniería de software
comercial (CSE) de Microsoft trabajó con los científicos de datos del cliente en un estudio
piloto para desarrollar modelos de Machine Learning personalizados para las regiones
seleccionadas. Los modelos tienen en cuenta:

Datos demográficos de los compradores


Historial y pronóstico meteorológicos
Envíos pasados
Devoluciones de productos
Eventos especiales

El objetivo de optimizar las existencias representaba un componente importante del


proyecto y el cliente logró un aumento de ventas importante en las primeras pruebas de
campo. Además, el equipo experimentó una reducción del 40 % en el error de porcentaje
absoluto medio (MAPE) de la previsión al compararlo con un modelo de base de referencia
de la media histórica.

Una parte importante del proyecto era descubrir cómo escalar verticalmente el flujo de
trabajo de ciencia de datos del estudio piloto a un nivel de producción. Este flujo de trabajo
de nivel de producción requería al equipo de CSE:

Desarrollar modelos para muchas regiones.


Actualizar y supervisar constantemente el rendimiento de los modelos.
Facilitar la colaboración entre los equipos de datos y de ingeniería.

El flujo de trabajo de ciencia de datos típico de hoy en día se aproxima más a un entorno
de laboratorio único que a un flujo de trabajo de producción. Un entorno para los
científicos de datos debe ser adecuado para que puedan:
Preparar los datos.
Experimentar con diferentes modelos.
Ajustar los hiperparámetros.
Crear un ciclo de compilación, prueba, evaluación y perfeccionamiento.

La mayoría de las herramientas que se usan para estas tareas tienen fines específicos y no
son adecuadas para la automatización. En una operación de aprendizaje automático de
nivel de producción, se debe tener más en cuenta la administración del ciclo de vida de las
aplicaciones y DevOps.

El equipo de CSE ayudó al cliente a escalar verticalmente la operación a los niveles de


producción. Implementaron varios aspectos de las funcionalidades de integración continua
(CI)/entrega continua (CD) y abordaron problemas como la observabilidad y la integración
con las funcionalidades de Azure. Durante la implementación, el equipo descubrió brechas
en las instrucciones de MLOps existentes. Esas brechas tuvieron que repararse para que
MLOps se entendiera mejor y se aplicara a gran escala.

Comprender las prácticas de MLOps ayuda a las organizaciones a garantizar que los
modelos de Machine Learning generados por el sistema son modelos con calidad de
producción que mejoran el rendimiento empresarial. Al implementar MLOps, la
organización ya no tiene que centrarse tanto tiempo en los mínimos detalles relacionados
con la infraestructura y el trabajo de ingeniería necesarios para desarrollar y ejecutar
modelos de Machine Learning para las operaciones de nivel de producción. La
implementación de MLOps también ayuda a las comunidades de ciencia de datos e
ingeniería de software a aprender a trabajar juntos para ofrecer un sistema listo para
producción.

El equipo de CSE usaba este proyecto para abordar las necesidades de la comunidad de
aprendizaje automático mediante la gestión de problemas como el desarrollo de un
modelo de madurez de MLOps. Estos esfuerzos estaban dirigidos a mejorar la adopción de
MLOps al comprender los desafíos típicos de los actores clave en el proceso de MLOps.

Escenarios de involucración del usuario y


técnicos
En el escenario de involucración del usuario se describen los desafíos reales que el equipo
de CSE debía resolver. El escenario técnico define los requisitos para crear un ciclo de vida
de MLOps tan confiable como el reconocido ciclo de vida de DevOps.

Escenario de involucración
El cliente entrega los productos directamente a tiendas menoristas siguiendo una
programación regular. Cada tienda minorista varía en los patrones de uso de los productos,
de modo que el inventario debe variar en cada entrega semanal. Maximizar las ventas y
minimizar las devoluciones de productos y las oportunidades de venta perdidas son los
objetivos de las metodologías de previsión de la demanda que el cliente emplea. Este
proyecto se centra en el uso del aprendizaje automático para mejorar las previsiones.

El equipo de CSE dividió el proyecto en dos fases. La fase 1 se centró en el desarrollo de


modelos de Machine Learning para admitir un estudio piloto de campo sobre la eficacia de
la previsión del aprendizaje automático en una región de ventas seleccionada. El éxito de la
fase 1 llevó a la fase 2, en la que el equipo escaló verticalmente el estudio piloto inicial a
partir de un grupo mínimo de modelos que admitieron una sola región geográfica a un
conjunto de modelos de nivel de producción sostenible para todas las regiones de ventas
del cliente. Una de las principales consideraciones de la solución escalada verticalmente era
la necesidad de acomodar el gran número de regiones geográficas y sus tiendas minoristas
locales. El equipo dedicó los modelos de Machine Learning a tiendas minoristas grandes y
pequeñas de cada región.

En la fase 1 del estudio piloto se determinó que un modelo dedicado a las tiendas
minoristas de una región podía usar el historial de ventas local, los datos demográficos
locales, el tiempo y los eventos especiales para optimizar la previsión de los comercios de la
región. Cuatro modelos de previsión de aprendizaje automático de conjunto sirvieron a las
tiendas de una sola región. Los modelos procesaron los datos en lotes semanales. Además,
el equipo desarrolló dos modelos de base de referencia con datos históricos para la
comparación.

Para la primera versión de la solución de fase 2 escalada verticalmente, el equipo de CSE


seleccionó 14 regiones geográficas para participar, que incluyeron grandes y pequeños
comercios. Usaron más de 50 modelos de previsión de aprendizaje automático. El equipo
esperaba un mayor crecimiento del sistema y un perfeccionamiento continuo de los
modelos de Machine Learning. Pronto quedó claro que esta solución de aprendizaje
automático a mayor escala solo podía ser sostenible si se basaba en los principios de los
procedimientos recomendados de DevOps para el entorno de aprendizaje automático.

Entorno Región del Formato Modelos Subdivisión Descripción


mercado del modelo del modelo

Entorno de Cada Grandes Dos Productos Tanto la


desarrollo región o almacenes modelos de baja baja como
mercado (supermercados, de rotación la alta
geográfico grandes conjunto rotación
(por superficies, etc.) tienen un
ejemplo, el conjunto
formado
Entorno Región del Formato Modelos Subdivisión Descripción
mercado del modelo del modelo

norte de por un
Texas) modelo de
regresión
lineal
LASSO
(Least
Absolute
Shrinkage
and
Selection
Operator) y
una red
neuronal
con
inserciones
de
categorías.

Productos Tanto la
de alta baja como
rotación la alta
rotación
tienen un
conjunto
formado
por un
modelo de
regresión
lineal
LASSO y
una red
neuronal
con
inserciones
de
categorías.

Un N/D Media
modelo histórica
de
conjunto

Comercios Dos Productos Tanto la


pequeños modelos de baja baja como
(farmacias, de rotación la alta
conjunto rotación
ultramarinos, tienen un
Entorno Región del Formato Modelos Subdivisión Descripción
etc.) conjunto
mercado del modelo del modelo
formado
por un
modelo de
regresión
lineal
LASSO y
una red
neuronal
con
inserciones
de
categorías.

Productos Tanto la
de alta baja como
rotación la alta
rotación
tienen un
conjunto
formado
por un
modelo de
regresión
lineal
LASSO y
una red
neuronal
con
inserciones
de
categorías.

Un N/D Media
modelo histórica
de
conjunto

Igual que
el caso
anterior
para las
otras
13 regiones
geográficas
Entorno Región del Formato Modelos Subdivisión Descripción
mercado del modelo del modelo

Igual que
el anterior
para el
entorno de
producción

El proceso de MLOps proporcionó un marco para el sistema de escalado vertical que dirigió
todo el ciclo de vida de los modelos de Machine Learning. El marco incluye desarrollo,
pruebas, implementación, operación y supervisión. Satisface las necesidades de un proceso
clásico de CI/CD. Sin embargo, debido a su inmadurez relativa en comparación con
DevOps, resultó evidente que había brechas en la guía de MLOps existente. El equipo del
proyecto trabajó para reparar algunas de esas brechas. Querían proporcionar un modelo de
proceso funcional que garantizara la viabilidad de la solución de aprendizaje automático
escalada.

El proceso de MLOps que se desarrolló a partir de este proyecto realizó un importante paso
real para trasladar MLOps a un nivel mayor de madurez y viabilidad. El nuevo proceso es
aplicable directamente a otros proyectos de aprendizaje automático. El equipo de CSE usó
lo que aprendió para crear un borrador de un modelo de madurez de MLOps que
cualquiera pueda aplicar a otros proyectos de aprendizaje automático.

Escenario técnico
MLOps, también conocido como DevOps para el aprendizaje automático, es un término
general que abarca filosofías, procedimiento y tecnologías relacionadas con la
implementación de ciclos de vida de aprendizaje automático en un entorno de producción.
Sigue siendo un concepto relativamente nuevo. Ha habido muchos intentos de definir
MLOps y muchas personas han cuestionado si MLOps puede subsumir todo, desde cómo
los científicos de datos preparan los datos a la manera en que, en última instancia,
entregan, supervisan y evalúan los resultados del aprendizaje automático. Mientras que
DevOps ha tenido años para desarrollar un conjunto de prácticas fundamentales, MLOps es
un enfoque muy nuevo. A medida que evoluciona, detectamos los desafíos de reunir dos
disciplinas que suelen funcionar con diferentes conjuntos de aptitudes y prioridades:
ingeniería de software/operaciones y ciencia de datos.

La implementación de MLOps en entornos de producción reales presenta desafíos únicos


que deben superarse. Los equipos pueden usar Azure para admitir patrones de MLOps.
Azure también puede proporcionar a los clientes servicios de orquestación y administración
de recursos para una administración eficaz del ciclo de vida de aprendizaje automático. Los
servicios de Azure son la base de la solución de MLOps que se describe en este artículo.
Requisitos de los modelos de Machine Learning
Gran parte del trabajo realizado durante la fase 1 del estudio de campo piloto implicaba la
creación de modelos de Machine Learning que el equipo de CSE aplicó a tiendas minoristas
grandes y pequeñas de una sola región. Los requisitos destacados del modelo incluían:

Uso de Azure Machine Learning Service.

Modelos experimentales iniciales desarrollados en Jupyter Notebook e


implementados en Python.

7 Nota

Los equipos usaban el mismo enfoque de aprendizaje automático para tiendas


grandes y pequeñas, pero los datos de entrenamiento y puntuación dependían
del tamaño de la tienda.

Preparación de los datos para el consumo del modelo.

Procesamiento de datos por lotes en lugar de en tiempo real.

Entrenamiento del modelo cada vez que cambia el código o los datos, o el modelo
queda obsoleto.

Visualización del rendimiento del modelo en paneles de Power BI.

Rendimiento del modelo en la puntuación considerada importante cuando MAPE


<=45 % en comparación con un modelo de base de referencia de la media histórica.

Requisitos de MLOps
El equipo tenía que cumplir varios requisitos clave para escalar verticalmente la solución
desde la fase 1 del estudio piloto, en la que solo se desarrollaron algunos modelos para
una sola región de ventas. En la fase 2 se implementaron modelos de aprendizaje
automático personalizados para varias regiones. La implementación incluyó:

Procesamiento por lotes semanal para tiendas grandes y pequeñas en cada región
para volver a entrenar los modelos con nuevos conjuntos de datos.

Perfeccionamiento continuo de los modelos de Machine Learning.

Integración del proceso de desarrollo, pruebas, paquetes e implementación común


para CI/CD en un entorno de procesamiento similar a DevOps para MLOps.
7 Nota

Esto representa un cambio en la forma en que los científicos de datos y los


ingenieros de datos solían trabajar en el pasado.

Un modelo único que representaba cada región para tiendas grandes y pequeñas
basado en el historial de las tiendas, los datos demográficos y otras variables clave. El
modelo tenía que procesar todo el conjunto de datos para minimizar el riesgo de
error de procesamiento.

La capacidad de escalado vertical inicial para admitir 14 regiones de ventas con planes
de escalado vertical adicional.

Planes de modelos adicionales para la previsión a largo plazo para regiones y otros
clústeres de tiendas.

Solución de modelo de Machine Learning


El ciclo de vida de aprendizaje automático, también conocido como ciclo de vida de ciencia
de datos, se ajusta aproximadamente al siguiente flujo de proceso general:

Aquí, la implementación del modelo puede representar cualquier uso operativo del modelo
de Machine Learning validado. En comparación con DevOps, MLOps presenta el desafío
adicional de cómo integrar este ciclo de vida de aprendizaje automático en el proceso
típico de CI/CD.

Este ciclo de vida de ciencia de datos no sigue el típico ciclo de vida de desarrollo de
software. Incluye el uso de Azure Machine Learning para entrenar y puntuar los modelos,
por lo que estos pasos tenían que incluirse en la automatización de CI/CD.

El procesamiento por lotes de los datos es la base de la arquitectura. Dos canalizaciones de


Azure Machine Learning son fundamentales para el proceso, una para el entrenamiento y
otra para la puntuación. En este diagrama se muestra la metodología de ciencia de datos
utilizada para la fase inicial del proyecto de cliente:
El equipo probó varios algoritmos. En última instancia, eligieron un diseño de conjunto de
un modelo de regresión lineal LASSO y una red neuronal con inserciones de categorías. El
equipo usó el mismo modelo, definido por el nivel de producto que el cliente podía
almacenar en el sitio, para tiendas grandes y pequeñas. El equipo subdividió aún más el
modelo en productos de movimiento de rotación rápida y lenta.

Los científicos de datos entrenan modelos de Machine Learning cuando el equipo publica
código nuevo y cuando hay nuevos datos disponibles. El entrenamiento suele realiza con
frecuencia semanal. Por lo tanto, cada ejecución de procesamiento implica una gran
cantidad de datos. Dado que el equipo recopila datos de muchos orígenes en formatos
diferentes, requiere acondicionamiento para configurarlos en un formato consumible de
modo que los científicos de datos puedan procesarlos. El acondicionamiento de los datos
requiere un esfuerzo manual considerable y el equipo de CSE lo identificó como candidato
principal para la automatización.

Como ya se ha mencionado, los científicos de datos desarrollaron y aplicaron los modelos


experimentales de Azure Machine Learning a una sola región de ventas en la fase 1 del
estudio de campo piloto para evaluar la utilidad de este enfoque de previsión. El equipo de
CSE consideró que el aumento de ventas observado en las tiendas del estudio piloto era
significativo. Este éxito justificó la aplicación de la solución a niveles de producción
completos en la fase 2, empezando por 14 regiones geográficas y miles de tiendas.
Después, el equipo podría usar el mismo patrón para agregar regiones adicionales.

El modelo piloto sirvió de base para la solución escalada vertical, pero el equipo de CSE
sabía que el modelo necesitaba refinamiento continuo para mejorar su rendimiento.

Solución de MLOps
A medida que los conceptos de MLOps maduran, los equipos suelen detectar desafíos para
reunir las materias de ciencia de datos y DevOps. La razón es que los principales
participantes de las disciplinas, ingenieros de software y científicos de datos, funcionan con
diferentes conjuntos de aptitudes y prioridades.
Pero hay similitudes de partida. MLOps, al igual que DevOps, es un proceso de desarrollo
implementado por una cadena de herramientas. La cadena de herramientas de MLOps
incluye elementos tales como:

Control de versiones
Análisis de código
Automatización de compilaciones
Integración continua
Marcos de pruebas y automatización
Directivas de cumplimiento integradas en canalizaciones de CI/CD
Automatización de la implementación
Supervisión
Recuperación ante desastres y alta disponibilidad
Administración de paquetes y contenedores

Como se indicó anteriormente, la solución aprovecha las ventajas de la guía de DevOps


existente, pero se amplía para crear una implementación de MLOps más madura que
satisfaga las necesidades del cliente y de la comunidad de ciencia de datos. MLOps se basa
en la guía de DevOps con estos requisitos adicionales:

El control de versiones de datos o modelos no es los mismo que el control de


versiones de código: debe haber control de versiones de los conjuntos de datos a
medida que cambien los datos de origen y esquema.
Requisitos de pista de auditoría digital: realice un seguimiento de todos los cambios
al trabajar con código y datos de cliente.
Generalización: los modelos son diferentes del código para su reutilización, ya que el
científico de datos debe ajustar los modelos en función de los datos de entrada o el
escenario. Para reutilizar un modelo para un escenario nuevo, puede que deba
ajustarlo, transferirlo o aprender de él. Necesita la canalización de entrenamiento.
Modelos obsoletos: los modelos tienden a deteriorarse con el tiempo y se necesita la
capacidad de volver a entrenarlos a petición para garantizar que siguen siendo
pertinentes en producción.

Desafíos de MLOps

MLOps inmaduro estándar


El patrón estándar de MLOps todavía está en evolución. Una solución normalmente se crea
desde cero y se diseña para adaptarse a las necesidades de un cliente o usuario
determinado. El equipo de CSE reconoció esta brecha y buscó usar los procedimientos
recomendados de DevOps en este proyecto. Aumentó el proceso DevOps para ajustarse a
los requisitos adicionales de MLOps. El proceso desarrollado por el equipo es un ejemplo
viable del aspecto que debería tener un patrón de MLOps estándar.

Diferencias en los conjuntos de aptitudes


Los ingenieros de software y los científicos de datos aportan conjuntos de aptitudes únicos
al equipo. Estos conjuntos de aptitudes distintos pueden dificultar la búsqueda de una
solución que se ajuste a las necesidades de todos los usuarios. Es importante crear un flujo
de trabajo fácil de entender para la entrega de modelos de experimentación a producción.
Los miembros del equipo deben compartir una explicación sobre cómo integrar los
cambios en el sistema sin interrumpir el proceso de MLOps.

Administración de varios modelos


A menudo se necesitan varios modelos para resolver escenarios difíciles de aprendizaje
automático. Uno de los desafíos de MLOps es administrar estos modelos, que incluye lo
siguiente:

Tener un esquema de control de versiones coherente.


Evaluar y supervisar continuamente todos los modelos.

También se necesita un linaje de código rastreable y de datos para diagnosticar los


problemas del modelo y crear modelos reproducibles. Los paneles personalizados pueden
explicar cómo funcionan los modelos implementados e indicar cuándo se debe intervenir.
El equipo creó estos paneles para este proyecto.

Necesidad de acondicionamiento de datos


Los datos usados con estos modelos provienen de muchos orígenes públicos y privados.
Dado que los datos originales están desorganizados, el modelo de Machine Learning no
puede consumir los datos sin procesar. Los científicos de datos deben acondicionar los
datos a un formato estándar para el consumo del modelo de Machine Learning.

Gran parte de la prueba de campo piloto se centró en el acondicionamiento de los datos


sin procesar para que el modelo de Machine Learning pudiera procesarlos. En un sistema
de MLOps, el equipo debe automatizar este proceso y realizar un seguimiento de las
salidas.

Modelo de madurez de MLOps


El propósito del modelo de madurez de MLOps es aclarar los principios y las prácticas, así
como identificar las brechas en la implementación de MLOps. También es una manera de
mostrar a un cliente cómo desarrollar de manera incremental su capacidad de MLOps en
lugar de intentarlo todo de una vez. El cliente debe usarlo como guía para:

Estimar el ámbito del trabajo del proyecto.


Establecer criterios de éxito.
Identificar los resultados.

El modelo de madurez de MLOps abarca cinco niveles de funcionalidad técnica:

Nivel Descripción

0 Sin operaciones

1 DevOps sin MLOps

2 Entrenamiento automatizado

3 Implementación del modelo automatizada

4 Operaciones automatizadas (MLOps completo)

Para la versión actual del modelo de madurez de MLOps, consulte el artículo Modelo de
madurez de MLOps.

Definición del proceso de MLOps


MLOps incluye todas las actividades desde la adquisición de los datos sin procesar hasta la
entrega de la salida del modelo, también conocida como puntuación:

Acondicionamiento de datos
Entrenamiento del modelo
Pruebas y evaluación de modelos
Definición y canalización de compilación
Canalización de versión
Implementación
Puntuaciones

Proceso de aprendizaje automático básico


El proceso básico de aprendizaje automático se parece al de desarrollo de software
tradicional, pero existen diferencias importantes. En este diagrama se ilustran los pasos
principales del proceso de aprendizaje automático:

La fase del experimento es exclusiva del ciclo de vida de la ciencia de datos, que refleja
cómo los científicos han realizado tradicionalmente su trabajo. Difiere de la forma en que
los desarrolladores de código realizan el suyo. En el siguiente diagrama se muestra este
ciclo de vida más detalladamente.

La integración de este proceso de desarrollo de datos en MLOps supone un reto. Aquí se


muestra el patrón que el equipo usó para integrar el proceso en un formulario compatible
con MLOps:
El rol de MLOps es crear un proceso coordinado que pueda admitir eficazmente los
entornos de CI/CD a gran escala comunes en los sistemas de nivel de producción.
Conceptualmente, el modelo de MLOps debe incluir todos los requisitos del proceso desde
la experimentación hasta la puntuación.

El equipo de CSE refinó el proceso de MLOps para adaptarlo a las necesidades específicas
del cliente. Lo más notable fue la necesidad de procesamiento por lotes en lugar del
procesamiento en tiempo real. A medida que el equipo desarrolló el sistema de escalado
vertical, identificó y resolvió algunas deficiencias. Las más importantes derivaron en el
desarrollo de un puente entre Azure Data Factory y Azure Machine Learning que el equipo
implementó como un conector integrado en Azure Data Factory. Crearon este conjunto de
componentes para facilitar el desencadenamiento y la supervisión de estado necesarios
para que la automatización del proceso funcionara.

Otro cambio fundamental fue que el científico de datos necesitaba la capacidad de


exportar código experimental desde cuadernos de Jupyter Notebook al proceso de
implementación de MLOps en lugar de desencadenar directamente el entrenamiento y la
puntuación.

Este es el concepto de modelo de proceso de MLOps final:


) Importante

La puntuación es el paso final. El proceso ejecuta el modelo de aprendizaje automático


para realizar predicciones. Esto soluciona el requisito de caso de uso empresarial
básico para la previsión de la demanda. El equipo evalúa la calidad de las predicciones
mediante MAPE, que es una medida de la precisión de predicción de los métodos de
previsión estadística y una función de pérdida para los problemas de regresión en el
aprendizaje automático. En este proyecto, el equipo consideró importante un MAPE de
<=45 %.

Flujo del proceso de MLOps


En el diagrama siguiente se describe cómo aplicar flujos de trabajo de desarrollo y
lanzamiento de CI/CD al ciclo de vida de aprendizaje automático:
Cuando se crea una solicitud de incorporación de cambios desde una rama de
características, la canalización ejecuta pruebas de validación de código para
comprobar la calidad del código con pruebas unitarias y de calidad del código. Para
validar la calidad ascendente, la canalización también ejecuta pruebas de validación
de modelo básicas para validar los pasos de entrenamiento y puntuación de un
extremo a otro con un conjunto de muestras de datos ficticios.
Si la solicitud de incorporación de cambios se combina en la rama principal, la
canalización de CI ejecutará las mismas pruebas de validación de código y las pruebas
de validación de modelo básicas con más tiempo. A continuación, la canalización
empaquetará los artefactos, que incluyen el código y los archivos binarios, para
ejecutarlos en el entorno de aprendizaje automático.
Una vez que los artefactos estén disponibles, se desencadenará una canalización de
CD de validación de modelos. Ejecuta la validación de un extremo a otro en el entorno
de aprendizaje automático de desarrollo. Se publicará un mecanismo de puntuación.
En un escenario de puntuación por lotes, se publica una canalización de puntuación
en el entorno de aprendizaje automático y se desencadena para generar resultados. Si
quiere usar un escenario de puntuación en tiempo real, puede publicar una aplicación
web o implementar un contenedor.
Una vez que se crea un hito y se combina en la rama de versión, se desencadenan la
misma canalización de CI y la canalización de CD de validación de modelos. Esta vez,
se ejecutan en el código de la rama de versión.

Puede considerar el flujo de datos de proceso de MLOps mostrado anteriormente como un


marco de arquetipos para los proyectos que utilizan opciones de arquitectura similares.

Pruebas de validación de código


Las pruebas de validación de código para el aprendizaje automático se centran en la
validación de la calidad del código base. Es el mismo concepto que el de cualquier
proyecto de ingeniería con pruebas de calidad del código (linting), pruebas unitarias y
medición de la cobertura de código.

Pruebas de validación de modelos básicos


La validación del modelo normalmente hace referencia a la validación de los pasos de todo
el proceso de un extremo a otro necesarios para generar un modelo de Machine Learning
válido. Incluye pasos como:

Validación de datos: garantiza que los datos de entrada sean válidos.


Validación del entrenamiento: garantiza que el modelo se pueda entrenar
correctamente.
Validación de la puntuación: garantiza que el equipo pueda utilizar correctamente el
modelo entrenado para la puntuación con los datos de entrada.

La ejecución de este conjunto completo de pasos en el entorno de aprendizaje automático


es costosa y requiere mucho tiempo. Consecuentemente, el equipo realizó las pruebas de
validación del modelo básicas en una máquina de desarrollo local. Ejecutó los pasos
anteriores y usó lo siguiente:

Conjunto de datos de prueba local: un conjunto de datos pequeño, a menudo


ofuscado, protegido en el repositorio y consumido como origen de datos de entrada.
Marca local: marca o argumento en el código del modelo que indica que el código
pretende que el conjunto de datos se ejecute localmente. La marca permite que el
código omita cualquier llamada al entorno de aprendizaje automático.

El objetivo de estas pruebas de validación no es evaluar el rendimiento del modelo


entrenado. Mejor dicho, es comprobar que el código del proceso global es de buena
calidad. Garantiza la calidad del código que se inserta en dirección ascendente mediante
incorporación de pruebas de validación de modelos en la compilación de PR y CI. También
permite a los ingenieros y científicos de datos colocar puntos de interrupción en el código
con fines de depuración.

Canalización de CD de validación de modelos


El objetivo de la canalización de validación de modelos es validar los pasos de
entrenamiento y puntuación de los modelos de un extremo a otro en el entorno de
aprendizaje automático con datos reales. Cualquier modelo entrenado que se produzca se
agregará al registro de modelos y se etiquetará, a la espera de su promoción una vez
completada la validación. En la predicción por lotes, la promoción puede consistir en
publicar una canalización de puntuación que use esta versión del modelo. Para la
puntuación en tiempo real, el modelo se puede etiquetar para indicar que se ha
promocionado.

Canalización de CD de puntuación
La canalización de CD de puntuación es aplicable para el escenario de inferencia de lotes,
donde el mismo orquestador de modelos que se usa para la validación del modelo
desencadena la canalización de puntuación publicada.

Comparación de entornos de desarrollo y producción


Es recomendable separar los entornos de desarrollo (dev) y de producción (prod). La
separación permite que el sistema desencadene la canalización de CD de validación de
modelos y la canalización de CD de puntuación con programas distintos. En el flujo de
MLOps descrito, las canalizaciones que tienen como destino la rama principal se ejecutan
en el entorno de desarrollo y la canalización dirigida a la rama de versión se ejecuta en el
entorno de producción.

Cambios de código frente a cambios de datos


En las secciones anteriores se aborda principalmente cómo controlar los cambios de código
desde el desarrollo hasta el lanzamiento. Sin embargo, los cambios de datos deben seguir
el mismo rigor que los cambios de código para proporcionar la misma calidad en la
validación y coherencia en la producción. Con un desencadenador de cambio de datos o un
desencadenador de temporizador, el sistema puede desencadenar la canalización de CD de
validación de modelos y la canalización de CD de puntuación desde el orquestador de
modelos para ejecutar el mismo proceso que al cambiar el código en el entorno de
producción de la rama de versión.

Personas y roles de MLOps


Un requisito clave para cualquier proceso de MLOps es que satisfaga las necesidades de
todos los usuarios del proceso. Para fines de diseño, considere estos usuarios como roles
individuales. Para este proyecto, el equipo identificó los siguientes roles:

Científico de datos: crea el modelo de Machine Learning y sus algoritmos.


Ingeniero
Ingeniero de datos: controla el acondicionamiento de datos.
Ingeniero de software: controla la integración del modelo en el paquete de
recursos y el flujo de trabajo de CI/CD.
Operaciones o TI: supervisa las operaciones del sistema.
Partes interesadas de la empresa: se preocupan de las predicciones realizadas por el
modelo de Machine Learning y de la ayuda que proporcionan a la empresa.
Usuario final de los datos: consume la salida del modelo de forma útil para la toma
de decisiones empresariales.

El equipo tenía que abordar tres conclusiones clave de los estudios de roles y funciones:

Los científicos e ingenieros de datos discrepan en el enfoque y las aptitudes de su


trabajo. Facilitar que el científico y el ingeniero de datos trabajen en colaboración es
una consideración importante que tener en cuenta para el diseño del flujo del proceso
de MLOps. Requiere nuevas adquisiciones de aptitudes por parte de todos los
miembros del equipo.
Existe una necesidad de unificar todos los roles principales sin apartar a nadie. Una
manera de hacerlo es la siguiente:
Asegúrese de entender el modelo conceptual de MLOps.
Llegue a un acuerdo sobre los miembros del equipo que trabajarán juntos.
Establezca las instrucciones de trabajo para lograr objetivos comunes.
Si la parte interesada empresarial y el usuario final de los datos necesitan una manera
de interactuar con la salida de datos de los modelos, una interfaz de usuario fácil de
usar es la solución estándar.

Otros equipos experimentarán problemas similares en otros proyectos de aprendizaje


automático a medida que se escalen verticalmente para su uso en producción.

Arquitectura de la solución de MLOps

Arquitectura lógica

Los datos proceden de numerosos orígenes en distintos formatos, por lo que están
acondicionados para su inserción en el lago de datos. El acondicionamiento se realiza
mediante microservicios que funcionan como Azure Functions. Los clientes personalizan los
microservicios para que se ajusten a los orígenes de datos y los transforman a un formato
CSV normalizado que las canalizaciones de entrenamiento y puntuación consumen.

Arquitectura del sistema

Arquitectura de procesamiento por lotes


El equipo concibió el diseño arquitectónico para admitir un esquema de procesamiento de
datos por lotes. Hay alternativas, pero lo que se use debe admitir los procesos de MLOps. El
uso completo de los servicios de Azure disponibles era un requisito de diseño. En el
siguiente diagrama se muestra la arquitectura:
Información general de la solución
Azure Data Factory hace lo siguiente:

Desencadena una instancia de Azure Functions para iniciar la ingesta de datos y una
ejecución de la canalización de Azure Machine Learning.
Inicia una instancia de Durable Functions para sondear la canalización de Azure
Machine Learning para su finalización.

Los paneles personalizados de Power BI muestran los resultados. Otros paneles de Azure,
conectados a SQL Azure, Azure Monitor y Application Insights a través del SDK de Python
para OpenCensus, realizan un seguimiento de los recursos de Azure. Estos paneles
proporcionan información sobre el estado del sistema de aprendizaje automático. También
proporcionan los datos que el cliente usa para la previsión de pedidos de productos.

Orquestación de modelos
La orquestación de modelos sigue estos pasos:
1. Cuando se envía una solicitud de incorporación de cambios, DevOps desencadena
una canalización de validación de código.
2. La canalización ejecuta pruebas unitarias, de calidad del código y de validación del
modelo.
3. Cuando se combinan en la rama principal, se ejecutan las mismas pruebas de
validación del código y DevOps empaqueta los artefactos.
4. La recopilación de artefactos por parte de DevOps desencadena Azure Machine
Learning para lo siguiente:
a. Validación de datos.
b. Validación del entrenamiento.
c. Validación de la puntuación.
5. Una vez completada la validación, se ejecuta la canalización de puntuación final.
6. El cambio de datos y el envío de una nueva solicitud de incorporación de cambios
desencadena de nuevo la canalización de validación, seguida de la canalización de
puntuación final.

Habilitación de la experimentación
Como se mencionó, el ciclo de vida de aprendizaje automático de la ciencia de datos
tradicional no es compatible con el proceso de MLOps sin modificaciones. Utiliza diferentes
tipos de herramientas manuales y experimentación, validación, empaquetado y entrega de
modelos que no se pueden escalar fácilmente para un proceso de CI/CD efectivo. MLOps
exige un alto nivel de automatización de procesos. Tanto si se desarrolla un nuevo modelo
de Machine Learning como si se modifica uno anterior, es necesario automatizar el ciclo de
vida del modelo de Machine Learning. En el proyecto de la fase 2, el equipo usó Azure
DevOps para orquestar y volver a publicar las canalizaciones de Azure Machine Learning
para tareas de entrenamiento. La rama principal de larga duración hace pruebas básicas de
los modelos y versiones estables insertadas mediante la rama de versión de larga duración.

El control de código fuente se convierte en una parte importante de este proceso. Git es el
sistema de control de versiones que se usa para realizar el seguimiento del código del
modelo y el cuaderno. También admite la automatización de procesos. El flujo de trabajo
básico implementado para el control de código fuente aplica los principios siguientes:

Use el control de versiones formal para el código y los conjuntos de datos.


Use una rama para el desarrollo de código nuevo hasta que el código se desarrolle y
valide por completo.
Una vez validado el código nuevo, se puede combinar en la rama principal.
Para una versión, se crea una rama con versiones permanente independiente de la
principal.
Use versiones y el control de código fuente para los conjuntos de datos que se
acondicionaran para el entrenamiento o el consumo, de modo que pueda proteger la
integridad de cada conjunto de datos.
Use el control de código fuente para realizar un seguimiento de los experimentos de
Jupyter Notebook.

Integración con orígenes de datos


Los científicos de datos usan muchos orígenes de datos sin procesar y conjuntos de datos
procesados para experimentar con diferentes modelos de Machine Learning. El volumen de
datos en un entorno de producción puede ser abrumador. Para experimentar con diferentes
modelos, los científicos de datos deben usar herramientas de administración como Azure
Data Lake. El requisito para la identificación formal y el control de versiones se aplica a
todos los datos sin procesar, los conjuntos de datos preparados y los modelos de Machine
Learning.

En el proyecto, los científicos de datos acondicionaron los siguientes datos para la entrada
en el modelo:

Datos históricos semanales de envío desde enero de 2017


Datos meteorológicos diarios históricos y previstos para cada código postal
Datos de los compradores para cada identificador de tienda

Integración con el control de código fuente


Para que los científicos de datos apliquen los procedimientos recomendados de ingeniería,
es necesario integrar convenientemente las herramientas que usan con sistemas de control
de código fuente como GitHub. Este procedimiento permite el control de versiones del
modelo de Machine Learning, la colaboración entre los miembros del equipo y la
recuperación ante desastres, en caso de que los equipos experimenten pérdida de datos o
interrupción de los sistemas.

Compatibilidad del conjunto de modelos


El diseño del modelo de este proyecto era un modelo de conjunto. Es decir, los científicos
de datos usaron muchos algoritmos en el diseño final del modelo. En este caso, los
modelos usaron el mismo diseño de algoritmo básico. La única diferencia era que usaron
distintos datos de entrenamiento y de puntuación. Los modelos usaron la combinación de
un algoritmo de regresión lineal LASSO y una red neuronal.

Aunque no la implementó, el equipo exploró una opción para hacer avanzar el proceso
hasta el punto en que pudiera tener muchos modelos en tiempo real ejecutándose en
producción para atender una solicitud determinada. Esta opción puede dar cabida al uso de
modelos de conjunto en pruebas A/B y experimentos intercalados.
Interfaces de usuario final
El equipo desarrolló interfaces de usuario final para las operaciones de observabilidad,
supervisión e instrumentación. Como hemos mencionado, los paneles muestran los datos
del modelo de Machine Learning. Estos paneles muestran los datos siguientes en un
formato sencillo:

Pasos de canalización, incluido el procesamiento previo de los datos de entrada.


Para supervisar el estado del procesamiento del modelo de Machine Learning:
¿Qué métricas recopila del modelo implementado?
MAPE: error de porcentaje absoluto medio (métrica clave para el seguimiento
del rendimiento general. El destino es un valor de MAPE <=0,45 para cada
modelo).
RMSE 0: raíz del error cuadrático medio (RMSE) cuando el valor de destino real
= 0.
RMSE All: RMSE en todo el conjunto de datos.
¿Cómo se evalúa si el modelo se ejecuta según lo previsto en producción?
¿Hay alguna manera de saber si los datos de producción se desvían demasiado de
los valores esperados?
¿El modelo está experimentando un rendimiento deficiente en producción?
¿Tiene un estado de conmutación por error?
Realizan un seguimiento de la calidad de los datos procesados.
Muestran las predicciones o puntuaciones generadas por el modelo de Machine
Learning.

La aplicación rellena los paneles según la naturaleza de los datos y el modo en que los
procesa y analiza. Por tanto, el equipo debe concebir el diseño exacto de los paneles para
cada caso de uso. A continuación se muestran dos paneles de ejemplo:
Los paneles se diseñaron para proporcionar información fácil de usar para el usuario final
de las predicciones del modelo de Machine Learning.

7 Nota

Los modelos obsoletos son ejecuciones de puntuación en las que los científicos de
datos entrenaron el modelo usado para puntuar más de 60 días desde el momento en
que tuvo lugar la puntuación. La página Puntuación del panel ML Monitor (Monitor
de Machine Learning) muestra esta métrica de mantenimiento.

Componentes
Azure Machine Learning
Proceso de Azure Machine Learning
Canalizaciones de Azure Machine Learning
Registro de modelos de Azure Machine Learning
Azure Blob Storage
Almacén de Azure Data Lake
Azure Pipelines
Azure Data Factory
Azure Functions para Python
Azure Monitor
Registros
Application Insights
Azure SQL Database
Paneles de Azure
Power BI

Consideraciones
Aquí encontrará una lista de las consideraciones que se deben explorar. Se basan en las
lecciones que el equipo de CSE aprendió durante el proyecto.

Consideraciones sobre el entorno


Los científicos de datos desarrollan la mayoría de los modelos de Machine Learning
con Python, a menudo a partir de cuadernos de Jupyter Notebook. Puede ser un reto
implementar estos cuadernos como código de producción. Los cuadernos de Jupyter
Notebook son más bien una herramienta experimental, mientras que los scripts de
Python son más adecuados para producción. A menudo, los equipos deben dedicar
tiempo a refactorizar el código de creación de modelos en los scripts de Python.
Haga que los clientes que no estén familiarizados con DevOps y el aprendizaje
automático sean conscientes de que la experimentación y la producción requieren un
rigor diferente, por lo que es recomendable separar los dos.
Herramientas como el diseñador visual de Azure Machine Learning o AutoML pueden
ser eficaces para poner en marcha modelos básicos, mientras el cliente se pone al día
con las prácticas de DevOps estándar que aplicar al resto de la solución.
Azure DevOps tiene complementos que se pueden integrar con Azure Machine
Learning para ayudar a desencadenar los pasos de canalización. El repositorio
MLOpsPython tiene algunos ejemplos de estas canalizaciones.
El aprendizaje automático a menudo requiere máquinas GPU eficaces para el
entrenamiento. Si el cliente aún no tiene este hardware disponible, los clústeres de
proceso de Azure Machine Learning son un método eficiente para el
aprovisionamiento rápido de hardware eficaz y rentable que se escala
automáticamente. Si un cliente requiere seguridad avanzada o supervisión, existen
otras opciones, como el uso de máquinas virtuales estándar, Databricks o un proceso
local.
Para el éxito de un cliente, los equipos de creación de modelos (científicos de datos) y
los equipos de implementación (ingenieros de DevOps) deben tener un canal de
comunicación sólido. Pueden lograrlo con reuniones diarias o con un servicio de chat
en línea formal. Ambos enfoques ayudan a integrar sus esfuerzos de desarrollo en un
marco de MLOps.

Consideraciones sobre la preparación de los datos


La solución más sencilla para usar Azure Machine Learning es almacenar datos en una
solución de almacenamiento de datos compatible. Herramientas como Azure Data
Factory son eficaces para canalizar los datos hacia y desde esas ubicaciones según una
programación.

Es importante que los clientes capturen datos de reentrenamiento adicionales con


frecuencia para mantener los modelos actualizados. Si aún no tienen una canalización
de datos, la creación de una será una parte importante de la solución general. El uso
de una solución como DataSets en Azure Machine Learning puede ser útil para el
control de versiones de los datos a fin de facilitar la trazabilidad de los modelos.

Consideraciones de entrenamiento y de evaluación de


modelos
Es agobiante para un cliente que acaba de empezar a usar el aprendizaje automático
intentar implementar a una canalización de MLOps completa. Si es necesario, se
puede simplificar mediante Azure Machine Learning para realizar un seguimiento de
las ejecuciones del experimento y con el proceso de Azure Machine Learning como
destino del entrenamiento. Estas opciones pueden crear una barrera inferior de la
solución de entrada para empezar a integrar los servicios de Azure.

Pasar de un experimento de cuaderno a scripts repetibles es una transición


aproximada para muchos científicos de datos. Cuanto antes se pueda empezar a
escribir el código de entrenamiento en scripts de Python, más fácil resultará empezar
a controlar las versiones del código de entrenamiento y habilitar el nuevo
entrenamiento.

No es el único método posible. Databricks admite la programación de cuadernos


como trabajos. No obstante, en función de la experiencia del cliente actual, este
enfoque es difícil instrumentarlo con prácticas de DevOps completos debido a las
limitaciones de las pruebas.

También es importante comprender qué métricas se usan para considerar que un


modelo es correcto. La precisión por si sola a menudo no es suficiente para
determinar el rendimiento general de un modelo comparado con otro.

Consideraciones de proceso
Los clientes deben considerar la posibilidad de usar contenedores para estandarizar
sus entornos de proceso. Casi todos los destinos de proceso de Azure Machine
Learning admiten el uso de Docker . Tener un contenedor que controle las
dependencias reduce considerablemente la fricción, especialmente si el equipo usa
muchos destinos de proceso.

Consideraciones de servicio de modelos


El SDK de Azure Machine Learning proporciona una opción para la implementación
directa en Azure Kubernetes Service desde un modelo registrado, lo que crea límites
en las opciones de seguridad o las métricas implementadas. Puede intentar buscar
una solución más sencilla para que los clientes prueben el modelo, pero es mejor
desarrollar una implementación más sólida en AKS para las cargas de trabajo de
producción.

Pasos siguientes
Más información acerca de MLOps
MLOps en Azure
Visualizaciones de Azure Monitor
Ciclo de vida de Machine Learning
Extensión de Azure DevOps Machine Learning
CLI de Azure Machine Learning
Desencadenar aplicaciones, procesos o flujos de trabajo de CI/CD basados en eventos
de Azure Machine Learning
Configuración del entrenamiento y la implementación de modelos con Azure DevOps
Configuración de MLOps con Azure Machine Learning y Databricks

Recursos relacionados
Modelo de madurez de MLOps
Orquestación de MLOps en Azure Databricks mediante Databricks Notebook
MLOps para modelos de Python con Azure Machine Learning
Ciencia de datos y aprendizaje automático con Azure Databricks
Inteligencia artificial ciudadana con Power Platform
Implementación de procesos de inteligencia artificial y aprendizaje automático en el
entorno local y en el perímetro
¿Qué es el Proceso de ciencia de
datos en equipo (TDSP)?
Azure Machine Learning

El proceso de ciencia de datos en equipo (TDSP) es una metodología de ciencia de


datos ágil e iterativa para proporcionar soluciones de análisis predictivo y aplicaciones
inteligentes de manera eficiente. TDSP ayuda a mejorar la colaboración y el aprendizaje
en equipo al sugerir cómo los roles de equipo funcionan mejor juntos. TDSP incluye
procedimientos recomendados y estructuras de Microsoft y otros líderes del sector para
ayudar a implementar correctamente iniciativas de ciencia de datos. El objetivo es
ayudar a las empresas a que se den cuenta de las ventajas de su programa de análisis.

En este artículo se proporciona una introducción a TDSP y sus componentes principales.


Aquí se proporciona una descripción genérica del proceso que se puede implementar
con distintos tipos de herramientas. En vínculos a temas adicionales, se incluye una
descripción más detallada de las tareas del proyecto y de los roles implicados en el ciclo
de vida del proceso. También se proporcionan instrucciones sobre cómo implementar el
TDSP mediante un conjunto específico de herramientas de Microsoft y la infraestructura
que se usa para implementar el TDSP en nuestros equipos.

Principales componentes del TDSP


TDSP tiene los siguientes componentes principales:

Una definición de ciclo de vida de ciencia de datos


Una estructura de proyecto estandarizada
Infraestructura y recursos recomendados para proyectos de ciencia de datos
Herramientas y utilidades recomendadas para la ejecución de proyectos

Ciclo de vida de ciencia de datos


El proceso de ciencia de datos en equipo (TDSP) proporciona un ciclo de vida para
estructurar el desarrollo de los proyectos de ciencia de datos. En el ciclo de vida se
describen todos los pasos que siguen los proyectos correctos.

Aunque esté usando otro ciclo de vida de ciencia de datos, como CRISP-DM , KDD o
el proceso personalizado de su organización, puede usar también el TDSP basado en
tareas en el contexto de esos ciclos de vida de desarrollo. En un nivel alto, estas distintas
metodologías tienen mucho en común.

Este ciclo de vida se ha diseñado para proyectos de ciencia de datos que se enviarán
como parte de aplicaciones inteligentes. Estas aplicaciones implementan modelos de
aprendizaje o inteligencia artificial de máquina para realizar un análisis predictivo. Los
proyectos de ciencia de datos exploratorios o proyectos de análisis improvisados
también se pueden beneficiar del uso de este proceso. Pero, en estos casos, puede que
algunos de los pasos descritos no sean necesarios.

El ciclo de vida describe las fases principales por las que pasan normalmente los
proyectos, a menudo de forma iterativa:

Conocimiento del negocio


Adquisición y comprensión de los datos
Modelado
Implementación

Esta es una representación visual del ciclo de vida del proceso de ciencia de datos en
equipo.

En el tema Team Data Science Process lifecycle (Ciclo de vida del proceso de ciencia de
datos en equipo) se describen los objetivos, las tareas y los artefactos de
documentación de cada fase del ciclo de vida de TDSP. Estas tareas y artefactos están
asociados con roles de proyecto:

Arquitecto de soluciones
Jefe de proyecto
Ingeniero de datos
Científico de datos
Desarrollador de aplicaciones
Responsable de proyecto

En el siguiente diagrama se proporciona una vista de cuadrícula de las tareas (en azul) y
los artefactos (en verde) asociados con cada fase del ciclo de vida (eje horizontal) de
estos roles (eje vertical).

Estructura de proyecto estandarizada


Cuando todos los proyectos comparten una estructura de directorio y usan plantillas
para los documentos de proyecto, resulta fácil para los miembros del equipo encontrar
información sobre sus proyectos. Todo el código y los documentos se almacenan en un
sistema de control de versiones (VCS), como Git, TFS o Subversion para permitir la
colaboración en equipo. El seguimiento de las tareas y las características en un sistema
de seguimiento de proyectos ágil, como Jira, Rally y Azure DevOps permite seguir más
de cerca el código para conocer sus características individuales. Este seguimiento
también permite a los equipos obtener mejores estimaciones de los costos. TDSP
recomienda crear un repositorio independiente para cada proyecto en el VCS de cara al
control de versiones, la seguridad de la información y la colaboración. La estructura
estandarizada para todos los proyectos ayuda a crear conocimiento institucional en toda
la organización.

Se proporcionan plantillas para la estructura de carpetas y los documentos necesarios


en ubicaciones estándar. Esta estructura de carpetas organiza los archivos que
contienen código para la exploración de datos y la extracción de características, y los
que registran las iteraciones de los modelos. Estas plantillas permiten a los miembros
del equipo comprender el trabajo que otros realizan, y agregar nuevos miembros a los
equipos de forma fácil. Las plantillas de documento se pueden ver y actualizar
fácilmente en formato de marcado. Use plantillas para proporcionar listas de
comprobación con preguntas clave en cada proyecto y de esta forma garantizar que el
problema esté bien definido y que los resultados entregados satisfagan la calidad
esperada. Algunos ejemplos son:

una carta de constitución de proyecto para documentar los problemas


empresariales y el ámbito del proyecto
informes de datos para documentar la estructura y las estadísticas de los datos sin
procesar
informes de modelo para documentar las características derivadas
métricas de rendimiento de modelo, como curvas ROC o MSE

La estructura de directorio se puede clonar desde GitHub .

Infraestructura y recursos para los proyectos de


ciencia de datos
TDSP proporciona recomendaciones para administrar análisis compartido e
infraestructura de almacenamiento, por ejemplo:

sistemas de archivos en la nube para almacenar conjuntos de datos


databases
clústeres de macrodatos (SQL o Spark)
servicio de aprendizaje automático

La infraestructura de análisis y almacenamiento, donde se almacenan los conjuntos de


datos sin procesar y los procesados, puede estar en la nube o en un entorno local. Esta
infraestructura permite un análisis reproducible. También evita la duplicación, lo que
puede llevar a incoherencias y costos de infraestructura innecesarios. Se proporcionan
herramientas para aprovisionar los recursos compartidos, realizar un seguimiento de
ellos y permitir que cada miembro del equipo se conecte a dichos recursos de forma
segura. También es una buena práctica pedir a los miembros del proyecto que creen un
entorno de proceso coherente. Luego, diferentes miembros del equipo pueden replicar
y validar los experimentos.

Este es un ejemplo de un equipo que trabaja en varios proyectos y que comparte


diversos componentes de la infraestructura de análisis.

Herramientas y utilidades para la ejecución de


proyectos
En la mayoría de las organizaciones la introducción de procesos presenta ciertos
desafíos. Las herramientas proporcionadas para implementar el proceso y el ciclo de
vida de ciencia de datos ayudan a reducir las barreras a su adopción y la normalizan.
TDSP proporciona un conjunto inicial de herramientas y scripts para impulsar la
adopción de TDSP dentro de un equipo. También ayuda a automatizar algunas de las
tareas comunes del ciclo de vida de ciencia de datos, como la exploración de datos y el
modelado de línea de base. Existe una estructura bien definida que se proporciona a los
individuos para que contribuyan con herramientas y utilidades compartidas al
repositorio de código compartido de su equipo. Estos recursos se pueden aprovechar
luego en otros proyectos dentro del equipo o en la organización. Microsoft proporciona
herramientas extensas en Azure Machine Learning que admiten marcos de código
abierto (Python, R, ONNX y aprendizaje profundo común) y también herramientas
propias de Microsoft (AutoML).

Pasos siguientes
En el artículo Roles y tareas del proceso de ciencia de datos en equipo se subrayan los
roles y sus tareas asociadas en un equipo de ciencia de datos que se estandariza en este
proceso.
El ciclo de vida del proceso de ciencia
de datos en equipo
Artículo • 11/07/2023

El Proceso de ciencia de datos en equipo (TDSP) ofrece un ciclo de vida recomendado


que se puede usar para estructurar los proyectos de ciencia de datos. En el ciclo de vida
se describen los pasos completos que siguen los proyectos correctos. Si usa otro ciclo
de vida de la ciencia de datos, como Cross Industry Standard Process for Data Mining
(CRISP-DM) , Knowledge Discovery in Databases (KDD) o propio proceso
personalizado de la organización, puede seguir usando el TDSP basado en tareas.

Este ciclo de vida está diseñado para los proyectos de ciencia de datos que se enviarán
como parte de aplicaciones inteligentes. Estas aplicaciones implementan modelos de
aprendizaje o inteligencia artificial de máquina para realizar un análisis predictivo. Los
proyectos de ciencia de datos exploratorios y los proyectos de análisis improvisados
también se pueden beneficiar del uso de este proceso. Pero para esos proyectos,
algunos de los pasos descritos a continuación pueden no ser necesarios.

Cinco fases del ciclo de vida


El ciclo de vida de TDSP se compone de cinco fases principales que se ejecutan de
forma iterativa. Estas fases incluyen:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Esta es una representación visual del ciclo de vida de TDSP:


El ciclo de vida del TDSP se modela como una secuencia de pasos repetidos que le
orientan respecto a las tareas necesarias para usar modelos predictivos. El usuario
implementa modelos de predicción en el entorno de producción que tiene previsto
utilizar para compilar las aplicaciones inteligentes. El objetivo del ciclo de vida del
proceso consiste en hacer avanzar un proyecto de ciencia de datos hacia un punto final
de interacción claro. La ciencia de datos es un ejercicio de investigación y detección. La
posibilidad de comunicar tareas a su equipo y sus clientes mediante un conjunto bien
definido de artefactos que utilizan plantillas estandarizadas ayuda a evitar malos
entendidos. El uso de estas plantillas también incrementa la posibilidad de finalizar
correctamente un proyecto de ciencia de datos complejo.

Para cada fase, damos la siguiente información:

Objetivos: objetivos específicos.


Cómo hacerlo: un esquema de las tareas específicas y orientación sobre cómo
realizarlas.
Artefactos: las entregas y la asistencia para producirlas.

Pasos siguientes
Para obtener ejemplos de cómo ejecutar pasos en TDSP que usan Azure Machine
Learning, consulte Uso del Proceso de ciencia de los datos en equipo con Azure
Machine Learning.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Recursos relacionados
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Aprendizaje automático a escala
Fase de descripción de negocio del ciclo
de vida del Proceso de ciencia de datos
en equipo
Artículo • 11/07/2023

En este artículo se describen los objetivos, las tareas y los resultados asociados a la fase
de descripción del negocio del Proceso de ciencia de datos en equipo (TDSP). Este
proceso proporciona un ciclo de vida recomendado que puede usar para estructurar los
proyectos de ciencia de datos. El ciclo de vida describe las fases principales por las que
pasan normalmente los proyectos, a menudo de forma iterativa:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Esta es una representación visual del ciclo de vida de TDSP:


Objetivos
Especifique las variables principales que sirven como objetivos del modelo y cuyas
métricas asociadas se utilizan para determinar el éxito del proyecto.
Identifique los orígenes de datos pertinentes a los que tiene acceso la empresa o
que necesita obtener.

Modo de hacerlo
En esta fase se abordan dos tareas principales:

Definición de objetivos: trabaje con el cliente y con otras partes interesadas para
comprender e identificar los problemas de la empresa. Formule preguntas que
definan los objetivos empresariales y a las que puedan aplicarse las técnicas de
ciencia de datos.
Identifique los orígenes de datos: busque los datos pertinentes que lo ayuden a
responder a las preguntas que definen los objetivos del proyecto.

Definición de objetivos
1. Un objetivo fundamental de este paso consiste en identificar las principales
variables empresariales que el análisis deberá predecir. Estas variables se
denominan objetivos del modelo y las métricas asociadas a ellas se utilizan para
determinar el éxito del proyecto. Dos ejemplos de estos destinos son la previsión
de ventas o la probabilidad de que un pedido sea fraudulento.

2. Para definir los objetivos del proyecto, plantee y ajuste preguntas "certeras" que
sean pertinentes, específicas y sin ambigüedad alguna. La ciencia de datos es un
proceso que utiliza nombres y números para responder a estas preguntas. La
ciencia de datos o el aprendizaje automático suelen utilizarse para responder a
cinco tipos de preguntas:

¿Cuánto? o ¿cuántos? (regresión)


¿Qué categoría? (clasificación)
¿Qué grupo? (agrupación en clústeres)
¿Es extraño? (detección de anomalías)
¿Qué opción se debe elegir? (recomendación)

Determine cuál de las siguientes es su pregunta y cómo la respuesta logra sus


objetivos empresariales.
3. Defina el equipo del proyecto especificando los roles y las responsabilidades de
sus miembros. Desarrolle un plan general de hitos que se pueda repetir a medida
que se descubra más información.

4. Defina las métricas del éxito. Por ejemplo, podría desear una predicción sobre la
renovación de los clientes. Necesita una tasa de precisión de "x%" al final de este
proyecto de tres meses. Con estos datos, puede ofrecer promociones al cliente
para mejorar la fidelización. Las métricas deben cumplir los requisitos SMART:

Specific (específicas)
Measurable (mensurables)
Achievable (alcanzables)
Relevant (pertinentes)
Time-bound (con un límite de tiempo)

Identificación de los orígenes de datos


Identifique los orígenes de datos que contienen ejemplos conocidos de respuestas a las
preguntas certeras. Busque los siguientes datos:

Datos pertinentes para la pregunta. ¿Tenemos indicadores para medir el objetivo y


las características que están relacionados con él?
Datos que representen una medida precisa de nuestro objetivo de modelo y de las
características de interés.

Por ejemplo, puede descubrir que los sistemas existentes tienen que recopilar y registrar
tipos de datos adicionales para solucionar el problema y alcanzar los objetivos del
proyecto. En esta situación, puede ser conveniente buscar orígenes de datos externos o
actualizar los sistemas para recopilar datos nuevos.

Artifacts
Estos son los resultados de esta fase:

Documento marco : se ofrece una plantilla estándar en la definición de estructura


del proyecto de TDSP. El documento marco es un documento en cambio continuo.
La plantilla se actualiza a lo largo del proyecto a medida que se descubren nuevos
elementos y cambian las necesidades empresariales. La clave consiste en realizar
iteraciones de este documento e incorporarle la información oportuna según se
avance a lo largo del proceso de descubrimiento. Es importante que el cliente y las
demás partes interesadas se impliquen en la realización de cambios y que se les
informe claramente sobre las razones que los motivan.
Orígenes de datos : la sección de orígenes de datos sin procesar del informe de
definiciones de datos que se encuentra en la carpeta de informe de datos del
proyecto TDSP contiene los orígenes de datos. En esta sección se especifican las
ubicaciones originales y de destino para los datos sin procesar. En las fases
posteriores, deberá rellenar más detalles, tales como los scripts para mover los
datos al entorno de análisis.
Diccionarios de datos : este documento proporciona descripciones de los datos
facilitados por el cliente. Estas descripciones incluyen información sobre el
esquema (tipos de datos e información sobre las reglas de validación, si hay) y los
diagramas de relación de entidades, si están disponibles.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son los vínculos a cada uno de los pasos del ciclo de vida del Proceso de ciencia
de datos en equipo:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente
Fase de adquisición y comprensión de
los datos del proceso de ciencia de
datos en equipos
Artículo • 11/07/2023

En este artículo se describen los objetivos, las tareas y los resultados asociados a la fase
de adquisición y comprensión de los datos del Proceso de ciencia de datos en equipo
(TDSP). Este proceso proporciona un ciclo de vida recomendado que puede usar para
estructurar los proyectos de ciencia de datos. El ciclo de vida describe las fases
principales por las que pasan normalmente los proyectos, a menudo de forma iterativa:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Esta es una representación visual del ciclo de vida de TDSP:


Objetivos
Genere un conjunto de datos limpio y de alta calidad cuya relación con las
variables de destino se entienda. Busque el conjunto de datos en el entorno de
análisis de adecuado para prepararse para el modelado.
Desarrolle una arquitectura de solución de la canalización de datos que actualice y
puntúe los datos con regularidad.

Modo de hacerlo
En esta fase se abordan tres tareas principales:

Introducción de los datos en el entorno de análisis de destino.


Exploración de los datos para determinar si su calidad es suficiente para
responder a la pregunta.
Configuración de una canalización de datos para puntuar los datos nuevos o que
se actualizan con regularidad.

Introducción de los datos


Configure el proceso para mover los datos desde las ubicaciones de origen a las
ubicaciones de destino donde se ejecutan las operaciones de análisis, como el
entrenamiento y las predicciones. Para obtener detalles técnicos y opciones sobre cómo
mover datos con diversos servicios de datos de Azure, vea Carga de datos en entornos
de almacenamiento para el análisis.

Exploración de los datos


Antes de entrenar los modelos, debe desarrollar una comprensión sólida de los datos. A
menudo, los conjuntos de datos reales contienen ruido, les faltan datos o presentan un
sinfín de discrepancias de otros tipos. Puede utilizar funciones de resumen y
visualización de los datos para auditar su calidad y dar la información que se necesita
para procesarlos y dejarlos preparados para el modelado. Normalmente, se trata de un
proceso iterativo. Para obtener orientación sobre cómo limpiar los datos, consulte
Tareas para preparar los datos para el aprendizaje automático mejorado.

Una vez que esté satisfecho con la calidad de los datos limpios, el siguiente paso es
comprender mejor los patrones que son inherentes a los datos. Este análisis de datos
ayuda a elegir y desarrollar un modelo de predicción adecuado para el destino. Busque
pruebas que describan la conexión de los datos con el destino. A continuación,
determine si hay suficientes datos para avanzar con los siguientes pasos de modelado.
Como hemos indicado, normalmente, se trata de un proceso iterativo. Es posible que
deba buscar otros orígenes de datos con información más precisa o pertinente con el
fin de alimentar el conjunto de datos inicialmente identificado en la fase anterior.

Configuración de una canalización de datos


Además de la introducción y limpieza iniciales de los datos, suele ser preciso configurar
un proceso para puntuar los datos nuevos o actualizarlos con regularidad durante el
proceso de aprendizaje continuo. La puntuación puede completarse con una
canalización de datos o un flujo de trabajo. El artículo Traslado de datos desde un
servidor SQL Server a Azure SQL Database con Azure Data Factory proporciona un
ejemplo de cómo configurar una canalización con Azure Data Factory .

En esta fase, desarrolla una arquitectura de solución de la canalización de datos.


Desarrolla la canalización en paralelo con la siguiente fase del proyecto de ciencia de
datos. En función de las necesidades empresariales y de las limitaciones de los sistemas
existentes en los que se integre esta solución, la canalización puede ser de una de las
opciones siguientes:

Basada en lotes
Streaming o en tiempo real
Híbrido

Artefactos
Estos son los resultados de esta fase:

Informe de la calidad de los datos : este informe contiene resúmenes de los


datos, las relaciones entre cada atributo y objetivo, la clasificación de las variables,
etc.
Arquitectura de la solución: la arquitectura de la solución puede ser un diagrama
o una descripción de la canalización de datos que utiliza para llevar a cabo la tarea
de puntuación o las predicciones con los nuevos datos una vez que se ha
compilado un modelo. También contiene la canalización para volver a entrenar el
modelo basándose en los nuevos datos. Almacene el documento en el directorio
Project cuando se usa la plantilla de estructura de directorios de TDSP.
Decisión de punto de control: antes de comenzar con el proceso completo de
diseño de características y con la compilación del modelo, puede volver a evaluar
el proyecto para determinar si el valor que está previsto que aporte es suficiente
para seguir adelante con él. Por ejemplo, podría estar preparado para continuar,
requerir más datos o abandonar el proyecto si no existen datos que respondan a la
pregunta.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son los vínculos a cada uno de los pasos del ciclo de vida del Proceso de ciencia
de datos en equipo:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente
Fase de modelado del ciclo de vida del
proceso de ciencia de datos en equipos
Artículo • 11/07/2023

En este artículo se describen los objetivos, las tareas y los resultados asociados a la fase
de modelado del Proceso de ciencia de datos en equipo (TDSP). Este proceso
proporciona un ciclo de vida recomendado que puede usar para estructurar los
proyectos de ciencia de datos. El ciclo de vida describe las fases principales por las que
pasan normalmente los proyectos, a menudo de forma iterativa:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Esta es una representación visual del ciclo de vida de TDSP:

Objetivos
Determinar las características óptimas de los datos para el modelo de aprendizaje
automático.
Crear un modelo de aprendizaje automático informativo que predice el objetivo
con la máxima precisión.
Crear un modelo de aprendizaje automático que es adecuado para entornos de
producción.

Modo de hacerlo
En esta fase se abordan tres tareas principales:

Diseño de características: cree características de datos a partir de los datos sin


procesar para facilitar el entrenamiento del modelo.
Entrenamiento del modelo: busque el modelo que responda a la pregunta con la
máxima precisión comparando sus métricas de éxito.
Determine si el modelo es adecuado para su uso en producción.

Ingeniería de características
El diseño de características consiste en incluir, agregar y transformar variables sin
procesar para crear las características que se utilizan en el análisis. Si desea conocer con
detalle los factores en que se basa un modelo, debe entender cómo se relacionan entre
sí las características y cómo deben utilizarlas los algoritmos de aprendizaje automático.

Este paso requiere una combinación creativa de experiencia de dominio y de los


conocimientos obtenidos en el paso de exploración de datos. La ingeniería de
características es un acto de equilibrio de buscar e incluir variables informativas evitando
al mismo tiempo que se utilicen demasiadas variables no relacionadas. Las variables
informativas mejoran los resultados; las variables no relacionadas introducen ruido
innecesario en el modelo. También debe generar estas características para los nuevos
datos obtenidos durante la puntuación. Así pues, la generación de estas características
solamente puede depender de los datos que están disponibles en el momento de la
puntuación.

Entrenamiento del modelo


Según el tipo de la pregunta que intenta responder, existen muchos algoritmos de
modelado disponibles. Para obtener instrucciones sobre cómo elegir un algoritmo
precompilado con el diseñador, consulte Hoja de características de los algoritmos de
Machine Learning para el diseñador de Azure Machine Learning; hay otros algoritmos
disponibles mediante paquetes de código abierto en R o Python. Aunque este se centra
en Azure Machine Learning, la orientación resulta útil para otros proyectos de
aprendizaje automático.

El proceso de entrenamiento del modelo incluye los pasos siguientes:

Dividir los datos de entrada aleatoriamente para el modelado en un conjunto de


datos de aprendizaje y un conjunto de datos de prueba.
Compilar los modelos mediante el conjunto de datos de aprendizaje.
Evaluar el entrenamiento y el conjunto de datos de prueba. Use una serie de
algoritmos de aprendizaje automático paralelos junto con los diversos parámetros
de ajuste asociados (lo que se denomina barrido de parámetros) que están
orientados a responder a la pregunta de interés con los datos actuales.
Determinar la "mejor" solución para responder a la pregunta mediante la
comparación de las métricas de éxito entre los métodos alternativos.

Consulte Entrenamiento de modelos con Azure Machine Learning para obtener


opciones sobre los modelos de entrenamiento en Azure Machine Learning.

7 Nota

Evitar la pérdida de datos: puede provocar la pérdida de datos si incluye datos


ajenos al conjunto de datos de aprendizaje que permiten que un modelo o
algoritmo de aprendizaje automático haga predicciones demasiado buenas para
ser realistas. La pérdida de datos es uno de los motivos por los que los científicos
de datos se preocupan cuando obtienen resultados predictivos que parecen
demasiado buenos para ser ciertos. Estas dependencias pueden ser difíciles de
detectar. Para evitar fugas, a menudo es preciso efectuar iteraciones entre la
generación del conjunto de datos de análisis, la creación del modelo y la
evaluación de la precisión de los resultados.

Evaluación del modelo


Después del entrenamiento, el científico de datos se centra en la evaluación del modelo.

Decisión de punto de control: Evalúe si el modelo funciona suficientemente para


producción. Algunas preguntas clave son:
¿El modelo responde a la pregunta con la confianza suficiente considerando los
datos de prueba?
¿Debe probar algún planteamiento alternativo?
¿Debe recopilar datos adicionales, rediseñar las características o experimentar
con otros algoritmos?
Interpretación del modelo: use el SDK de Python de Azure Machine Learning para
realizar las siguientes tareas:
Explicar el comportamiento completo del modelo o predicciones individuales en
el equipo personal de forma local.
Habilitar técnicas de interpretación para las características diseñadas.
Explicar el comportamiento completo del modelo y predicciones individuales en
Azure.
Cargar las explicaciones en el historial de ejecución de Azure Machine Learning.
Usar un panel de visualización para interactuar con las explicaciones del
modelo, tanto en un cuaderno de Jupyter Notebook como en el área de trabajo
de Azure Machine Learning.
Implementar un explicador de puntuaciones junto con el modelo para observar
las explicaciones durante la inferencia.
Evaluación de la imparcialidad: el paquete de Python de código abierto Fairlearn
con Azure Machine Learning realiza las siguientes tareas:
Evalúe la equidad de las predicciones del modelo. Este proceso le ayudará a
obtener más información sobre la imparcialidad en el aprendizaje automático.
Cargue, enumere y descargue información de evaluación de equidad en Estudio
de Azure Machine Learning.
Consulte el panel de evaluación de equidad en Estudio de Azure Machine
Learning para interactuar con la información de equidad de los modelos.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son los vínculos a cada uno de los pasos del ciclo de vida del Proceso de ciencia
de datos en equipo:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente
Fase de implementación del ciclo de
vida del proceso de ciencia de datos en
equipos
Artículo • 11/07/2023

En este artículo se describen los objetivos, las tareas y los resultados asociados a la
implementación del Proceso de ciencia de datos en equipo (TDSP). Este proceso
proporciona un ciclo de vida recomendado que puede usar para estructurar los
proyectos de ciencia de datos. El ciclo de vida describe las fases principales por las que
pasan normalmente los proyectos, a menudo de forma iterativa:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Esta es una representación visual del ciclo de vida de TDSP:


Objetivo
Implemente modelos con canalización de datos en un entorno de producción o similar
para que el usuario final los acepte.

Modo de hacerlo
La tarea principal que se aborda en esta fase es la siguiente:

Uso del modelo: implemente el modelo y la canalización en un entorno de producción


o semejante para el consumo de aplicaciones.

Uso de modelos
Cuando ya disponga de un conjunto de modelos que funcionan bien, los puede hacer
operativos para que los consuman otras aplicaciones. Dependiendo de los requisitos
empresariales, se realizan predicciones en tiempo real o por lotes. Para implementar
modelos, los expone con una interfaz de API abierta. La interfaz permite que el modelo
se utilice fácilmente por diferentes aplicaciones, como las siguientes:

Sitios web en línea


Hojas de cálculo
Paneles
Aplicaciones de línea de negocio
Aplicaciones de back-end

Para obtener ejemplos de operacionalización de modelos Azure Machine Learning,


consulte Implementación de modelos de aprendizaje automático en Azure. Es un
procedimiento recomendado compilar la telemetría y la supervisión en el modelo de
producción y la canalización de datos que se implementan. Este procedimiento ayuda
con las posteriores tareas de solución de problemas e informes de estado del sistema.

Artifacts
Un panel de estado que muestra el estado del sistema y métricas clave.
Un informe de modelado final con detalles de implementación.
Un documento de arquitectura de la solución final.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son los vínculos a cada uno de los pasos del ciclo de vida del Proceso de ciencia
de datos en equipo:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Para Azure, se recomienda aplicar TDSP mediante Azure Machine Learning: para obtener
información general de Azure Machine Learning, consulte ¿Qué es Azure Machine
Learning?.
Fase de aceptación del cliente del ciclo
de vida del proceso de ciencia de datos
en equipos
Artículo • 11/07/2023

En este artículo se describen los objetivos, las tareas y los resultados asociados a la fase
de aceptación del cliente del Proceso de ciencia de datos en equipo (TDSP). Este
proceso proporciona un ciclo de vida recomendado que puede usar para estructurar los
proyectos de ciencia de datos. El ciclo de vida describe las fases principales por las que
pasan normalmente los proyectos, a menudo de forma iterativa:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Esta es una representación visual del ciclo de vida de TDSP:


Objetivo
Finalización de los resultados del proyecto: confirme que la canalización, el modelo y
su implementación en un entorno de producción cumplen los objetivos del cliente.

Modo de hacerlo
En esta fase se abordan dos tareas principales:

Validación del sistema: confirme que el modelo implementado y la canalización


cumplen las necesidades del cliente.
Entrega del proyecto: entregue el proyecto a la entidad que va a ejecutar el
sistema en producción.

El cliente debe validar que el sistema satisface sus necesidades empresariales y


responde a las preguntas con una precisión aceptable para implementarlo en el entorno
de producción y usarlo con la aplicación cliente. Se finaliza y revisa toda la
documentación. El proyecto se entrega a la entidad responsable de las operaciones. Esta
entidad podría ser, por ejemplo, un equipo de ciencia de datos de clientes o de TI o un
agente del cliente responsable del funcionamiento del sistema en producción.

Artifacts
El artefacto principal que se genera en esta fase final es el informe de salida del
proyecto para el cliente. Este informe técnico contiene todos los detalles del proyecto
que son útiles para obtener información acerca de cómo hacer funcionar el sistema.
TDSP proporciona una plantilla de informe de salida . Puede usar la plantilla tal cual o
puede personalizarla para las necesidades específicas del cliente.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son los vínculos a cada uno de los pasos del ciclo de vida del Proceso de ciencia
de datos en equipo:

1. Conocimiento del negocio


2. Adquisición y comprensión de los datos
3. Modelado
4. Implementación
5. Aceptación del cliente

Para Azure, se recomienda aplicar TDSP mediante Azure Machine Learning: para obtener
información general de Azure Machine Learning, consulte ¿Qué es Azure Machine
Learning?.
Roles y tareas del proceso de ciencia de
datos en equipo
Artículo • 11/07/2023

El proceso de ciencia de datos en equipo (TDSP) es una plataforma desarrollada por


Microsoft que proporciona una metodología estructurada para crear soluciones de
análisis predictivo y aplicaciones inteligentes de un modo eficaz. En este artículo se
describen los roles clave del personal y sus tareas asociadas para un equipo de ciencia
de datos que estandariza este proceso.

Este artículo introductorio contiene vínculos a tutoriales sobre cómo configurar el


entorno de TDSP. En los tutoriales se proporcionan instrucciones detalladas para usar
Azure DevOps Projects, repositorios de Azure Repos y Azure Boards. El objetivo de la
motivación es pasar del concepto al modelado y a la implementación.

Los tutoriales usan Azure DevOps porque así es cómo se implementa TDSP en
Microsoft. Azure DevOps facilita la colaboración mediante la integración de la seguridad
basada en roles, el seguimiento y la administración de elementos de trabajo, así como el
hospedaje de código, el uso compartido y el control de código fuente. En los tutoriales
también se utiliza Data Science Virtual Machine (DSVM) de Azure como escritorio de
análisis, que tiene varias herramientas de ciencia de datos populares configuradas
previamente e integradas con software de Microsoft y servicios de Azure.

Puede usar los tutoriales para implementar TDSP con otras herramientas y entornos de
hospedaje de código, planeamiento de Agile y desarrollo, pero es posible que algunas
características no estén disponibles.

Estructura de los grupos y equipos de ciencia


de datos
Las funciones de ciencia de datos en las empresas a menudo se organizan en la
siguiente jerarquía:

Grupo de ciencia de datos


Equipos de ciencia de datos dentro del grupo

En este tipo de estructura habrá responsables de grupo y de equipo. Normalmente, un


proyecto de ciencia de datos lo realiza un equipo de ciencia de datos. Los equipos de
ciencia de datos cuentan con responsables de proyecto (para tareas de administración y
gobernanza del proyecto) y científicos de datos e ingenieros individuales que ejecutarán
las partes de ciencia de datos e ingeniería de datos del proyecto. Los responsables de
grupo, equipo o proyecto realizan la configuración y gobernanza del proyecto inicial.

Definición y tareas de los cuatro roles de TDSP


Suponiendo que la unidad de ciencia de datos conste de equipos dentro de un grupo,
existen cuatro roles distintos para el personal de TDSP:

1. Administrador de grupo: administra la unidad de ciencia de datos completa en


una empresa. Una unidad de ciencia de datos podría tener varios equipos, cada
uno de ellos trabajando en varios proyectos de ciencia de datos en segmentos
verticales de negocio distintos. Un Administrador de grupo puede delegar sus
tareas en un suplente, pero no cambian las tareas asociadas al rol.

2. Responsable de equipo: administra un equipo de la unidad de ciencia de datos de


una empresa. Un equipo está formada por varios científicos de datos. En una
unidad de ciencia de datos reducida, el administrador de grupo y el responsable
de equipo podrían ser la misma persona.

3. Responsable de proyecto: administra las actividades diarias de los científicos de


datos en un proyecto de ciencia de datos específico.

4. Colaboradores individuales del proyecto: científicos de datos, analistas de


negocios, ingenieros de datos, arquitectos y otros colaboradores que ejecutan un
proyecto de ciencia de datos.

7 Nota

En función de la estructura y el tamaño de una empresa, una sola persona puede


desempeñar más de un rol o un grupo de personas podría ocupar un solo rol.

Tareas que deben realizar los cuatro roles


En el diagrama siguiente se muestran las tareas de nivel superior para cada rol del
proceso de ciencia de datos en equipo. Este esquema y el siguiente, donde las tareas de
cada rol de TDSP se describen más detalladamente, pueden ayudarle a elegir el tutorial
que necesita en función de sus responsabilidades.
Tareas del administrador de grupo
Las siguientes tareas las realiza el administrador de grupo (o un administrador del
sistema TDSP designado) para adoptar TDSP:

Crea una organización de Azure DevOps y un proyecto de grupo dentro de la


organización.
Crea un repositorio de plantillas de proyecto en el proyecto de grupo de Azure
DevOps y lo inicializa desde el repositorio de plantillas de proyecto desarrollado
por el equipo TDSP de Microsoft. El repositorio de plantillas de proyecto TDSP de
Microsoft proporciona:
Una estructura de directorios estandarizada que incluye directorios de datos,
código y documentos.
Un conjunto de plantillas de documentos estandarizadas como guía para un
proceso de ciencia de datos eficaz.
Crea un repositorio de utilidades y lo inicializa desde el repositorio de utilidades
desarrollado por el equipo de TDSP de Microsoft. El repositorio de utilidades de
TDSP de Microsoft proporciona un conjunto de utilidades útiles para que el trabajo
de un científico de datos resulte más eficaz. El repositorio de utilidades de
Microsoft incluye utilidades para exploración interactiva de datos, análisis e
informes y para informes y modelos de base de referencia.
Configura la directiva de control de seguridad para la cuenta de la organización.
Para obtener instrucciones detalladas, consulte Tareas del administrador de grupo en un
equipo de ciencia de datos.

Tareas del responsable de equipo


Las siguientes tareas las realiza el responsable de equipo (o un administrador del
proyecto designado) para adoptar TDSP:

Crea un proyecto de equipo en la organización de Azure DevOps del grupo.


Crea el repositorio de plantillas de proyecto en el proyecto y lo inicializa desde el
repositorio de plantillas de proyecto de grupo configurado por el administrador
del grupo o el delegado.
Crea el repositorio de utilidades del equipo, lo inicializa desde el repositorio de
utilidades del grupo y agrega utilidades específicas del equipo al repositorio.
Opcionalmente, crea una instancia de Azure File Storage para almacenar
recursos de datos útiles para el equipo. Otros miembros del equipo pueden
montar este almacén de archivos compartidos en la nube en sus escritorios de
análisis.
Opcionalmente, monta la instancia de Azure File Storage en la instancia de DSVM
del equipo y le agrega recursos de datos de equipo.
Configura el control de seguridad mediante la adición de miembros del equipo y
la configuración de sus permisos.

Para obtener instrucciones detalladas, consulte Tareas del responsable de equipo en un


equipo de ciencia de datos.

Tareas del responsable de proyecto


Las siguientes tareas las realiza el responsable de proyecto para adoptar TDSP:

Crea un repositorio del proyecto en el proyecto de equipo y lo inicializa desde el


repositorio de plantillas del proyecto.
Opcionalmente, crea una instancia de Azure File Storage para almacenar recursos
de datos del proyecto.
Opcionalmente, monta la instancia de Azure File Storage en la instancia de DSVM
y le agrega recursos de datos del proyecto.
Configura el control de seguridad mediante la adición de miembros del proyecto
y la configuración de sus permisos.

Para obtener instrucciones detalladas, consulte Tareas del responsable de proyecto en


un equipo de ciencia de datos.
Tareas del colaborador individual del proyecto
El colaborador individual del proyecto, normalmente un científico de datos, realiza las
siguientes tareas mediante TDSP:

Clona el repositorio del proyecto configurado por el responsable de proyecto.


Opcionalmente, monta el recurso compartido y la instancia de Azure File Storage
del proyecto en la instancia de Data Science Virtual Machine (DSVM).
Ejecuta el proyecto.

Para obtener instrucciones detalladas sobre la incorporación a un proyecto, consulte


Colaboradores individuales del proyecto en un equipo de ciencia de datos.

Flujo de trabajo de ejecución del proyecto de


ciencia de datos
Siguiendo los tutoriales pertinentes, los científicos de datos, los responsables de
proyecto y los responsables de equipo pueden crear elementos de trabajo para realizar
el seguimiento de todas las tareas y las fases de un proyecto de principio a fin. El uso de
Azure Repos también fomenta la colaboración entre los científicos de datos y garantiza
que los artefactos que se generan durante la ejecución del proyecto se controlan
mediante versión y son compartidos por todos los miembros del proyecto. Azure
DevOps permite vincular los elementos de trabajo de Azure Boards con las ramas del
repositorio de Azure Repos y realizar un seguimiento sencillo de lo que se ha hecho
para un elemento de trabajo.

La siguiente ilustración muestra el flujo de trabajo de TDSP para la ejecución del


proyecto:

Los pasos del flujo de trabajo se pueden agrupar en tres actividades:


Los responsables de proyecto realizan el planeamiento de sprints.
Los científicos de datos desarrollan artefactos en ramas de git para tratar los
elementos de trabajo.
Los responsables de proyecto u otros miembros del equipo realizan revisiones de
código y combinan ramas de trabajo en la rama primaria.

Para obtener instrucciones detalladas del flujo de trabajo de ejecución del proyecto,
consulte Desarrollo de Agile de proyectos de ciencia de datos.

Repositorio de plantillas de proyecto de TDSP


Utilice el repositorio de plantillas de proyecto del equipo de TDSP de Microsoft para
permitir la ejecución y colaboración eficientes del proyecto. El repositorio le ofrece una
estructura de directorios estandarizada y plantillas de documentos que puede utilizar
para sus propios proyectos de TDSP.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Explore descripciones más detalladas de los roles y tareas que el Proceso de ciencia de
datos en equipo define:

Tareas del administrador de grupo en un equipo de ciencia de datos


Tareas del responsable de equipo en un equipo de ciencia de datos
Tareas del responsable de proyecto en un equipo de ciencia de datos
Tareas de colaboradores individuales del proyecto en un equipo de ciencia de
datos

Recursos relacionados
Tareas del administrador de grupo de control de proceso de ciencia de datos en
equipo
Tareas del responsable de equipo en el equipo de proceso de ciencia de datos en
equipo
Tareas para el líder del proyecto en el proceso de ciencia de datos en equipo
Tareas para un colaborador individual en el proceso de ciencia de datos en
equipos
Tareas del administrador de grupo de
control de proceso de ciencia de datos
en equipo
Artículo • 11/07/2023

En este artículo se describen las tareas que completa un administrador de grupo para
una organización de ciencia de datos. El administrador de grupo administra la unidad de
ciencia de datos completa en una empresa. Una unidad de ciencia de datos puede tener
varios equipos, cada uno de ellos trabajando en muchos proyectos de ciencia de datos
en segmentos verticales de negocio distintos. El objetivo del administrador de grupo es
establecer un entorno de colaboración en grupo que normalice el proceso de ciencia de
datos en equipo (TDSP). Para ver un esquema de todos los roles del personal y las tareas
asociadas de las que se ocupa un equipo de ciencia de datos que sigue este proceso
como estándar, consulte Roles y tareas del proceso de ciencia de datos en equipo.

En el diagrama siguiente se muestran las seis tareas principales de configuración del


administrador del grupo. Los administradores de grupo pueden delegar sus tareas en
un suplente, pero las tareas asociadas al rol no cambian.

1. Configure una organización de Azure DevOps para el grupo.


2. Cree el proyecto GroupCommon predeterminado en la organización de Azure
DevOps.
3. Cree el repositorio GroupProjectTemplate en Azure Repos.
4. Cree el repositorio GroupUtilities en Azure Repos.
5. Importe el contenido de los repositorios ProjectTemplate y Utilities del equipo
TDSP de Microsoft en los repositorios comunes del grupo.
6. Configure la pertenencia y los permisos para que los miembros del equipo tengan
acceso al grupo.

En el siguiente tutorial se explican los pasos en detalle.

7 Nota

En este artículo se utiliza Azure DevOps para configurar un entorno de equipo de


TDSP, ya que se explica cómo implementar TDSP en Microsoft. Si el grupo usa otras
plataformas de desarrollo u hospedaje de código, las tareas del administrador de
grupo son las mismas, pero la manera de completarlas puede ser diferente.

Creación de una organización y un proyecto en


Azure DevOps
1. Vaya a visualstudio.microsoft.com , seleccione Inicio de sesión en la parte
superior derecha e inicie sesión en su cuenta Microsoft.

Si no tiene una cuenta Microsoft, haga clic en Registrarse ahora para crear una
cuenta Microsoft y, después, inicie sesión con esa cuenta. Si su organización tiene
una suscripción de Visual Studio, inicie sesión con las credenciales de dicha
suscripción.

2. Después de iniciar sesión, en la parte superior derecha de la página Azure DevOps,


seleccione Crear una nueva organización.
3. Si se le pide que acepte los términos de servicio, la declaración de privacidad y el
código de conducta, seleccione Continuar.

4. En el cuadro de diálogo de registro, asigne un nombre a la organización de Azure


DevOps y acepte la asignación de la región de hospedaje, o bien seleccione una
región distinta. Después, seleccione Continuar.

5. En Cree un proyecto para empezar, escriba GroupCommon y luego seleccione


Crear proyecto.

Se abre la página Resumen del proyecto GroupCommon. La dirección URL de la página


es https://<servername>/<organization-name>/GroupCommon.
Configuración de los repositorios comunes de
grupo
Azure Repos hospeda los siguientes tipos de repositorios para el grupo:

Repositorios comunes del grupo: Repositorios de uso general que pueden


adoptar varios equipos dentro de una unidad de ciencia de datos para diversos
proyectos de ciencia de datos.
Repositorios de equipo: repositorios para equipos específicos dentro de una
unidad de ciencia de datos. Estos repositorios son específicos para las necesidades
de un equipo, y pueden utilizarse para múltiples proyectos dentro de ese equipo,
pero no son lo suficientemente genéricos como para utilizarse en diferentes
equipos dentro de una unidad de ciencia de datos.
Repositorios de proyecto: Repositorios para proyectos concretos. Estos
repositorios pueden no ser lo suficientemente genéricos para varios proyectos
dentro de un equipo, o para otros equipos de una unidad de ciencia de datos.

Para configurar los repositorios comunes de grupos en el proyecto, puede:

Cambiar el nombre del repositorio predeterminado GroupCommon a


GroupProjectTemplate
Crear un nuevo repositorio GroupUtilities
Cambiar el nombre del repositorio de proyecto
predeterminado a GroupProjectTemplate
Para cambiar el nombre del repositorio de proyecto predeterminado GroupCommon a
GroupProjectTemplate:

1. En la página Resumen del proyecto GroupCommon, seleccione Repos. Esta acción


le lleva al repositorio predeterminado GroupCommon del proyecto
GroupCommon, que está actualmente vacío.

2. En la parte superior de la página, despliegue la flecha junto a GroupCommon y


seleccione Administrar repositorios.

3. En la página Configuración del proyecto, seleccione ... junto a GroupCommon y


luego seleccione Cambiar nombre de repositorio.

4. En el menú emergente Rename the GroupCommon repository (Cambiar el


nombre del repositorio GroupCommon), escriba GroupProjectTemplate y luego
seleccione Cambiar nombre.
Creación del repositorio GroupUtilities
Para crear el repositorio GroupUtilities:

1. En la página Resumen del proyecto GroupCommon, seleccione Repos.

2. En la parte superior de la página, despliegue la flecha junto a


GroupProjectTemplate y seleccione Nuevo repositorio.

3. En el cuadro de diálogo Crear un nuevo repositorio, seleccione Git como Tipo,


escriba GroupUtilities como Nombre del repositorio y luego seleccione Crear.
4. En la página Configuración del proyecto, seleccione Repositorios bajo Repos en el
panel de navegación izquierdo para ver los dos repositorios de grupo:
GroupProjectTemplate y GroupUtilities.
Importación de los repositorios del equipo
TDSP de Microsoft
En esta parte del tutorial, importará el contenido de los repositorios ProjectTemplate y
Utilities administrados por el equipo TDSP de Microsoft en sus repositorios
GroupProjectTemplate y GroupUtilities.

Para importar los repositorios del equipo TDSP:

1. En la página principal del proyecto GroupCommon, seleccione Repos en el panel


de navegación de la izquierda. Se abre el repositorio predeterminado
GroupProjectTemplate.

2. En la página GroupProjectTemplate is empty (GroupProjectTemplate está vacío),


seleccione Importar.

3. En el cuadro de diálogo Importar un repositorio GIT, seleccione Git como Tipo de


origen y escriba https://github.com/Azure/Azure-TDSP-ProjectTemplate.git en
Dirección URL de clonación. Luego, seleccione Importar. El contenido del
repositorio de ProjectTemplate del equipo TDSP de Microsoft se importa en el
repositorio GroupProjectTemplate.
4. En la parte superior de la página Repos del proyecto, seleccione el repositorio
GroupUtilities.

Cada uno de los dos repositorios de grupo contiene ahora todos los archivos, excepto
los del directorio .git, del repositorio correspondiente del equipo TDSP de Microsoft.

Personalización del contenido de los


repositorios de grupo
Si desea personalizar el contenido de los repositorios de grupo para satisfacer las
necesidades específicas de su grupo, puede hacerlo ahora. Puede modificar los archivos,
cambiar la estructura de los directorios o agregar archivos que ha desarrollado su grupo
o que son útiles para el grupo.

Realización de cambios en Azure Repos


Para personalizar el contenido del repositorio:

1. En la página Resumen del proyecto GroupCommon, seleccione Repos.

2. En la parte superior de la página, seleccione el repositorio que desea personalizar.

3. En la estructura de directorios del repositorio, vaya a la carpeta o al archivo que


desee cambiar.
Para crear carpetas o archivos nuevos, seleccione la flecha situada junto a
Nuevo.

Para cargar archivos, seleccione Cargar archivos.

Para editar los archivos existentes, desplácese hasta el archivo y, a


continuación, seleccione Editar.
4. Después de agregar o editar archivos, seleccione Confirmar.

Realización de cambios con el equipo local o DSVM


Si desea realizar cambios con el equipo local o DSVM e incorporar los cambios a los
repositorios de grupo, asegúrese de que cumple los requisitos previos para trabajar con
Git y máquinas virtuales DSVM:

Una suscripción de Azure, si desea crear una DSVM.


Git instalado en la máquina. Si usa una DSVM, GIT está preinstalado. En caso
contrario, consulte el apéndice de plataformas y herramientas.
Si desea usar la DSVM, la DSVM de Windows o Linux creada y configurada en
Azure. Para más información e instrucciones, consulte la documentación de Data
Science Virtual Machine.
Para una DSVM de Windows, debe tener Git Credential Manager (GCM)
instalado en la máquina. En el archivo README.md, desplácese a la sección
Descargar e instalar y haga clic en el instalador más reciente. Descargue el
instalador .exe desde la página del instalador y ejecútelo.
En el caso de una DSVM de Linux, se configura una clave pública SSH en la DSVM
y se agrega en Azure DevOps. Para más información e instrucciones, consulte la
sección acerca de cómo crear una clave pública SSH en el apéndice de
plataformas y herramientas.
En primer lugar, copie o clone el repositorio en la máquina local.

1. En la página Resumen del proyecto GroupCommon, seleccione Repos y, en la


parte superior de la página, seleccione el repositorio que desea clonar.

2. En la página de repositorios, seleccione Clonar en la esquina superior derecha.

3. En el cuadro de diálogo Clonar repositorio, seleccione HTTPS para una conexión


HTTP o SSH para una conexión SSH y copie la dirección URL de clonación en la
Línea de comandos del Portapapeles.

4. En la máquina local, cree los directorios siguientes:

Para Windows: C:\GitRepos\GroupCommon


En Linux, $/GitRepos/GroupCommon en el directorio principal

5. Cambie al directorio que ha creado.

6. En Git Bash, ejecute el comando git clone <clone URL>. .

Por ejemplo, cualquiera de los siguientes comandos clona el repositorio


GroupUtilities en el directorio GroupCommon del equipo local.

Conexión HTTPS:

Bash

git clone
https://DataScienceUnit@dev.azure.com/DataScienceUnit/GroupCommon/_git/
GroupUtilities

Conexión SSH:
Bash

git clone
git@ssh.dev.azure.com:v3/DataScienceUnit/GroupCommon/GroupUtilities

Después de realizar los cambios que desee en el clon local del repositorio, puede
insertar los cambios en los repositorios del grupo común compartido.

Ejecute los siguientes comandos de Git Bash desde el directorio local


GroupProjectTemplate o GroupUtilities.

Bash

git add .
git commit -m "push from local"
git push

7 Nota

Si es la primera vez que confirma un repositorio de Git, posiblemente deba


configurar los parámetros globales user.name y user.email para poder ejecutar el
comando git commit . Ejecute los siguientes dos comandos:

git config --global user.name <your name>

git config --global user.email <your email address>

Si está confirmando varios repositorios de Git, utilice el mismo nombre y la misma


dirección de correo electrónico en todos ellos. Usar el mismo nombre y la misma
dirección de correo electrónico resulta cómodo al crear paneles de Power BI y
realizar el seguimiento de las actividades de Git en varios repositorios.

Adición de miembros de grupo y configuración


de permisos
Para agregar miembros al grupo:

1. En Azure DevOps, en la página principal del proyecto GroupCommon, seleccione


Configuración del proyecto en el panel de navegación izquierdo.

2. En el panel de navegación izquierdo de Configuración del proyecto, seleccione


Equipos y, a continuación, en la página Equipos, seleccione el equipo
GroupCommon.

3. En la página Perfil de equipo, seleccione Agregar.

4. En el cuadro de diálogo Agregar usuarios y grupos, busque y seleccione los


miembros que desea agregar al grupo y, a continuación, seleccione Guardar
cambios.
Para configurar permisos para los miembros:

1. En el panel de navegación izquierdo Configuración del proyecto, seleccione


Permisos.

2. En la página Permisos, seleccione el grupo al que desea agregar miembros.

3. En la página de ese grupo, seleccione Miembros y, a continuación, seleccione


Agregar.

4. En el cuadro de diálogo Invitar a los miembros, busque y seleccione los miembros


que desea agregar al grupo y, a continuación, seleccione Guardar.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son vínculos a descripciones detalladas de los roles y tareas del proceso de ciencia
de datos en equipo:

Tareas del responsable de equipo en un equipo de ciencia de datos


Tareas del responsable de proyecto en un equipo de ciencia de datos
Tareas de colaboradores individuales del proyecto en un equipo de ciencia de
datos
Tareas del responsable de equipo en el
equipo de proceso de ciencia de datos
en equipo
Artículo • 11/07/2023

En este artículo se describen las tareas que completa un responsable de equipo para su
equipo de ciencia de datos. El objetivo del responsable de equipo es establecer el
entorno de colaboración de equipo que se estandariza en el proceso de ciencia de
datos en equipo (TDSP). Este proceso está diseñado para ayudar a mejorar la
colaboración y el aprendizaje en equipo.

El TDSP es una metodología de ciencia de datos ágil e iterativa para proporcionar de


manera eficiente soluciones de análisis predictivo y aplicaciones inteligentes. El proceso
sintetiza las estructuras y procedimientos recomendados de Microsoft y el sector. El
objetivo es implementar correctamente las iniciativas de ciencia de datos y aprovechar
por completo las ventajas de sus programas de análisis. Para ver un esquema de los
roles del personal y las tareas asociadas de las que se ocupa un equipo de ciencia de
datos que sigue este proceso como estándar, consulte Roles y tareas del proceso de
ciencia de datos en equipo.

Un responsable de equipo administra un equipo que consiste en varios científicos de


datos de la unidad de ciencia de datos de una empresa. Dependiendo del tamaño y de
la estructura de la unidad de ciencia de datos, el administrador del grupo y el
responsable de equipo podrían ser la misma persona o podrían delegar sus tareas a los
suplentes. Pero las tareas en sí no cambian.

En el diagrama siguiente se muestra el flujo de trabajo de las tareas que el responsable


de equipo completa para configurar un entorno de equipo:

1. Cree un proyecto de equipo en la organización del grupo en Azure DevOps.

2. Cambie el nombre del repositorio de equipo predeterminado a TeamUtilities.


3. Cree un nuevo repositorio TeamTemplate en el proyecto de equipo.

4. Importe el contenido de los repositorios GroupUtilities y GroupProjectTemplate


del grupo en los repositorios TeamUtilities y TeamTemplate.

5. Configura el control de seguridad mediante la adición de miembros del equipo y


la configuración de sus permisos.

6. Si se requiere, puede crear datos de equipo y recursos de análisis:

Agregue las utilidades específicas del equipo al repositorio TeamUtilities.


Cree un almacenamiento de Azure File Storage para almacenar los recursos
de datos que puedan ser útiles para todo el equipo.
Monte el almacenamiento de Azure File Storage en la instancia de Data
Science Virtual Machine (DSVM) del responsable de equipo y agréguele los
recursos de datos.

En el siguiente tutorial se explican los pasos en detalle.

7 Nota

En este artículo se utilizan Azure DevOps y DSVM para configurar un entorno de


equipo de TDSP, ya que se explica cómo implementar TDSP en Microsoft. Si el
equipo usa otras plataformas de desarrollo o hospedaje de código, las tareas del
responsable de equipo son las mismas, pero la manera de completarlas puede ser
diferente.

Requisitos previos
En este tutorial se da por supuesto que los siguientes recursos y permisos están
configurados por el administrador de grupo:

La organización de Azure DevOps para la unidad de datos


Los repositorios GroupProjectTemplate y GroupUtilities, rellenados con el
contenido de los repositorios ProjectTemplate y Utilities del equipo de Microsoft
TDSP
Permisos en la cuenta de la organización para que pueda crear proyectos y
repositorios para su equipo

Para poder clonar los repositorios y modificar su contenido en el equipo local o en la


DSVM, o configurar el almacenamiento de Azure File Storage y montarlo en la DSVM,
necesita lo siguiente:
Suscripción a Azure.
Git instalado en la máquina. Si usa una DSVM, GIT está preinstalado. En caso
contrario, consulte el apéndice de plataformas y herramientas.
Si desea usar la DSVM, la DSVM de Windows o Linux creada y configurada en
Azure. Para más información e instrucciones, consulte la documentación de Data
Science Virtual Machine.
Para una DSVM de Windows, debe tener Git Credential Manager (GCM)
instalado en la máquina. En el archivo README.md, desplácese a la sección
Descargar e instalar y haga clic en el instalador más reciente. Descargue el
instalador .exe desde la página del instalador y ejecútelo.
En el caso de una DSVM de Linux, se configura una clave pública SSH en la DSVM
y se agrega en Azure DevOps. Para más información e instrucciones, consulte la
sección acerca de cómo crear una clave pública SSH en el apéndice de
plataformas y herramientas.

Creación de un proyecto de equipo y de los


repositorios
En esta sección, creará los siguientes recursos en la organización de Azure DevOps del
grupo:

El proyecto MyTeam de Azure DevOps


El repositorio TeamTemplate
El Repositorio TeamUtilities

Los nombres especificados para los directorios y repositorios de este tutorial asumen
que su objetivo es establecer un proyecto independiente para su propio equipo dentro
de un grupo de ciencia de datos mayor. Sin embargo, todo el grupo puede elegir
trabajar en un único proyecto creado por el administrador del grupo o el administrador
de la organización. A continuación, todos los equipos de ciencia de datos crean
repositorios en este único proyecto. Este escenario podría ser válido en estos casos:

Un grupo de ciencia de datos pequeño que no tiene varios equipos de ciencia de


datos.
Un grupo de ciencia de datos grande con varios equipos de ciencia de datos que,
sin embargo, desea optimizar la colaboración entre equipos con actividades como
el planeamiento de sprint en el nivel de grupo.

Si los equipos optan por tener los repositorios específicos del equipo en un único
proyecto de grupo, los responsables de equipo deben crear los repositorios con
nombres como <TeamName>Template y <TeamName>Utilities. Por ejemplo:
TeamATemplate y TeamAUtilities.

En cualquier caso, los responsables de equipo deben permitir que los miembros del
equipo sepan qué repositorios de plantillas y utilidades tienen que configurar y clonar.
Los responsables de proyecto deben seguir las tareas del responsable de equipo en un
equipo de ciencia de datos para crear repositorios de proyectos, bien dentro de
proyectos independientes o en un único proyecto.

Creación del proyecto MyTeam


Para crear un proyecto independiente para su equipo:

1. En el explorador web, vaya a la página principal de la organización de Azure


DevOps de su grupo en la dirección URL
https://<nombreDeServidor>/<nombreDeOrganización> y seleccione Nuevo
proyecto.

2. En el cuadro de diálogo Crear proyecto, escriba el nombre del equipo, como


MyTeam, en Nombre de proyecto y, a continuación, seleccione Avanzado.

3. En Control de versiones, seleccione Git y, en Proceso de elemento de trabajo,


seleccione Agile. Seleccione Crear.
Se abre la página Resumen del proyecto de equipo con la dirección URL de la página
https://<nombreDeServidor>/<nombreDeOrganización>/<nombreDeEquipo>.

Cambie el nombre del repositorio de MyTeam


predeterminado a TeamUtilities.
1. En la página Resumen del proyecto de MyTeam, en ¿Por qué servicio quiere
empezar? , seleccione Repositorios.
2. En la página del repositorio MyTeam, seleccione el repositorio MyTeam en la parte
superior de la página y, a continuación, seleccione Administrar repositorios en la
lista desplegable.

3. En la página Configuración del proyecto, seleccione ... junto al repositorio


MyTeam y, después, seleccione Cambiar nombre de repositorio.
4. En el menú emergente Cambiar el nombre del repositorio MyTeam, escriba
TeamUtilities y, después, seleccione Cambiar nombre.

Creación del repositorio TeamTemplate


1. En la página Configuración del repositorio, seleccione Nuevo repositorio.

O bien, seleccione Repositorios en el panel de navegación izquierdo de la página


Resumen del proyecto MyTeam, seleccione un repositorio en la parte superior de
la página y, después, seleccione Nuevo repositorio.
2. En el cuadro de diálogo Crear un nuevo repositorio, asegúrese de que Git esté
seleccionado en Tipo. Escriba TeamTemplate en Nombre del repositorio y, a
continuación, seleccione Crear.

3. Confirme que puede ver los dos repositorios TeamUtilities y TeamTemplate en la


página de configuración del proyecto.

Importación del contenido de los repositorios comunes


del grupo
Para rellenar los repositorios de equipo con el contenido de los repositorios comunes de
grupo configurados por el administrador de grupo:

1. En la página principal del proyecto MyTeam, seleccione Repositorios en el panel


de navegación de la izquierda. Si aparece un mensaje que indica que no se
encuentra la plantilla MyTeam, seleccione el vínculo en De lo contrario, vaya al
repositorio TeamTemplate predeterminado.

Se abre el repositorio predeterminado TeamTemplate.

2. En la página TeamTemplate está vacío, seleccione Importar.

3. En el cuadro de diálogo Importar un repositorio GIT, seleccione Git como Tipo de


origen y escriba la dirección URL del repositorio de plantillas comunes del grupo
en Dirección URL de clonación. La dirección URL es
https://<nombreDeServidor>/<nombreDeOrganización>/_git/<nombreDeRepositori
o>. Por ejemplo:
https://dev.azure.com/DataScienceUnit/GroupCommon/_git/GroupProjectTemplate.

4. Seleccione Import (Importar). El contenido del repositorio de plantillas de grupo se


importa en el repositorio de plantillas de equipo.
5. En la parte superior de la página Repositorios del proyecto, seleccione el
repositorio TeamUtilities.

6. Repita el proceso para importar el contenido del repositorio de utilidades comunes


del grupo, por ejemplo GroupUtilities, en el repositorio TeamUtilities.

Cada uno de los dos repositorios de equipo ahora contiene los archivos del repositorio
común de grupo correspondiente.

Personalización del contenido de los repositorios del


equipo
Si desea personalizar el contenido de los repositorios del equipo para satisfacer las
necesidades específicas del equipo, puede hacerlo ahora. Puede modificar archivos,
cambiar la estructura de directorios o agregar archivos y carpetas.

Para modificar, cargar o crear archivos o carpetas directamente en Azure DevOps:

1. En la página Summary del proyecto MyTeam, seleccione Repositorios.

2. En la parte superior de la página, seleccione el repositorio que desea personalizar.

3. En la estructura de directorios del repositorio, vaya a la carpeta o al archivo que


desee cambiar.

Para crear carpetas o archivos nuevos, seleccione la flecha situada junto a


Nuevo.
Para cargar archivos, seleccione Cargar archivos.

Para editar los archivos existentes, desplácese hasta el archivo y, a


continuación, seleccione Editar.
4. Después de agregar o editar archivos, seleccione Confirmar.

Para trabajar con repositorios en el equipo local o DSVM, primero copie o clone los
repositorios en el equipo local y, después, confirme e inserte los cambios en los
repositorios compartidos del equipo.

Para clonar repositorios:

1. En la página Resumen del proyecto MyTeam, seleccione Repositorios y, en la parte


superior de la página, seleccione el repositorio que desea clonar.

2. En la página de repositorios, seleccione Clonar en la esquina superior derecha.

3. En el cuadro de diálogo Clonar repositorio, en Línea de comandos, seleccione


HTTPS para una conexión HTTP o SSH para una conexión SSH y copie la dirección
URL de clonación en el portapapeles.
4. En la máquina local, cree los directorios siguientes:

Para Windows: C:\GitRepos\MyTeam


Para Linux, $home/GitRepos/MyTeam

5. Cambie al directorio que ha creado.

6. En Git Bash, ejecute el comando git clone <clone URL> , donde <clone URL> es la
dirección URL que ha copiado del cuadro de diálogo Clonar.

Por ejemplo, use uno de los siguientes comandos para clonar el repositorio
TeamUtilities en el directorio MyTeam en el equipo local.

Conexión HTTPS:

Bash

git clone
https://DataScienceUnit@dev.azure.com/DataScienceUnit/MyTeam/_git/TeamU
tilities

Conexión SSH:

Bash

git clone git@ssh.dev.azure.com:v3/DataScienceUnit/MyTeam/TeamUtilities

Después de realizar los cambios que desee en el clon local del repositorio, confirme e
inserte los cambios en los repositorios del equipo compartido.
Ejecute los siguientes comandos de Git Bash desde el directorio local
GitRepos\MyTeam\TeamTemplate o GitRepos\MyTeam\TeamUtilities.

Bash

git add .
git commit -m "push from local"
git push

7 Nota

Si es la primera vez que confirma un repositorio de Git, posiblemente deba


configurar los parámetros globales user.name y user.email para poder ejecutar el
comando git commit . Ejecute los siguientes dos comandos:

git config --global user.name <your name>

git config --global user.email <your email address>

Si está confirmando varios repositorios de Git, utilice el mismo nombre y la misma


dirección de correo electrónico en todos ellos. Usar el mismo nombre y la misma
dirección de correo electrónico resulta cómodo al crear paneles de Power BI y
realizar el seguimiento de las actividades de Git en varios repositorios.

Adición de miembros de equipo y


configuración de permisos
Para agregar miembros al equipo:

1. En Azure DevOps, en la página principal del proyecto MyTeam, seleccione


Configuración del proyecto en el panel de navegación izquierdo.

2. En el panel de navegación izquierdo de Configuración del proyecto, seleccione


Equipos y, a continuación, en la página Equipos, seleccione el equipo MyTeam.
3. En la página Perfil de equipo, seleccione Agregar.

4. En el cuadro de diálogo Agregar usuarios y grupos, busque y seleccione los


miembros que desea agregar al grupo y, a continuación, seleccione Guardar
cambios.

Para configurar permisos para los miembros de equipo:

1. En el panel de navegación izquierdo Configuración del proyecto, seleccione


Permisos.

2. En la página Permisos, seleccione el grupo al que desea agregar miembros.


3. En la página de ese grupo, seleccione Miembros y, a continuación, seleccione
Agregar.

4. En el cuadro de diálogo Invitar a los miembros, busque y seleccione los miembros


que desea agregar al grupo y, a continuación, seleccione Guardar.

Creación de datos de equipo y recursos de


análisis
Este paso es opcional, pero compartir los recursos de datos y de análisis con todo el
equipo tiene ventajas de rendimiento y costo. Los miembros del equipo pueden ejecutar
sus proyectos en los recursos compartidos, ahorrar en los presupuestos y colaborar de
forma más eficaz. Puede crear un almacenamiento de Azure File Storage y montarlo en
la DSVM para compartirlo con los miembros del equipo.

Para obtener información sobre cómo compartir otros recursos con su equipo, como
clústeres de Azure HDInsight Spark, consulte Plataformas y herramientas. En este tema
se proporcionan instrucciones desde una perspectiva de ciencia de datos sobre la
selección de recursos que son adecuados para sus necesidades, junto con vínculos a
páginas de productos y otros tutoriales interesantes y útiles.

7 Nota

Para evitar la transmisión de datos entre centros de datos, lo que podría ser lento y
costoso, asegúrese de que el grupo de recursos, la cuenta de almacenamiento y la
DSVM de Azure estén hospedados en la misma región de Azure.

Creación de almacenamiento de Azure File Storage


1. Ejecute el script siguiente para crear un almacenamiento de Azure File Storage
para los recursos de datos que son útiles para todo el equipo. El script le solicita
información de su suscripción de Azure, por lo que debe estar preparado para
escribirla.

En una máquina Windows, ejecute el script desde el símbolo del sistema de


PowerShell:

PowerShell

wget "https://raw.githubusercontent.com/Azure/Azure-
MachineLearning-DataScience/master/Misc/TDSP/CreateFileShare.ps1"
-outfile "CreateFileShare.ps1"
.\CreateFileShare.ps1

En una máquina Linux, ejecute el script desde el shell de Linux:

shell

wget "https://raw.githubusercontent.com/Azure/Azure-
MachineLearning-DataScience/master/Misc/TDSP/CreateFileShare.sh"
bash CreateFileShare.sh

2. Inicie sesión en la cuenta de Microsoft Azure y, si es necesario, seleccione la


suscripción que desea usar.

3. Seleccione la cuenta de almacenamiento que usará o cree una nueva en la


suscripción seleccionada. Puede usar caracteres en minúsculas, números y guiones
para el nombre de Azure File Storage.

4. Para facilitar el montaje y el uso compartido del almacenamiento, presione Entrar o


escriba Y para guardar la información de Azure File Storage en un archivo de texto
en el directorio actual. Puede proteger este archivo de texto en el repositorio
TeamTemplate, lo idean en Docs\DataDictionaries, por lo que todos los proyectos
del equipo pueden acceder a él. También necesitará la información del archivo
para montar el almacenamiento de Azure File Storage en Azure DSVM en la
sección siguiente.

Montaje de Azure File Storage en la máquina local o


DSVM
1. Para montar el almacenamiento de Azure File Storage en el equipo local o DSVM,
utilice el script siguiente.
En una máquina Windows, ejecute el script desde el símbolo del sistema de
PowerShell:

PowerShell

wget "https://raw.githubusercontent.com/Azure/Azure-
MachineLearning-DataScience/master/Misc/TDSP/AttachFileShare.ps1"
-outfile "AttachFileShare.ps1"
.\AttachFileShare.ps1

En una máquina Linux, ejecute el script desde el shell de Linux:

shell

wget "https://raw.githubusercontent.com/Azure/Azure-
MachineLearning-DataScience/master/Misc/TDSP/AttachFileShare.sh"
bash AttachFileShare.sh

2. Presione Entrar o escriba Y para continuar, si guardó un archivo de información de


Azure File Storage en el paso anterior. Escriba la ruta de acceso completa y el
nombre del archivo que ha creado.

Si no tiene un archivo de información de Azure File Storage, escriba n y siga las


instrucciones para especificar la suscripción, la cuenta de Azure Storage y la
información de Azure File Storage.

3. Escriba el nombre de la unidad local o TDSP en donde se va a montar el recurso


compartido de archivos. En la pantalla se muestra una lista de nombres de unidad
existentes. Indique un nombre de unidad que no todavía no exista.

4. Confirme que la nueva unidad y el almacenamiento estén montados


correctamente en la máquina.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Pasos siguientes
Estos son vínculos a descripciones detalladas de los roles y tareas definidas por el
proceso de ciencia de datos en equipo:

Tareas del administrador de grupo en un equipo de ciencia de datos


Tareas del responsable de proyecto en un equipo de ciencia de datos
Tareas de colaboradores individuales del proyecto en un equipo de ciencia de
datos
Tareas para el líder del proyecto en el
proceso de ciencia de datos en equipo
Artículo • 11/07/2023

En este artículo se describen las tareas que un responsable de proyecto debe realizar
para configurar un repositorio para su equipo de proyecto en el proceso de ciencia de
datos en equipo (TDSP). El proceso de ciencia de datos en equipo es una plataforma
desarrollada por Microsoft que proporciona una secuencia estructurada de actividades
para ejecutar de forma eficaz soluciones de análisis predictivos y basadas en la nube.
Este proceso está diseñado para ayudar a mejorar la colaboración y el aprendizaje en
equipo. Para ver un esquema de los roles del personal y las tareas asociadas de las que
se ocupa un equipo de ciencia de datos que sigue este proceso como estándar, consulte
Roles y tareas del proceso de ciencia de datos en equipo.

Un responsable de proyecto administra las actividades diarias de los científicos de datos


en un proyecto de ciencia de datos de este proceso. En el diagrama siguiente se
muestra el flujo de trabajo de las tareas del responsable de proyecto:

Esta tutorial abarca lo siguiente: Paso 1: Creación de un repositorio del proyecto, y Paso
2: Inicialización del repositorio de proyectos desde el repositorio ProjectTemplate del
equipo.

Para el Paso 3: Creación del elemento de trabajo Feature para el proyecto, y el Paso 4:
Incorporación de casos a las fases del proyecto, consulte Desarrollo de Agile de
proyectos de ciencia de datos.

Para el paso 5: Creación y personalización de los recursos de almacenamiento y análisis,


y uso compartido de estos, consulte, si es necesario, Creación de datos de equipo y
recursos de análisis.

Para el Paso 6: Configuración del control de seguridad del repositorio del proyecto,
consulte Adición de miembros de equipo y configuración de permisos.
7 Nota

En este artículo se utiliza Azure Repos para configurar un proyecto de TDSP, ya que
se explica cómo implementar TDSP en Microsoft. Si el equipo usa otras plataformas
de hospedaje de código, las tareas del responsable de proyecto son las mismas,
pero la manera de realizarlas puede ser diferente.

Requisitos previos
En este tutorial se da por supuesto que el administrador del grupo y el responsable de
equipo han configurado los siguientes recursos y permisos:

La organización de Azure DevOps para la unidad de datos


Un proyecto de equipo para el equipo de ciencia de datos
Plantillas de equipo y repositorios de utilidades
Permisos en la cuenta de la organización para que pueda crear y editar
repositorios para el proyecto

Para clonar los repositorios y modificar el contenido en la máquina local o en Data


Science Virtual Machine (DSVM), o configurar el almacenamiento de Azure File Storage y
montarlo en la DSVM, también necesita tener en cuenta esta lista de comprobación:

Suscripción a Azure.
Git instalado en la máquina. Si usa una DSVM, GIT está preinstalado. En caso
contrario, consulte el apéndice de plataformas y herramientas.
Si desea usar la DSVM, la DSVM de Windows o Linux creada y configurada en
Azure. Para más información e instrucciones, consulte la documentación de Data
Science Virtual Machine.
Para una DSVM de Windows, debe tener Git Credential Manager (GCM)
instalado en la máquina. En el archivo README.md, desplácese a la sección
Descargar e instalar y haga clic en el instalador más reciente. Descargue el
instalador .exe desde la página del instalador y ejecútelo.
En el caso de una DSVM de Linux, se configura una clave pública SSH en la DSVM
y se agrega en Azure DevOps. Para más información e instrucciones, consulte la
sección acerca de cómo crear una clave pública SSH en el apéndice de
plataformas y herramientas.

Creación de un repositorio de proyecto en el


proyecto de equipo
Para crear un repositorio de proyecto en el proyecto MyTeam del equipo:

1. Vaya a la página Resumen del proyecto del equipo en https://<nombre del


servidor>/<nombre de la organización>/<nombre de equipo>, por ejemplo,
https://dev.azure.com/DataScienceUnit/MyTeam, y seleccione Repositorios en el
panel de navegación izquierdo.

2. Seleccione el nombre del repositorio en la parte superior de la página y, a


continuación, seleccione Nuevo repositorio en la lista desplegable.

3. En el cuadro de diálogo Crear un nuevo repositorio, asegúrese de que Git esté


seleccionado en Tipo. Escriba DSProject1 en Nombre del repositorio y, a
continuación, seleccione Crear.
4. Confirme que puede ver el nuevo repositorio DSProject1 en la página de
configuración del proyecto.

Importación de la plantilla de equipo en el


repositorio del proyecto
Si desea rellenar el repositorio del proyecto con el contenido del repositorio de
plantillas del equipo:
1. En la página Resumen del proyecto de equipo, seleccione Repositorios en el panel
de navegación de la izquierda.

2. Seleccione el nombre del repositorio en la parte superior de la página y seleccione


DSProject1 en la lista desplegable.

3. En la página DSProject1 está vacío, seleccione Importar.

4. En el cuadro de diálogo Importar un repositorio GIT, seleccione Git como Tipo de


origen y escriba la dirección URL del repositorio TeamTemplate en Dirección URL
de clonación. La dirección URL es https://<nombre del servidor>/<nombre de la
organización>/<nombre de equipo>/_git/<nombre de repositorio de plantillas de
equipo>. Por ejemplo:
https://dev.azure.com/DataScienceUnit/MyTeam/_git/TeamTemplate.

5. Seleccione Import (Importar). El contenido del repositorio de plantillas del equipo


se importa en el repositorio de proyectos.
Si tiene que personalizar el contenido del repositorio de proyectos para satisfacer las
necesidades específicas de su proyecto, puede agregar, eliminar o modificar archivos y
carpetas del repositorio. Puede trabajar directamente en Azure Repos, o clonar el
repositorio en la máquina local o en DSVM, realizar cambios y confirmar e instalar las
actualizaciones en el repositorio del proyecto compartido. Siga las instrucciones que se
encuentran en Personalización del contenido de los repositorios del equipo.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Estos son vínculos a descripciones detalladas de los roles y tareas definidas por el
proceso de ciencia de datos en equipo:

Tareas del administrador de grupo en un equipo de ciencia de datos


Tareas del responsable de equipo en un equipo de ciencia de datos
Tareas de colaboradores individuales en un equipo de ciencia de datos
Tareas para un colaborador individual
en el proceso de ciencia de datos en
equipos
Artículo • 11/07/2023

En este tema se describen las tareas que realiza un colaborador individual para
configurar un proyecto en el proceso de ciencia de datos en equipo (TDSP). El objetivo
es trabajar en un entorno de colaboración en equipo que se estandariza en el proceso
de ciencia de datos en equipo (TDSP). Este proceso está diseñado para ayudar a mejorar
la colaboración y el aprendizaje en equipo. En Roles y tareas del proceso de ciencia de
datos en equipo dispone de un esquema de los roles profesionales y las tareas
asociadas de las que se ocupa un equipo de ciencia de datos que sigue el TDSP como
estándar.

En el diagrama siguiente se muestran las tareas que los colaboradores individuales del
proyecto (científicos de datos) realizan para configurar su entorno de equipo. Para
obtener instrucciones sobre cómo ejecutar un proyecto de ciencia de datos en el
proceso de ciencia de datos en equipo, consulte Ejecución de proyectos de ciencia de
datos.

ProjectRepository es el repositorio que el equipo del proyecto mantiene para


compartir plantillas y recursos del proyecto.
TeamUtilities es el repositorio de utilidades que el equipo mantiene
específicamente para su uso propio.
GroupUtilities es el repositorio que el grupo mantiene para compartir utilidades
con todo el grupo.

7 Nota

En este artículo se utiliza Azure Repos y una instancia de Data Science Virtual
Machine (DSVM) para configurar un entorno de TDSP, ya que se explica cómo
implementar TDSP en Microsoft. Si el equipo usa otras plataformas de desarrollo u
hospedaje de código, las tareas del colaborador individual serán las mismas, pero
la manera de realizarlas puede ser diferente.

Requisitos previos
En este tutorial se da por supuesto que los siguientes recursos y permisos están
configurados por el administrador de grupo, el responsable de equipo y el responsable
de proyecto:

La organización de Azure DevOps para la unidad de ciencia de datos


Un repositorio de proyecto configurado por el responsable de proyecto para
compartir plantillas y recursos de proyecto
Los repositorios GroupUtilities y TeamUtilities configurados por el administrador
de grupo y el responsable de equipo, si procede
Almacenamiento de archivos de Azure configurado para los recursos compartidos
de su equipo o proyecto, si procede
Permisos para clonar y volver a enviar al repositorio del proyecto

Para clonar los repositorios y modificar su contenido en la máquina local o en la DSVM,


o montar el almacenamiento de archivos de Azure en la DSVM, debe tener en cuenta la
lista siguiente:

Suscripción a Azure.
Git instalado en la máquina. Si usa una DSVM, GIT está preinstalado. En caso
contrario, consulte el apéndice de plataformas y herramientas.
Si desea usar la DSVM, la DSVM de Windows o Linux creada y configurada en
Azure. Para más información e instrucciones, consulte la documentación de Data
Science Virtual Machine.
Para una DSVM de Windows, debe tener Git Credential Manager (GCM)
instalado en la máquina. En el archivo README.md, desplácese a la sección
Descargar e instalar y haga clic en el instalador más reciente. Descargue el
instalador .exe desde la página del instalador y ejecútelo.
En el caso de una DSVM de Linux, se configura una clave pública SSH en la DSVM
y se agrega en Azure DevOps. Para más información e instrucciones, consulte la
sección acerca de cómo crear una clave pública SSH en el apéndice de
plataformas y herramientas.
La información de Azure Files Storage para cualquier almacenamiento de archivos
de Azure que necesite montar en la DSVM.
Clonación de repositorios
Para trabajar con repositorios de forma local e insertar los cambios en los repositorios
compartidos de proyecto y de equipo, primero debe copiar o clonar los repositorios en
la máquina local.

1. En Azure DevOps, vaya a la página Resumen del proyecto de equipo en


https://<nombreDeServidor>/<nombreDeOrganización>/<nombreDeEquipo>, por
ejemplo, https://dev.azure.com/DataScienceUnit/MyTeam.

2. Seleccione Repos en el panel de navegación izquierdo y, en la parte superior de la


página, seleccione el repositorio que desea clonar.

3. En la página de repositorios, seleccione Clonar en la esquina superior derecha.

4. En el cuadro de diálogo Clonar repositorio, seleccione HTTPS para una conexión


HTTP o SSH para una conexión SSH y copie la dirección URL de clonación en la
Línea de comandos del Portapapeles.

5. En la máquina local o en la DSVM, cree los directorios siguientes:

Para Windows: C:\GitRepos


Para Linux: $home/GitRepos

6. Cambie al directorio que ha creado.

7. En Git Bash, ejecute el comando git clone <clone URL> para cada repositorio que
quiera clonar.
Por ejemplo, el siguiente comando clona el repositorio TeamUtilities en el
directorio MyTeam en la máquina local.

Conexión HTTPS:

Bash

git clone
https://DataScienceUnit@dev.azure.com/DataScienceUnit/MyTeam/_git/TeamU
tilities

Conexión SSH:

Bash

git clone git@ssh.dev.azure.com:v3/DataScienceUnit/MyTeam/TeamUtilities

8. Confirme que puede ver las carpetas de los repositorios clonados en el directorio
del proyecto local.

Montaje del almacenamiento de archivos de


Azure en la DSVM
Si su equipo o proyecto tiene recursos compartidos en el almacenamiento de archivos
de Azure, monte el almacenamiento de archivos en la máquina local o en la DSVM. Siga
las instrucciones de Montaje de Azure File Storage en la máquina local o DSVM.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Pasos siguientes
Estos son vínculos a descripciones detalladas de los roles y tareas definidas por el
proceso de ciencia de datos en equipo:

Tareas del administrador de grupo en un equipo de ciencia de datos


Tareas del responsable de equipo en un equipo de ciencia de datos
Tareas del responsable de proyecto en un equipo de ciencia de datos
Desarrollo de Agile de proyectos de
ciencia de datos
Artículo • 11/07/2023

En este documento describe la forma en que los desarrolladores pueden ejecutar un


proyecto de ciencia de datos de forma sistemática, con control de versiones y en
colaboración dentro de un equipo de proyecto mediante el Proceso de ciencia de los
datos en equipos (TDSP). El proceso de ciencia de datos en equipo es una plataforma
desarrollada por Microsoft que proporciona una secuencia estructurada de actividades
para ejecutar de forma eficaz soluciones de análisis predictivos y basadas en la nube.
Consulte Roles y tareas del proceso de ciencia de datos en equipo para ver un esquema
de los roles y las tareas de las que se ocupa un equipo de ciencia de datos que sigue
este proceso como estándar.

En este artículo se incluyen instrucciones acerca de cómo:

Realizar el planeamiento de sprint para los elementos de trabajo implicados en un


proyecto.
Agregar elementos de trabajo a los sprints.
Crear y usar una plantilla de elemento de trabajo derivada de Agile que se alinee
específicamente con las fases del ciclo de vida del proceso de ciencia de datos en
equipo.

En las instrucciones siguientes se detallan los pasos necesarios para configurar un


entorno de equipo de proceso de ciencia de datos en equipo (TDSP) mediante Azure
Boards y Azure Repos en Azure DevOps. Las instrucciones usan Azure DevOps porque
así es cómo se implementa TDSP en Microsoft. Si su grupo usa una plataforma de
hospedaje de código diferente, las tareas del responsable de equipo no suelen cambiar,
pero la forma de realizar las tareas es distinta. Por ejemplo, la vinculación de un
elemento de trabajo con una rama de Git podría no ser igual con GitHub que con Azure
Repos.

En la siguiente ilustración se muestra un flujo de trabajo habitual de planeación,


codificación y control de origen de sprint para un proyecto de ciencia de datos:
Tipos de elementos de trabajo
En la plataforma de planeamiento de sprint de TDSP, hay cuatro tipos de elementos de
trabajo usados frecuentemente: Características, Casos de usuario, Tareas y Errores. El
trabajo pendiente de todos los elementos de trabajo se encuentra en el nivel de
proyecto, no en el nivel del repositorio de Git.

Las siguientes son las definiciones de los tipos de elementos de trabajo:

Característica: una característica se corresponde a una interacción de proyecto. Las


diferentes interacciones con un cliente son distintas características, y es mejor
considerar las diversas fases de un proyecto como características diferentes. Si
elige un esquema como <ClientName>-<EngagementName> para denominar las
características, podrá reconocer fácilmente el contexto del proyecto y la
interacción mediante los propios nombres.

Caso de usuario: los casos de usuario son elementos de trabajo necesarios para
completar íntegramente una característica. Los siguientes son algunos ejemplos de
casos de usuario:
Obtener datos
Exploración de datos
Generación de características
Creación de modelos
Modelos operativos
Reciclaje de modelos

Tarea: las tareas son elementos de trabajo asignables que deben realizarse para
completar un caso de usuario específico. Por ejemplo, las tareas del caso de
usuario Obtener datos podrían ser:
Obtener credenciales de SQL Server
Carga de datos en Azure Synapse Analytics
Error: los errores son problemas en el código existente o en los documentos que
se deben corregir para completar una tarea. Si los errores se deben a que faltan
elementos de trabajo, pueden escalarse para convertirlos en casos de usuario o
tareas.

Los científicos de datos pueden sentirse más cómodos si usan una plantilla de Agile que
reemplace las características, casos de usuario y tareas por fases y subfases del ciclo de
vida de TDSP. Para crear una plantilla derivada de Agile que se alinee específicamente
con las fases del ciclo de vida del proceso de ciencia de datos en equipo, consulte Uso
de una plantilla de trabajo de TDSP de Agile.

7 Nota

El proceso de ciencia de datos en equipo toma prestados los conceptos de


características, casos de usuario, tareas y errores de la administración de código de
software (SCM). Los conceptos del TDSP pueden diferir ligeramente de sus
definiciones de SCM convencionales.

Planeamiento de sprints
Muchos científicos de datos interactúan con varios proyectos, que pueden tardar meses
en completarse y progresan a distinto ritmo. El planeamiento de sprint es útil para la
priorización del proyecto y el planeamiento y asignación de recursos. En Azure Boards,
puede crear, administrar y realizar el seguimiento fácilmente de los elementos de
trabajo de sus proyectos, y llevar a cabo el planeamiento de sprints para garantizar que
los proyectos avanzan de la forma prevista.

Para más información sobre el planeamiento de sprints, consulte Sprints de Scrum .

Para más información sobre el planeamiento de sprints en Azure Boards, consulte


Asignación de elementos de trabajo pendiente a un sprint.

Adición de una característica al trabajo


pendiente
Después de crear el proyecto y el repositorio de código del proyecto, puede agregar
una característica al trabajo pendiente para representar el trabajo del proyecto.

1. En la página del proyecto, seleccione Paneles>Trabajos pendientes en el panel de


navegación de la izquierda.
2. En la pestaña Trabajo pendiente, si el tipo de elemento de trabajo de la barra
superior es Casos, en la lista desplegable seleccione Características. A
continuación, seleccione Nuevo elemento de trabajo.

3. Escriba un título para la característica, normalmente el nombre del proyecto y, a


continuación, seleccione Agregar a la parte superior.

4. En la lista Trabajo pendiente, seleccione y abra la nueva característica. Rellene la


descripción, asigne un miembro del equipo y establezca los parámetros de
planeamiento.

También puede vincular la característica al repositorio de código de Azure Repos


del proyecto seleccionando Agregar vínculo en la sección Desarrollo.

Después de editar la característica, seleccione Guardar y cerrar.


Adición de un caso de usuario a la
característica
En la característica, puede agregar casos de usuario para describir los pasos principales
necesarios para completar el proyecto.

Para agregar un nuevo caso de usuario a una característica:

1. En la pestaña Trabajo pendiente, seleccione + a la izquierda de la característica.

2. Asigne un título al caso de usuario y edite detalles como la asignación, el estado, la


descripción, los comentarios, el planeamiento y la prioridad.

También puede vincular el caso de usuario a una rama del repositorio de código
de Azure Repos del proyecto seleccionando Agregar vínculo en la sección
Desarrollo. Seleccione el repositorio y la rama a la que desea vincular el elemento
de trabajo y, a continuación, seleccione Aceptar.
3. Cuando haya terminado de editar el caso de usuario, seleccione Guardar y cerrar.

Adición de una tarea a un caso de usuario


Las tareas son pasos detallados específicos necesarios para completar cada caso de
usuario. Una vez completadas todas las tareas de un caso de usuario, se debe completar
también el caso.

Para agregar una tarea a un caso de usuario, seleccione + junto al elemento de caso de
usuario y seleccione Tarea. Rellene el título y otra información de la tarea.

Una vez creadas las características, los casos de usuario y las tareas, puede verlo todo en
las vistas Trabajos pendientes o Paneles para realizar el seguimiento de su estado.
Uso de una plantilla de trabajo de TDSP de
Agile
Los científicos de datos pueden sentirse más cómodos si usan una plantilla de Agile que
reemplace las características, casos de usuario y tareas por fases y subfases del ciclo de
vida de TDSP. En Azure Boards, puede crear una plantilla derivada de Agile que use
fases del ciclo de vida de TDSP para crear y realizar el seguimiento de los elementos de
trabajo. Los pasos siguientes describen cómo configurar una plantilla de proceso de
Agile específica de ciencia de datos y cómo crear elementos de trabajo de ciencia de
datos basados en la plantilla.

Configuración de una plantilla de proceso de ciencia de


datos de Agile
1. En la página principal de la organización de Azure DevOps, seleccione
Configuración de la organización en el panel de navegación izquierdo.

2. En el panel de navegación izquierdo Configuración de la organización, en


Paneles, seleccione Proceso.
3. En el panel Todos los procesos, seleccione ... junto a Agile y, a continuación,
seleccione Crear proceso heredado.

4. En el cuadro de diálogo Crear proceso heredado desde Agile, escriba el nombre


AgileDataScienceProcess y seleccione Crear proceso.
5. En Todos los procesos, seleccione el nuevo proceso AgileDataScienceProcess.

6. En la pestaña Tipos de elementos de trabajo, deshabilite Epopeya, Característica,


Caso de usuario y Tarea, para lo que debe seleccionar ... junto a cada elemento y,
a continuación, seleccionar Deshabilitar.

7. En Todos los procesos, seleccione la pestaña Niveles de trabajo pendiente. En


Trabajos pendientes en cartera, seleccione ... junto a Epopeya (deshabilitado) y, a
continuación, seleccione Editar/Cambiar nombre.

8. En el cuadro de diálogo Editar nivel de trabajo pendiente:


a. En Nombre, reemplace Epopeya por Proyectos de TDSP.
b. En Tipos de elementos de trabajo en este nivel de trabajo pendiente,
seleccione Nuevo tipo de elemento de trabajo, escriba Proyecto de TDSP y
seleccione Agregar.
c. En Tipo de elemento de trabajo predeterminado, seleccione Proyecto de TDSP
en el menú desplegable.
d. Seleccione Guardar.
9. Siga los mismos pasos para cambiar el nombre de Características por Fases de
TDSP y agregue los siguientes nuevos tipos de elementos de trabajo:

Conocimiento del negocio


Adquisición de datos
Modelado
Implementación

10. En Trabajo pendiente de requisito, cambie el nombre de Casos a Subfases de


TDSP, agregue el nuevo tipo de elemento de trabajo Subfase de TDSP y establezca
el tipo de elemento de trabajo predeterminado en Subfase de TDSP.

11. En Iteración de trabajo pendiente, agregue el nuevo tipo de elemento de trabajo


Tarea de TDSP y establézcalo como tipo de elemento de trabajo predeterminado.

Después de completar los pasos, los niveles de trabajo pendiente deberían tener el
aspecto siguiente:
Creación de elemento de trabajo de proceso de ciencia
de datos de Agile
Puede usar la plantilla de proceso de ciencia de datos para crear proyectos de TDSP y
realizar el seguimiento de los elementos de trabajo que corresponden a fases del ciclo
de vida de TDSP.

1. En la página principal de la organización de Azure DevOps, seleccione Nuevo


proyecto.

2. En el cuadro de diálogo Crear proyecto nuevo, asigne un nombre al proyecto y, a


continuación, seleccione Opciones avanzadas.

3. En Proceso de elemento de trabajo, seleccione AgileDataScienceProcess en el


menú desplegable y, a continuación, seleccione Crear.
4. En el nuevo proyecto, seleccione Paneles>Trabajos pendientes en el panel de
navegación de la izquierda.

5. Para que los proyectos de TDSP sean visibles, seleccione el icono de Definir la
configuración del equipo. En la pantalla Configuración, active la casilla Proyectos
de TDSP y, a continuación, seleccione Guardar y cerrar.
6. Para crear un proyecto de TDSP específico de ciencia de datos, seleccione
Proyectos de TDSP en la barra superior y, a continuación, seleccione Nuevo
elemento de trabajo.

7. En el menú emergente, asigne un nombre al elemento de trabajo del proyecto de


TDSP y seleccione Agregar a la parte superior.

8. Para agregar un elemento de trabajo en el proyecto de TDSP, seleccione + junto al


proyecto y, a continuación, seleccione el tipo de elemento de trabajo que desea
crear.
9. Rellene los detalles en el nuevo elemento de trabajo y seleccione Guardar y cerrar.

10. Siga seleccionando + junto a los elementos de trabajo para agregar nuevas fases,
subfases y tareas de TDSP.

A continuación se muestra un ejemplo del aspecto que deberían tener los elementos de
trabajo del proyecto de ciencia de datos en la vista Trabajos pendientes:

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Pasos siguientes
En Codificación colaborativa con GIT se describe cómo desarrollar código
colaborativo para proyectos de ciencia de datos con Git como marco de desarrollo
de código compartido y cómo vincular estas actividades de codificación al trabajo
planeado con el proceso de Agile.

Recursos adicionales sobre procesos de Agile:

Proceso de Agile

Flujo de trabajo y tipos de elemento de trabajo de procesos de Agile

Recursos relacionados
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Aprendizaje automático a escala
Codificación colaborativa con GIT
Artículo • 11/07/2023

En este artículo se describe cómo usar Git como el marco de desarrollo de código de
colaboración para los proyectos de ciencia de datos. En el artículo se describe cómo
vincular código de Azure Repos a elementos de trabajo de Agile Development en Azure
Boards, cómo realizar revisiones de código y cómo crear y combinar solicitudes de
incorporación de cambios.

Vinculación de un elemento de trabajo a una


rama de Azure Repos
Azure DevOps proporciona una manera cómoda de conectar un caso de usuario o un
elemento de trabajo de tareas de Azure Boards con una rama del repositorio Git de
Azure Repos. Puede vincular el caso de usuario o la tarea directamente al código
asociado.

Para conectar un elemento de trabajo a una nueva rama, seleccione el botón de puntos
suspensivos ( ... ) de Acciones junto al elemento de trabajo y, en el menú contextual,
desplácese a y seleccione Nueva rama.

En el cuadro de diálogo Crear una rama, proporcione el nombre de la nueva rama, el


repositorio Git de Azure Repos de base y la rama. El repositorio de base debe estar en el
mismo proyecto de Azure DevOps que el elemento de trabajo. La rama base puede ser
cualquier rama existente. Seleccione Crear rama.
También puede crear una nueva rama con el siguiente comando de bash de Git en
Windows o Linux:

Bash

git checkout -b <new branch name> <base branch name>

Si no especifica un valor para <base branch name> (nombre de rama de base), la nueva
rama se basa en main .

Para cambiar a la rama de trabajo, ejecute el siguiente comando:

Bash

git checkout <working branch name>

Después de cambiar a la rama de trabajo, puede empezar a desarrollar código o


artefactos de documentación para completar el elemento de trabajo. La ejecución de
git checkout main le devuelve a la rama main .

Un procedimiento recomendado es crear una rama de Git para cada elemento de


trabajo del caso de usuario. A continuación, para cada elemento de trabajo de la tarea,
puede crear una rama basada en la rama del caso de usuario. Organice las ramas en una
jerarquía que se corresponda con la relación entre el caso de usuario y la tarea cuando
tenga varias personas trabajando en casos de usuario diferentes para el mismo proyecto
o en tareas diferentes para el mismo caso de usuario. Puede minimizar los conflictos si
cada miembro del equipo trabaja en una rama diferente o en código u otros artefactos
diferentes al compartir una rama.

En la siguiente imagen se muestra la estrategia de bifurcación recomendada para el


proceso de ciencia de datos en equipo. Es posible que no necesite tantas ramas como
se muestra aquí, especialmente cuando solo una o dos personas trabajan en un
proyecto o cuando solo una persona trabaja en todas las tareas de un caso de usuario.
No obstante, separar la rama de desarrollo de la rama principal siempre es una buena
práctica y puede ayudar a evitar que las actividades de desarrollo interrumpan la rama
de versión. Encontrará una descripción completa del modelo de ramas de Git en Un
modelo correcto de ramas de Git .
También puede vincular un elemento de trabajo a una rama existente. En la página
Detalles de un elemento de trabajo, seleccione Agregar vínculo. Después, seleccione
una rama existente a la que vincular el elemento de trabajo y seleccione Aceptar.
Trabajo en la rama y confirmación de los
cambios
Después de realizar un cambio en el elemento de trabajo, como agregar un archivo de
script de R a la rama script de la máquina local, puede confirmar el cambio desde la
rama local a la rama de trabajo ascendente mediante los siguientes comandos de bash
de Git:

Bash

git status
git add .
git commit -m "added an R script file"
git push origin script
Creación de una solicitud de incorporación de
cambios
Después de una o varias confirmaciones y envíos de cambios, cuando esté listo para
combinar la rama de trabajo actual en su rama de base, puede crear y enviar una
solicitud de incorporación de cambios en Azure Repos.

En la página principal del proyecto de Azure DevOps, seleccione Repos>Solicitudes de


incorporación de cambios en el panel de navegación izquierdo. A continuación,
seleccione uno de los botones Nueva solicitud de incorporación de cambios o el
vínculo Crear una solicitud de incorporación de cambios.
En la pantalla Nueva solicitud de incorporación de cambios, si es necesario, vaya al
repositorio de Git y a la rama en la que desea combinar los cambios. Agregue o cambie
cualquier otra información que desee. En Revisores, agregue los nombres de los
revisores y, a continuación, seleccione Crear.

Revisión y combinación
Una vez que se crea la solicitud de incorporación de cambios, los revisores reciben una
notificación por correo electrónico para revisar dicha solicitud. Los revisores prueban si
los cambios funcionan y comprueban los cambios con el solicitante si es posible. Los
revisores pueden realizar comentarios, solicitar cambios y aprobar o rechazar la solicitud
de incorporación de cambios en función de su evaluación.

Una vez que los revisores aprueban los cambios, usted u otra persona con permisos de
combinación pueden combinar la rama de trabajo en su rama de base. Seleccione
Completado y, a continuación, seleccione Completar combinación en el cuadro de
diálogo Completar solicitud de incorporación de cambios. Puede optar por eliminar la
rama de trabajo una vez combinada.
Confirme que la solicitud está marcada como COMPLETADO.

Cuando vuelva a Repos en el panel de navegación izquierdo, puede ver que ha


cambiado a la rama principal puesto que se eliminó la rama script .
También puede utilizar los comandos de bash de Git siguientes para combinar la rama
de trabajo script con la rama de base y eliminar la rama de trabajo después de la
combinación:

Bash

git checkout main


git merge script
git branch -d script

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube


Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
En el artículo Ejecución de las tareas de ciencia de datos se muestra cómo usar las
utilidades para completar varias tareas comunes de ciencia de datos, como la
exploración interactiva de los datos, el análisis de los datos, la creación de informes y la
creación de modelos.

Recursos relacionados
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Aprendizaje automático a escala
Ejecutar tareas de ciencia de datos:
exploración, modelado e
implementación
Artículo • 11/07/2023

Entre las tareas de ciencia de datos habituales se incluyen la implementación, el


modelado y la exploración de datos. En este artículo se muestra cómo usar las tareas
para completar varias tareas comunes de ciencia de datos, como la exploración
interactiva de los datos, el análisis de los datos, la creación de informes y la creación de
modelos. Las opciones para implementar un modelo en un entorno de producción
pueden incluir:

Recomendado: Azure Machine Learning


Posible: SQL-Server con servicios de ML

1. Exploración
Un científico de datos puede realizar la exploración y los informes de diversas formas:
mediante bibliotecas y paquetes disponibles para Python (matplotlib por ejemplo) o con
R (ggplot o lattice por ejemplo). Los científicos de datos pueden personalizar dicho
código para satisfacer las necesidades de exploración de datos para escenarios
específicos. Las necesidades de lidiar con datos estructurados son distintas que en el
caso de los datos no estructurados, como texto o imágenes.

Productos como Azure Machine Learning también proporcionan una preparación


avanzada de datos para la exploración y la limpieza y transformación de datos, incluida
la creación de características. El usuario debe decidir sobre las herramientas, las
bibliotecas y los paquetes que mejor se adapten a sus necesidades.

Al final de este fase debe entregarse un informe de exploración de datos. El informe


debe proporcionar una vista bastante completa de los datos que se van a usar para el
modelado y una evaluación de si los datos son adecuados para continuar con el paso de
modelado.

2. Modelado
Hay diversos kits de herramientas y paquetes para entrenar modelos en diversos
idiomas. Los científicos de datos no deben tener reparos en usar aquellos con los cuales
se sientan cómodos, siempre que se cumplan las consideraciones de rendimiento
relacionadas con la precisión y la latencia para los escenarios de producción y los casos
de uso empresariales pertinentes.

Administración de modelos
Tras la creación de varios modelos, suele ser necesario tener un sistema para registrar y
administrar los modelos. Normalmente, necesita una combinación de scripts o API y una
base de datos back-end o un sistema de control de versiones. Azure Machine Learning
proporciona la implementación de modelos ONNX o la implementación de modelos ML
Flow.

3. Implementación
La implementación de producción permite que un modelo desempeñe un rol activo en
una empresa. Las predicciones a partir de un modelo implementado pueden usarse en
las decisiones empresariales.

Plataformas de producción
Hay varios enfoques y plataformas para poner los modelos en producción. Se
recomienda implementar en Azure Machine Learning.

7 Nota

Antes de la implementación, uno debe asegurarse de que la latencia de la


puntuación de los modelos es lo suficientemente baja para usarse en producción.

Pruebas A/B
Cuando hay varios modelos en producción, puede resultar útil realizar pruebas A/B
para comparar el rendimiento de los modelos.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube


Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
En Track progress of data science projects (Realizar un seguimiento del progreso de los
proyectos de ciencia de datos) se muestra cómo puede un científico de datos realizar un
seguimiento del progreso de un proyecto de ciencia de datos.

El modelo de operación y CI/CD muestra cómo se puede realizar CI/CD con modelos
desarrollados.
Prueba de código de ciencia de datos
con Azure DevOps
Artículo • 11/07/2023

En este artículo, se proporcionan instrucciones preliminares para probar código en un


flujo de trabajo de ciencia de datos con Azure DevOps. Estas pruebas ofrecen a los
científicos de datos una manera sistemática y eficiente de comprobar la calidad y el
resultado esperado de su código. Se utiliza el proyecto de proceso de ciencia de datos
en equipo (TDSP), que utiliza el conjunto de datos de ingresos de adultos UCI, que
publicamos con anterioridad para mostrar cómo se pueden realizar pruebas de código.

Introducción a las pruebas de código


La "prueba unitaria" es una práctica antigua para el desarrollo de software. Pero en el
caso de la ciencia de datos, a menudo no que claro lo que significa "prueba unitaria" y
cómo se debe probar el código en las distintas fases de un ciclo de vida de ciencia de
datos, tales como:

Preparación de los datos


Examen de calidad de datos
Modelado
Implementación del modelo

En este artículo, se reemplaza el término "pruebas unitarias" por "pruebas de código".


Hace referencia a las pruebas como las funciones que ayudan a evaluar si el código para
un determinado paso de un ciclo de vida de ciencia de datos está generando resultados
"según lo previsto". La persona que escribe la prueba define lo que es "según lo
esperado", según el resultado de la función, por ejemplo, la comprobación de calidad
de los datos o el modelado.

En este artículo se proporcionan referencias como recursos útiles.

Azure DevOps para el marco de pruebas


En este artículo se describe cómo realizar y automatizar las pruebas mediante Azure
DevOps. Puede optar por usar herramientas alternativas. También se muestra cómo
configurar una compilación automática mediante Azure DevOps y agentes de
compilación. Para los agentes de compilación, usamos máquinas virtuales de ciencia de
datos de Azure (DSVM).
Flujo de la prueba de código
El flujo de trabajo global de la prueba de código en un proyecto de ciencia de datos
tiene el siguiente aspecto:

Pasos detallados
Siga estos pasos para configurar y ejecutar pruebas de código y una compilación
automatizada mediante un agente de compilación y Azure DevOps:

1. Cree un proyecto en la aplicación de escritorio de Visual Studio:


Después de crear el proyecto, podrá encontrarlo en el Explorador de soluciones en
el panel derecho:

2. Introduzca el código del proyecto en el repositorio de código de proyecto de


Azure DevOps:
3. Supongamos que ha hecho algún trabajo de preparación de datos, como la
ingesta de datos, la ingeniería de características y la creación de columnas de
etiqueta. Desea asegurarse de que el código genera los resultados esperados. Este
es un código que puede usar para comprobar si el código de procesamiento de
datos funciona correctamente:

Compruebe que los nombres de columna son correctos:

Compruebe que los niveles de respuesta son correctos:

Compruebe que el porcentaje de respuesta es razonable:

Compruebe el índice de ausencia de cada columna en los datos:


4. Una vez que ha terminado el procesamiento de datos y el trabajo de ingeniería de
características, y ha entrenado un buen modelo, asegúrese de que dicho modelo
puede puntuar nuevos conjuntos de datos correctamente. Puede usar las dos
pruebas siguientes para comprobar los niveles de predicción y la distribución de
valores de etiqueta:

Compruebe los niveles de predicción:

Compruebe la distribución de los valores de predicción:

5. Coloque todas las funciones de prueba juntas en un script de Python denominado


test_funcs.py:
6. Una vez preparados los códigos de prueba, puede configurar el entorno de
pruebas en Visual Studio.

Cree un archivo de Python llamado test1.py. En este archivo, cree una clase que
incluya todas las pruebas que desea hacer. En el siguiente ejemplo se muestran
seis pruebas preparadas:
1. Esas pruebas se pueden detectar automáticamente si coloca codetest.testCase
después del nombre de la clase. Abra el Explorador de pruebas en el panel
derecho y seleccione Ejecutar todo. Todas las pruebas se ejecutarán
secuencialmente y le indicarán si la prueba es correcta o no.

2. Inserte el código en el repositorio del proyecto mediante comandos de Git. El


trabajo más reciente se verá reflejado en breve en Azure DevOps.
3. Configure la compilación automática y la prueba en Azure DevOps:

a. En el repositorio del proyecto, seleccione Compilación y lanzamiento y luego


seleccione +Nuevo para crear un nuevo proceso de compilación.
b. Siga las indicaciones para seleccionar la ubicación del código fuente, el nombre
del proyecto, el repositorio y la información de rama.

c. Seleccione una plantilla. Dado que no hay ninguna plantilla de proyecto de


Python, empiece seleccionando Proceso vacío.

d. Asigne un nombre a la compilación y seleccione el agente. Puede elegir aquí el


valor predeterminado si desea utilizar una DSVM para completar el proceso de
compilación. Para más información acerca de los agentes de configuración,
consulte Build and release agents (Agentes de compilación y lanzamiento).
e. Seleccione + en el panel izquierdo, para agregar una tarea para esta fase de
compilación. Dado que vamos a ejecutar el script de Python test1.py para
completar todas las comprobaciones, esta tarea utiliza un comando de PowerShell
para ejecutar código de Python.

f. En los detalles de PowerShell, rellene la información necesaria, como el nombre y


la versión de PowerShell. Elija Script en línea como el tipo.

En el cuadro Script en línea, puede escribir python test1.py. Asegúrese de que la


variable de entorno está configurada correctamente para Python. Si necesita un
kernel o una versión diferente de Python, puede especificar explícitamente la ruta
de acceso, tal como se muestra en la figura:
g. Seleccione Guardar y poner en cola para completar el proceso de canalización
de compilación.

Ahora, cada vez que se inserte una nueva confirmación en el repositorio de código, se
iniciará automáticamente el proceso de compilación. Puede definir cualquier rama. El
proceso ejecuta el archivo test1.py en la máquina del agente para asegurarse de que
todos los elementos definidos en el código se ejecutan correctamente.
Si las alertas están configuradas correctamente, se le notificará por correo electrónico
cuando finalice la compilación. También puede comprobar el estado de compilación en
Azure DevOps. Si se produce un error, puede comprobar los detalles de la compilación y
averiguar qué parte se interrumpe.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Consulte el repositorio de predicción de ingresos UCI para ejemplos concretos
de pruebas unitarias para escenarios de ciencia de datos.
Siga el esquema y los ejemplos anteriores del escenario de predicción de ingresos
UCI en sus propios proyectos de ciencia de datos.

Referencias
Proceso de ciencia de datos en equipo (TDSP)
Herramientas de pruebas de Visual Studio
Recursos de pruebas de Azure DevOps
Máquinas virtuales de ciencia de datos
Seguimiento del progreso de los
proyectos de ciencia de datos
Artículo • 13/09/2023

Los administradores de grupos de ciencia de datos, los responsables de equipos y los de


proyectos pueden realizar el seguimiento del progreso de sus proyectos. Los
administradores quieren saber qué trabajo se ha realizado, quién lo ha realizado y qué
queda por hacer. La administración de expectativas es un elemento importante del
éxito.

Paneles de Azure DevOps


Si usa Azure DevOps, puede crear paneles para hacer el seguimiento de las actividades y
de los elementos de trabajo asociados a un proyecto ágil determinado. Para más
información sobre los paneles, consulte Dashboards, reports, and widgets (Paneles,
informes y widgets).

Para obtener instrucciones sobre cómo crear y personalizar los paneles y widgets en
Azure DevOps, consulte los siguientes inicios rápidos:

Agregar y administrar paneles.


Agregar widgets a un panel

Panel de ejemplo
Este es un panel de ejemplo sencillo que hace el seguimiento de las actividades de
sprint de un proyecto de ciencia de datos ágil, así como también la cantidad de
confirmaciones en los repositorios asociados.

El icono de cuenta atrás muestra el número de días que quedan en el sprint actual.

Los dos iconos de código muestran el número de confirmaciones en los dos


repositorios de proyectos de los últimos siete días.

Los elementos de trabajo para el proyecto de TDSP del cliente muestran los
resultados de una consulta de todos los elementos de trabajo y su estado.

Un diagrama de flujo acumulado (CFD) muestra el número de elementos de


trabajo cerrados y activos.
En el gráfico de evolución se muestra el trabajo que falta por completar en
relación con el tiempo restante del sprint.

El gráfico de evolución ascendente muestra el trabajo completado en


comparación con la cantidad total de trabajo del sprint.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Creación de canalizaciones de
CI/CD para aplicaciones de
inteligencia artificial con Azure
Pipelines, Docker y Kubernetes
Azure Azure Pipelines Azure Machine Learning Azure Kubernetes Service (AKS)

Una aplicación de inteligencia artificial (IA) es un código de aplicación insertado con un


modelo de aprendizaje automático (ML) previamente entrenado. Siempre hay dos flujos
de trabajo para una aplicación de inteligencia artificial: los científicos de datos crean el
modelo de aprendizaje automático y los desarrolladores de aplicaciones compilan la
aplicación y la exponen a los usuarios finales para consumir. En este artículo se describe
cómo implementar una canalización de integración continua y entrega continua (CI/CD)
para una aplicación de inteligencia artificial que inserta el modelo de ML en el código
fuente de la aplicación. En el código de ejemplo y el tutorial se usa una aplicación web
de Python Flask y se captura un modelo previamente entrenado de una cuenta privada
de Azure Blob Storage. También puede usar una cuenta de almacenamiento de AWS S3.

7 Nota

El siguiente proceso es una de las diversas formas de realizar integración continua


o entrega continua. Existen alternativas a esta herramienta y a los requisitos
previos.

Código fuente, tutorial y requisitos previos


Puede descargar un código fuente y un tutorial en detalle desde GitHub. Siga los
pasos del tutorial para implementar una canalización de CI/CD para su propia
aplicación.

Para usar el código fuente y el tutorial, necesita los siguientes requisitos previos:

El repositorio de código fuente bifurcado a su cuenta de GitHub


Una organización de Azure DevOps
CLI de Azure
Un clúster de Azure Container Service para Kubernetes (AKS)
Kubectl para ejecutar comandos y capturar la configuración del clúster de AKS
Una cuenta de Azure Container Registry (ACR)

Resumen de la canalización de CI/CD


Cada nueva confirmación de Git inicia la canalización de compilación. La compilación
extrae de forma segura el último modelo de ML automático de una cuenta de
almacenamiento de blobs y lo empaqueta con el código de la aplicación en un único
contenedor. Este desacoplamiento del desarrollo de aplicaciones y de los flujos de
secuencias de ciencia de datos garantiza que la aplicación de producción siempre
ejecuta el código más reciente con el último modelo de ML. Si la aplicación pasa las
pruebas, la canalización almacena de forma segura la imagen de compilación en un
contenedor de Docker en Azure Container Registry. A continuación, la canalización de
versión implementa el contenedor mediante AKS.

Pasos de la canalización de CI/CD


En el diagrama y los pasos siguientes se describe la arquitectura de canalización de
CI/CD:

1. Los desarrolladores trabajan en el código de aplicación en el entorno de desarrollo


integrado que prefieran.
2. Los desarrolladores confirman el código a Azure Repos, GitHub u otro proveedor
de control de código fuente de Git.
3. Por separado, los científicos de datos trabajan en el desarrollo de su modelo de
ML.
4. Los científicos de datos publican el modelo acabado en un repositorio de modelos;
en este caso, una cuenta de almacenamiento de blobs.
5. Azure Pipelines inicia una compilación basada en la confirmación de Git.
6. La canalización de compilación extrae el modelo más reciente de ML del
almacenamiento de blobs y crea un contenedor.
7. La canalización envía la imagen de compilación al repositorio de imágenes
privadas de ACR.
8. La canalización de versión se inicia basándose en la compilación correcta.
9. La canalización extrae la imagen más reciente de ACR y la implementa en el clúster
de Kubernetes en AKS.
10. Las solicitudes de usuario para la aplicación pasan por el servidor DNS.
11. El servidor DNS pasa la solicitud al equilibrador de carga y devuelve las respuestas
al usuario.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Proceso de ciencia de datos en equipo (TDSP)
Azure Machine Learning (AML)
Azure DevOps
Azure Kubernetes Services (AKS)

Recursos relacionados
¿Qué son las canalizaciones de Azure Machine Learning?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Operaciones de aprendizaje automático (MLOps) v2
Proceso de ciencia de datos en equipo
para científicos de datos
Artículo • 11/07/2023

Este artículo proporciona una guía a un conjunto de objetivos que se usan normalmente
para implementar soluciones de ciencia de datos completas con tecnologías de Azure.
Se cubrirán los siguientes aspectos:

Descripción de una carga de trabajo de análisis


Uso del Proceso de ciencia de datos en equipo
Uso de Azure Machine Learning
Información sobre los aspectos básicos de la transferencia y el almacenamiento de
datos
Entrega de documentación del origen de datos
Uso de herramientas para el procesamiento de análisis

Estos materiales de aprendizaje están relacionados con el Proceso de ciencia de los


datos en equipos (TDSP) y software y kits de herramientas de Microsoft y de código
abierto, que son útiles para imaginar, ejecutar y entregar soluciones de ciencia de datos.

Ruta de aprendizaje
Puede usar los elementos de la tabla siguiente para que le guíen en su aprendizaje. Lea
la columna Descripción para seguir la ruta, haga clic en los vínculos de Tema para ver las
referencias de estudio y compruebe sus conocimientos con la columna Comprobación
de conocimientos.

Objetivo Tema. Descripción Comprobación de


conocimientos

Descripción de Una Para comenzar, se Revise y descargue los


los procesos para introducción al realizará una introducción artefactos de estructura de
desarrollar Proceso de al Proceso de ciencia de proyecto de TDSP relativos a
proyectos de ciencia de datos datos en equipo, el TDSP. su proyecto en su máquina
análisis en equipo Este proceso le guía en local .
cada paso de un proyecto
de análisis. Lea cada una
de estas secciones para
aprender más sobre el
proceso y cómo
implementarlo.
Objetivo Tema. Descripción Comprobación de
conocimientos

Agile El Proceso de ciencia de Explique la integración


Development datos en equipo funciona continua y la entrega
bien con muchas continua a un compañero.
metodologías de
programación diferentes.
En esta ruta de
aprendizaje, usaremos
Agile Software
Development. Lea los
artículos sobre qué es
Agile Development y la
creación de una cultura
ágil, que tratan los
aspectos básicos de
trabajar con la
metodología Agile.
También existen otras
referencias en este sitio
donde puede obtener
más información.

DevOps para Las operaciones del Prepare una presentación de


ciencia de datos desarrollador (DevOps) 30 minutos dirigida a un
abarcan personas, público técnico y exponga de
procesos y plataformas qué manera DevOps es
que se pueden usar para esencial para los proyectos
trabajar en un proyecto e de análisis.
integrar la solución en la
TI estándar de la
organización. Esta
integración es esencial de
cara a la adopción y la
seguridad. En este curso
en línea, conocerá
prácticas de DevOps y
comprenderá algunas de
las opciones de cadena
de herramientas de las
que dispone.

Descripción de Microsoft Nos centramos en Descargue y revise los


las tecnologías Business algunas tecnologías, de materiales de presentación
para el Analytics y AI las muchas que tiene de este taller .
almacenamiento Microsoft, de esta ruta de
y procesamiento aprendizaje que puede
de los datos usar para crear una
solución de análisis. Para
Objetivo Tema. Descripción Comprobación de
conocimientos

conocer las opciones que


tiene, es importante
examinar las plataformas
y características
disponibles en Microsoft
Azure, Azure Stack y las
opciones locales. Examine
este recurso para conocer
las diversas herramientas
que tiene a su disposición
para responder a las
preguntas de análisis.

Instalación y Microsoft Azure Ahora vamos a crear en Si no tiene una cuenta de


configuración de Microsoft Azure una Azure, cree una . Inicie
los entornos de cuenta para el sesión en Microsoft Azure
aprendizaje, entrenamiento y a Portal y cree un grupo de
desarrollo y aprender a crear entornos recursos para el aprendizaje.
producción de desarrollo y pruebas.
Estos recursos de
aprendizaje gratuitos le
ayudan a comenzar.
Complete las rutas para
los niveles de principiante
e intermedio.

La interfaz de la Existen varias maneras de Establezca la suscripción


línea de trabajar con Microsoft predeterminada con la CLI de
comandos (CLI) Azure: se pueden usar Azure.
de Microsoft herramientas gráficas
Azure como VSCode y Visual
Studio, interfaces web,
como Azure Portal, o la
línea de comandos, como
los comandos y las
funciones de Azure
PowerShell. En este
artículo, trataremos la
interfaz de la línea de
comandos (CLI), que se
puede usar localmente en
la estación de trabajo, en
Windows y otros sistemas
operativos, así como en
Azure Portal.
Objetivo Tema. Descripción Comprobación de
conocimientos

Microsoft Azure Necesitará un lugar para Cree una cuenta de


Storage almacenar los datos. En almacenamiento en el grupo
este artículo, obtendrá de recursos de aprendizaje,
información sobre las cree un contenedor para un
opciones de objeto de blob y cargue y
almacenamiento de descargue datos.
Microsoft Azure, así como
a crear una cuenta de
almacenamiento y a
copiar o mover datos a la
nube. Lea esta
introducción para más
información.

Microsoft Azure Microsoft Azure Active Agregue un usuario a Azure


Active Directory Directory (Azure AD) Active Directory. Nota: Puede
constituye la base de que no tenga permisos para
protección de la esta acción si no es
aplicación. En este administrador de la
artículo, aprenderá más suscripción. En ese caso,
acerca de cuentas, simplemente consulte este
derechos y permisos. tutorial para más
Active Directory y la información.
seguridad son temas
complejos, así que lea
este recurso para
comprender los
conceptos básicos.

La máquina Puede instalar las Cree una máquina virtual de


virtual de herramientas para ciencia de datos y trabaje en
ciencia de datos trabajar con ciencia de al menos un laboratorio.
de Microsoft datos de forma local en
Azure varios sistemas
operativos. Pero la
máquina virtual de ciencia
de datos de Microsoft
Azure (DSVM) contiene
todas las herramientas
que necesita, así como
multitud de ejemplos con
los que trabajar. En este
artículo, aprenderá más
sobre la DVSM y cómo
trabajar en sus ejemplos.
Este recurso explica la
máquina virtual de ciencia
Objetivo Tema. Descripción Comprobación de
conocimientos

de datos, como crear una,


además de unas cuantas
opciones para desarrollar
código con ella. También
contiene todo el software
que necesita para
completar esta ruta de
aprendizaje; así que
asegúrese de realizar la
ruta de conocimientos de
este tema.

Instalación y Uso de Git Para seguir el proceso de Clone este proyecto de


descripción de las DevOps con el TDSP, es GitHub para la estructura de
herramientas y necesario tener un proyecto de su ruta de
las tecnologías sistema de control de aprendizaje .
para trabajar con versiones. Microsoft
soluciones de Azure Machine Learning
ciencia de datos usa Git, un conocido
sistema de repositorio
distribuido de código
abierto. En este artículo,
aprenderá más sobre
cómo instalar, configurar
y trabajar con Git y un
repositorio central:
GitHub.

VSCode VSCode es un entorno de Instale VSCode y trabaje en


desarrollo integrado las características de VS Code
multiplataforma (IDE) que en el área de juegos de
puede usar con varios edición interactiva .
lenguajes y herramientas
de Azure. Puede usar este
entorno único para crear
la solución entera. Para
comenzar, consulte estos
vídeos de introducción.

Programación En esta solución se usa Agregue una entidad a una


con Python Python, uno de los instancia de Azure Table
lenguajes más conocidos mediante Python.
de ciencia de datos. En
este artículo se tratan los
conceptos básicos de la
escritura de código de
análisis con Python y se
Objetivo Tema. Descripción Comprobación de
conocimientos

incluyen recursos para


aprender más. Trabaje en
las secciones 1-9 de esta
referencia y luego
compruebe sus
conocimientos.

Uso de Los cuadernos son una Abra esta página y haga


cuadernos manera de introducir clic en el vínculo "Welcome
texto y código en el to Python.ipynb". Trabaje en
mismo documento. Azure los ejemplos de esa página.
Machine Learning
funciona con cuadernos,
por lo que es conveniente
comprender cómo
usarlos. Lea este tutorial y
compruebe lo que sabe
en la sección
Comprobación de
conocimientos.

Machine Crear soluciones de Busque un recurso en los


Learning análisis avanzadas supone algoritmos de Machine
trabajar con datos, Learning. (Sugerencia:
mediante Machine Busque en le hoja de
Learning, que también referencia rápida de
constituye la base para algoritmos de aprendizaje
trabajar con inteligencia automático)
artificial y aprendizaje
profundo. Este curso se
centra más en Machine
Learning. Si está
interesado en un curso
completo de ciencia de
datos, consulte esta
certificación .

scikit-learn El conjunto de Con el conjunto de datos de


herramientas scikit-learn Iris, conserve un modelo SVM
le permite realizar tareas mediante Pickle.
de ciencia de datos en
Python. En nuestra
solución usamos este
marco de trabajo. En este
artículo se tratan los
aspectos básicos y se
explica dónde se puede
Objetivo Tema. Descripción Comprobación de
conocimientos

conseguir más
información.

Uso de Docker Docker es una plataforma Abra Visual Studio Code e


distribuida que se usa instale la extensión de
para compilar, enviar y Docker . Cree un
ejecutar aplicaciones, y contenedor de Docker de
con frecuencia se utiliza nodo simple .
en Azure Machine
Learning. En este artículo
se tratan los conceptos
básicos de esta
tecnología y se explica
dónde puede acudir para
obtener más información.

HDInsight HDInsight es la Cree un clúster de HDInsight


infraestructura de código pequeño. Use instrucciones
abierto de Hadoop, que de HiveQL para proyectar las
se encuentra disponible columnas en un archivo
como servicio en /example/data/sample.log. O
Microsoft Azure. Los bien, puede realizar esta
algoritmos de Machine comprobación de
Learning pueden implicar conocimientos en su sistema
grandes conjuntos de local.
datos, y HDInsight ofrece
la posibilidad de
almacenar, transferir y
procesar datos a gran
escala. En este artículo se
explica cómo trabajar con
HDInsight.

Creación de un Determinación Una vez que se haya Busque un recurso en Las


flujo de de la pregunta, instalado y configurado el cinco preguntas a las que
procesamiento a continuación entorno de desarrollo, y responde la ciencia de datos
de datos a partir del TDSP se conozcan las y describa alguna pregunta
de requisitos tecnologías y los que pueda tener su
empresariales procesos instaurados, es organización en estos
hora de juntar todo ámbitos. ¿En qué algoritmos
mediante el TDSP para debería centrarse para
realizar un análisis. Para responder a esa pregunta?
comenzar, es necesario
definir la pregunta y
seleccionar los orígenes
de datos y el resto de los
pasos del Proceso de
Objetivo Tema. Descripción Comprobación de
conocimientos

ciencia de datos en
equipo. Tenga en cuenta
el proceso de DevOps
mientras se trabaja en
este proceso. En este
artículo, aprenderá a
considerar los requisitos
de su organización y a
crear un mapa de flujo de
datos mediante su
aplicación para definir la
solución con el Proceso
de ciencia de datos en
equipo.

Uso de Azure Azure Machine Microsoft Azure Machine


Machine Learning Learning Learning usa IA para la
para crear una limpieza y transformación
solución de de datos y la ingeniería
predicción de características,
administra experimentos
y realiza un seguimiento
de las ejecuciones del
modelo. Todo esto
funciona en un único
entorno y la mayoría de
las funciones se pueden
ejecutar localmente o en
Azure. Puede usar
PyTorch, TensorFlow y
otros marcos de trabajo
para crear sus
experimentos. Este
artículo se centra en un
ejemplo completo de este
proceso, y en él se usa
todo lo aprendido hasta
ahora.

Uso de Power BI Power BI Power BI es la Realice este tutorial en Power


para visualizar los herramienta de BI. A continuación, conecte
resultados visualización de datos de Power BI al archivo CSV de
Microsoft. Está disponible blob durante la ejecución de
en varias plataformas: un experimento.
web, dispositivos móviles
y equipos de escritorio.
En este artículo aprenderá
Objetivo Tema. Descripción Comprobación de
conocimientos

a trabajar con la salida de


la solución que ha creado,
para lo cual accederá a
los resultados desde
Azure Storage y creará
visualizaciones mediante
Power BI.

Supervisión de la Application Existen varias Configure Application


solución Insights herramientas que puede Insights para supervisar una
usar para supervisar la aplicación .
solución final. Azure
Application Insights
facilita la integración de
la supervisión en la
solución.

Registros de Otro método para Realice este tutorial sobre el


Azure Monitor supervisar la aplicación uso de los registros de Azure
consiste en integrarla en Monitor.
el proceso de DevOps. El
sistema de registros de
Azure Monitor
proporciona un amplio
conjunto de
características que le
ayudan a inspeccionar sus
soluciones de análisis
después de
implementarlas.

Realización de ¡Enhorabuena! Ha
esta ruta de completado esta ruta de
aprendizaje aprendizaje.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Pasos siguientes
Consulte Proceso de ciencia de datos en equipo para Developer Operations. En este
artículo se exploran las funciones de Developer Operations (DevOps) que son
específicas de la implementación de una solución de análisis avanzado y Cognitive
Services.

Recursos relacionados
Ejecutar tareas de ciencia de datos: exploración, modelado e implementación
Configuración de entornos de ciencia de datos para utilizarse en el proceso de
ciencia de datos en equipos
Plataformas y herramientas para proyectos de ciencia de datos
Ciencia de datos y aprendizaje automático con Azure Databricks
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Proceso de ciencia de datos en equipo para
Developer Operations
Artículo • 22/06/2023

En este artículo se exploran las funciones de Developer Operations (DevOps) que son específicas
de la implementación de una solución de análisis avanzado y Cognitive Services. Estos materiales
de entrenamiento implementan el Proceso de ciencia de datos en equipos (TDSP) junto con
software y kits de herramientas de Microsoft y de código abierto, que resultan útiles para
imaginar, ejecutar y entregar soluciones de ciencia de datos. Hace referencia a los temas que
abordan la cadena de herramientas de DevOps que es específico para los proyectos y soluciones
de IA y de ciencia de datos.

Ruta de aprendizaje
En la tabla siguiente se proporciona una guía basada en niveles para completar los objetivos de
DevOps de implementación de soluciones de ciencia de datos en Azure.

Objetivo Tema Recurso Tecnologías Level Requisitos previos

Descripción del El ciclo de vida En este tutorial Ciencia de datos Intermedio Conocimientos
análisis del proceso de técnico se generales sobre
avanzado ciencia de describe el tecnología,
datos en proceso de familiaridad con
equipo ciencia de datos las soluciones de
en equipo datos, familiaridad
con la
implementación de
soluciones y
proyectos de TI

Descripción de Administración Esta referencia Microsoft Azure Experimentado Conocimientos


la plataforma de la proporciona Data Factory generales sobre
Microsoft Azure información información tecnología,
para análisis general de Azure familiaridad con
avanzado Data Factory para las soluciones de
compilar las datos, familiaridad
canalizaciones de con la
las soluciones de implementación de
datos de análisis soluciones y
proyectos de TI
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Esta referencia Microsoft Azure Intermedio Conocimientos


abarca Data Catalog generales sobre
información tecnología,
general sobre familiaridad con
Azure Data las soluciones de
Catalog que datos, familiaridad
puede usar para con orígenes de
documentar y datos NoSQL y de
administrar los sistemas de
metadatos en los administración de
orígenes de datos bases de datos
relacionales
(RDBMS)

Esta referencia Azure Event Hubs Intermedio Conocimientos


abarca generales sobre
información tecnología,
general sobre el familiaridad con
sistema Azure las soluciones de
Event Hubs y datos, familiaridad
cómo usarlo para con orígenes de
ingerir datos en la datos NoSQL y de
solución sistemas de
administración de
bases de datos
relacionales
(RDBMS),
familiaridad con la
terminología y el
uso de Internet de
las cosas (IoT)

Almacenes de Esta referencia Azure Synapse Experimentado Conocimientos


macrodatos abarca Analytics generales sobre
información tecnología,
general sobre familiaridad con
cómo usar Azure las soluciones de
Synapse Analytics datos, familiaridad
para almacenar y con orígenes de
procesar grandes datos NoSQL y de
cantidades de sistemas de
datos administración de
bases de datos
relacionales
(RDBMS),
familiaridad con la
terminología y el
uso de HDFS
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Esta referencia Azure Data Lake Intermedio Conocimientos


abarca Store generales sobre
información tecnología,
general sobre familiaridad con
cómo usar Azure las soluciones de
Data Lake para datos, familiaridad
capturar datos de con orígenes de
cualquier tamaño, datos NoSQL,
tipo y velocidad familiaridad con
de ingesta en un HDFS
único lugar para
realizar análisis
exploratorios y
operativos

Aprendizaje Esta referencia Azure Machine Intermedio Conocimientos


automático y abarca una Learning generales sobre
análisis introducción al tecnología,
aprendizaje familiaridad con
automático, el las soluciones de
análisis predictivo datos, familiaridad
y los sistemas de con los términos
inteligencia de la ciencia de
artificial datos, familiaridad
con los términos
de Machine
Learning y de
inteligencia
artificial

Este artículo HDInsight de Intermedio Conocimientos


proporciona una Azure generales sobre
introducción a tecnología,
Azure HDInsight, familiaridad con
una distribución las soluciones de
en la nube de la datos, familiaridad
pila de tecnología con orígenes de
de Hadoop. datos NoSQL
También explica
qué es un clúster
de Hadoop y
cuándo se usaría

Esta referencia Análisis con Azure Intermedio Conocimientos


abarca Data Lake generales sobre
información tecnología,
general sobre el familiaridad con
servicio de las soluciones de
trabajo de Azure datos, familiaridad
Data Lake con orígenes de
Analytics datos NoSQL
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Esta información Azure Stream Intermedio Conocimientos


general abarca Analytics generales sobre
cómo usar Azure tecnología,
Stream Analytics familiaridad con
como un motor las soluciones de
de procesamiento datos, familiaridad
de eventos con los conceptos
completamente de datos
administrado estructurados y no
hasta cálculos estructurados
analíticos en
tiempo real sobre
datos de
transmisión

Inteligencia Esta referencia Cognitive Services Experimentado Conocimientos


abarca generales sobre
información tecnología,
general sobre los familiaridad con
servicios de las soluciones de
Cognitive Services datos, desarrollo
disponibles de software
(como visión,
texto y búsqueda)
y cómo empezar
a usarlos

Esta referencia Bot Framework Experimentado Conocimientos


abarca una generales sobre
introducción a tecnología,
Microsoft Bot familiaridad con
Framework y las soluciones de
cómo empezar a datos
usarlo

Visualización Este curso Microsoft Power Principiante Conocimientos


autodidáctico en BI generales sobre
línea abarca el tecnología,
sistema Power BI familiaridad con
y cómo crear y las soluciones de
publicar datos
informes
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Soluciones Esta página de Microsoft Azure, Intermedio Conocimientos


recursos abarca Azure Machine generales sobre
varias Learning, tecnología,
aplicaciones que Cognitive Services, familiaridad con
puede revisar, Microsoft R, Azure las soluciones de
probar e Cognitive Search, datos
implementar para Python, Azure
ver una solución Data Factory,
completa de Power BI, Azure
principio a fin Document DB,
Application
Insights,
Azure SQL DB,
Azure Synapse
Analytics,
Microsoft
SQL Server, Azure
Data Lake,
Cognitive Services,
Bot Framework,
Azure Batch,

Descripción e ¿Qué es En este artículo se DevOps, Intermedio Familiaridad con el


implementación DevOps? explican los plataforma marco de
de los procesos conceptos básicos Microsoft Azure y desarrollo ágil y
de DevOps de DevOps y se Azure DevOps otros marcos de
explica cómo se desarrollo,
relacionan con las familiaridad con
prácticas de las operaciones de
DevOps TI

Uso de la Configuración Esta referencia Visio Intermedio Conocimientos


cadena de abarca los generales sobre
herramientas de aspectos básicos tecnología,
DevOps para de la elección de familiaridad con
ciencia de datos la visualización las soluciones de
adecuada en Visio datos
para comunicar
su diseño de
proyecto.

Esta referencia Azure Resource Intermedio Conocimientos


describe Azure Manager, Azure generales sobre
Resource PowerShell, CLI de tecnología,
Manager, los Azure familiaridad con
términos y sirve las soluciones de
como el origen datos
raíz principal de
ejemplos,
introducciones y
otras referencias
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Esta referencia Máquina virtual Experimentado Familiaridad con


explica las de ciencia de cargas de trabajo
máquinas datos de ciencia de
virtuales de datos, Linux
ciencia de datos
de Azure para
Linux y Windows

Este tutorial Visual Studio Intermedio Desarrollo de


explica cómo software
configurar los
roles de servicios
en la nube de
Azure con Visual
Studio. Preste
mucha atención a
las cadenas de
conexión
específicamente
para las cuentas
de
almacenamiento

Esta serie enseña Microsoft Project Intermedio Descripción de los


a usar Microsoft aspectos básicos
Project para de la
programar la administración de
hora, los recursos proyectos
y los objetivos de
un proyecto de
análisis
avanzado

Esta plantilla de Microsoft Project Intermedio Descripción de los


Microsoft Project aspectos básicos
proporciona un de la
seguimiento de la administración de
hora, los recursos proyectos
y los objetivos de
un proyecto de
análisis avanzado

En este tutorial de Azure Data Principiante Familiaridad con


Azure Data Catalog estructuras y
Catalog se orígenes de datos
describe un
sistema de
registro y
detección para los
recursos de datos
empresariales
Objetivo Tema Recurso Tecnologías Level Requisitos previos

En este curso de Visual Studio Experimentado Desarrollo de


Microsoft Virtual codespace software,
Academy se familiaridad con
explica cómo entornos de
configurar Dev- Desarrollo/pruebas
Test con Visual
Studio codespace
and Microsoft
Azure

La descarga de System Center Intermedio Experiencia con


este módulo de System Center
administración para la
para Microsoft administración de
System Center TI
contiene un
documento de
guías para
ayudarle a
trabajar con los
activos de Azure

Este documento DSC de Intermedio Experiencia con la


está pensado PowerShell programación de
para que los PowerShell,
equipos de arquitecturas de
operaciones y empresa, scripting
desarrolladores
comprendan los
beneficios de
PowerShell
Desired State
Configuration

Código Esta descarga Visual Studio Intermedio Desarrollo de


también incluye codespace software
documentación
sobre cómo usar
el código de
Visual Studio
codespace para
crear aplicaciones
de inteligencia
artificial y ciencia
de datos

Este sitio de Visual Studio Principiante Desarrollo de


introducción software
enseña sobre
DevOps y Visual
Studio
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Puede escribir Portal de Azure Muy Conocimientos


código experimentado sobre la ciencia de
directamente datos, pero léalo
desde Azure de todos modos
Portal con el
editor de App
Service. Más
información en
este recurso
sobre la
integración
continua con esta
herramienta

En este recurso se Azure Machine Intermedio Desarrollo de


explica cómo Learning software
empezar a
trabajar con
Azure Machine
Learning

Esta referencia Máquina virtual Experimentado Desarrollo de


incluye una lista y de ciencia de software, ciencia
un vínculo de datos de datos
estudio a todas
las herramientas
de desarrollo en
la máquina virtual
de ciencia de
datos en Azure

Lea y comprenda Azure Security Intermedio Experiencia en


cada una de las arquitectura de
referencias en sistemas,
este Centro de experiencia en el
confianza de desarrollo de
Azure Security seguridad
para la seguridad,
la privacidad y el
cumplimiento.
MUY
importante

Build En este curso Visual Studio Experimentado Desarrollo de


aprenderá a codespace software,
habilitar prácticas familiaridad con un
de DevOps con protocolo SDLC
una compilación
de Visual Studio
codespace
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Esta referencia Visual Studio Intermedio Desarrollo de


explica cómo software,
compilar y crear familiaridad con un
con Visual Studio protocolo SDLC

Esta referencia System Center Experimentado Experiencia con


explica cómo System Center
organizar Orchestrator
procesos como
compilaciones de
software con los
runbooks

Prueba Use esta Visual Studio Experimentado Desarrollo de


referencia para codespace software,
comprender familiaridad con un
cómo usar Visual protocolo SDLC
Studio codespace
para la
administración de
casos de
prueba

Use esta System Center Experimentado Experiencia con


referencia System Center
anterior para Orchestrator
runbooks para
automatizar las
pruebas con
System Center

Como parte no Threat Monitoring Experimentado Familiaridad con


solo de pruebas, Tool los conceptos de
sino también de seguridad,
desarrollo, debe desarrollo de
compilar en software
seguridad. Threat
Modeling Tool de
SDL de Microsoft
puede ayudar en
todas las fases.
Más información
y descarga aquí
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Este artículo Analizador de Experimentado Familiaridad con


explica cómo usar superficie los conceptos de
el analizador de expuesta a seguridad,
superficie ataques desarrollo de
expuesta a software
ataques de
Microsoft para
probar la solución
de análisis
avanzado

Paquete En esta referencia Visual Studio Experimentado Desarrollo de


se explican los codespace software,
conceptos de familiaridad con un
trabajar con protocolo SDLC
paquetes en TFS y
Visual Studio
codespace

Use esta System Center Experimentado Experiencia con


referencia System Center
anterior para Orchestrator
runbooks para
automatizar el
empaquetado con
System Center

Esta referencia Azure Data Intermedio Conocimientos


explica cómo Factory generales sobre
crear una informática,
canalización de experiencia en
datos para la proyectos de datos
solución, que
puede guardar
como una
plantilla JSON
como "paquete"

Este tema Azure Resource Intermedio Familiaridad con la


describe la Manager plataforma
estructura de una Microsoft Azure
plantilla de Azure
Resource
Manager
Objetivo Tema Recurso Tecnologías Level Requisitos previos

DSC es una Configuración de Intermedio Programación de


plataforma de estado deseado PowerShell,
administración en de PowerShell familiaridad con
PowerShell que arquitecturas de
permite empresa, scripting
administrar la
infraestructura de
desarrollo y TI
con configuración
como código,
guardada como
un paquete. Esta
referencia es
información
general sobre ese
tema

Release Este artículo de Visual Studio Experimentado Desarrollo de


referencia codespace software,
principal contiene familiaridad con
los conceptos de entornos de CI/CD,
compilación, familiaridad con un
prueba y versión protocolo SDLC
de entornos de
CI/CD

Use esta System Center Experimentado Experiencia con


referencia System Center
anterior para Orchestrator
runbooks para
automatizar la
administración de
versiones con
System Center
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Este artículo le Implementación Intermedio Desarrollo de


ayudará a de Microsoft software,
determinar la Azure experiencia con la
mejor opción plataforma
para implementar Microsoft Azure
los archivos de su
aplicación web,
back-end de
aplicación móvil o
aplicación de API
en el Azure App
Service y, a
continuación, le
guiará a los
recursos
adecuados con
instrucciones
específicas para la
opción de su
preferencia

Supervisión Esta referencia Application Intermedio Desarrollo de


explica Insights software,
Application familiaridad con la
Insights y cómo plataforma
puede agregarlo Microsoft Azure
a las soluciones
de análisis
avanzados

Este tema explica System Center Experimentado Familiaridad con la


los conceptos supervisión
básicos sobre empresarial,
Operations System Center
Manager para el Operations
administrador Manager
que administra la
infraestructura de
Operations
Manager y el
operador que
supervisa y presta
soporte técnico a
la solución de
análisis avanzado
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Esta entrada de Azure Data Intermedio Familiaridad con


blog explica cómo Factory Azure Data Factory
usar Azure Data
Factory para
supervisar y
administrar la
canalización de
análisis avanzado

Descripción del Herramientas Esta página de Chef Experimentado Familiaridad con la


uso de las de código referencia plataforma Azure,
herramientas de abierto de contiene dos familiaridad con
código abierto DevOps y vídeos y un DevOps
con DevOps en Azure documento de
Azure notas del
producto sobre
cómo usar Chef
con
implementaciones
de Azure

Este sitio tiene DevOps, Experimentado Uso de un


una ruta de plataforma protocolo SDLC,
selección de la Microsoft Azure, familiaridad con el
cadena de Azure DevOps y marco de
herramientas software de desarrollo ágil y
código abierto otros marcos de
desarrollo,
familiaridad con
las operaciones de
TI

En este tutorial se Jenkins Experimentado Familiaridad con la


automatiza la fase plataforma Azure,
de compilación y familiaridad con
prueba del DevOps,
desarrollo de familiaridad con
aplicaciones con Jenkins
una canalización
de CI/CD de
implementación e
integración
continua
Objetivo Tema Recurso Tecnologías Level Requisitos previos

Contiene Docker Intermedio Familiaridad con la


información plataforma Azure,
general sobre familiaridad con
cómo trabajar con sistemas
Docker y Azure, operativos de
además de servidor
referencias
adicionales para
la
implementación
de aplicaciones
de ciencia de
datos

Esta instalación y VSCODE Intermedio Desarrollo de


explicación software,
explican cómo familiaridad con la
usar Visual Studio plataforma
Code con los Microsoft Azure
activos de
Azure

Esta entrada de R Studio Intermedio Experiencia con el


blog explica cómo lenguaje R
usar R Studio con
Microsoft R

Esta entrada de Git, GitHub Intermedio Desarrollo de


blog muestra software
cómo usar la
integración
continua con
Azure y GitHub

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Proceso de ciencia de datos en equipo para científicos de datos. Este artículo proporciona las
instrucciones para implementar soluciones de ciencia de datos con Azure.
Recursos relacionados
Ejecutar tareas de ciencia de datos: exploración, modelado e implementación
Configuración de entornos de ciencia de datos para utilizarse en el proceso de ciencia de
datos en equipos
Plataformas y herramientas para proyectos de ciencia de datos
Ciencia de datos y aprendizaje automático con Azure Databricks
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Configuración de entornos de ciencia de
datos para utilizarse en el proceso de
ciencia de datos en equipos
Artículo • 11/07/2023

El proceso de ciencia de datos en equipos usa una variedad de entornos de ciencia de


datos para almacenar, procesar y analizar datos. Incluye Azure Blob Storage, varios tipos
de máquinas virtuales de Azure, clústeres de HDInsight (Hadoop) y áreas de trabajo de
Machine Learning. La decisión sobre el entorno que se debe usar depende del tipo y de
la cantidad de datos que se quieran modelar y del destino de los datos en la nube.

Vea Inicio rápido: Creación de los recursos de área de trabajo necesarios para
empezar a trabajar con Azure Machine Learning.

Microsoft Data Science Virtual Machine (DSVM) también está disponible como una
imagen de máquina virtual (VM) de Azure. Esta máquina virtual se preinstala y configura
con varias herramientas populares que se usan habitualmente para el análisis de datos y
el aprendizaje automático. DSVM está disponible en Windows y Linux. Para más
información, consulte Introducción a Data Science Virtual Machine basada en la nube
para Linux y Windows.

Aprenda a crear:

Windows DSVM
Ubuntu DSVM
CentOS DSVM

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Plataformas y herramientas para
proyectos de ciencia de datos
Artículo • 30/05/2023

Microsoft proporciona un amplio espectro de recursos de análisis para plataformas


locales y en la nube. Se pueden implementar para que la ejecución de los proyectos de
ciencia de datos sean eficaces y escalables. El proceso de ciencia de datos en equipo
(TDSP) sirve de guía a los equipos que implementan proyectos de ciencia de datos con
seguimiento, con control de versiones y en colaboración. En Roles y tareas del proceso
de ciencia de datos en equipo dispone de un esquema de los roles profesionales y las
tareas asociadas de las que se ocupa un equipo de ciencia de datos que sigue este
proceso como estándar.

El principal recurso de Azure recomendado para TDSP es Azure Machine Learning. Los
ejemplos del Centro de arquitectura de Azure a veces muestran el uso de Azure
Machine Learning con otros recursos de Azure. Los otros recursos de análisis a
disposición de los equipos de ciencia de datos que siguen el proceso de ciencia de
datos en equipo incluyen:

Data Science Virtual Machine (tanto Windows como Linux CentOS)


Clústeres de HDInsight Spark
Azure Synapse Analytics
Azure Data Lake
Clústeres de HDInsight Hive
Azure File Storage
Servicios R y Python para SQL Server 2019
Azure Databricks

En este documento, se describen brevemente los recursos y se proporcionan vínculos a


tutoriales que los equipos del proceso de ciencia de datos en equipo han publicado. Los
artículos le mostrarán cómo usar estos recursos paso a paso para crear aplicaciones
inteligentes. Podrá encontrar más información sobre estos recursos en las páginas de
producto.

Data Science Virtual Machine (DSVM)


La máquina virtual de ciencia de datos que Microsoft ofrece tanto con Windows como
con Linux contiene herramientas conocidas para actividades de desarrollo y modelado
de ciencia de datos. Incluye herramientas tales como:
Microsoft R Server Developer Edition
Anaconda Python Distribution
Jupyter Notebook para Python y R
Visual Studio Community Edition con Python y Herramientas de R en
Windows/Eclipse en Linux
Power BI Desktop para Windows
SQL Server 2016 Developer Edition en Windows/Postgres en Linux

También incluye herramientas de ML e IA, como xgboost, mxnet y Vowpal Wabbit.

Actualmente, la máquina virtual de ciencia de datos está disponible con los sistemas
operativos Windows y CentOS Linux. Elija el tamaño de la máquina virtual de ciencia de
datos (número de núcleos de CPU y cantidad de memoria) en función de los proyectos
de ciencia de datos que se vayan a ejecutar en ella.

Para más información sobre la edición de Windows de DSVM, consulte Microsoft Data
Science Virtual Machine en Azure Marketplace. Para la edición Linux de la máquina
virtual de ciencia de datos, consulte Linux Data Science Virtual Machine .

Para aprender a ejecutar de forma eficaz algunas de las tareas comunes de ciencia de
datos en DSVM, consulte Diez cosas que puede hacer en Windows Data Science Virtual
Machine.

Clústeres de Azure HDInsight Spark


Apache Spark es una plataforma de procesamiento paralelo de código abierto que
admite el procesamiento en memoria para mejorar el rendimiento de las aplicaciones
analíticas de Big Data. El motor de procesamiento Spark se ha creado para ofrecer
velocidad, facilidad de uso y análisis sofisticados. Las funcionalidades de cálculo en
memoria de Spark lo convierten en una buena opción para algoritmos iterativos en los
cálculos de grafos y aprendizaje automático. Spark también es compatible con Azure
Storage Blob (WASB), por lo que se pueden procesar los datos existentes almacenados
en Azure fácilmente mediante Spark.

Cuando crea un clúster Spark en HDInsight, aprovisiona recursos de proceso de Azure


con Spark instalado y configurado. Se tardan unos diez minutos en crear un clúster
Spark en HDInsight. Almacene los datos que se van procesar en Azure Blob Storage.
Para más información sobre cómo usar Azure Blob Storage con HDInsight, consulte Uso
de Azure Storage con clústeres de Azure HDInsight.

El equipo de proceso de ciencia de datos en equipo de Microsoft ha publicado dos


tutoriales completos sobre el uso de clústeres de Azure HDInsight Spark para crear
soluciones de ciencia de datos, en Python y en Scala. Para más información sobre
clústeres de Azure HDInsight Spark, consulte Introducción a Apache Spark en
HDInsight para Linux. Para obtener información sobre cómo crear una solución de
ciencia de datos mediante Python en un clúster de Azure HDInsight Spark, consulte
Información general sobre la ciencia de datos con Azure HDInsight Spark. Para obtener
información sobre cómo crear una solución de ciencia de datos mediante Scala en un
clúster de Azure HDInsight Spark, consulte Ciencia de datos mediante Scala y Spark en
Azure.

Azure Synapse Analytics


Azure Synapse Analytics le permite escalar los recursos de proceso fácilmente y en
segundos, sin tener que realizar un aprovisionamiento excesivo o pagar en exceso.
Además, ofrece la exclusiva ventaja de pausar el uso de los recursos de proceso, lo que
da total libertad para administrar mejor los costos de la nube. La posibilidad de
implementar recursos de proceso escalables permite almacenar todos los datos en
Azure Synapse Analytics. Los costos de almacenamiento son mínimos y puede ejecutar
el proceso solo en aquellas partes de los conjuntos de datos que desea analizar.

Para obtener más información sobre Azure Synapse Analytics, consulte el sitio web de
Azure Synapse Analytics . Para obtener información sobre cómo crear soluciones
completas de análisis avanzado con Azure Synapse Analytics, consulte Proceso de
ciencia de datos en equipo en acción: uso de Azure Synapse Analytics.

Azure Data Lake


Azure Data Lake es un repositorio empresarial de todos los tipos de datos recopilados
en una única ubicación antes de la aplicación de requisitos o esquemas formales. Esta
flexibilidad permite conservar cualquier tipo de datos en Data Lake, con independencia
del tamaño, la estructura o la velocidad de ingestión. Las organizaciones pueden usar
después Hadoop o análisis avanzado para buscar patrones en estos Data Lake. Data
Lake también sirve de repositorio para una preparación de los datos más económica
antes de su mantenimiento y transferencia a un almacenamiento de datos.

Para más información sobre Azure Data Lake, consulte la entrada de blob Introducing
Azure Data Lake (Introducción a Azure Data Lake). Para obtener información sobre
cómo crear una solución de ciencia de datos completa y escalable con Azure Data Lake,
consulte Ciencia de datos escalables con Azure Data Lake: tutorial completo

Clústeres de Azure HDInsight Hive (Hadoop)


Apache Hive es un sistema de almacén de datos para Hadoop, que permite realizar
resúmenes de datos, consultas y análisis de datos mediante HiveQL (una lenguaje de
consultas similar a SQL). Hive se puede usar para explorar los datos de forma interactiva
o para crear trabajos de procesamiento por lotes reutilizables.

Hive le permite proyectar la estructura del proyecto en datos que en gran medida no
están estructurados. Después de definir la estructura, puede usar Hive para consultar
esos datos en un clúster Hadoop sin tener que usar, incluso sin conocer, Java o
MapReduce. HiveQL (el lenguaje de consultas de Hive) permite escribir consultas con
instrucciones similares a T-SQL.

Para los científicos de datos, Hive puede ejecutar funciones de Python definidas por el
usuario en consultas de Hive para procesar registros. Esta capacidad amplía
considerablemente la funcionalidad de consultas de Hive en el análisis de datos.
Específicamente, permite a los científicos de datos realizar ingeniería de características
escalables en los lenguajes con los que están más familiarizados, como Python y HiveQA
de tipo SQL.

Para más información sobre los clústeres de Azure HDInsight Hive, consulte Uso de Hive
y HiveQL con Hadoop en HDInsight. Para aprender a crear una solución de ciencia de
datos completa y escalable en clústeres de Hive de Azure HDInsight, consulte el artículo
sobre el proceso de ciencia de datos en equipo en acción: uso de clústeres de Hadoop
de HDInsight.

Azure File Storage


Azure File Storage es un servicio que ofrece recursos compartidos de archivos en la
nube mediante el protocolo Bloque de mensajes del servidor (SMB) estándar. Se
admiten SMB 2.1 y SMB 3.0. Con Almacenamiento de archivos de Azure puede migrar
aplicaciones heredadas basadas en recursos compartidos de archivos a Azure con
rapidez y sin necesidad de costosas reescrituras. Las aplicaciones que se ejecutan en
máquinas virtuales de Azure o en servicios en la nube o desde clientes locales pueden
montar un recurso compartido de archivos en la nube, igual que una aplicación de
escritorio monta un recurso compartido SMB típico. Cualquier número de componentes
de aplicación puede montar y acceder simultáneamente al recurso compartido de
Almacenamiento de archivos.

Especialmente útil para los proyectos de ciencia de datos es la capacidad para crear un
almacén de archivos de Azure como el lugar para compartir datos del proyecto con los
miembros del equipo de proyecto. Cada uno de ellos tiene acceso entonces a la misma
copia de los datos en el almacenamiento de archivos de Azure. También puede utilizar
este almacenamiento de archivos para compartir conjuntos de características generados
durante la ejecución del proyecto. Si el proyecto es una interacción con los clientes,
estos pueden crear un almacenamiento de archivos de Azure en su propia suscripción
de Azure para compartir los datos de proyecto y las características con el usuario. De
esta manera, el cliente tiene control total sobre los recursos de datos del proyecto. Para
más información sobre Azure File Storage, consulte Introducción a Azure File Storage en
Windows o Uso de Azure File Storage con Linux.

Servicios R y Python para SQL Server 2019


R Services (En base de datos) proporciona una plataforma para desarrollar e
implementar aplicaciones inteligentes que pueden destapar nueva información. Puede
usar el completo y eficaz lenguaje R, incluidos los numerosos paquetes proporcionados
por la comunidad R, para crear modelos y generar predicciones con sus datos de SQL
Server. Dado que R Services (En base de datos) integra el lenguaje R con SQL Server, los
análisis se mantienen cerca de los datos, lo que elimina los costos y los riesgos de
seguridad asociados al movimiento de datos.

R Services (En base de datos) admite el lenguaje R de código abierto con un completo
conjunto de tecnologías y herramientas de SQL Server. Ofrece un rendimiento superior,
seguridad, confiabilidad y facilidad de uso. Puede implementar soluciones en R con
herramientas conocidas y convenientes. Las aplicaciones de producción pueden llamar
al entorno en tiempo de ejecución de R y recuperar las predicciones y los objetos
visuales mediante Transact-SQL. También puede usar las bibliotecas de ScaleR para
mejorar la escalabilidad y el rendimiento de las soluciones de R. Para más información,
consulte SQL Server R Services.

El equipo del proceso de ciencia de datos en equipo de Microsoft ha publicado dos


tutoriales completos que muestran cómo crear soluciones de ciencia de datos en SQL
Server 2016 R Services, uno para los programadores de R y otro para desarrolladores de
SQL. Para los programadores de R, consulte el tutorial completo de ciencia de datos.
Para los desarrolladores de SQL, consulte Análisis de R en bases de datos para
desarrolladores de SQL (tutorial).

Apéndice: Herramientas para configurar los


proyectos de ciencia de datos

Instalación del administrador de credenciales de Git en


Windows
Si está siguiendo el proceso de ciencia de datos en equipo en Windows, debe instalar el
Administrador de credenciales de Git (GCM) para comunicarse con los repositorios de
Git. Para instalar GCM, primero debe instalar Chocolaty. Para instalar Chocolaty y GCM,
ejecute los siguientes comandos en Windows PowerShell como administrador:

PowerShell

iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex


choco install git-credential-manager-for-windows -y

Instalación de Git en máquinas Linux (CentOS)


Ejecute el siguiente comando de bash para instalar Git en máquinas Linux (CentOS):

PowerShell

sudo yum install git

Generación de clave SSH pública en máquinas Linux


(CentOS)
Si usa máquinas Linux (CentOS) para ejecutar los comandos de Git, debe agregar la
clave SSH pública de la máquina a los servicios de Azure DevOps. De este modo, Azure
DevOps Services reconoce la máquina. En primer lugar, debe generar una clave SSH
pública y agregar la clave a las claves públicas de SSH en la página de configuración de
seguridad de Azure DevOps Services.

1. Para generar la clave SSH, ejecute los dos comandos siguientes:

ssh-keygen
cat .ssh/id_rsa.pub
2. Copie la clave ssh completa, incluido ssh-rsa.

3. Inicie sesión en Azure DevOps Services.

4. Haga clic en <Su nombre> en la esquina superior derecha de la página y luego en


Seguridad.

5. Haga clic en Claves públicas de SSH y haga clic en +Agregar.

6. Pegue la clave SSH copiada en el cuadro de texto y haga clic en Guardar.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Descripción de la ciencia de datos para el aprendizaje automático
Aprendizaje automático a escala
Introducción a Azure Machine Learning
Ingeniería y ciencia de datos de Databricks

Recursos relacionados
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Roles y tareas del proceso de ciencia de datos en equipo
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Identificación de escenarios y
planeamiento del procesamiento
analítico avanzado de datos
Artículo • 11/07/2023

¿Qué recursos son necesarios para crear un entorno que pueda realizar el
procesamiento de análisis avanzado en un conjunto de datos? En este artículo se
sugiere una serie de preguntas que le pueden ayudar a identificar las tareas y los
recursos pertinentes para su escenario.

Para aprender sobre el orden de los pasos de alto nivel para el análisis predictivo,
consulte ¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?. Cada paso requiere
recursos específicos para las tareas pertinentes para su escenario concreto.

Responder preguntas clave en las áreas siguientes para identificar su escenario:

logística de datos
características de datos
calidad del conjunto de datos
herramientas y lenguajes preferidos

Cuestiones de logística: movimiento y


ubicaciones de los datos
Las cuestiones logísticas tratan los siguientes elementos:

ubicación de origen de datos


destino de destino en Azure
requisitos para mover los datos, incluida la programación, la cantidad y los
recursos que están involucrados

Es posible que tenga que mover los datos varias veces durante el proceso de análisis. Un
escenario común es mover datos locales a algún tipo de almacenamiento en Azure y, a
continuación, en Azure Machine Learning.

¿Cuál es el origen de los datos?


¿Están los datos en local o en la nube? Entre las posibles ubicaciones se incluyen:
una dirección HTTP disponible públicamente
una ubicación de archivo local o de red
una base de datos de SQL Server
un contenedor de Azure Storage

¿Cuál es el destino en Azure?


¿Dónde tienen que estar los datos para procesarse o modelarse?

Azure Machine Learning


Azure Blob Storage
Bases de datos SQL Azure
SQL Server en máquina virtual de Azure
HDInsight (Hadoop en Azure) o tablas de Hive
Discos duros virtuales de Azure que se pueden montar

¿Cómo va a mover los datos?


Para los procedimientos y los recursos para ingerir o cargar datos en una variedad de
entornos de almacenamiento y procesamiento diferentes, consulte:

Carga de datos en entornos de almacenamiento para el análisis


Acceso seguro a datos en Azure Machine Learning

¿Necesitan moverse los datos siguiendo una


programación regular o modificarse durante la
migración?
Considere el uso de Azure Data Factory (ADF) cuando los datos deban migrarse
continuamente. ADF puede ser útil para:

un escenario híbrido que implique recursos locales y en la nube


un escenario donde los datos se transfieran, modifiquen o cambien por lógica de
negocios mientras se migran

Para más información, consulte Movimiento de datos desde una base de datos de
SQL Server hasta SQL Azure con Azure Data Factory.

¿Qué cantidad de datos se va a mover a Azure?


Los conjuntos de datos grandes pueden superar la capacidad de almacenamiento de
ciertos clústeres de proceso. En tales casos, podría usarse una muestra de los datos
durante el análisis. Para obtener más información sobre cómo reducir la muestra de un
conjunto de datos en diversos entornos de Azure, consulte Muestreo de datos del
proceso de ciencia de datos en equipos.

Cuestiones sobre las características de los


datos: tipo, formato y tamaño
Estas cuestiones son clave para planear los entornos de almacenamiento y
procesamiento. Le ayudarán a elegir el escenario adecuado para su tipo de datos y
conocer todas las restricciones.

¿Cuáles son los tipos de datos?


Numérico
Categorías
Cadenas
Binary

¿Qué formato tienen los datos?


Archivos sin formato separados por comas (CSV) o separados por tabulaciones
(TSV)
Comprimidos o sin comprimir
Blobs de Azure
Tablas de Hadoop Hive
Tablas de SQL Server

¿Qué tamaño tienen los datos?


Pequeño: menos de 2 GB
Media: más de 2 GB y menos de 10 GB
Grande: más de 10 GB

Tal como se aplica a Azure Machine Learning:

Opciones de ingesta de datos para flujos de trabajo de Azure Machine Learning.


Optimización del procesamiento de datos con Azure Machine Learning.
Cuestiones sobre la calidad de los datos:
exploración y procesamiento previo

¿Qué sabe acerca de los datos?


Comprenda las características básicas de los datos:

Qué patrones o tendencias muestran


Qué valores atípicos tienen
Cuántos valores faltan

Este paso es importante para ayudarle a:

Determinar cuánto procesamiento previo es necesario


Formular hipótesis que sugieren las características o el tipo de análisis más
adecuado
Formular planes para recopilar datos adicionales

Entre las técnicas útiles para la inspección de datos podemos citar el cálculo de
estadísticas descriptivas y los trazados de visualizaciones. Para obtener más información
sobre cómo explorar un conjunto de datos en diversos entornos de Azure, consulte
Exploración de datos en el proceso de ciencia de datos en equipos.

¿Los datos requieren un procesamiento previo o una


limpieza?
Es posible que deba preprocesar y limpiar los datos antes de poder usar eficazmente el
conjunto de datos para el aprendizaje automático. Los datos sin procesar suelen ser
ruidosos y no confiables. Les podrían faltar valores. El uso de estos datos para el
modelado puede producir resultados engañosos. Para ver una descripción, consulte
Tareas para preparar los datos para el aprendizaje automático mejorado.

Cuestiones sobre herramientas y lenguajes


Hay muchas opciones para lenguajes, entornos de desarrollo y herramientas. Sea
consiente de sus necesidades y preferencias.

¿Qué lenguajes prefiere usar para el análisis?


R
Python
SQL
Otros

¿Qué herramientas debe usar para analizar los datos?


Azure Machine Learning usa cuadernos de Jupyter Notebook para el análisis de datos.
Además de este entorno recomendado, estas son otras opciones que a menudo se
emparejan en escenarios empresariales intermedios y avanzados.

Microsoft Azure PowerShell: un lenguaje de script que se usa para administrar los
recursos de Azure en un lenguaje de script
RStudio
Herramientas de Python para Visual Studio
Microsoft Power BI

Identificación del escenario de análisis


avanzado
Después de haber respondido a las preguntas de la sección anterior, estará listo para
determinar qué escenario se adapta mejor a su caso. Los escenarios de ejemplo que se
describen en Escenarios para análisis avanzado en Azure Machine Learning.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es el proceso de ciencia de datos en equipos (TDSP)?

Recursos relacionados
Ejecutar tareas de ciencia de datos: exploración, modelado e implementación
Configuración de entornos de ciencia de datos para utilizarse en el proceso de
ciencia de datos en equipos
Plataformas y herramientas para proyectos de ciencia de datos
Ciencia de datos y aprendizaje automático con Azure Databricks
Carga de datos en entornos de
almacenamiento para el análisis
Artículo • 11/07/2023

El proceso de ciencia de datos en equipos requiere que los datos se ingieran o se


carguen de la manera más adecuada en cada fase. Entre los destinos de datos se
incluyen Azure Blob Storage, instancias de Azure SQL Database, SQL Server en VM de
Azure, HDInsight (Hadoop), Azure Synapse Analytics y Azure Machine Learning.

En los artículos siguientes se describe cómo introducir datos en varios entornos de


destino donde los datos se almacenan y se procesan.

Hacia o desde Azure Blob Storage


Hacia SQL Server en máquinas virtuales de Azure
Hacia Azure SQL Database
Hacia tablas de Hive
Hacia tablas SQL con particiones
Desde SQL Server local

Las necesidades técnicas y empresariales, así como la ubicación inicial, el formato y el


tamaño de los datos, determinarán el mejor plan de ingesta de datos. No es raro que un
plan más adecuado tenga varios pasos. En esta secuencia de tareas se puede incluir, por
ejemplo, la exploración de datos, el procesamiento previo, la limpieza, el muestreo
inferior y el entrenamiento del modelo. Azure Data Factory es un recurso de Azure
recomendado para orquestar el movimiento y la transformación de los datos.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Movimiento de datos hacia y desde
Azure Blob Storage
Artículo • 11/07/2023

El proceso de ciencia de datos en equipos requiere que los datos se introduzcan o se


cargue en una variedad de entornos de almacenamiento diferentes para que se
procesen o analicen de la manera más adecuada en cada fase del proceso. Azure Blob
Storage tiene una documentación completa en este enlace, pero esta sección en la
documentación de TDSP proporciona un resumen de inicio.

Distintas tecnologías para mover datos


Los artículos siguientes describen cómo mover datos hacia y desde Azure Blob storage
mediante diferentes tecnologías.

Explorador de Azure Storage


AzCopy
Python
SSIS

El método más adecuado para usted dependerá de su escenario. El artículo Escenarios


para análisis avanzado en Azure Machine Learning lo ayudará a determinar los recursos
que necesita para una variedad de flujos de trabajo de ciencia de datos utilizados en el
proceso de análisis avanzado.

7 Nota

Para ver una introducción completa a Azure Blob Storage, consulte Aspectos
básicos de Azure Blob y Azure Blob Service.

Uso de Azure Data Factory


Como alternativa, puede usar Azure Data Factory para hacer lo siguiente:

Crear y programar una canalización que descarga los datos desde Azure Blob
Storage
Pasarla a un servicio web Azure Machine Learning publicado
Recibir los resultados de análisis predictivo
Cargar los resultados al almacenamiento
Consulte Creación de canalizaciones predictivas mediante Factoría de datos de Azure y
Azure Machine Learningpara obtener más información.

Prerrequisitos
En este artículo se presupone que tiene una suscripción de Azure, una cuenta de
almacenamiento y la clave de almacenamiento correspondiente para dicha cuenta.
Antes de cargar o descargar datos, debe conocer su nombre de cuenta de Azure
Storage y la clave de cuenta.

Para configurar una suscripción a Azure, consulte Prueba gratuita de un mes .


Para obtener instrucciones sobre cómo crear una cuenta de almacenamiento y
cómo obtener información sobre la cuenta y la clave, consulte Acerca de las
cuentas de Azure Storage.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Introducción a Azure Blob Storage
Copia y desplazamiento de blobs de una cuenta de almacenamiento o contenedor
a otro
¿Qué es el proceso de ciencia de datos en equipos (TDSP)?

Recursos relacionados
Exploración de los datos en Azure Blob Storage
Proceso de datos de Azure Blob Storage con análisis avanzado
Configuración de entornos de ciencia de datos para utilizarse en el proceso de
ciencia de datos en equipos
Carga de datos en entornos de almacenamiento para el análisis
Mover datos hacia y desde Azure Blob
Storage con el Explorador de Azure
Storage
Artículo • 11/07/2023

El Explorador de Azure Storage es una herramienta gratuita de Microsoft que permite


trabajar con los datos de Azure Storage en Windows, macOS y Linux. En este tema se
describe cómo usarlo para cargar y descargar datos de Azure Blob Storage. La
herramienta se puede descargar desde el Explorador de Microsoft Azure Storage .

Este menú vincula a tecnologías que puede usar para mover datos hacia Azure Blob
Storage y desde este:

7 Nota

Si está usando la máquina virtual que se configuró con los scripts ofrecidos por
Máquinas virtuales de ciencia de datos en Azure,el Explorador de Azure Storage
ya está instalado en la máquina virtual.

7 Nota

Para ver una introducción completa a Azure Blob Storage, consulte Aspectos
básicos de Azure Blob y API REST de Azure Blob Service.

Prerequisites
En este documento se supone que tiene una suscripción de Azure y una cuenta de
almacenamiento y la clave de almacenamiento correspondiente para dicha cuenta.
Antes de cargar o descargar datos, debe conocer su nombre de cuenta de Azure
Storage y la clave de cuenta.

Para configurar una suscripción a Azure, consulte Prueba gratuita de un mes .


Para obtener instrucciones sobre cómo crear una cuenta de almacenamiento y
cómo obtener información sobre la cuenta y la clave, consulte Acerca de las
cuentas de Azure Storage. Anote la clave de acceso de la cuenta de
almacenamiento, ya que la necesita para conectarse a la cuenta con la herramienta
Explorador de Azure Storage.
La herramienta Explorador de Azure Storage puede descargarse desde aquí .
Acepte los valores predeterminados durante la instalación.

Usar el Explorador de Azure Storage


En los pasos siguientes se describe cómo cargar y descargar datos mediante el
Explorador de Azure Storage.

1. Inicie Explorador de Microsoft Azure Storage.


2. Para que aparezca el Asistente Iniciar sesión en una cuenta..., seleccione el icono
de Configuración de la cuenta de Azure, luego Agregar una cuenta y escriba las
credenciales.

3. Para que aparezca el Asistente para conectar a Azure Storage, seleccione el icono
de Conectar a Azure Storage.
4. Escriba la clave de acceso de la cuenta de Azure Storage en el Asistente para
conectar a Azure Storage y luego haga clic en Siguiente.

5. Escriba el nombre de la cuenta de almacenamiento en el cuadro Nombre de


cuenta y, después, seleccione Siguiente.
6. Ahora debería aparecer la cuenta de almacenamiento agregada. Para crear un
contenedor de blobs en una cuenta de almacenamiento, haga clic con el botón
derecho en el nodo Contenedores de blob de esa cuenta, seleccione Crear
contenedor de blobs y escriba un nombre.
7. Para cargar datos en un contenedor, seleccione el contenedor de destino y haga
clic en el botón Cargar.

8. Haga clic en ... a la derecha del cuadro Archivos, seleccione uno o varios archivos
para cargarlos desde el sistema de archivos y haga clic en Cargar para empezar a
cargarlos.

9. Para descargar datos, seleccione el blob en el contenedor correspondiente para


descarga y haga clic en Descargar.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.
Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Introducción a Azure Blob Storage
Carga, descarga y administración de datos con Explorador de Azure Storage
¿Qué es el proceso de ciencia de datos en equipos (TDSP)?

Recursos relacionados
Exploración de los datos en Azure Blob Storage
Proceso de datos de Azure Blob Storage con análisis avanzado
Configuración de entornos de ciencia de datos para utilizarse en el proceso de
ciencia de datos en equipos
Carga de datos en entornos de almacenamiento para el análisis
Movimiento de datos desde o hacia
Azure Blob Storage con conectores SSIS
Artículo • 11/07/2023

El Azure Feature Pack para Integration Services (SSIS) ofrece componentes para
conectarse a Azure, transferir datos entre Azure y orígenes de datos locales y procesar
datos almacenados en Azure.

Este menú vincula a tecnologías que puede usar para mover datos hacia Azure Blob
Storage y desde este:

Una vez que los clientes han movido los datos locales a la nube, pueden acceder a sus
datos desde cualquier servicio de Azure para aprovechar al máximo el conjunto de
tecnologías de Azure. Posteriormente, los datos se pueden usar, por ejemplo, en Azure
Machine Learning o en un clúster de HDInsight.

Los ejemplos de uso de estos recursos de Azure se encuentran en los tutoriales de SQL y
HDInsight.

Si desea ver un análisis de los escenarios canónicos que usan SSIS para satisfacer las
necesidades de negocio comunes en escenarios de integración de datos híbridos, visite
el blog Doing more with SQL Server Integration Services Feature Pack for Azure
(Aprovechar más el Feature Pack de SQL Server Integration Services para Azure).

7 Nota

Para ver una introducción completa a Azure Blob Storage, consulte Aspectos
básicos de Azure Blob y API REST de Azure Blob Service.

Requisitos previos
Para realizar las tareas que se describen en este artículo, debe tener configurada una
suscripción a Azure y una cuenta de Azure Storage. El nombre y la clave de la cuenta de
Azure Storage se necesitan para cargar o descargar datos.

Para configurar una suscripción a Azure, consulte Prueba gratuita de un mes .


Para obtener instrucciones sobre cómo crear una cuenta de almacenamiento, así
como para obtener información sobre la cuenta y la clave, consulte Acerca de las
cuentas de Azure Storage.
Para usar los conectores SSIS, debe descargar:

SQL Server 2014 o 2016 Standard (o superior): la instalación incluye SQL Server
Integration Services.
Feature Pack de Microsoft SQL Server 2014 o 2016 Integration Services para
Azure: se pueden descargar, respectivamente, en las páginas SQL Server 2014
Integration Services y SQL Server 2016 Integration Services .

7 Nota

SSIS se instala con SQL Server, pero no está incluido en la versión Express. Para
obtener información sobre qué aplicaciones se incluyen en las distintas versiones
de SQL Server, consulte la documentación técnica de SQL Server.

Para instalar SSIS, vea Instalar Integration Services (SSIS).

Si desea obtener información sobre cómo trabajar con SISS para compilar paquetes de
extracción, transformación y carga (ETL) sencillos, consulte Tutorial de SSIS: Creación de
un paquete ETL sencillo.

Descargar el conjunto de datos de taxis de la


ciudad de Nueva York
En el ejemplo descrito aquí se usa un conjunto de datos disponible públicamente, ya sea
a través de Azure Open Datasets o de los datos de registro de viaje de TLC de origen.
El conjunto de datos consta de alrededor de 173 millones de viajes en taxi que se
realizaron en Nueva York durante el año 2013. Existen dos tipos de datos: datos de los
detalles de las carreras y datos sobre las tarifas.

Carga de datos en el almacenamiento de blobs


de Azure
Para mover los datos con el Feature Pack de SSIS desde un almacenamiento local a Blob
Storage de Azure, usamos una instancia de la tarea de carga de blobs de Azure, que
aparece a continuación:
A continuación, se describen los parámetros que usa la tarea:

Campo Descripción

AzureStorageConnection Especifica un Administrador de conexiones de Azure Storage


existente o crea uno nuevo que hace referencia a una cuenta de
Azure Storage que apunta a la ubicación en que se almacenan
los archivos de blob.

BlobContainer Especifica el nombre del contenedor de blobs que contiene los


archivos cargados como blobs.

BlobDirectory Especifica el directorio de blobs donde se almacena el archivo


cargado como un blob en bloques. El directorio de blobs es
una estructura jerárquica virtual. Si ya existe el blob, se
reemplaza.

LocalDirectory Especifica el directorio local que contiene los archivos que se


cargarán.

FileName Especifica un nombre de filtro para seleccionar archivos con el


patrón de nombre especificado. Por ejemplo, MiHoja*.xls
incluirá archivos como MiHoja001.xls y MiHojaABC.xlsx.

TimeRangeFrom/TimeRangeTo Especifica un filtro de intervalo de tiempo. Se incluyen los


archivos modificados después de TimeRangeFrom y antes de
TimeRangeTo.

7 Nota

Es necesario corregir las credenciales de AzureStorageConnection y se debe salir


de BlobContainer antes de intentar realizar la transferencia.

Cargar datos desde el almacenamiento de


blobs de Azure
Para descargar datos desde Azure Blob Storage a un almacenamiento local con SSIS, use
una instancia de Tarea de descarga de blobs de Azure.
Escenarios de SSIS-Azure más avanzados
El Feature Pack de SSIS permite administrar flujos más complejos al empaquetar juntas
las tareas. Por ejemplo, los datos de blobs se podrían ingresar directamente en un
clúster de HDInsight cuya salida se podría descargar nuevamente a un blob y, luego, a
un almacenamiento local. SSIS puede ejecutar trabajos de Hive y Pig en un clúster de
HDInsight, mediante el uso de conectores SSIS adicionales:

Para ejecutar un script de Hive en un clúster de HDInsight de Azure con SSIS, use
Tarea de Hive para HDInsight de Azure.
Para ejecutar un script de Pig en un clúster de HDInsight de Azure con SSIS, use
Tarea de Pig para HDInsight de Azure.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Introducción a Azure Blob Storage
Copia y desplazamiento de blobs de una cuenta de almacenamiento o contenedor
a otro
Ejecución de paquetes SSIS existentes en la canalización de Azure Data Factory o
Azure Synapse
¿Qué es el proceso de ciencia de datos en equipos (TDSP)?

Recursos relacionados
Exploración de los datos en Azure Blob Storage
Proceso de datos de Azure Blob Storage con análisis avanzado
Mover datos hacia y desde Azure Blob Storage con el Explorador de Azure Storage
Carga de datos en entornos de almacenamiento para el análisis
Mover datos a un servidor SQL Server
en una máquina virtual de Azure
Artículo • 11/07/2023

En este artículo se describen las opciones para mover datos desde archivos planos
(formatos CSV o TSV) o desde un servidor SQL Server local hasta un servidor SQL Server
en una máquina virtual de Azure. Estas tareas para mover datos a la nube forman parte
del proceso de ciencia de datos en equipos.

Para ver un tema que describa las opciones para mover datos a una base de datos de
Azure SQL para Machine Learning, vea Mover datos a una base de datos de Azure SQL
para Azure Machine Learning.

En la tabla siguiente se resumen las opciones para mover datos a un servidor SQL Server
en una máquina virtual de Azure.

ORIGEN DESTINO: SQL Server en máquinas virtuales de Azure

Archivo 1. Utilidad de copia masiva (BCP) de la línea de comandos


plano 2. Consulta SQL de inserción masiva
3. Utilidades integradas gráficas de SQL Server

SQL Server 1. Asistente para implementación de una base de datos de SQL Server en una
local máquina virtual de Microsoft Azure
2. Exportación a un archivo plano
3. SQL Database Migration Wizard
4. Copia de seguridad y restauración de una base de datos

En este documento se da por supuesto que los comandos SQL se ejecutan desde
SQL Server Management Studio o el Explorador de bases de datos de Visual Studio.

 Sugerencia

Como alternativa, puede usar Azure Data Factory para crear y programar una
canalización de datos se moverá a una máquina virtual de SQL Server en Azure.
Para obtener más información, consulte Copia de datos con Azure Data Factory
(actividad de copia)

Requisitos previos
En este tutorial se asume que dispone de:
Una suscripción de Azure. Si no tiene una suscripción, puede registrarse para
obtener una evaluación gratuita .
Una cuenta de almacenamiento de Azure. En este tutorial, usará una cuenta de
almacenamiento de Azure para almacenar los datos. Si no dispone de una cuenta
de almacenamiento de Azure, vea el artículo Creación de una cuenta de
almacenamiento . Tras crear la cuenta de almacenamiento, tendrá que obtener la
clave de cuenta que se usa para tener acceso al almacenamiento. Vea
Administración de las claves de acceso de la cuenta de almacenamiento.
Servidor SQL Server aprovisionado en una máquina virtual de Azure. Para
obtener instrucciones, consulte Configurar una máquina virtual de Azure para SQL
Server como servidor de IPython Notebook para realizar análisis avanzados.
Azure PowerShell instalado y configurado de forma local. Para obtener
instrucciones, consulte Instalación y configuración de Azure PowerShell.

Mover datos desde un origen de archivo plano


a un servidor SQL Server en una máquina
virtual de Azure
Si los datos se encuentran en un archivo plano (organizado en un formato de fila y
columna), se pueden mover a la VM de SQL Server en Azure mediante los métodos
siguientes:

1. Utilidad de copia masiva (BCP) de la línea de comandos


2. Consulta SQL de inserción masiva
3. Utilidades integradas gráficas de SQL Server (Import/Export, SSIS)

Utilidad de copia masiva (BCP) de la línea de comandos


BCP es una utilidad de línea de comandos instalada con SQL Server y es una de las
maneras más rápidas de mover datos. Funciona en las tres variantes de SQL Server
(SQL Server local, SQL Azure y máquina virtual SQL Server en Azure).

7 Nota

¿Dónde deberían estar mis datos para BCP? Aunque no es necesario, tener
archivos que contienen datos de origen que se encuentran en la misma máquina
que el SQL Server de destino permite transferencias más rápidas (velocidad de red
frente a velocidad de E/S de disco local). Puede mover los archivos planos que
contienen los datos en la máquina en la que está instalado SQL Server mediante las
diversas herramientas de copia de archivos como AZCopy, el Explorador de Azure
Storage o copiar y pegar de Windows mediante el Protocolo de escritorio
remoto (RDP).

1. Asegúrese de que la base de datos y las tablas se crean en la base de datos de SQL
Server de destino. Este es un ejemplo de cómo realizar esa tarea con los comandos
Create Database y Create Table :

SQL

CREATE DATABASE <database_name>

CREATE TABLE <tablename>


(
<columnname1> <datatype> <constraint>,
<columnname2> <datatype> <constraint>,
<columnname3> <datatype> <constraint>
)

2. Genere el archivo de formato que describe el esquema de la tabla. Para ello, debe
usar el siguiente comando en la línea de comandos de la máquina donde está
instalado bcp.

bcp dbname..tablename format nul -c -x -f exportformatfilename.xml -S

servername\sqlinstance -T -t \t -r \n

3. Inserte los datos en la base de datos mediante el comando bcp, que debería
funcionar desde la línea de comandos cuando SQL Server está instalado en la
misma máquina:

bcp dbname..tablename in datafilename.tsv -f exportformatfilename.xml -S

servername\sqlinstancename -U username -P password -b


block_size_to_move_in_single_attempt -t \t -r \n

Optimización de inserciones de BCP Consulte el siguiente artículo 'Directrices para


optimizar la importación masiva' para optimizar este tipo de inserciones.

Poner en paralelo inserciones para el movimiento de


datos más rápido
Si los datos que va a mover son grandes y desea acelerar el proceso, ejecute
simultáneamente varios comandos BCP en paralelo en un script de PowerShell.

7 Nota
Ingesta de macrodatos: para optimizar la carga de datos para conjuntos de datos
grandes y muy grandes, puede crear particiones de sus tablas de bases de datos
lógicas y físicas con varios grupos de archivos y tablas de particiones. Para obtener
más información acerca de cómo crear y cargar datos en las tablas de partición,
consulte Tablas de particiones de SQL de carga paralela.

El script de PowerShell de ejemplo que se muestra a continuación, indica inserciones


paralelas mediante bcp:

PowerShell

$NO_OF_PARALLEL_JOBS=2

Set-ExecutionPolicy RemoteSigned #set execution policy for the script to


execute
# Define what each job does
$ScriptBlock = {
param($partitionnumber)

#Explicitly using SQL username password


bcp database..tablename in datafile_path.csv -F 2 -f
format_file_path.xml -U username@servername -S tcp:servername -P password -b
block_size_to_move_in_single_attempt -t "," -r \n -o
path_to_outputfile.$partitionnumber.txt

#Trusted connection w.o username password (if you are using windows auth
and are signed in with that credentials)
#bcp database..tablename in datafile_path.csv -o
path_to_outputfile.$partitionnumber.txt -h "TABLOCK" -F 2 -f
format_file_path.xml -T -b block_size_to_move_in_single_attempt -t "," -r
\n
}

# Background processing of all partitions


for ($i=1; $i -le $NO_OF_PARALLEL_JOBS; $i++)
{
Write-Debug "Submit loading partition # $i"
Start-Job $ScriptBlock -Arg $i
}

# Wait for it all to complete


While (Get-Job -State "Running")
{
Start-Sleep 10
Get-Job
}

# Getting the information back from the jobs


Get-Job | Receive-Job
Set-ExecutionPolicy Restricted #reset the execution policy
Consulta SQL de inserción masiva
La Consulta SQL de inserción masiva se puede usar para importar datos en la base de
datos desde archivos basados en fila o columnas [los tipos admitidos se tratan en el
tema Preparar los datos para exportar o importar de forma masiva (SQL Server)].

Estos son algunos ejemplos de comandos de inserción masiva:

1. Analice sus datos y establezca las opciones personalizadas antes de importar para
asegurarse de que la base de datos de SQL Server asume el mismo formato para
todos los campos especiales, como las fechas. Este es un ejemplo de cómo
establecer el formato de fecha como año-mes-día (si los datos contienen la fecha
en formato año-mes-día):

SQL

SET DATEFORMAT ymd;

2. Importar datos mediante instrucciones de importación en bloque:

SQL

BULK INSERT <tablename>


FROM
'<datafilename>'
WITH
(
FirstRow = 2,
FIELDTERMINATOR = ',', --this should be column separator in your
data
ROWTERMINATOR = '\n' --this should be the row separator in your
data
)

Utilidades integradas de SQL Server


Puede utilizar SQL Server Integration Services (SSIS) para importar datos en la máquina
virtual de SQL Server en Azure desde un archivo plano. SSIS está disponible en dos
entornos de estudio. Para obtener más detalles, consulte Entornos de Studio e
Integration Services (SSIS):

Para obtener más información acerca de las herramientas de datos de SQL Server,
consulte Herramientas de datos de Microsoft SQL Server
Para obtener más información acerca del Asistente para importación y exportación,
consulte Asistente para importación y exportación de SQL Server
Mover datos desde un servidor SQL Server
local a un servidor SQL Server en una máquina
virtual de Azure
También puede usar las siguientes estrategias de migración:

1. Asistente para implementación de una base de datos de SQL Server en una


máquina virtual de Microsoft Azure
2. Exportación a un archivo plano
3. SQL Server Migration Assistant (SSMA)
4. Copia de seguridad y restauración de una base de datos

A continuación se describen cada una de estas opciones:

Asistente para implementación de una base de datos de


SQL Server en una máquina virtual de Microsoft Azure
El Asistente para implementación de una base de datos de SQL Server en una
máquina virtual de Microsoft Azure es una manera sencilla y recomendada de mover
datos de una instancia local de SQL Server a SQL Server en una máquina virtual de
Azure. Para obtener pasos detallados así como un debate sobre otras alternativas, vea
Migración de una Base de datos SQL Server a SQL Server en una máquina virtual de
Azure.

Exportación a un archivo plano


Se pueden usar diversos métodos para la exportación masiva de datos desde un
servidor SQL Server local, como se documenta en el tema Importación y exportación
masiva de datos (SQL Server). Este documento tratará el programa de copia masiva
(BCP) como ejemplo. Una vez que los datos se exportan a un archivo plano, se puede
importar a otro servidor SQL Server mediante la importación masiva.

1. Exporte los datos de la instancia de SQL Server local a un archivo mediante la


utilidad bcp como se indica a continuación.

bcp dbname..tablename out datafile.tsv -S servername\sqlinstancename -T -t \t


-t \n -c

2. Cree la base de datos y la tabla en la máquina virtual de SQL Server en Azure


mediante create database y create table para el esquema de tablas que se
exportó en el paso 1.
3. Cree un archivo de formato para describir el esquema de tabla de los datos que se
están exportando e importando. En Crear un archivo de formato (SQL Server)se
describen detalles del archivo de formato.

Generación de archivos de formato cuando se ejecuta BCP desde la máquina de


SQL Server

bcp dbname..tablename format nul -c -x -f exportformatfilename.xml -S


servername\sqlinstance -T -t \t -r \n

Generación de archivos de formato cuando se ejecuta BCP de forma remota contra


un SQL Server

bcp dbname..tablename format nul -c -x -f exportformatfilename.xml -U

username@servername.database.windows.net -S tcp:servername -P password --t \t


-r \n

4. Utilice cualquiera de los métodos descritos en la sección Mover datos desde el


origen de archivo para mover los datos de los archivos planos a un servidor SQL
Server.

SQL Server Migration Assistant (SSMA)


SQL Server Migration Assistant (SSMA) proporciona una manera fácil de mover datos
entre dos instancias de SQL server. Permite al usuario asignar el esquema de datos entre
orígenes y tablas de destino, elegir los tipos de columna y otras funcionalidades. Utiliza
la copia masiva (BCP) en segundo plano. A continuación se muestra una captura de la
pantalla de bienvenida de SQL Server Migration Assistant (SSMA).
Copia de seguridad y restauración de una base de datos
SQL Server es compatible con:

1. La funcionalidad de copia de seguridad y restauración de la base de datos (tanto a


un archivo local como la exportación de bacpac a blob) y Aplicaciones de capa de
datos (con bacpac).
2. Capacidad para crear directamente las máquinas virtuales de SQL Server en Azure
con una copia o una base de datos copiada en una base de datos existente de SQL
Database. Para más información, consulte Use the Copy Database Wizard.

A continuación se muestra una captura de pantalla de las opciones de copia de


seguridad y restauración de base de datos desde SQL Server Management Studio.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Migración de una Base de datos SQL Server a SQL Server en una máquina virtual
de Azure
Información general sobre SQL Server en Azure Virtual Machines

Recursos relacionados
Traslado de datos a una base de datos de Azure SQL para Azure Machine Learning
Migración de datos de una base de datos de SQL Server a SQL Database con Azure
Data Factory
Proceso de datos en una máquina virtual de SQL Server en Azure
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Traslado de datos a Azure SQL Database
para Azure Machine Learning
Artículo • 11/07/2023

En este artículo se describen las opciones para mover datos de archivos planos
(formatos CSV o TSV) o de datos almacenados en un servidor con SQL Server a Azure
SQL Database. Estas tareas para mover datos a la nube forman parte del proceso de
ciencia de datos en equipos.

Para obtener un tema en el que se describen las opciones para migrar datos de
SQL Server a opciones de Azure SQL, consulte Migración a Azure SQL.

En la tabla siguiente se resumen las opciones para mover datos a una base de datos de
Azure SQL.

ORIGEN DESTINO: Azure SQL

Archivo plano (formatos CSV o TSV) Consulta SQL de inserción masiva

SQL Server local 1.Exportación a un archivo plano


2. SQL Server Migration Assistant (SSMA)
3. Copia de seguridad y restauración de una base de datos
4. Azure Data Factory

Requisitos previos
El procedimiento aquí descrito requiere disponer de:

Una suscripción de Azure. Si no tiene una suscripción, puede registrarse para


obtener una evaluación gratuita .
Una cuenta de almacenamiento de Azure. En este tutorial se usa una cuenta de
Azure Storage para almacenar los datos. Si no dispone de una cuenta de
almacenamiento de Azure, vea el artículo Creación de una cuenta de
almacenamiento . Tras crear la cuenta de almacenamiento, tendrá que obtener la
clave de cuenta que se usa para tener acceso al almacenamiento. Vea
Administración de las claves de acceso de la cuenta de almacenamiento.
Acceso a Azure SQL Database. Si debe configurar una base de datos de Azure
SQL, Introducción a Microsoft Azure SQL Database proporciona información sobre
cómo aprovisionar una nueva base de datos de Azure SQL.
Azure PowerShell instalado y configurado de forma local. Para obtener
instrucciones, consulte Instalación y configuración de Azure PowerShell.
Data: los procesos de migración se demuestran con el conjunto de datos de taxis de
Nueva York . El conjunto de datos de taxis de Nueva York contiene información sobre
los datos y tarifas de los viajes, que está disponible a través de Azure Open Datasets o
desde los datos de registro de viaje de TLC de origen. En Descripción del conjunto de
datos de carreras de taxi de Nueva York, se proporciona un ejemplo y una descripción
de estos archivos.

Puede adaptar los procedimientos que se describen aquí para un conjunto de datos
propios o seguir los pasos descritos para el uso del conjunto de datos de taxis de Nueva
York. Para cargar el conjunto de datos de taxis de Nueva York en la base de datos de
SQL Server, siga el procedimiento descrito en Importación masiva de datos en una base
de datos de SQL Server.

Traslado de datos desde un origen de archivo


plano a una instancia de Azure SQL Database
Los datos de archivos planos (formatos CSV o TSV) se pueden mover a una base de
datos de Azure SQL Database mediante una consulta SQL de inserción masiva.

Consulta SQL de inserción masiva


Los pasos del procedimiento en el que se usa la consulta SQL de inserción masiva son
similares a los del traslado de datos desde un origen de archivo plano a un servidor
SQL Server en una máquina virtual de Azure. Para detalles, vea Consulta SQL de
inserción masiva.

Traslado de datos desde un servidor con SQL


Server a una base de datos de Azure SQL
Database
Si los datos de origen están almacenados en SQL Server, hay varias alternativas para
mover los datos a una base de datos de Azure SQL Database:

1. Exportación a un archivo plano


2. SQL Server Migration Assistant (SSMA)
3. Copia de seguridad y restauración de una base de datos
4. Azure Data Factory
Los pasos para las tres primeras opciones son similares a los de la sección Mover datos
a un servidor SQL Server en una máquina virtual de Azure, en la que se explican los
mismos procedimientos. En las instrucciones siguientes se proporcionan vínculos a las
secciones correspondientes de ese tema.

Exportación a un archivo plano


Los pasos para esta exportación a un archivo plano son similares a los que se explican
en Exportación a un archivo plano.

SQL Server Migration Assistant (SSMA)


Los pasos para usar SQL Server Migration Assistant (SSMA) son similares a las
instrucciones que se tratan SQL Server Migration Assistant (SSMA).

Copia de seguridad y restauración de una base de datos


Los pasos para usar la copia de seguridad y restauración de la base de datos son
similares a los que se explican en Copia de seguridad y restauración de la base de datos.

Azure Data Factory


Aprenda a mover datos a una base de datos de Azure SQL Database con Azure Data
Factory (ADF) en este tema, Movimiento de datos desde un servidor con SQL Server
hasta SQL Azure con Azure Data Factory. En este tema se muestra cómo usar ADF para
mover datos desde una base de datos de SQL Server a una base de datos de Azure SQL
Database a través de Azure Blob Storage.

Considere la posibilidad de usar ADF cuando los datos deban migrarse continuamente
con orígenes híbridos locales y en la nube. ADF también resulta útil si los datos
necesitan transformaciones o si requiere una nueva lógica de negocios durante la
migración. La ADF permite la programación y supervisión de trabajos mediante scripts
JSON sencillos que administran el movimiento de datos de forma periódica. La ADF
también tiene otras capacidades como la compatibilidad con operaciones complejas.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:
Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Creación de tablas de Hive y carga de
datos desde Azure Blob Storage
Artículo • 11/07/2023

En este artículo se presentan consultas genéricas de Hive que crean tablas de Hive y
cargan datos desde Azure Blob Storage. También se ofrecen algunas instrucciones
acerca de las particiones de tablas de subárbol y de cómo utilizar el formato ORC para
mejorar el rendimiento de las consultas.

Requisitos previos
En este artículo se supone que ha:

Creado una cuenta de Azure Storage. Si necesita instrucciones, consulte Acerca de


las cuentas de Azure Storage.
Aprovisionado un clúster de Hadoop personalizado con el servicio HDInsight. Si
necesita instrucciones, consulte Configuración de clústeres en HDInsight.
Habilitado el acceso remoto para el clúster, iniciado sesión y abierto la consola de
la línea de comandos de Hadoop. Si necesita instrucciones, consulte
Administración de clústeres de Apache Hadoop.

Carga de datos en Azure Blob Storage


Si creó una máquina virtual de Azure siguiendo las instrucciones proporcionadas en el
artículo sobre la configuración de una máquina virtual de Azure para el análisis
avanzado, este archivo de script debió descargarse en el directorio C:\Users\<nombre de
usuario>\Documents\Data Science Scripts de la máquina virtual. Para que estas consultas
de Hive estén listas para su envío, solo tiene que proporcionar un esquema de datos y la
configuración de Azure Blob Storage en los campos adecuados.

Se supone que los datos de las tablas de Hive están en un formato tabular sin
comprimir y que se han cargado los datos en el contenedor predeterminado (o en otro
adicional) de la cuenta de almacenamiento que usa el clúster Hadoop.

Si desea practicar con el grupo NYC Taxi Trip Data, necesita hacer lo siguiente:

descargue los 24 archivos de datos de viajes de los taxis de Nueva York


(12 archivos de viajes y 12 archivos de tarifas), disponibles a través de Azure Open
Datasets o desde los datos de registro de viaje de TLC de origen.
Descomprima todos los archivos en archivos .csv.
Cargue los archivos en el contenedor predeterminado (o adecuado) de la cuenta
de Azure Storage; las opciones de este tipo de cuenta aparecen en el tema Uso de
Azure Storage con clústeres de Azure HDInsight. En esta páginaencontrará el
proceso de cargar los archivos .csv en el contenedor predeterminado de la cuenta
de almacenamiento.

Cómo enviar consultas de Hive


Las consultas de subárbol se pueden enviar mediante:

Enviar consultas de Hive a través de línea de comandos de Hadoop en el nodo


principal del clúster de Hadoop
Enviar consultas de Hive con el Editor de Hive
Enviar consultas de Hive con los comandos de Azure PowerShell

Las consultas de Hive son similares a SQL. Los usuarios familiarizados con SQL pueden
encontrar la hoja de referencia rápida Hive para usuarios de SQL de gran utilidad.

Al enviar una consulta de subárbol, también puede controlar el destino del resultado de
las consultas de subárbol, ya sea en la pantalla o en un archivo local del nodo principal
o en un blob de Azure.

Enviar consultas de Hive a través de línea de comandos


de Hadoop en el nodo principal del clúster de Hadoop
Si la consulta es compleja, enviar consultas de Hive directamente en el nodo principal
del clúster de Hadoop normalmente permite obtener respuestas más rápidas que si se
efectúa el envío mediante un editor de Hive o scripts de Azure PowerShell.

Inicie sesión en el nodo principal del clúster de Hadoop, abra la línea de comandos de
Hadoop en el escritorio del nodo principal y escriba el comando cd %hive_home%\bin .

Los usuarios disponen de tres maneras de enviar consultas de Hive en la línea de


comandos de Hadoop:

Directamente
Con archivos .hql
Con la consola de comandos de Hive

Envíe consultas de subárbol directamente en la línea de comandos


de Hadoop.
Los usuarios pueden ejecutar el comando como hive -e "<your hive query>; para
enviar consultas de Hive sencillas directamente en la línea de comandos de Hadoop.
Este es un ejemplo, donde el cuadro rojo muestra el comando que envía la consulta de
subárbol y el cuadro verde muestra el resultado de la consulta de subárbol.

Envío de consultas de Hive en archivos .hql


Cuando la consulta de subárbol es más complicada y tiene varias líneas, no resulta
práctico modificar consultas en la línea de comandos o la consola de comandos de
subárbol. Una alternativa es usar un editor de texto en el nodo principal del clúster de
Hadoop para guardar las consultas de Hive en un archivo .hql de un directorio local del
nodo principal. Luego la consulta de Hive del archivo .hql puede enviarse mediante el
argumento -f , como se indica a continuación:

Consola

hive -f "<path to the .hql file>"


Suprimir la impresión de pantalla del estado de progreso de las consultas de subárbol

De forma predeterminada, después de enviar la consulta de Hive en la línea de


comandos de Hadoop, el progreso del trabajo de asignación/reducción se imprimirá en
pantalla. Para suprimir la impresión de la pantalla del progreso del trabajo de
asignación/reducción, puede usar un argumento -S ("S" en mayúsculas) en la línea de
comandos del modo indicado a continuación:

Consola

hive -S -f "<path to the .hql file>"


hive -S -e "<Hive queries>"

Envíe consultas de subárbol en la consola de comandos de


subárbol.
Los usuarios también pueden especificar en primer lugar la consola de comandos de
Hive al ejecutar el comando hive en la línea de comandos de Hadoop y, a continuación,
enviar consultas de Hive en la consola de comandos de Hive. A continuación se muestra
un ejemplo: En este ejemplo, los dos cuadros de color rojo resaltan los comandos que
se utilizan para escribir en la consola de comandos de subárbol y la consulta de
subárbol enviada en la consola de comandos de subárbol, respectivamente. El cuadro
verde resalta el resultado de la consulta de subárbol.
Los ejemplos anteriores generan directamente los resultados de la consulta de subárbol
en pantalla. Los usuarios también pueden escribir la salida en un archivo local del nodo
principal o en un blob de Azure. A continuación, los usuarios pueden utilizar otras
herramientas para analizar más el resultado de las consultas de Hive.

Genere los resultados de consulta de subárbol en un archivo local. Para generar los
resultados de consultas de Hive en un directorio local del nodo principal, los usuarios
tienen que enviar la consulta de Hive de la línea de comandos de Hadoop de la
siguiente manera:

Consola

hive -e "<hive query>" > <local path in the head node>

En el ejemplo siguiente, el resultado de la consulta de Hive se escribe en un archivo


hivequeryoutput.txt del directorio C:\apps\temp .
Generar los resultados de consulta de subárbol en un blob de Azure

Los usuarios también pueden generar resultados de consulta de Hive en un blob de


Azure, dentro del contenedor predeterminado del clúster de Hadoop. La consulta de
Hive para esto es la siguiente:

Consola

insert overwrite directory wasb:///<directory within the default container>


<select clause from ...>

En el ejemplo siguiente, el resultado de la consulta de Hive se escribe en un directorio


de blob queryoutputdir dentro del contenedor predeterminado del clúster de Hadoop.
En este caso, solo necesita proporcionar el nombre del directorio, sin el nombre del
blob. Se produce un error si proporciona los nombres de directorio y de blob, como
wasb:///queryoutputdir/queryoutput.txt .
Si abre el contenedor predeterminado del clúster de Hadoop mediante herramientas
como el Explorador de Azure Storage, verá el resultado de la consulta de Hive como se
muestra en la ilustración siguiente. Puede aplicar el filtro (resaltado mediante un cuadro
rojo) para recuperar solo el blob con letras especificadas en los nombres.

Enviar consultas de Hive con el Editor de Hive


También puede utilizar la consola de consultas (Editor de Hive). Para ello, escriba una
dirección URL con el formato https://<nombre del clúster de
Hadoop>.azurehdinsight.net/Home/HiveEditor en un explorador web. Debe haber
iniciado sesión para ver esta consola; así pues, tiene que escribir sus credenciales de
Hadoop aquí.

Enviar consultas de Hive con los comandos de Azure


PowerShell
Los usuarios pueden también usar PowerShell para enviar consultas de Hive. Para
obtener instrucciones, consulte Envío de trabajos de Hive mediante PowerShell.

Creación de tablas y base de datos de Hive


Las consultas de Hive se comparten en el repositorio de GitHub y se pueden
descargar desde allí.

Esta es la consulta de subárbol que crea una tabla de subárbol.

HiveQL

create database if not exists <database name>;


CREATE EXTERNAL TABLE if not exists <database name>.<table name>
(
field1 string,
field2 int,
field3 float,
field4 double,
...,
fieldN string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '<field separator>' lines
terminated by '<line separator>'
STORED AS TEXTFILE LOCATION '<storage location>'
TBLPROPERTIES("skip.header.line.count"="1");

Estas son las descripciones de los campos que los usuarios necesitan para conectar y
otras configuraciones:

<nombre de base de datos> : nombre de la base de datos que los usuarios


desean crear. Si solo quiere usar la base de datos predeterminada, se puede omitir
la consulta "create database... ".
<nombre de tabla> : nombre de la tabla que los usuarios quieren crear en la base
de datos especificada. Si los usuarios desean usar la base de datos
predeterminada, puede hacer referencia directamente a la tabla <nombre de
tabla> sin <nombre de base de datos>.
<separador de campos> : separador que delimita los campos del archivo de datos
que se cargará en la tabla de Hive.
<separador de líneas> : separador que delimita las líneas del archivo de datos.
<ubicación de almacenamiento> : ubicación de Azure Storage para guardar los
datos de tablas de Hive. Si los usuarios no especifican LOCATION <ubicación de
almacenamiento> , la base de datos y las tablas se almacenan de forma
predeterminada en el directorio hive/warehouse/ del contenedor predeterminado
del clúster Hive. Si un usuario desea especificar la ubicación de almacenamiento,
esta debe estar dentro del contenedor predeterminado para la base de datos y las
tablas. Esta ubicación debe denominarse ubicación relativa al contenedor
predeterminado del clúster con el formato 'wasb:///<directorio 1>/' o
'wasb:///<directorio 1>/<directorio 2>/', etc. Después de ejecutar la consulta, los
directorios relativos se crean en el contenedor predeterminado.
TBLPROPERTIES("skip.header.line.count"="1") : si el archivo de datos tiene una
línea de encabezado, los usuarios deben agregar esta propiedad al final de la
consulta create table. De lo contrario, se carga la línea de encabezado como
registro en la tabla. Si el archivo de datos no tiene una línea de encabezado, se
puede omitir esta configuración en la consulta.

Carga de datos en tablas de Hive


Esta es la consulta de subárbol que carga datos en una tabla de subárbol.

HiveQL

LOAD DATA INPATH '<path to blob data>' INTO TABLE <database name>.<table
name>;

<ruta de acceso a datos de blob>: si el archivo de blob que se va a cargar en la


tabla de Hive se encuentra en el contenedor predeterminado del clúster Hadoop
de HDInsight, la <ruta de acceso a datos de blob> debe tener el formato
'wasb://<directorio de este contenedor>/<nombre del archivo de blob>'. El archivo
blob también puede estar en un contenedor adicional del clúster de Hadoop de
HDInsight. En este caso, <ruta de acceso a datos de blob> debería tener el formato
'wasb://<nombre del contenedor>@<nombre de la cuenta de
almacenamiento>.blob.core.windows.net/<nombre de archivo de blob>'.

7 Nota

Los datos blob que se van a cargar en la tabla de subárbol tienen que estar en
el contenedor adicional o predeterminado de la cuenta de almacenamiento
para el clúster de Hadoop. De lo contrario, la consulta LOAD DATA genera un
error indicando que no puede obtener acceso a los datos.

Temas avanzados: tabla con particiones y datos


de Hive de almacén en formato ORC
Si los datos son grandes, crear particiones de la tabla será beneficioso para las consultas
que solo necesitan examinar algunas particiones de la tabla. Por ejemplo, es razonable
crear particiones de los datos de registro de un sitio web por fechas.

Además de crear particiones de tablas de subárbol, también es beneficioso almacenar


los datos de subárbol en el formato ORC. Para obtener más información acerca de la
aplicación de formato ORC, consulte El uso de archivos ORC mejora el rendimiento
cuando Hive está leyendo, escribiendo y procesando datos .

Tabla con particiones


Esta es la consulta de subárbol que crea una tabla con particiones y carga datos en ella.

HiveQL

CREATE EXTERNAL TABLE IF NOT EXISTS <database name>.<table name>


(field1 string,
...
fieldN string
)
PARTITIONED BY (<partitionfieldname> vartype) ROW FORMAT DELIMITED FIELDS
TERMINATED BY '<field separator>'
lines terminated by '<line separator>'
TBLPROPERTIES("skip.header.line.count"="1");
LOAD DATA INPATH '<path to the source file>' INTO TABLE <database name>.
<partitioned table name>
PARTITION (<partitionfieldname>=<partitionfieldvalue>);

Al consultar tablas con particiones, se recomienda agregar la condición de partición al


comienzo de la cláusula where , lo que mejora la eficacia de la búsqueda.

HiveQL

select
field1, field2, ..., fieldN
from <database name>.<partitioned table name>
where <partitionfieldname>=<partitionfieldvalue> and ...;

Almacenamiento de datos de Hive en formato ORC


Los usuarios no pueden cargar datos directamente desde Blob Storage en tablas de
Hive que se almacenan en el formato ORC. Estos son los pasos que los usuarios deben
seguir para cargar datos desde blobs de Azure a tablas de Hive almacenadas en formato
ORC.

Cree una tabla externa STORED AS TEXTFILE y cargue datos del almacenamiento de
blobs en la tabla.

HiveQL

CREATE EXTERNAL TABLE IF NOT EXISTS <database name>.<external textfile table


name>
(
field1 string,
field2 int,
...
fieldN date
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '<field separator>'
lines terminated by '<line separator>' STORED AS TEXTFILE
LOCATION 'wasb:///<directory in Azure blob>'
TBLPROPERTIES("skip.header.line.count"="1");

LOAD DATA INPATH '<path to the source file>' INTO TABLE <database name>.
<table name>;

Cree una tabla interna con el mismo esquema que la tabla externa del paso 1, con el
mismo delimitador de campo, y almacene los datos de subárbol en el formato ORC.

HiveQL

CREATE TABLE IF NOT EXISTS <database name>.<ORC table name>


(
field1 string,
field2 int,
...
fieldN date
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '<field separator>' STORED AS ORC;

Seleccionar datos desde la tabla externa del paso 1 e insertarlos en la tabla de ORC

HiveQL

INSERT OVERWRITE TABLE <database name>.<ORC table name>


SELECT * FROM <database name>.<external textfile table name>;

7 Nota

Si la tabla TEXTFILE <nombre de base de datos>.<nombre de la tabla de archivo de


texto externo> tiene particiones, en el PASO 3, el comando SELECT * FROM <database
name>.<external textfile table name> selecciona la variable de partición como un

campo en el conjunto de datos devuelto. Si se inserta en <nombre de base de


datos>.<nombre de la tabla ORC> , se producirá un error porque <nombre de base
de datos>.<nombre de la tabla ORC> no tiene la variable de partición como un
campo en el esquema de tabla. En este caso, los usuarios deben seleccionar
específicamente los campos que se van a insertar en <nombre de base de datos>.
<nombre de la tabla ORC> de la manera siguiente:

HiveQL

INSERT OVERWRITE TABLE <database name>.<ORC table name> PARTITION


(<partition variable>=<partition value>)
SELECT field1, field2, ..., fieldN
FROM <database name>.<external textfile table name>
WHERE <partition variable>=<partition value>;

Es seguro quitar el <nombre de la tabla de archivo de texto externo> cuando se use la


consulta siguiente después de haber insertado todos los datos en <nombre de base de
datos>.<nombre de la tabla ORC> :

HiveQL

DROP TABLE IF EXISTS <database name>.<external textfile table name>;

Después de seguir este procedimiento, debe tener una tabla con datos en el formato
ORC lista para su uso.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Creación y optimización de tablas para
importación en paralelo rápida de datos
en SQL Server en una VM de Azure
Artículo • 11/07/2023

En este artículo se describe cómo se pueden compilar tablas con particiones para la
importación paralela en bloque de datos en una base de datos de SQL Server. Para
cargar o transferir macrodatos a SQL Database, es posible mejorar la importación de
datos a la base de datos SQL y las consultas posteriores mediante tablas y vistas con
particiones.

Crear una nueva base de datos y un conjunto


de grupos de archivos
Cree una nueva base de datos, si todavía no existe.

Agregue grupos de archivos de base de datos a la base de datos que contiene los
archivos físicos con particiones.

Esto puede hacerse con CREATE DATABASE si es nueva o ALTER DATABASE si ya


existe la base de datos.

Agregue uno o varios archivos (según sea necesario) a cada grupo de archivos de
base de datos.

7 Nota

Especifique el grupo de archivos de destino que contiene los datos de esta


partición y los nombres de archivo de las bases de datos físicas donde se
almacenan los datos del grupo de archivos.

En el ejemplo siguiente se crea una nueva base de datos con tres grupos de archivos
distintos de los grupos principal y de registro, que contiene un archivo físico en cada
uno. Los archivos de base de datos se crean en la carpeta de datos de SQL Server
predeterminada, como está configurado en la instancia de SQL Server. Para obtener más
información acerca de las ubicaciones de archivo predeterminadas, consulte
Ubicaciones de archivos para las instancias predeterminadas y con nombre de SQL
Server.
SQL

DECLARE @data_path nvarchar(256);


SET @data_path = (SELECT SUBSTRING(physical_name, 1,
CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1);

EXECUTE ('
CREATE DATABASE <database_name>
ON PRIMARY
( NAME = ''Primary'', FILENAME = ''' + @data_path +
'<primary_file_name>.mdf'', SIZE = 4096KB , FILEGROWTH = 1024KB ),
FILEGROUP [filegroup_1]
( NAME = ''FileGroup1'', FILENAME = ''' + @data_path +
'<file_name_1>.ndf'' , SIZE = 4096KB , FILEGROWTH = 1024KB ),
FILEGROUP [filegroup_2]
( NAME = ''FileGroup2'', FILENAME = ''' + @data_path +
'<file_name_2>.ndf'' , SIZE = 4096KB , FILEGROWTH = 1024KB ),
FILEGROUP [filegroup_3]
( NAME = ''FileGroup3'', FILENAME = ''' + @data_path +
'<file_name_3>.ndf'' , SIZE = 102400KB , FILEGROWTH = 10240KB )
LOG ON
( NAME = ''LogFileGroup'', FILENAME = ''' + @data_path +
'<log_file_name>.ldf'' , SIZE = 1024KB , FILEGROWTH = 10%)
')

Creación de una tabla con particiones


Para crear tablas con particiones según el esquema de datos, asignado a los grupos de
archivos de base de datos que se crearon en el paso anterior, primero debe crear una
función y un esquema de partición. Cuando se importan datos de forma masiva en las
tablas con particiones, los registros se distribuyen entre los grupos de archivos según un
esquema de partición, tal y como se describe a continuación.

1. Crear una función de partición


Cree una función de partición. Esta función define el intervalo de valores o límites que
se incluirán en cada tabla de particiones individual; por ejemplo, para limitar las
particiones por mes (some_datetime_field) en el año 2013:

SQL

CREATE PARTITION FUNCTION <DatetimeFieldPFN>(<datetime_field>)


AS RANGE RIGHT FOR VALUES (
'20130201', '20130301', '20130401',
'20130501', '20130601', '20130701', '20130801',
'20130901', '20131001', '20131101', '20131201' )

2. Crear un esquema de partición


Cree un esquema de partición. Este esquema asigna cada intervalo de particiones en la
función de partición a un grupo de archivos físico, por ejemplo:

SQL

CREATE PARTITION SCHEME <DatetimeFieldPScheme> AS


PARTITION <DatetimeFieldPFN> TO (
<filegroup_1>, <filegroup_2>, <filegroup_3>, <filegroup_4>,
<filegroup_5>, <filegroup_6>, <filegroup_7>, <filegroup_8>,
<filegroup_9>, <filegroup_10>, <filegroup_11>, <filegroup_12> )

Para comprobar los intervalos en vigor en cada partición según el esquema de función,
ejecute la consulta siguiente:

SQL

SELECT psch.name as PartitionScheme,


prng.value AS PartitionValue,
prng.boundary_id AS BoundaryID
FROM sys.partition_functions AS pfun
INNER JOIN sys.partition_schemes psch ON pfun.function_id =
psch.function_id
INNER JOIN sys.partition_range_values prng ON
prng.function_id=pfun.function_id
WHERE pfun.name = <DatetimeFieldPFN>

3. Crear una tabla de particiones


Cree tablas con particiones según el esquema de datos y especifique el esquema de
partición y el campo de restricción que se usó para crear las particiones de la tabla; por
ejemplo:

SQL

CREATE TABLE <table_name> ( [include schema definition here] )


ON <TablePScheme>(<partition_field>)

Para obtener más información, consulte Crear tablas e índices con particiones.
Importación masiva de datos para cada tabla
de partición individual
Puede usar BCP, BULK INSERT u otros métodos, como Microsoft Data Migration .
En el ejemplo que se incluye, se usa el método BCP.

Modifique la base de datos para cambiar el esquema de registro de transacciones


a BULK_LOGGED y así minimizar la sobrecarga de registros; por ejemplo:

SQL

ALTER DATABASE <database_name> SET RECOVERY BULK_LOGGED

Para acelerar la carga de datos, inicie las operaciones de importación masiva en


paralelo. Para obtener sugerencias sobre la aceleración de la importación masiva
de macrodatos en las bases de datos de SQL Server, consulte Cargar 1 TB en
menos de 1 hora.

El siguiente script de PowerShell es un ejemplo de carga paralela de datos mediante


BCP.

PowerShell

# Set database name, input data directory, and output log directory
# This example loads comma-separated input data files
# The example assumes the partitioned data files are named as
<base_file_name>_<partition_number>.csv
# Assumes the input data files include a header line. Loading starts at line
number 2.

$dbname = "<database_name>"
$indir = "<path_to_data_files>"
$logdir = "<path_to_log_directory>"

# Select authentication mode


$sqlauth = 0

# For SQL authentication, set the server and user credentials


$sqlusr = "<user@server>"
$server = "<tcp:serverdns>"
$pass = "<password>"

# Set number of partitions per table - Should match the number of input data
files per table
$numofparts = <number_of_partitions>

# Set table name to be loaded, basename of input data files, input format
file, and number of partitions
$tbname = "<table_name>"
$basename = "<base_input_data_filename_no_extension>"
$fmtfile = "<full_path_to_format_file>"

# Create log directory if it does not exist


New-Item -ErrorAction Ignore -ItemType directory -Path $logdir

# BCP example using Windows authentication


$ScriptBlock1 = {
param($dbname, $tbname, $basename, $fmtfile, $indir, $logdir, $num)
bcp ($dbname + ".." + $tbname) in ($indir + "\" + $basename + "_" + $num
+ ".csv") -o ($logdir + "\" + $tbname + "_" + $num + ".txt") -h "TABLOCK" -F
2 -C "RAW" -f ($fmtfile) -T -b 2500 -t "," -r \n
}

# BCP example using SQL authentication


$ScriptBlock2 = {
param($dbname, $tbname, $basename, $fmtfile, $indir, $logdir, $num,
$sqlusr, $server, $pass)
bcp ($dbname + ".." + $tbname) in ($indir + "\" + $basename + "_" + $num
+ ".csv") -o ($logdir + "\" + $tbname + "_" + $num + ".txt") -h "TABLOCK" -F
2 -C "RAW" -f ($fmtfile) -U $sqlusr -S $server -P $pass -b 2500 -t "," -r \n
}

# Background processing of all partitions


for ($i=1; $i -le $numofparts; $i++)
{
Write-Output "Submit loading trip and fare partitions # $i"
if ($sqlauth -eq 0) {
# Use Windows authentication
Start-Job -ScriptBlock $ScriptBlock1 -Arg ($dbname, $tbname,
$basename, $fmtfile, $indir, $logdir, $i)
}
else {
# Use SQL authentication
Start-Job -ScriptBlock $ScriptBlock2 -Arg ($dbname, $tbname,
$basename, $fmtfile, $indir, $logdir, $i, $sqlusr, $server, $pass)
}
}

Get-Job

# Optional - Wait till all jobs complete and report date and time
date
While (Get-Job -State "Running") { Start-Sleep 10 }
date

Crear índices para optimizar el rendimiento de


las combinaciones y consultas
Si extrae datos para el modelado de varias tablas, cree índices en las claves de
combinación para mejorar el rendimiento de las combinaciones.

Cree índices (agrupados o no agrupados) que tengan como destino el mismo


grupo de archivos de cada partición; por ejemplo:

SQL

CREATE CLUSTERED INDEX <table_idx> ON <table_name>( [include index


columns here] )
ON <TablePScheme>(<partition)field>)

-- or,

CREATE INDEX <table_idx> ON <table_name>( [include index columns here]


)
ON <TablePScheme>(<partition)field>)

7 Nota

Puede crear los índices antes de importar los datos de forma masiva. La
creación de índices antes de la importación masiva ralentiza la carga de datos.

Ejemplo de Tecnología y procesos de análisis


avanzado en acción
Para ver un ejemplo de tutorial completo del proceso de ciencia de datos en equipos
con un conjunto de datos público, consulte Proceso de ciencia de datos en equipos en
acción: uso de SQL Server.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Migración de datos de una base de
datos de SQL Server a SQL Database
con Azure Data Factory
Artículo • 07/07/2023

En este artículo se muestra cómo migrar datos de una base de datos de SQL Server local
a Azure SQL Database a través de Azure Blob Storage mediante Azure Data Factory
(ADF): este método es un enfoque heredado admitido que tiene las ventajas de una
copia de almacenamiento provisional replicada; sin embargo, se recomienda que
consulte nuestra página sobre migración de datos para conocer las opciones más
recientes .

Para ver una tabla que resuma varias opciones para mover datos a una base de datos de
Azure SQL, vea Traslado de datos a una base de datos de Azure SQL para Azure
Machine Learning.

Introducción: ¿qué es la ADF y cuándo se debe


usar para migrar datos?
La Azure Data Factory es un servicio de integración de datos totalmente administrado
basado en la nube que organiza y automatiza el movimiento y la transformación de
datos. El concepto clave en el modelo de ADF es la canalización. Una canalización es una
agrupación lógica de actividades, cada una de las cuales define las acciones que se
deben realizar en los datos incluidos en los conjuntos de datos. Los servicios vinculados
se usan para definir la información necesaria para que la Factoría de datos se conecte a
los recursos de datos.

Con la ADF, los servicios de procesamiento de datos existentes se pueden componer en


canalizaciones de datos altamente disponibles y administradas en la nube. Estas
canalizaciones de datos se pueden programar para ingerir, preparar, transformar,
analizar y publicar datos, mientras que ADF administra y organiza los datos complejos y
las dependencias de procesamiento. Las soluciones se pueden generar e implementar
rápidamente en la nube. Para ello, se conecta una cantidad en aumento de orígenes de
datos locales y de nube.

Considere el uso de ADF en estos casos:

Cuando los datos deban migrarse continuamente en un escenario híbrido que


tiene acceso a recursos locales y en la nube.
Cuando los datos requieran transformaciones o tengan una lógica empresarial
agregada mientras se migran.

La ADF permite la programación y supervisión de trabajos mediante scripts JSON


sencillos que administran el movimiento de datos de forma periódica. La ADF también
tiene otras capacidades como la compatibilidad con operaciones complejas. Para
obtener más información sobre la ADF, vea la documentación de Azure Data Factory
(ADF) .

Escenario
Configuramos una canalización ADF que se compone de dos actividades de migración
de datos. Juntas migran datos a diario entre una base de datos de SQL Server y Azure
SQL Database. Las dos actividades son:

Copia de datos de una base de datos de SQL Server a una cuenta de Azure Blob
Storage.
Copia de datos de la cuenta de Azure Blob Storage a Azure SQL Database.

7 Nota

Los pasos que se muestra a continuación se han adaptado del tutorial más
detallado que ofrece el equipo ADF: Copia de datos de una base de datos de
SQL Server a Azure Blob Storage: cuando es conveniente, se proporcionan
referencias a las secciones correspondientes de ese tema.

Requisitos previos
En este tutorial se asume que dispone de:

Una suscripción de Azure. Si no tiene una suscripción, puede registrarse para


obtener una evaluación gratuita .
Una cuenta de almacenamiento de Azure. En este tutorial se usa una cuenta de
Azure Storage para almacenar los datos. Si no dispone de una cuenta de
almacenamiento de Azure, vea el artículo Creación de una cuenta de
almacenamiento . Tras crear la cuenta de almacenamiento, tendrá que obtener la
clave de cuenta que se usa para tener acceso al almacenamiento. Vea
Administración de las claves de acceso de la cuenta de almacenamiento.
Acceso a Azure SQL Database. Si debe configurar una instancia de Azure SQL
Database, el tema Introducción a Microsoft Azure SQL Database proporciona
información sobre cómo aprovisionar una nueva.
Azure PowerShell instalado y configurado de forma local. Para obtener
instrucciones, consulte Instalación y configuración de Azure PowerShell.

7 Nota

En este procedimiento se usa Azure Portal .

Carga de los datos en la instancia de


SQL Server
Usamos el conjunto de datos de taxis de Nueva York para demostrar el proceso de
migración. El conjunto de datos de taxis de Nueva York está disponible, como se
especificó en esa publicación, en la instancia de Azure Blob Storage NYC Taxi Data . Los
datos tienen dos archivos, el archivo trip_data.csv, que contiene detalles de carreras, y el
archivo trip_fare.csv, que contiene detalles de la tarifa de cada carrera. En Descripción
del conjunto de datos de carreras de taxi de Nueva York, se proporciona un ejemplo y
una descripción de estos archivos.

Puede adaptar el procedimiento que se proporciona aquí para un conjunto de datos


propios o seguir los pasos descritos para el uso del conjunto de datos de taxis de Nueva
York. Para cargar el conjunto de datos de taxis de Nueva York en la base de datos de
SQL Server, siga el procedimiento descrito en Importación masiva de datos en una base
de datos de SQL Server.

Creación de una instancia de Azure Data


Factory
Las instrucciones para crear una nueva factoría de datos de Azure y un grupo de
recursos en Azure Portal se proporcionan en Creación de Data Factory. Ponga el
nombre adfdsp a la nueva instancia de ADF y el nombre adfdsprg al grupo de recursos
creado.

Instalación y configuración de Integration


Runtime de Azure Data Factory
Integration Runtime es una infraestructura de integración de datos administrados que
usa Azure Data Factory para proporcionar funcionalidades de integración de datos en
distintos entornos de red. Este entorno en tiempo de ejecución se denominaba "Data
Management Gateway".

Para configurarlo, siga las instrucciones para crear una canalización.

Crear servicios vinculados para conectarse a los


recursos de datos
Un servicio vinculado define la información necesaria para que Azure Data Factory se
conecte a un recurso de datos. Tenemos tres recursos en este escenario para los que se
necesitan servicios vinculados:

1. SQL Server local


2. Azure Blob Storage
3. Azure SQL Database

El procedimiento paso a paso para crear servicios vinculados se proporciona en Crear


servicios vinculados.

Definir y crear tablas para especificar cómo


tener acceso a los conjuntos de datos
Cree tablas que especifiquen la estructura, la ubicación y la disponibilidad de los
conjuntos de datos con los siguientes procedimientos de scripts. Los archivos JSON se
usan para definir las tablas. Para obtener más información sobre la estructura de estos
archivos, vea Conjuntos de datos.

7 Nota

Debe ejecutar el cmdlet Add-AzureAccount antes de ejecutar el cmdlet New-


AzureDataFactoryTable para confirmar que se selecciona la suscripción de Azure
adecuada para la ejecución del comando. Para obtener documentación sobre este
cmdlet, consulte Add-AzureAccount.

Las definiciones basadas en JSON de las tablas usan los siguientes nombres:

el nombre de la tabla de SQL Server local es nyctaxi_data


el nombre del contenedor de la cuenta de Azure Blob Storage es containername

Se necesitan tres definiciones de tabla para esta canalización de ADF:


1. Tabla de SQL local
2. Tabla Blob
3. Tabla SQL de Azure

7 Nota

Estos procedimientos usan Azure PowerShell para definir y crear las actividades de
ADF. Sin embargo, estas tareas también se pueden realizar en Azure Portal. Para
más información, consulte Creación de conjuntos de datos.

Tabla de SQL local


La definición de tabla de SQL Server local se especifica en el siguiente archivo JSON:

JSON

{
"name": "OnPremSQLTable",
"properties":
{
"location":
{
"type": "OnPremisesSqlServerTableLocation",
"tableName": "nyctaxi_data",
"linkedServiceName": "adfonpremsql"
},
"availability":
{
"frequency": "Day",
"interval": 1,
"waitOnExternal":
{
"retryInterval": "00:01:00",
"retryTimeout": "00:10:00",
"maximumRetry": 3
}
}
}
}

Los nombres de columna no se incluyeron aquí. Puede subseleccionar los nombres de


columna incluyéndolos aquí (para obtener detalles, vea la documentación de ADF).

Copie la definición de JSON de la tabla en un archivo denominado onpremtabledef.json y


guarde el archivo en una ubicación conocida (aquí se supone que es
C:\temp\onpremtabledef.json). Cree la tabla en ADF con el siguiente cmdlet de Azure
PowerShell:

Azure PowerShell

New-AzureDataFactoryTable -ResourceGroupName ADFdsprg -DataFactoryName


ADFdsp –File C:\temp\onpremtabledef.json

Tabla Blob
La definición de la tabla para la ubicación del blob de salida se encuentra en la siguiente
ubicación (este esquema asigna los datos ingeridos de una ubicación local a un blob de
Azure):

JSON

{
"name": "OutputBlobTable",
"properties":
{
"location":
{
"type": "AzureBlobLocation",
"folderPath": "containername",
"format":
{
"type": "TextFormat",
"columnDelimiter": "\t"
},
"linkedServiceName": "adfds"
},
"availability":
{
"frequency": "Day",
"interval": 1
}
}
}

Copie la definición de JSON de la tabla en un archivo denominado


bloboutputtabledef.json y guarde el archivo en una ubicación conocida (aquí se supone
que es C:\temp\bloboutputtabledef.json). Cree la tabla en ADF con el siguiente cmdlet de
Azure PowerShell:

Azure PowerShell
New-AzureDataFactoryTable -ResourceGroupName adfdsprg -DataFactoryName
adfdsp -File C:\temp\bloboutputtabledef.json

Tabla SQL de Azure


La definición de la tabla para la salida SQL de Azure se encuentra en la siguiente
ubicación (este esquema asigna los datos procedentes del blob):

JSON

{
"name": "OutputSQLAzureTable",
"properties":
{
"structure":
[
{ "name": "column1", "type": "String"},
{ "name": "column2", "type": "String"}
],
"location":
{
"type": "AzureSqlTableLocation",
"tableName": "your_db_name",
"linkedServiceName": "adfdssqlazure_linked_servicename"
},
"availability":
{
"frequency": "Day",
"interval": 1
}
}
}

Copie la definición de JSON de la tabla en un archivo denominado AzureSqlTable.json y


guarde el archivo en una ubicación conocida (aquí se supone que es
C:\temp\AzureSqlTable.json). Cree la tabla en ADF con el siguiente cmdlet de Azure
PowerShell:

Azure PowerShell

New-AzureDataFactoryTable -ResourceGroupName adfdsprg -DataFactoryName


adfdsp -File C:\temp\AzureSqlTable.json

Definición y creación de la canalización


Especifique las actividades que pertenecen a la canalización y cree la canalización con
los siguientes procedimientos de scripts. Un archivo JSON se usa para definir las
propiedades de la canalización.

En el script se supone que el nombre de la canalización es AMLDSProcessPipeline.


Además, tenga en cuenta que la periodicidad de la canalización que se va a
ejecutar se establece como diaria y que se usa el tiempo de ejecución
predeterminado para el trabajo (12 a.m. UTC).

7 Nota

Los siguientes procedimientos usan Azure PowerShell para definir y crear la


canalización de ADF. Sin embargo, esta tarea también se puede realizar en Azure
Portal. Para más información, consulte Creación de una canalización.

Mediante las definiciones de tabla proporcionadas anteriormente, la definición de la


canalización para ADF se especifica de la siguiente manera:

JSON

{
"name": "AMLDSProcessPipeline",
"properties":
{
"description" : "This pipeline has two activities: the first one
copies data from SQL Server to Azure Blob, and the second one copies from
Azure Blob to Azure Database Table",
"activities":
[
{
"name": "CopyFromSQLtoBlob",
"description": "Copy data from SQL Server to blob",
"type": "CopyActivity",
"inputs": [ {"name": "OnPremSQLTable"} ],
"outputs": [ {"name": "OutputBlobTable"} ],
"transformation":
{
"source":
{
"type": "SqlSource",
"sqlReaderQuery": "select * from nyctaxi_data"
},
"sink":
{
"type": "BlobSink"
}
},
"Policy":
{
"concurrency": 3,
"executionPriorityOrder": "NewestFirst",
"style": "StartOfInterval",
"retry": 0,
"timeout": "01:00:00"
}
},
{
"name": "CopyFromBlobtoSQLAzure",
"description": "Push data to Sql Azure",
"type": "CopyActivity",
"inputs": [ {"name": "OutputBlobTable"} ],
"outputs": [ {"name": "OutputSQLAzureTable"} ],
"transformation":
{
"source":
{
"type": "BlobSource"
},
"sink":
{
"type": "SqlSink",
"WriteBatchTimeout": "00:5:00",
}
},
"Policy":
{
"concurrency": 3,
"executionPriorityOrder": "NewestFirst",
"style": "StartOfInterval",
"retry": 2,
"timeout": "02:00:00"
}
}
]
}
}

Copie esta definición de JSON de la canalización en un archivo denominado


pipelinedef.json y guarde el archivo en una ubicación conocida (aquí se supone que es
C:\temp\pipelinedef.json). Cree la canalización en ADF con el siguiente cmdlet de Azure
PowerShell:

Azure PowerShell

New-AzureDataFactoryPipeline -ResourceGroupName adfdsprg -DataFactoryName


adfdsp -File C:\temp\pipelinedef.json

Inicio de la canalización
La canalización ya se puede ejecutar mediante el comando siguiente:

Azure PowerShell

Set-AzureDataFactoryPipelineActivePeriod -ResourceGroupName ADFdsprg -


DataFactoryName ADFdsp -StartDateTime startdateZ –EndDateTime enddateZ –Name
AMLDSProcessPipeline

Los valores de los parámetros startdate y enddate deben reemplazarse por las fechas
reales entre las que desea que se ejecute la canalización.

Una vez que se ejecuta la canalización, debe poder ver los datos que aparecen en el
contenedor seleccionado para el blob, en este caso, un archivo por día.

No hemos aprovechado la funcionalidad que proporciona la ADF para canalizar los


datos de forma incremental. Para más información sobre cómo hacer esto y sobre otras
funcionalidades que proporciona ADF, consulte la documentación de ADF .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Preparación de datos para el
aprendizaje automático mejorado
Artículo • 11/07/2023

El preprocesamiento y la limpieza de datos son tareas importantes que se deben llevar a


cabo para que un conjunto de datos se pueda usar para el entrenamiento de modelos.
Los datos sin procesar son a menudo ruidosos no confiables y es posible que les falten
valores. El uso de estos datos para el modelado puede producir resultados engañosos.
Estas tareas forman parte del proceso de ciencia de datos en equipos (TDSP) y
normalmente siguen una exploración inicial de un conjunto de datos que se usa para
detectar y planear el procesamiento previo necesario. Para obtener instrucciones más
detalladas sobre el proceso TDSP, consulte los pasos que se describen en el proceso de
ciencia de datos en equipos.

Las tareas de procesamiento previo y limpieza, como la tarea de exploración de datos,


se pueden llevar a cabo en una amplia variedad de entornos, como SQL o Hive o Azure
Machine Learning Studio (clásico), y con diversas herramientas y lenguajes, como R o
Python, en función de dónde se almacenen los datos y cómo se le apliquen formato.
Como TDSP es iterativo por naturaleza, estas tareas pueden tener lugar en diversos
pasos del flujo de trabajo del proceso.

En este artículo se presentan varios conceptos sobre el procesamiento de datos y las


tareas que se pueden llevar a cabo antes o después de ingerir datos en Azure Machine
Learning Studio (clásico).

Para ver un ejemplo de exploración y preprocesamiento de datos realizado en Azure


Machine Learning Studio (clásico), visione el vídeo Preprocesamiento de datos .

¿Por qué preprocesar y limpiar datos?


Se recopilan datos del mundo real de varios orígenes y procesos y pueden contener
irregularidades o datos dañados que comprometen la calidad del conjunto de datos.
Los problemas de calidad de datos más habituales que surgen son:

Incompletos: en los datos no hay atributos o contienen valores que faltan.


Ruidosos: los datos contienen registros erróneos o valores atípicos.
Incoherentes: los datos contienen discrepancias o registros en conflicto.

Los datos de calidad son un requisito previo para los modelos predictivos de calidad.
Para evitar la "entrada y salida de elementos no utilizados" y mejorar la calidad de los
datos y, por tanto, el rendimiento del modelo, es fundamental llevar a cabo una pantalla
de mantenimiento de datos para detectar problemas de datos al principio y decidir
acerca de los pasos de limpieza y preprocesamiento de datos correspondientes.

¿Cuáles son algunas pantallas de


mantenimiento de datos más habituales que se
emplean?
Podemos comprobar la calidad general de los datos comprobando:

El número de registros.
El número de atributos (o características).
Los tipos de datos de atributo (nominales, ordinales o continuos).
El número de valores que faltan.
Datos con formato correcto.
Si los datos se encuentran en TSV o CSV, comprueba que los separadores de
columnas y los separadores de líneas siempre separen correctamente líneas y
columnas.
Si los datos están en formato HTML o XML, compruebe si los datos tienen el
formato correcto basándose en sus estándares respectivos.
El análisis también puede ser necesario para extraer información estructurada
de datos semiestructurados o no estructurados.
Registros de datos incoherentes. Compruebe el intervalo de valores permitidos,
por ejemplo. Por ejemplo, si los datos contienen GPA (promedio de calificaciones)
de estudiantes, compruebe si el GPA está en el intervalo designado, por ejemplo,
0~4.

Cuando encuentre problemas con los datos, serán necesarios los pasos de
procesamiento que implican a menudo limpieza de los valores que faltan,
normalización de datos, discretización, proceso para quitar o reemplazar caracteres
incrustados que puedan afectar a la alineación de datos y tipos de datos mixtos en
campos comunes, entre otros.

Azure Machine Learning consume datos tabulares con formato correcto. Si los datos
ya están en formato tabular, el preprocesamiento de los datos se puede realizar
directamente con Azure Machine Learning Studio (clásico) en Machine Learning. Si los
datos no están en formato tabular, por ejemplo, XML, se puede requerir el análisis para
convertir los datos en formato tabular.
¿Cuáles son algunas de las tareas principales de
preprocesamiento de datos?
Limpieza de datos: rellene los valores que faltan, detecte y quite los valores
atípicos y los datos con ruido.
Transformación de datos: normalice datos para reducir el ruido y las dimensiones.
Reducción de datos: atributos o registros de datos de ejemplo para un control de
datos más sencillo.
Discretización de datos: convierta atributos continuos en atributos de categorías
para facilitar su uso con determinados métodos de aprendizaje automático.
Limpieza de texto: quite caracteres incrustados que puedan ocasionar errores en
la alineación de los datos, por ejemplo, pestañas incrustadas en un archivo de
datos separado por tabulaciones o nuevas líneas incrustadas que pueden dividirse
en registros.

En las secciones siguientes se detallan algunos de los pasos de procesamiento de datos.

¿Cómo tratar los valores que faltan?


Para tratar los valores que faltan, es mejor identificar el motivo por el que faltan los
valores para controlar mejor el problema. Los métodos de control de valores que faltan
típicos son:

Eliminación: quite los registros con los valores que faltan


Sustitución ficticia: reemplace los valores que faltan por un valor ficticio; por
ejemplo, desconocido para categorías o 0 para valores numéricos.
Sustitución media: si los datos que faltan son numéricos, reemplace los valores
que faltan por la media.
Sustitución frecuente: si los datos que faltan son de categoría, cambie los valores
que faltan por el elemento más frecuente.
Sustitución de regresión: utilice el método de regresión para reemplazar los
valores que faltan por valores con regresión.

¿Cómo normalizar datos?


La normalización de datos escala los valores numéricos a un intervalo especificado.
Entre los métodos de normalización de datos más conocidos se incluyen:

Normalización mínima-máxima: transforme linealmente los datos a un intervalo,


por ejemplo, entre 0 y 1, donde el valor mímino se escala a 0 y el máximo a 1.
Normalización de puntuación z: escale los datos en función de la desviación
estándar y media: divida la diferencia entre los datos y la media por la desviación
estándar.
Escalado decimal: escale los datos moviendo la coma decimal del valor del
atributo.

¿Cómo discretizar los datos?


Los datos se pueden discretizar mediante la conversión de valores continuos en
intervalos o atributos nominales. Algunas formas de hacerlo son las siguientes:

Discretización de mismo ancho: divida el intervalo de todos los valores posibles


de un atributo en N grupos del mismo tamaño y asigne los valores que se
encuentran en una ubicación con el número de ubicación.
Discretización igual alto: divida el intervalo de todos los valores posibles de un
atributo en N grupos, cada uno de los cuales contiene el mismo número de
instancias y, a continuación, asigne los valores que se encuentran en una ubicación
con el número de ubicación.

¿Cómo reducir los datos?


Existen varios métodos para reducir el tamaño de los datos para un tratamiento más
sencillo de los datos. Según el tamaño de los datos y el dominio, se pueden aplicar los
siguientes métodos:

Muestreo de registros: realice un muestreo de los registros de datos y elija


únicamente el subconjunto de datos representativo.
Muestreo de atributos: seleccione solo un subconjunto de los atributos más
importantes de los datos.
Agregación: divida los datos en grupos y almacene los números para cada grupo.
Por ejemplo, los números de los ingresos diarios de una cadena de restaurantes
durante los últimos 20 años se pueden agregar para ingresos mensuales con el fin
de reducir el tamaño de los datos.

¿Cómo limpiar los datos de texto?


Los campos de texto en datos tabulares pueden incluir caracteres que afectan a los
límites de registros o alineación de columnas. Por ejemplo, las pestañas incrustadas en
un archivo separado por tabulaciones causan un error de alineación de columnas y los
caracteres de nueva línea incrustados dividen las líneas de registro. El control de
codificación de texto incorrecto al escribir o leer texto lleva a la pérdida de información
o a la introducción involuntaria de caracteres ilegibles (como valores NULL), y puede
afectar también al análisis del texto. La edición y el análisis cuidadoso pueden ser
necesarios para limpiar campos de texto para la alineación correcta o extraer datos
estructurados de los datos de texto semiestructurados o no estructurados.

exploración de los datos ofrece una vista anticipada de los datos. Una serie de
problemas de datos puede ser descubrieron durante este paso y los métodos
correspondientes pueden aplicarse para solucionar estos problemas. Es importante
formular preguntas como ¿cuál es la causa del problema y cómo se ha podido producir
el problema? Este proceso también le ayuda a decidir acerca de los pasos de
procesamiento de datos que deben llevarse a cabo para resolverlos. La identificación de
los casos de uso finales y los roles también se puede usar para priorizar el esfuerzo de
procesamiento de datos.

Referencias
_Minería de datos: conceptos y técnicas, Tercera edición, Morgan Kaufmann, 2011,
Jiawei Han, Micheline Kamber y Jian Pei

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Preprocesamiento de grandes conjuntos de datos con Azure Machine Learning
Azure Machine Learning Studio
¿Qué es Azure Machine Learning?

Recursos relacionados
Exploración de datos en el proceso de ciencia de datos en equipos
Muestreo de datos en contenedores de blob de Azure, SQL Server y tablas de Hive
Proceso de datos de Azure Blob Storage con análisis avanzado
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Exploración de datos en el proceso de
ciencia de datos en equipos
Artículo • 11/07/2023

La exploración de datos es un paso del proceso de ciencia de datos en equipos.

En los artículos siguientes se describe cómo explorar datos en tres entornos de


almacenamiento diferentes usados normalmente en el proceso de ciencia de datos en
equipos:

Explore los datos del contenedor de blobs de Azure con el paquete Pandas de
Python.
Explore los datos de SQL Server mediante SQL y un lenguaje de programación
como Python.
Explore los datos de las tablas de Hive mediante consultas de Hive.

Los recursos Azure Machine Learning proporcionan documentación y vídeos sobre


cómo empezar a trabajar con Azure Machine Learning.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Exploración de datos en Azure Blob
Storage con el paquete de Python
Pandas
Artículo • 30/05/2023

En este artículo se explica cómo explorar los datos almacenados en el contenedor de


blobs de Azure mediante el paquete de Python Pandas .

Esta tarea constituye un paso del proceso de ciencia de datos en equipos.

Requisitos previos
En este artículo se supone que ha:

Creado una cuenta de almacenamiento de Azure. Si necesita instrucciones,


consulte Creación de una cuenta de Azure Storage
Almacenó los datos en una cuenta de Azure Blob Storage. Si necesita
instrucciones, consulte mover con Azure Storage como origen y destino

Carga de los datos en DataFraim de Pandas


Para explorar y manipular un conjunto de datos, primero se debe descargar desde el
origen de blob en un archivo local que, a continuación, se pueda cargar en un elemento
DataFrame de Pandas. Estos son los pasos a seguir para realizar este procedimiento:

1. Descargue los datos del blob de Azure con el siguiente código de ejemplo Python
mediante Blob service. Reemplace la variable en el código siguiente por sus valores
específicos:

Python

from azure.storage.blob import BlobServiceClient


import pandas as pd

STORAGEACCOUNTURL= <storage_account_url>
STORAGEACCOUNTKEY= <storage_account_key>
LOCALFILENAME= <local_file_name>
CONTAINERNAME= <container_name>
BLOBNAME= <blob_name>

#download from blob


t1=time.time()
blob_service_client_instance =
BlobServiceClient(account_url=STORAGEACCOUNTURL,
credential=STORAGEACCOUNTKEY)
blob_client_instance =
blob_service_client_instance.get_blob_client(CONTAINERNAME, BLOBNAME,
snapshot=None)
with open(LOCALFILENAME, "wb") as my_blob:
blob_data = blob_client_instance.download_blob()
blob_data.readinto(my_blob)
t2=time.time()
print(("It takes %s seconds to download "+BLOBNAME) % (t2 - t1))

2. Lea los datos en un elemento DataFrame de Pandas desde el archivo descargado.

Python

# LOCALFILE is the file path


dataframe_blobdata = pd.read_csv(LOCALFILENAME)

Si necesita información más general sobre la lectura de una instancia de Azure Storage
Blob, consulte nuestra documentación Biblioteca cliente de Azure Storage Blob para
Python.

Ya puede explorar los datos y generar características en este conjunto de datos.

Ejemplos de exploración de datos con Pandas


A continuación, se muestran algunos ejemplos de formas de explorar datos mediante
Pandas:

1. Inspeccionar el número de filas y columnas

Python

print('the size of the data is: %d rows and %d columns' %


dataframe_blobdata.shape)

2. Inspeccionar las primeras o las últimas filas del conjunto de datos, como se indica
a continuación:

Python

dataframe_blobdata.head(10)

dataframe_blobdata.tail(10)
3. Comprobar el tipo de datos como el que se importó cada columna mediante el
siguiente código de ejemplo:

Python

for col in dataframe_blobdata.columns:


print(dataframe_blobdata[col].name, ':\t',
dataframe_blobdata[col].dtype)

4. Comprobar las estadísticas básicas de las columnas del conjunto de datos de la


siguiente forma:

Python

dataframe_blobdata.describe()

5. Observar el número de entradas de cada valor de columna, como se indica a


continuación

Python

dataframe_blobdata['<column_name>'].value_counts()

6. Contar los valores que faltan frente al número real de entradas de cada columna,
mediante el siguiente código de ejemplo:

Python

miss_num = dataframe_blobdata.shape[0] - dataframe_blobdata.count()


print(miss_num)

7. Si hay valores que faltan para una columna determinada en los datos, puede
quitarlos como se indica:

Python

dataframe_blobdata_noNA = dataframe_blobdata.dropna()
dataframe_blobdata_noNA.shape

Otra forma de reemplazar los valores que faltan es a través de la función de modo:

Python
dataframe_blobdata_mode = dataframe_blobdata.fillna(
{'<column_name>': dataframe_blobdata['<column_name>'].mode()[0]})

8. Crear un gráfico de histograma con un número variable de discretizaciones para


trazar la distribución de una variable.

Python

dataframe_blobdata['<column_name>'].value_counts().plot(kind='bar')

np.log(dataframe_blobdata['<column_name>']+1).hist(bins=50)

9. Examinar las correlaciones entre las variables mediante un gráfico de dispersión o


con la función de correlación integrada.

Python

# relationship between column_a and column_b using scatter plot


plt.scatter(dataframe_blobdata['<column_a>'],
dataframe_blobdata['<column_b>'])

# correlation between column_a and column_b


dataframe_blobdata[['<column_a>', '<column_b>']].corr()

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Muestreo de datos en contenedores de
blob de Azure, SQL Server y tablas de
Hive
Artículo • 31/10/2023

Los artículos siguientes describen cómo realizar un muestreo de los datos que se
almacenan en una de las siguientes ubicaciones de Azure:

Para muestrear los datos del contenedor de blobs de Azure, se descargan


mediante programación y, a continuación, se realiza un muestreo de ellos con el
código Python de ejemplo.
Los datos de SQL Server se muestrean tanto con SQL como con el lenguaje de
programación de Python.

Esta tarea de muestreo es un paso en el proceso de ciencia de datos en equipos (TDSP).

Razones para el uso de datos de ejemplo

Si el conjunto de datos que pretende analizar es grande, es recomendable reducirlo a un


tamaño más pequeño, pero representativo, que sea más manejable. La reducción del
tamaño puede facilitar la comprensión y exploración de los datos, y el diseño de
características. Este rol de muestreo sirve para habilitar la creación de prototipos rápidas
de las funciones de procesamiento de datos y los modelos de aprendizaje automático.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Muestra de datos en Azure Blob Storage
Artículo • 30/05/2023

En este artículo se trata el muestreo de datos almacenados en Azure Blob Storage; para
ello, se descargan mediante programación y luego se realiza un muestreo de los
mismos con procedimientos escritos en Python.

¿Por qué realizar un muestreo de los datos? Si el conjunto de datos que pretende
analizar es grande, es recomendable reducirlo a un tamaño más pequeño, pero
representativo, que sea más manejable. El muestreo facilita el reconocimiento y la
exploración de los datos, así como el diseño de características. Su rol en el proceso de
análisis de Cortana es permitir la rápida creación de prototipos de las funciones de
procesamiento de datos y de los modelos de aprendizaje automático.

Esta tarea de muestreo es un paso en el proceso de ciencia de datos en equipos (TDSP).

Descarga y muestreado de datos


1. Descargue los datos de Azure Blob Storage con Blob service con el código de
Python de ejemplo siguiente:

Python

from azure.storage.blob import BlobService


import tables

STORAGEACCOUNTNAME= <storage_account_name>
STORAGEACCOUNTKEY= <storage_account_key>
LOCALFILENAME= <local_file_name>
CONTAINERNAME= <container_name>
BLOBNAME= <blob_name>

#download from blob


t1=time.time()
blob_service=BlobService(account_name=STORAGEACCOUNTNAME,account_key=ST
ORAGEACCOUNTKEY)
blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILENAME)
t2=time.time()
print(("It takes %s seconds to download "+blobname) % (t2 - t1))

2. Leer los datos en una trama de datos de Pandas desde el archivo descargado
anteriormente.

Python
import pandas as pd

#directly ready from file on disk


dataframe_blobdata = pd.read_csv(LOCALFILE)

3. Muestreo de los datos mediante random.choice de numpy como se indica a


continuación:

Python

# A 1 percent sample
sample_ratio = 0.01
sample_size = np.round(dataframe_blobdata.shape[0] * sample_ratio)
sample_rows = np.random.choice(dataframe_blobdata.index.values,
sample_size)
dataframe_blobdata_sample = dataframe_blobdata.ix[sample_rows]

Ahora se puede trabajar con el marco de datos anterior, con el ejemplo del uno por
ciento, para la generación y exploración de características más a fondo.

Carga de datos y lectura en Azure Machine


Learning
Puede usar el ejemplo de código siguiente para muestrear los datos y usarlos
directamente en Azure Machine Learning:

1. Escribir la trama de datos en un archivo local

Python

dataframe.to_csv(os.path.join(os.getcwd(),LOCALFILENAME), sep='\t',
encoding='utf-8', index=False)

2. Cargar el archivo local en un blob de Azure mediante el código de ejemplo


siguiente:

Python

from azure.storage.blob import BlobService


import tables

STORAGEACCOUNTNAME= <storage_account_name>
LOCALFILENAME= <local_file_name>
STORAGEACCOUNTKEY= <storage_account_key>
CONTAINERNAME= <container_name>
BLOBNAME= <blob_name>

output_blob_service=BlobService(account_name=STORAGEACCOUNTNAME,account
_key=STORAGEACCOUNTKEY)
localfileprocessed = os.path.join(os.getcwd(),LOCALFILENAME) #assuming
file is in current working directory

try:

#perform upload
output_blob_service.put_block_blob_from_path(CONTAINERNAME,BLOBNAME,loc
alfileprocessed)

except:
print ("Something went wrong with uploading to the blob:"+
BLOBNAME)

3. Crear un almacén de datos en Azure Machine Learning que apunta a la instancia


de Azure Blob Storage. En este vínculo se describe el concepto de almacenes de
datos y cómo crear posteriormente un conjunto de datos para su uso con Azure
Machine Learning.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Muestreo de datos en SQL Server en
Azure
Artículo • 30/05/2023

En este artículo se trata cómo realizar una muestra de datos almacenados en SQL Server
en Azure con SQL o con el lenguaje de programación Python. También se muestra cómo
mover los datos de muestra a Azure Machine Learning guardándolos en un archivo,
cargándolos en un blob de Azure y leyéndolos en Azure Machine Learning Studio.

El muestreo de Python usa la biblioteca ODBC pyodbc para conectarse a SQL Server
en Azure y la biblioteca Pandas para realizar el muestreo.

7 Nota

En el código SQL de ejemplo en este documento se supone que los datos están en
un servidor SQL Server en Azure. Si no es así, consulte el artículo Mover datos a un
servidor SQL Server en una máquina virtual de Azure para obtener instrucciones
sobre cómo mover los datos a SQL Server en Azure.

¿Por qué realizar un muestreo de los datos? Si el conjunto de datos que pretende
analizar es grande, es recomendable reducirlo a un tamaño más pequeño, pero
representativo, que sea más manejable. El muestreo facilita el reconocimiento y la
exploración de los datos, así como el diseño de características. Su rol en el proceso de
ciencia de datos en equipos (TDSP) es permitir la rápida creación de prototipos de las
funciones de procesamiento de datos y de los modelos de aprendizaje automático.

Esta tarea de muestreo es un paso en el proceso de ciencia de datos en equipos (TDSP).

Uso de SQL
En esta sección se describen varios métodos con SQL para realizar un muestreo
aleatorio simple con los datos de la base de datos. Elija un método basado en el tamaño
de los datos y su distribución.

Los dos elementos siguientes muestran cómo utilizar newid en SQL Server para realizar
el muestreo. El método que elija depende de lo aleatoria que desee que sea la muestra
(se supone que pk_id en el código de ejemplo siguiente es una clave principal generada
automáticamente).

1. Muestra aleatoria menos estricta


SQL

select * from <table_name> where <primary_key> in


(select top 10 percent <primary_key> from <table_name> order by
newid())

2. Muestra más aleatoria

SQL

SELECT * FROM <table_name>


WHERE 0.1 >= CAST(CHECKSUM(NEWID(), <primary_key>) & 0x7fffffff AS
float)/ CAST (0x7fffffff AS int)

Tablesample se puede usar igualmente para el muestreo de datos. Esta opción podría
ser un enfoque preferible si el tamaño de los datos es grande (suponiendo que los
datos de las distintas páginas no están correlacionados) y para que la consulta se
complete en un tiempo razonable.

SQL

SELECT *
FROM <table_name>
TABLESAMPLE (10 PERCENT)

7 Nota

Puede explorar y generar características de los datos muestreados almacenándolos


en una nueva tabla

Conexión con Azure Machine Learning


Puede utilizar directamente las consultas de ejemplo anteriores en el código de Azure
Machine Learning (quizás un cuaderno, o código insertado en el diseñador). Consulte
este vínculo para obtener más detalles sobre cómo conectarse al almacenamiento con
un almacén de datos de Azure Machine Learning.

Uso del lenguaje de programación Python


En esta sección se muestra cómo usar la biblioteca pyodbc para establecer una
conexión de ODBC a una base de datos de SQL Server en Python. La cadena de
conexión de la base de datos se muestra a continuación: (reemplace servername,
dbname, username y password por su configuración):

Python

#Set up the SQL Azure connection


import pyodbc
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=<servername>;DATABASE=
<dbname>;UID=<username>;PWD=<password>')

La biblioteca Pandas en Python ofrece un amplio conjunto de herramientas de análisis


de datos y estructuras de datos para la manipulación de datos para la programación en
Python. El código siguiente lee una muestra de 0,1 % de los datos de una tabla de Azure
SQL Database en datos de Pandas:

Python

import pandas as pd

# Query database and load the returned results in pandas data frame
data_frame = pd.read_sql('''select column1, column2... from <table_name>
tablesample (0.1 percent)''', conn)

Ahora puede trabajar con los datos de muestreo en la trama de datos de Pandas.

Conexión con Azure Machine Learning


Puede usar el siguiente código de ejemplo para guardar los datos muestreados
reducidos en un archivo y cargarlos en un blob de Azure. Los datos en el blob pueden
leerse directamente en un experimento de Azure Machine Learning mediante el módulo
de importar datos. Los pasos son los siguientes:

1. Escribir la trama de datos de Pandas en un archivo local

Python

dataframe.to_csv(os.path.join(os.getcwd(),LOCALFILENAME), sep='\t',
encoding='utf-8', index=False)

2. Cargar el archivo local en un blob de Azure

Python

from azure.storage import BlobService


import tables
STORAGEACCOUNTNAME= <storage_account_name>
LOCALFILENAME= <local_file_name>
STORAGEACCOUNTKEY= <storage_account_key>
CONTAINERNAME= <container_name>
BLOBNAME= <blob_name>

output_blob_service=BlobService(account_name=STORAGEACCOUNTNAME,account
_key=STORAGEACCOUNTKEY)
localfileprocessed = os.path.join(os.getcwd(),LOCALFILENAME) #assuming
file is in current working directory

try:

#perform upload
output_blob_service.put_block_blob_from_path(CONTAINERNAME,BLOBNAME,loc
alfileprocessed)

except:
print ("Something went wrong with uploading blob:"+BLOBNAME)

3. En esta guía se proporciona información general sobre el siguiente paso para


acceder a los datos en Azure Machine Learning a través de almacenes y conjuntos
de datos.

Proceso de ciencia de datos en equipos en


acción: ejemplo
Para ver un ejemplo del proceso de ciencia de datos en equipos mediante un conjunto
de datos público, consulte Proceso de ciencia de datos en equipos en acción: uso de
SQL Server.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Acceso a conjuntos de datos con Python
mediante la biblioteca de cliente de
Python de Azure Machine Learning
Artículo • 11/07/2023

La versión preliminar de la biblioteca de cliente de Python de Microsoft Azure Machine


Learning puede permitir un acceso seguro a los conjuntos de datos de Azure Machine
Learning desde un entorno local de Python, así como la creación y administración de
conjuntos de datos en un área de trabajo.

Este tema proporciona instrucciones sobre cómo realizar las siguientes acciones:

instalar la biblioteca de cliente de Python de Machine Learning;


obtener acceso y cargar conjuntos de datos, con instrucciones sobre cómo obtener
autorización para el acceso a conjuntos de datos de Azure Machine Learning
desde el entorno local de Python;
obtener acceso a los conjuntos de datos intermedios de experimentos;
usar la biblioteca de cliente de Python para enumerar conjuntos de datos, obtener
acceso a los metadatos, leer el contenido de un conjunto de datos, crear nuevos
conjuntos de datos y actualizar conjuntos de datos existentes.

Requisitos previos
La biblioteca de cliente de Python se ha probado en los siguientes entornos:

Windows, Mac y Linux


Python 2.7 y 3.6+

Tiene una dependencia en los siguientes paquetes:

Solicitudes
Python-dateutil
Pandas

Se recomienda utilizar una distribución de Python como Anaconda o Canopy ,


incluidas con Python, IPython y los tres paquetes instalados enumerados anteriormente.
Aunque IPython no es estrictamente necesario, es un excelente entorno para manipular
y visualizar datos de forma interactiva.
Cómo instalar la biblioteca de cliente de Python de Azure
Machine Learning
Instale la biblioteca cliente de Python de Azure Machine Learning para completar las
tareas descritas en este tema. Esta biblioteca está disponible desde el índice de
paquetes de Python . Para instalarlo en su entorno de Python, ejecute el siguiente
comando desde el entorno de Python local:

Consola

pip install azureml

Como alternativa, puede descargar e instalar desde los fuentes en GitHub .

Consola

python setup.py install

Si tiene git instalado en su equipo, puede usar pip para instalar directamente desde el
repositorio de git:

Consola

pip install git+https://github.com/Azure/Azure-MachineLearning-


ClientLibrary-Python.git

Uso de fragmentos de código para acceder a


conjuntos de datos
La biblioteca de cliente de Python proporciona acceso mediante programación a los
conjuntos de datos existentes de los experimentos que se han ejecutado.

Desde la interfaz web de Azure Machine Learning Studio (clásico), puede generar
fragmentos de código que incluyen toda la información necesaria para descargar y
deserializar conjuntos de datos como objetos pandas DataFrame en la máquina local.

Seguridad de acceso a datos


Los fragmentos de código que se proporcionan en Azure Machine Learning Studio
(clásico) para su uso con la biblioteca cliente de Python incluyen el identificador de área
de trabajo y el token de autorización. Estos proporcionan acceso completo a su área de
trabajo y se deben proteger, como una contraseña.

Por motivos de seguridad, la funcionalidad de fragmento de código solo está disponible


para los usuarios que tengan su rol definido como Propietario para el área de trabajo.
Su rol se muestra en la página USUARIOS de Azure Machine Learning Studio (clásico),
en Configuración.

Si su rol no está establecido como Propietario, puede solicitar que se le vuelva a invitar
como propietario o pedir al propietario del área de trabajo que le proporcione el
fragmento de código.

Para obtener el token de autorización, puede elegir una de estas opciones:

Solicite un token a un propietario. Los propietarios pueden acceder a sus tokens


de autorización desde la página de configuración de su área de trabajo en Azure
Machine Learning Studio (clásico). Seleccione Configuración en el panel izquierdo
y haga clic en TOKENS DE AUTORIZACIÓN para ver los tokens primarios y
secundarios. Aunque se pueden utilizar los tokens de autorización principales y
secundarios, se recomienda que los propietarios solo compartan los tokens de
autorización secundarios.
Pida que le promuevan al rol de propietario: un propietario actual del área de
trabajo debe quitarle primero del área de trabajo y, a continuación, volver a
invitarle como propietario.

Cuando los desarrolladores hayan obtenido el identificador de área de trabajo y el token


de autorización, podrán acceder al área de trabajo con el fragmento de código
independientemente de su rol.

Los tokens de autorización se administran en la página TOKENS DE AUTORIZACIÓN, en


CONFIGURACIÓN. Puede volver a generarlos, pero este procedimiento revoca el acceso
al token anterior.

Obtener acceso a los conjuntos de datos desde una


aplicación local de Python
1. En Machine Learning Studio (clásico), haga clic en la opción DATASETS
(CONJUNTOS DE DATOS) en la barra de navegación izquierda.

2. Seleccione el conjunto de datos al que le gustaría tener acceso. Puede seleccionar


cualquiera de los conjuntos de datos de las listas MIS CONJUNTOS DE DATOS o
EJEMPLOS.

3. En la barra de herramientas de la parte inferior, haga clic en Generate Data Access


Code(Generar código de acceso a datos). Este botón se deshabilitará si los datos
están en un formato no compatible con la biblioteca cliente de Python.

4. Seleccione el fragmento de código de la ventana que aparece y cópielo al


Portapapeles.
5. Pegue el código en el Bloc de notas de su aplicación local de Python.

Obtener acceso a los conjuntos de datos


intermedios de experimentos de Machine
Learning
Después de ejecutar un experimento en Machine Learning Studio (clásico), es posible
acceder a los conjuntos de datos intermedios desde los nodos de salida de los módulos.
Los conjuntos de datos intermedios son datos que se han creado y utilizado para pasos
intermedios cuando se ha ejecutado una herramienta de modelo.

El acceso a los conjuntos de datos intermedios es posible siempre que el formato de los
datos sea compatible con la biblioteca de cliente de Python.

Se admiten los siguientes formatos (sus constantes están en la clase


azureml.DataTypeIds ):

PlainText
GenericCSV
GenericTSV
GenericCSVNoHeader
GenericTSVNoHeader

Puede determinar el formato desplazando el mouse sobre un nodo de salida del


módulo. Aparecerá junto al nombre del nodo, en la información sobre herramientas.

Algunos de los módulos, como el de División, dan como resultado un formato


denominado Dataset , que no es compatible con la biblioteca de cliente de Python.

Necesitará usar un módulo de conversión, como Convertir en CSV, para obtener un


resultado en un formato compatible.

Los pasos siguientes muestran un ejemplo que crea un experimento, lo ejecuta y tiene
acceso al conjunto de datos intermedio.

1. Cree un experimento nuevo.

2. Inserte un módulo Conjunto de datos de clasificación binaria de ingresos en el


censo de adultos .
3. Inserte un módulo División y conecte su entrada a la salida del módulo del
conjunto de datos.

4. Inserte un módulo Convertir en CSV y conecte su entrada a una de las salidas del
módulo División.

5. Guarde el experimento, ejecútelo y espere a que finalice la ejecución del trabajo.

6. Haga clic en el nodo de salida del módulo Convertir en CSV.

7. Cuando aparezca el menú contextual, seleccione Generar código de acceso a


datos.

8. Seleccione el fragmento de código y cópielo en la ventana que se muestra.


9. Pegue el código en el Bloc de notas.

10. Puede visualizar los datos con matplotlib. Esto se muestra en un histograma de la
columna de tiempo:
Use la biblioteca de cliente de Python de
Machine Learning para obtener acceso, leer,
crear y administrar conjuntos de datos.

Área de trabajo
El área de trabajo es el punto de entrada para la biblioteca de cliente de Python.
Proporcione la clase Workspace junto con su identificador de área de trabajo y token de
autorización para crear una instancia:

Python

ws = Workspace(workspace_id='4c29e1adeba2e5a7cbeb0e4f4adfb4df',
authorization_token='f4f3ade2c6aefdb1afb043cd8bcf3daf')

Enumerar los conjuntos de datos


Para enumerar todos los conjuntos de datos en un área determinado:

Python

for ds in ws.datasets:
print(ds.name)

Para enumerar solo los conjuntos de datos creados por el usuario:

Python
for ds in ws.user_datasets:
print(ds.name)

Para enumerar solo los conjuntos de datos de ejemplo:

Python

for ds in ws.example_datasets:
print(ds.name)

Puede tener acceso a un conjunto de datos por nombre (que distingue mayúsculas de
minúsculas):

Python

ds = ws.datasets['my dataset name']

O bien, puede tener acceso a él por su índice:

Python

ds = ws.datasets[0]

Metadatos
Los conjuntos de datos tienen metadatos, además de contenido. (Los conjuntos de
datos intermedios son una excepción a esta regla y no tienen metadatos).

Algunos valores de metadatos son asignados por el usuario en tiempo de creación:

print(ds.name)
print(ds.description)

print(ds.family_id)
print(ds.data_type_id)

Los demás son valores asignados por el Aprendizaje automático de Azure:

print(ds.id)
print(ds.created_date)

print(ds.size)
Vea la clase SourceDataset para obtener más información sobre los metadatos
disponibles.

Leer contenido
Los fragmentos de código que proporciona Machine Learning Studio (clásico) descargan
y deserializan automáticamente el conjunto de datos a un objeto DataFrame de Pandas.
Esto se hace en el método to_dataframe :

Python

frame = ds.to_dataframe()

Si prefiere descargar los datos sin procesar y realizar la deserialización usted mismo,
tiene esa opción. En este momento, esta es la única opción para formatos como 'ARFF',
que la biblioteca de cliente de Python no puede deserializar.

Para leer el contenido como texto:

Python

text_data = ds.read_as_text()

Para leer el contenido como binario:

Python

binary_data = ds.read_as_binary()

También puede abrir una secuencia para el contenido:

Python

with ds.open() as file:


binary_data_chunk = file.read(1000)

Crear un conjunto de datos nuevo


La biblioteca cliente de Python permite cargar conjuntos de datos desde el programa de
Python. Estos conjuntos de datos estarán disponibles para utilizarse en el área de
trabajo.
Si tiene sus datos en un pandas DataFrame, utilice el siguiente código:

Python

from azureml import DataTypeIds

dataset = ws.datasets.add_from_dataframe(
dataframe=frame,
data_type_id=DataTypeIds.GenericCSV,
name='my new dataset',
description='my description'
)

Si sus datos ya están serializados, puede utilizar:

Python

from azureml import DataTypeIds

dataset = ws.datasets.add_from_raw_data(
raw_data=raw_data,
data_type_id=DataTypeIds.GenericCSV,
name='my new dataset',
description='my description'
)

La biblioteca cliente de Python puede serializar un pandas DataFrame en los siguientes


formatos (sus constantes se encuentran en la clase azureml.DataTypeIds ):

PlainText
GenericCSV
GenericTSV
GenericCSVNoHeader
GenericTSVNoHeader

Actualizar un registro existente


Si trata de cargar un nuevo conjunto de datos con un nombre que coincida con un
conjunto de datos existente, debería recibir un error de conflicto.

Para actualizar un conjunto de datos existente, primero debe obtener una referencia al
conjunto de datos existente:

Python
dataset = ws.datasets['existing dataset']

print(dataset.data_type_id) # 'GenericCSV'
print(dataset.name) # 'existing dataset'
print(dataset.description) # 'data up to jan 2015'

A continuación, utilice update_from_dataframe para serializar y reemplazar el contenido


del conjunto de datos en Azure:

Python

dataset = ws.datasets['existing dataset']

dataset.update_from_dataframe(frame2)

print(dataset.data_type_id) # 'GenericCSV'
print(dataset.name) # 'existing dataset'
print(dataset.description) # 'data up to jan 2015'

Si desea serializar los datos a un formato diferente, especifique un valor para el


parámetro opcional data_type_id .

Python

from azureml import DataTypeIds

dataset = ws.datasets['existing dataset']

dataset.update_from_dataframe(
dataframe=frame2,
data_type_id=DataTypeIds.GenericTSV,
)

print(dataset.data_type_id) # 'GenericTSV'
print(dataset.name) # 'existing dataset'
print(dataset.description) # 'data up to jan 2015'

Opcionalmente, puede definir una nueva descripción especificando un valor para el


parámetro description .

Python

dataset = ws.datasets['existing dataset']

dataset.update_from_dataframe(
dataframe=frame2,
description='data up to feb 2015',
)
print(dataset.data_type_id) # 'GenericCSV'
print(dataset.name) # 'existing dataset'
print(dataset.description) # 'data up to feb 2015'

Opcionalmente, puede definir un nuevo nombre especificando un valor para el


parámetro name . De ahora en adelante, solo podrá recuperar el conjunto de datos con
el nuevo nombre. El siguiente código actualiza los datos, el nombre y la descripción.

Python

dataset = ws.datasets['existing dataset']

dataset.update_from_dataframe(
dataframe=frame2,
name='existing dataset v2',
description='data up to feb 2015',
)

print(dataset.data_type_id) # 'GenericCSV'
print(dataset.name) # 'existing dataset v2'
print(dataset.description) # 'data up to feb 2015'

print(ws.datasets['existing dataset v2'].name) # 'existing dataset v2'


print(ws.datasets['existing dataset'].name) # IndexError

Los parámetros data_type_id , name y description son opcionales y tienen el valor


anterior como predeterminado. El parámetro dataframe siempre es obligatorio.

Si sus datos ya están serializados, puede utilizar update_from_raw_data en lugar de


update_from_dataframe . Funcionará de una forma similar si pasa raw_data en lugar de

dataframe .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Exploración y análisis de datos con Python
Biblioteca cliente del paquete de Azure ML para Python: versión 1.2.0
Recopilación y manipulación de datos

Recursos relacionados
Exploración de datos en el proceso de ciencia de datos en equipos
Muestreo de datos en contenedores de blob de Azure, SQL Server y tablas de Hive
Creación de características para datos de SQL Server con SQL y Python
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Ciencia de datos escalables con Azure
Data Lake
Artículo • 30/05/2023

Este tutorial muestra cómo utilizar Azure Data Lake para realizar tareas de exploración
de datos y clasificación binaria en una muestra del conjunto de datos de viajes y tarifas
de taxi de Nueva York. En el ejemplo se muestran procedimientos para predecir si se
paga o no una propina por una tarifa. Le guía a través de los pasos del proceso de
ciencia de datos en equipo, de un extremo a otro, desde la adquisición de datos hasta el
entrenamiento de modelos. A continuación, se muestra cómo implementar un servicio
web que publica el modelo.

Tecnologías
Estas tecnologías se utilizan en este tutorial.

Análisis con Azure Data Lake


U-SQL y Visual Studio
Python
Azure Machine Learning
Scripts

Análisis con Azure Data Lake


Microsoft Azure Data Lake ofrece todas las funcionalidades necesarias para facilitar a
los científicos de datos el almacenamiento de datos de cualquier tamaño, forma y
velocidad, y llevar a cabo el procesamiento de datos, análisis avanzado y modelado del
aprendizaje automático con alta escalabilidad de una manera rentable. Se paga por
trabajo, solo cuando se procesan los datos. Azure Data Lake Analytics incluye U-SQL, un
lenguaje que combina la naturaleza declarativa de SQL con la potencia expresiva de C#.
U-SQL proporciona una funcionalidad de consulta distribuida escalable. Le permite
procesar datos no estructurados aplicando el esquema en la lectura. También se puede
insertar lógica personalizada y funciones definidas por el usuario (UDF), e incluye
extensibilidad para permitir un control detallado sobre cómo ejecutar a escala. Para más
información acerca de la filosofía de diseño tras U-SQL, consulte esta entrada de blog
de Microsoft Visual Studio .

Data Lake Analytics también es un elemento clave de Cortana Analytics Suite. Funciona
con Azure Synapse Analytics, Power BI y Data Factory. Esta combinación proporciona
una plataforma completa de análisis avanzado y macrodatos en la nube.

Este tutorial comienza con la descripción de la instalación de los requisitos previos y los
recursos necesarios para completar las tareas del proceso de ciencia de datos. A
continuación, se describen los pasos de procesamiento de datos mediante U-SQL y se
concluye con una demostración de cómo usar Python y Hive con Azure Machine
Learning Studio (clásico) para compilar e implementar los modelos predictivos.

U-SQL y Visual Studio


En este tutorial se recomienda usar Visual Studio para editar scripts U-SQL para procesar
el conjunto de datos. Los scripts U-SQL se describen aquí y se proporcionan en un
archivo independiente. El proceso incluye el consumo, la exploración y el muestreo de
los datos. También se muestra cómo ejecutar un trabajo con scripts U-SQL desde el
Portal de Azure. Se crean tablas de Hive para los datos en un clúster de HDInsight
asociado para facilitar la compilación e implementación de un modelo de clasificación
binaria en Azure Machine Learning Studio.

Python
Este tutorial también contiene una sección que muestra cómo compilar e implementar
un modelo predictivo con el Estudio de Azure Machine Learning mediante Python.
Proporciona un Jupyter Notebook con los scripts de Python para los pasos de este
proceso. El cuaderno de Jupyter Notebook incluye código para varios pasos de
ingeniería de características adicionales y construcción de modelos, como la clasificación
multiclase y los modelos de regresión, además del modelo de clasificación binaria
descrito aquí. La tarea de la regresión consiste en predecir el importe de la propina en
función de otras características de la propina.

Azure Machine Learning


Azure Machine Learning Studio (clásico) se usa para compilar e implementar los
modelos predictivos mediante dos enfoques: primero con scripts de Python y después
con tablas de Hive en un clúster de HDInsight (Hadoop).

Scripts
En este tutorial solo se describen los principales pasos. Tanto el script U-SQL como
Jupyter Notebook se pueden descargar de GitHub .
Requisitos previos
Antes de empezar estos temas, debe tener lo siguiente:

Suscripción a Azure. Si todavía no tiene uno, consulte Obtener una Versión de


prueba gratuita de Azure .
[Recomendado] Visual Studio 2013 o posterior. Si aún no tiene ninguna de estas
versiones instaladas, puede descargar una versión gratuita de Community desde
Visual Studio Community .

7 Nota

En lugar de Visual Studio, también puede usar Azure Portal para enviar las
consultas de Azure Data Lake. Se proporcionan instrucciones sobre cómo hacerlo
con Visual Studio y en el portal, en la sección titulada Procesamiento de datos con
U-SQL.

Preparación del entorno de la ciencia de datos


para Azure Data Lake
Para preparar el entorno de la ciencia de datos para este tutorial, cree los siguientes
recursos:

Azure Data Lake Storage (ADLS)


Análisis de Azure Data Lake (ADLA)
Cuenta de Almacenamiento de blobs de Azure
Cuenta (clásica) de Azure Machine Learning Studio
Herramientas de Azure Data Lake para Visual Studio (se recomienda)

Esta sección proporciona instrucciones sobre cómo crear cada uno de estos recursos. Si
opta por usar tablas de Hive con Azure Machine Learning, en lugar de Python, para
generar un modelo, también necesita aprovisionar un clúster de HDInsight (Hadoop).
Este procedimiento alternativo se describe en la sección de la opción 2.

7 Nota

Se puede crear Azure Data Lake Store por separado o cuando se crea Azure Data
Lake Analytics como almacenamiento predeterminado. Se hace referencia a las
instrucciones para crear cada uno de estos recursos por separado, pero no es
preciso crear la cuenta de almacenamiento de Data Lake de forma independiente.
Creación de una instancia de Azure Data Lake Storage
Cree un ADLS desde Azure Portal . Para más información, consulte Creación de un
clúster de HDInsight con Data Lake Store mediante Azure Portal. Asegúrese de
configurar la identidad de AAD del clúster en la hoja Origen de datos de la hoja
Configuración opcional descrita allí.

Creación de una cuenta de Análisis de Azure Data Lake


Cree una cuenta de ADLA desde Azure Portal . Para más información, consulte Tutorial:
Introducción a Azure Data Lake Analytics mediante Azure Portal.
Creación de una cuenta de Almacenamiento de blobs de
Azure
Cree una cuenta de Azure Blob Storage desde Azure Portal . Para más información,
consulte la sección Crear una cuenta de almacenamiento de Acerca de las cuentas de
Azure Storage.
Configurar una cuenta (clásica) de Azure Machine
Learning Studio
Suscríbase a Azure Machine Learning Studio (clásico) o inicie sesión desde la página
Azure Machine Learning Studio . Haga clic en el botón Empiece ahora y elija "Free
Workspace" (Área de trabajo libre) o "Standard Workspace" (Área de trabajo estándar).
Ahora está preparado para crear experimentos en Azure Machine Learning Studio.

Instalación de las herramientas de Azure Data Lake


[recomendación]
Instale las herramientas de Azure Data Lake para su versión de Visual Studio desde
Azure Data Lake Tools para Visual Studio (Herramientas de Azure Data Lake para Visual
Studio).
Después de que la instalación finalice, abra Visual Studio. Debería ver la pestaña Data
Lake en el menú superior. Los recursos de Azure deben aparecer en el panel izquierdo al
iniciar sesión en su cuenta de Azure.
El conjunto de datos NYC Taxi Trips
El conjunto de datos utilizado aquí está disponible públicamente, el conjunto de datos
NYC Taxi Trips . El conjunto de datos NYC Taxi Trip consta de aproximadamente 20 GB
de archivos CSV comprimidos (aproximadamente, 48 GB sin comprimir), que registran
más de 173 millones de carreras individuales y las tarifas pagadas por cada carrera. Cada
registro de carrera incluye la hora y la ubicación de recogida y llegada, el número de
licencia del taxista anonimizado y el número de placa (id. único del taxi). Los datos
cubren todos los viajes del año 2013 y se proporcionan en los dos conjuntos de datos
siguientes para cada mes:

El archivo CSV 'trip_data' contiene información detallada de las carreras, como el


número de pasajeros, los puntos de recogida y destino, la duración de las carreras y la
longitud del recorrido. Estos son algunos registros de ejemplo:

medallion,hack_license,vendor_id,rate_code,store_and_fwd_flag,pickup_datetime,dropo

ff_datetime,passenger_count,trip_time_in_secs,trip_distance,pickup_longitude,pickup
_latitude,dropoff_longitude,dropoff_latitude

89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,1,N,2013-01-
01 15:11:48,2013-01-01

15:18:10,4,382,1.00,-73.978165,40.757977,-73.989838,40.751171

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013-01-
06 00:18:35,2013-01-06 00:22:54,1,259,1.50,-74.006683,40.731781,-73.994499,40.75066

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013-01-
05 18:49:41,2013-01-05 18:54:23,1,282,1.10,-74.004707,40.73777,-74.009834,40.726002

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013-01-

07 23:54:15,2013-01-07 23:58:20,2,244,.70,-73.974602,40.759945,-73.984734,40.759388
DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013-01-

07 23:25:03,2013-01-07 23:34:24,1,560,2.10,-73.97625,40.748528,-74.002586,40.747868

El archivo CSV 'trip_fare' contiene información detallada de la tarifa que se paga en cada
carrera, como el tipo de pago, el importe de la tarifa, los suplementos e impuestos, las
propinas y peajes, y el importe total pagado. Estos son algunos registros de ejemplo:

medallion, hack_license, vendor_id, pickup_datetime, payment_type, fare_amount,

surcharge, mta_tax, tip_amount, tolls_amount, total_amount


89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,2013-01-01

15:11:48,CSH,6.5,0,0.5,0,0,7
0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-06

00:18:35,CSH,6,0.5,0.5,0,0,7
0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-05

18:49:41,CSH,5.5,1,0.5,0,0,7
DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07

23:54:15,CSH,5,0.5,0.5,0,0,6
DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07

23:25:03,CSH,9.5,0.5,0.5,0,0,10.5

La clave única para unir trip_data y trip_fare se compone de los siguientes tres campos:
medallion, hack_license y pickup_datetime. Se puede acceder a los archivos CSV sin
formato desde un blob de Azure Storage. El script U-SQL para esta combinación está en
la sección Combinación de las tablas de carreras y tarifas .

Procesamiento de datos con U-SQL


Las tareas de procesamiento de datos que se ilustran en esta sección incluyen el
consumo, la comprobación de la calidad, la exploración y el muestreo de los datos.
También se muestra cómo combinar las tablas de carreras y tarifas. La sección final
muestra cómo ejecutar un trabajo con scripts U-SQL desde el Portal de Azure. Estos son
los vínculos a cada subsección:

Ingesta de datos: leer datos de un blob público


Comprobaciones de la calidad de los datos
Exploración de datos
Combinación de las tablas de carreras y tarifas
Muestreo de datos
Ejecución de trabajos U-SQL

Los scripts U-SQL se describen aquí y se proporcionan en un archivo independiente. Los


scripts U-SQL completos se pueden descargar de GitHub .

Para ejecutar U-SQL, abra Visual Studio, haga clic en Archivo --> Nuevo --> Proyecto,
elija Proyecto U-SQL, asígnele un nombre y guárdelo en una carpeta.
7 Nota

Se puede usar el Portal de Azure para ejecutar U-SQL en lugar de Visual Studio.
Puede ir hasta al recurso de Azure Data Lake Analytics en el portal y enviar
consultas directamente, como se muestra en la ilustración siguiente:

Ingesta de datos: leer datos de un blob público


A la ubicación de los datos en el blob de Azure se hace referencia como
wasb://container_name@blob_storage_account_name.blob.core.windows.net/blob_na
me y puede extraerse mediante Extractors.Csv(). Sustituya el nombre de su propio
contenedor y el nombre de la cuenta de almacenamiento en los siguientes scripts por
container_name@blob_storage_account_name en la dirección wasb. Dado que los
nombres de archivo están en el mismo formato, podemos usar trip_data_{*}.csv para
leer los 12 archivos de carreras.

SQL

///Read in Trip data


@trip0 =
EXTRACT
medallion string,
hack_license string,
vendor_id string,
rate_code string,
store_and_fwd_flag string,
pickup_datetime string,
dropoff_datetime string,
passenger_count string,
trip_time_in_secs string,
trip_distance string,
pickup_longitude string,
pickup_latitude string,
dropoff_longitude string,
dropoff_latitude string
// This is reading 12 trip data from blob
FROM
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/nycta
xitrip/trip_data_{*}.csv"
USING Extractors.Csv();

Dado que hay encabezados en la primera fila, es preciso quitar los encabezados y
cambiar los tipos de columna por los apropiados. Puede guardar los datos procesados
en Azure Data Lake Storage
medianteswebhdfs://data_lake_storage_name.azuredatalakestorage.net/folder_name/f
ile_name_ o en la cuenta de Azure Blob Storage mediante
wasb://container_name@blob_storage_account_name.blob.core.windows.net/blob_na
me.

SQL

// change data types


@trip =
SELECT
medallion,
hack_license,
vendor_id,
rate_code,
store_and_fwd_flag,
DateTime.Parse(pickup_datetime) AS pickup_datetime,
DateTime.Parse(dropoff_datetime) AS dropoff_datetime,
Int32.Parse(passenger_count) AS passenger_count,
Double.Parse(trip_time_in_secs) AS trip_time_in_secs,
Double.Parse(trip_distance) AS trip_distance,
(pickup_longitude==string.Empty ? 0: float.Parse(pickup_longitude)) AS
pickup_longitude,
(pickup_latitude==string.Empty ? 0: float.Parse(pickup_latitude)) AS
pickup_latitude,
(dropoff_longitude==string.Empty ? 0: float.Parse(dropoff_longitude)) AS
dropoff_longitude,
(dropoff_latitude==string.Empty ? 0: float.Parse(dropoff_latitude)) AS
dropoff_latitude
FROM @trip0
WHERE medallion != "medallion";

////output data to ADL


OUTPUT @trip
TO
"swebhdfs://data_lake_storage_name.azuredatalakestore.net/nyctaxi_folder/dem
o_trip.csv"
USING Outputters.Csv();

////Output data to blob


OUTPUT @trip
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
trip.csv"
USING Outputters.Csv();

Del mismo modo se puede leer en los conjuntos de datos de tarifas. Haga clic con el
botón derecho en Azure Data Lake Storage; puede elegir ver los datos en Azure Portal -
-> Explorador de datos o en Explorador de archivos dentro de Visual Studio.
Comprobaciones de la calidad de los datos
Después de que se hayan leído las tablas de carreras y tarifas, las comprobaciones de la
calidad de los datos pueden realizarse de la manera siguiente. Los archivos CSV
resultantes pueden ser la salida de Blob Storage de Azure o de Azure Data Lake Storage.

Busque el número de placas de licencia y un número único de placas de licencia:

SQL

///check the number of medallions and unique number of medallions


@trip2 =
SELECT
medallion,
vendor_id,
pickup_datetime.Month AS pickup_month
FROM @trip;

@ex_1 =
SELECT
pickup_month,
COUNT(medallion) AS cnt_medallion,
COUNT(DISTINCT(medallion)) AS unique_medallion
FROM @trip2
GROUP BY pickup_month;
OUTPUT @ex_1
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_1.csv"
USING Outputters.Csv();

Busque las placas de licencia que tenían más de 100 carreras:

SQL

///find those medallions that had more than 100 trips


@ex_2 =
SELECT medallion,
COUNT(medallion) AS cnt_medallion
FROM @trip2
//where pickup_datetime >= "2013-01-01t00:00:00.0000000" and
pickup_datetime <= "2013-04-01t00:00:00.0000000"
GROUP BY medallion
HAVING COUNT(medallion) > 100;
OUTPUT @ex_2
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_2.csv"
USING Outputters.Csv();

Busque los registros no válidos en términos de pickup_longitude:

SQL
///find those invalid records in terms of pickup_longitude
@ex_3 =
SELECT COUNT(medallion) AS cnt_invalid_pickup_longitude
FROM @trip
WHERE
pickup_longitude <- 90 OR pickup_longitude > 90;
OUTPUT @ex_3
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_3.csv"
USING Outputters.Csv();

Busque los valores que faltan en algunas variables:

SQL

//check missing values


@res =
SELECT *,
(medallion == null? 1 : 0) AS missing_medallion
FROM @trip;

@trip_summary6 =
SELECT
vendor_id,
SUM(missing_medallion) AS medallion_empty,
COUNT(medallion) AS medallion_total,
COUNT(DISTINCT(medallion)) AS medallion_total_unique
FROM @res
GROUP BY vendor_id;
OUTPUT @trip_summary6
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_16.csv"
USING Outputters.Csv();

Exploración de datos
Podemos realizar una exploración de datos con los siguientes scripts para
comprenderlos mejor.

Busque la distribución de las carreras con y sin propina:

SQL

///tipped vs. not tipped distribution


@tip_or_not =
SELECT *,
(tip_amount > 0 ? 1: 0) AS tipped
FROM @fare;

@ex_4 =
SELECT tipped,
COUNT(*) AS tip_freq
FROM @tip_or_not
GROUP BY tipped;
OUTPUT @ex_4
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_4.csv"
USING Outputters.Csv();

Busque la distribución del importe de las propinas con valores límite: 0, 5, 10 y 20


dólares.

SQL

//tip class/range distribution


@tip_class =
SELECT *,
(tip_amount >20? 4: (tip_amount >10? 3:(tip_amount >5 ? 2:
(tip_amount > 0 ? 1: 0)))) AS tip_class
FROM @fare;
@ex_5 =
SELECT tip_class,
COUNT(*) AS tip_freq
FROM @tip_class
GROUP BY tip_class;
OUTPUT @ex_5
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_5.csv"
USING Outputters.Csv();

Busque las estadísticas básicas de la distancia de las carreras:

SQL

// find basic statistics for trip_distance


@trip_summary4 =
SELECT
vendor_id,
COUNT(*) AS cnt_row,
MIN(trip_distance) AS min_trip_distance,
MAX(trip_distance) AS max_trip_distance,
AVG(trip_distance) AS avg_trip_distance
FROM @trip
GROUP BY vendor_id;
OUTPUT @trip_summary4
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_14.csv"
USING Outputters.Csv();

Busque los percentiles de la distancia de las carreras:

SQL

// find percentiles of trip_distance


@trip_summary3 =
SELECT DISTINCT vendor_id AS vendor,
PERCENTILE_DISC(0.25) WITHIN GROUP(ORDER BY
trip_distance) OVER(PARTITION BY vendor_id) AS median_trip_distance_disc,
PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY
trip_distance) OVER(PARTITION BY vendor_id) AS median_trip_distance_disc,
PERCENTILE_DISC(0.75) WITHIN GROUP(ORDER BY
trip_distance) OVER(PARTITION BY vendor_id) AS median_trip_distance_disc
FROM @trip;
// group by vendor_id;
OUTPUT @trip_summary3
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_13.csv"
USING Outputters.Csv();

Combinación de las tablas de carreras y tarifas


Las tablas de carreras y tarifas pueden combinarse por placa de licencia, hack_license y
pickup_time.

SQL

//join trip and fare table

@model_data_full =
SELECT t.*,
f.payment_type, f.fare_amount, f.surcharge, f.mta_tax, f.tolls_amount,
f.total_amount, f.tip_amount,
(f.tip_amount > 0 ? 1: 0) AS tipped,
(f.tip_amount >20? 4: (f.tip_amount >10? 3:(f.tip_amount >5 ? 2:
(f.tip_amount > 0 ? 1: 0)))) AS tip_class
FROM @trip AS t JOIN @fare AS f
ON (t.medallion == f.medallion AND t.hack_license == f.hack_license AND
t.pickup_datetime == f.pickup_datetime)
WHERE (pickup_longitude != 0 AND dropoff_longitude != 0 );

//// output to blob


OUTPUT @model_data_full
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_7_full_data.csv"
USING Outputters.Csv();

////output data to ADL


OUTPUT @model_data_full
TO
"swebhdfs://data_lake_storage_name.azuredatalakestore.net/nyctaxi_folder/dem
o_ex_7_full_data.csv"
USING Outputters.Csv();

Para cada nivel de recuento de pasajeros, calcule el número de registros, el importe


medio de la propina, la varianza del importe de la propina y el porcentaje de carreras
con propina.

SQL

// contingency table
@trip_summary8 =
SELECT passenger_count,
COUNT(*) AS cnt,
AVG(tip_amount) AS avg_tip_amount,
VAR(tip_amount) AS var_tip_amount,
SUM(tipped) AS cnt_tipped,
(float)SUM(tipped)/COUNT(*) AS pct_tipped
FROM @model_data_full
GROUP BY passenger_count;
OUTPUT @trip_summary8
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_17.csv"
USING Outputters.Csv();

Muestreo de datos
En primer lugar, se selecciona aleatoriamente un 0,1 % de los datos de la tabla
combinada:

SQL

//random select 1/1000 data for modeling purpose


@addrownumberres_randomsample =
SELECT *,
ROW_NUMBER() OVER() AS rownum
FROM @model_data_full;

@model_data_random_sample_1_1000 =
SELECT *
FROM @addrownumberres_randomsample
WHERE rownum % 1000 == 0;
OUTPUT @model_data_random_sample_1_1000
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_7_random_1_1000.csv"
USING Outputters.Csv();

A continuación, se realiza un muestreo estratificado por la variable binaria tip_class:

SQL

//stratified random select 1/1000 data for modeling purpose


@addrownumberres_stratifiedsample =
SELECT *,
ROW_NUMBER() OVER(PARTITION BY tip_class) AS rownum
FROM @model_data_full;

@model_data_stratified_sample_1_1000 =
SELECT *
FROM @addrownumberres_stratifiedsample
WHERE rownum % 1000 == 0;
//// output to blob
OUTPUT @model_data_stratified_sample_1_1000
TO
"wasb://container_name@blob_storage_account_name.blob.core.windows.net/demo_
ex_9_stratified_1_1000.csv"
USING Outputters.Csv();
////output data to ADL
OUTPUT @model_data_stratified_sample_1_1000
TO
"swebhdfs://data_lake_storage_name.azuredatalakestore.net/nyctaxi_folder/dem
o_ex_9_stratified_1_1000.csv"
USING Outputters.Csv();

Ejecución de trabajos U-SQL


Cuando termine la edición de los scripts U-SQL, puede enviarlos al servidor mediante su
cuenta de Azure Data Lake Analytics. Haga clic en Data Lake, Enviar trabajo, seleccione
su cuenta de Analytics, elija Paralelismo y haga clic en el botón Enviar.
Si el trabajo se cumple correctamente, su estado se muestra en Visual Studio para su
supervisión. Cuando finalice el trabajo, puede incluso reproducir el proceso de ejecución
del trabajo y descubrir los pasos del cuello de botella para mejorar la eficacia del
trabajo. También puede ir a Azure Portal para comprobar el estado de los trabajos U-
SQL.
Ahora puede comprobar los archivos de salida en Azure Blob Storage o en Azure Portal.
En el paso siguiente, se usan los datos de ejemplo estratificado para nuestro modelo.
Generación e implementación de modelos en
Azure Machine Learning
Hay dos opciones disponibles para extraer datos e introducirlos en Azure Machine
Learning para generar y

En la primera opción, usar los datos muestreados que se han escrito en un blob de
Azure (en el paso anterior, Muestreo de datos ) y usar Python para generar e
implementar modelos desde Azure Machine Learning.
En la segunda opción, consultar los datos en Azure Data Lake directamente
mediante una consulta de Hive. Para esta opción es necesario que cree un clúster
de HDInsight o use uno existente en el que las tablas de Hive apunten a los datos
de los taxis de Nueva York en el almacenamiento de Azure Data Lake. Ambas
opciones se describen en las siguientes secciones.

Opción 1: Usar Python para generar e


implementar modelos de aprendizaje
automático
Para compilar e implementar modelos de Machine Learning con Python, cree un Jupyter
Notebook en el equipo local o en Azure Machine Learning Studio. El cuaderno de
Jupyter Notebook en GitHub contiene el código completo que se explora, los datos
que se visualizan y la ingeniería, el modelado y la implementación de características. En
este artículo se mostrarán solo los pasos de implementación y modelado.

Importación de bibliotecas de Python


Para ejecutar la muestra del Jupyter Notebook o el archivo de script de Python, necesita
los siguientes paquetes de Python. Si usa el servicio Notebook de Azure Machine
Learning, estos paquetes ya están preinstalados.

Python

import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
from time import time
import pyodbc
import os
from azure.storage.blob import BlobService
import tables
import time
import zipfile
import random
import sklearn
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import train_test_split
from sklearn import metrics
from __future__ import division
from sklearn import linear_model
from azureml import services

Lectura de los datos del blob


Cadena de conexión

text

CONTAINERNAME = 'test1'
STORAGEACCOUNTNAME = 'XXXXXXXXX'
STORAGEACCOUNTKEY = 'YYYYYYYYYYYYYYYYYYYYYYYYYYYY'
BLOBNAME = 'demo_ex_9_stratified_1_1000_copy.csv'
blob_service =
BlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTK
EY)

Leer como texto

text

t1 = time.time()
data =
blob_service.get_blob_to_text(CONTAINERNAME,BLOBNAME).split("\n")
t2 = time.time()
print(("It takes %s seconds to read in "+BLOBNAME) % (t2 - t1))

Agregar nombres de columna y separar las columnas

text

colnames =
['medallion','hack_license','vendor_id','rate_code','store_and_fwd_flag
','pickup_datetime','dropoff_datetime',
'passenger_count','trip_time_in_secs','trip_distance','pickup_longitude
','pickup_latitude','dropoff_longitude','dropoff_latitude',
'payment_type', 'fare_amount', 'surcharge', 'mta_tax', 'tolls_amount',
'total_amount', 'tip_amount', 'tipped', 'tip_class', 'rownum']
df1 = pd.DataFrame([sub.split(",") for sub in data], columns =
colnames)

Cambiar algunas columnas a numérico

text

cols_2_float =
['trip_time_in_secs','pickup_longitude','pickup_latitude','dropoff_long
itude','dropoff_latitude',
'fare_amount',
'surcharge','mta_tax','tolls_amount','total_amount','tip_amount',
'passenger_count','trip_distance'
,'tipped','tip_class','rownum']
for col in cols_2_float:
df1[col] = df1[col].astype(float)

Generación de modelos de aprendizaje automático


Aquí se crea un modelo de clasificación binaria para predecir si un viaje va a tener
propina, o no. En Jupyter Notebook puede encontrar otros dos modelos: clasificación
multiclase y modelos de regresión.

En primer lugar, es preciso crear variables ficticias que se puedan utilizar en


modelos de scikit-learn

Python

df1_payment_type_dummy = pd.get_dummies(df1['payment_type'],
prefix='payment_type_dummy')
df1_vendor_id_dummy = pd.get_dummies(df1['vendor_id'],
prefix='vendor_id_dummy')

Crear la trama de datos para el modelado

Python

cols_to_keep = ['tipped', 'trip_distance', 'passenger_count']


data =
df1[cols_to_keep].join([df1_payment_type_dummy,df1_vendor_id_dummy])

X = data.iloc[:,1:]
Y = data.tipped

División 60 - 40 de entrenamiento y pruebas


Python

X_train, X_test, Y_train, Y_test = train_test_split(X, Y,


test_size=0.4, random_state=0)

Regresión logística en conjunto de pruebas

Python

model = LogisticRegression()
logit_fit = model.fit(X_train, Y_train)
print ('Coefficients: \n', logit_fit.coef_)
Y_train_pred = logit_fit.predict(X_train)

Puntuar conjunto de datos de pruebas

Python

Y_test_pred = logit_fit.predict(X_test)

Calcular métricas de evaluación

Python

fpr_train, tpr_train, thresholds_train = metrics.roc_curve(Y_train,


Y_train_pred)
print fpr_train, tpr_train, thresholds_train

fpr_test, tpr_test, thresholds_test = metrics.roc_curve(Y_test,


Y_test_pred)
print fpr_test, tpr_test, thresholds_test

#AUC
print metrics.auc(fpr_train,tpr_train)
print metrics.auc(fpr_test,tpr_test)

#Confusion Matrix
print metrics.confusion_matrix(Y_train,Y_train_pred)
print metrics.confusion_matrix(Y_test,Y_test_pred)
Generación de API de servicio web y su consumo en
Python
Querrá poner en operación el modelo de aprendizaje automático una vez que se haya
compilado. Aquí se usa el modelo de logística binaria como ejemplo. Asegúrese de que
la versión de scikit-learn en su máquina local es la 0.15.1 (Azure Machine Learning
Studio ya tiene al menos esta versión).

Busque las credenciales del área de trabajo en la configuración de Azure Machine


Learning Studio (clásico). En Azure Machine Learning Studio, haga clic en
Configuración -->Nombre -->Tokens de autorización.

Resultados

workspaceid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
auth_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'

Cree un servicio web


Python

@services.publish(workspaceid, auth_token)
@services.types(trip_distance = float, passenger_count = float,
payment_type_dummy_CRD = float, payment_type_dummy_CSH=float,
payment_type_dummy_DIS = float, payment_type_dummy_NOC = float,
payment_type_dummy_UNK = float, vendor_id_dummy_CMT = float,
vendor_id_dummy_VTS = float)
@services.returns(int) #0, or 1
def predictNYCTAXI(trip_distance, passenger_count,
payment_type_dummy_CRD, payment_type_dummy_CSH,payment_type_dummy_DIS,
payment_type_dummy_NOC, payment_type_dummy_UNK, vendor_id_dummy_CMT,
vendor_id_dummy_VTS ):
inputArray = [trip_distance, passenger_count,
payment_type_dummy_CRD, payment_type_dummy_CSH, payment_type_dummy_DIS,
payment_type_dummy_NOC, payment_type_dummy_UNK, vendor_id_dummy_CMT,
vendor_id_dummy_VTS]
return logit_fit.predict(inputArray)

Obtenga las credenciales del servicio web

Python

url = predictNYCTAXI.service.url
api_key = predictNYCTAXI.service.api_key

print url
print api_key

@services.service(url, api_key)
@services.types(trip_distance = float, passenger_count = float,
payment_type_dummy_CRD = float,
payment_type_dummy_CSH=float,payment_type_dummy_DIS = float,
payment_type_dummy_NOC = float, payment_type_dummy_UNK = float,
vendor_id_dummy_CMT = float, vendor_id_dummy_VTS = float)
@services.returns(float)
def NYCTAXIPredictor(trip_distance, passenger_count,
payment_type_dummy_CRD, payment_type_dummy_CSH,payment_type_dummy_DIS,
payment_type_dummy_NOC, payment_type_dummy_UNK, vendor_id_dummy_CMT,
vendor_id_dummy_VTS ):
pass

Llame a una API de servicio web. Después del paso anterior, normalmente tendrá
que esperar entre 5 y 10 segundos.

Python

NYCTAXIPredictor(1,2,1,0,0,0,0,0,1)
Opción 2: Crear e implementar modelos
directamente en Azure Machine Learning
Azure Machine Learning Studio (clásico) puede leer datos directamente desde Azure
Data Lake Storage y después usarse para crear e implementar modelos. Este enfoque
usa una tabla de Hive que apunta a Azure Data Lake Storage. Se debe aprovisionar un
clúster de Azure HDInsight independiente para la tabla de Hive.

Creación de un clúster de HDInsight Linux


Cree un clúster de HDInsight (Linux) desde Azure Portal . Para más información,
consulte la sección Creación de un clúster de HDInsight con acceso a Azure Data Lake
Storage del artículo Creación de un clúster de HDInsight con Data Lake Store mediante
Azure Portal.

Creación de una tabla de Hive en HDInsight


Ahora se crean tablas de Hive que se usarán en Azure Machine Learning Studio (clásico)
en el clúster de HDInsight con los datos almacenados en Azure Data Lake Storage en el
paso anterior. Vaya al clúster de HDInsight que acaba de crear. Haga clic en
Configuración -->Propiedades -->Identidad de AAD del clúster -->Acceso a ADLS y
asegúrese de que su cuenta de Azure Data Lake Storage se agrega a la lista con
derechos de lectura, escritura y ejecución.

Luego, haga clic en Panel junto al botón Configuración y emergerá una ventana. Haga
clic en Vista de Hive en la esquina superior derecha de la página y verá el Editor de
consultas.
Para crear una tabla, pegue los siguientes scripts de Hive. La ubicación del origen de
datos está en la referencia de Azure Data Lake Storage de esta forma:
adl://data_lake_store_name.azuredatalakestore.net:443/folder_name/file_name.

HiveQL

CREATE EXTERNAL TABLE nyc_stratified_sample


(
medallion string,
hack_license string,
vendor_id string,
rate_code string,
store_and_fwd_flag string,
pickup_datetime string,
dropoff_datetime string,
passenger_count string,
trip_time_in_secs string,
trip_distance string,
pickup_longitude string,
pickup_latitude string,
dropoff_longitude string,
dropoff_latitude string,
payment_type string,
fare_amount string,
surcharge string,
mta_tax string,
tolls_amount string,
total_amount string,
tip_amount string,
tipped string,
tip_class string,
rownum string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' lines terminated by '\n'
LOCATION
'adl://data_lake_storage_name.azuredatalakestore.net:443/nyctaxi_folder/demo
_ex_9_stratified_1_1000_copy.csv';

Cuando finalice la consulta, verá los resultados similares a los siguientes:

Compilación e implementación de modelos en Azure


Machine Learning Studio
Ahora está listo para compilar e implementar con Azure Machine Learning un modelo
que prediga si se paga o no propina. Los datos de ejemplo estratificados están listos
para usarse en este problema de clasificación binaria (propina o no). Los modelos
predictivos que utilizan la clasificación multiclase (tip_class) y la regresión (tip_amount)
también se pueden compilar e implementar con Azure Machine Learning Studio. Sin
embargo, aquí solo se muestra cómo hacerlo con el modelo de clasificación binaria.

1. Proporcione los datos a Azure Machine Learning Studio (clásico) con el módulo
Importar datos, disponible en la sección Entrada y salida de datos. Para obtener
más información, consulte la página de referencia sobre el módulo Importar datos
.

2. Seleccione Consulta de Hive como Origen de datos en el panel Propiedades.

3. Pegue el siguiente script de Hive en el editor Hive database query (Consulta de


base de datos de Hive).
HiveQL

select * from nyc_stratified_sample;

4. Introduzca la URL del clúster de HDInsight (esta URL se puede encontrar en


Microsoft Azure Portal) y, a continuación, introduzca las credenciales de Hadoop, la
ubicación de los datos de salida y el nombre de la cuenta/clave/nombre del
contenedor de Azure Storage.

En la ilustración siguiente se muestra un ejemplo de un experimento de clasificación


binaria que lee los datos de la tabla de Hive.
Una vez creado el experimento, haga clic en Configurar servicio web -->Servicio web
predictivo.
Ejecute el experimento de puntuación creado automáticamente y, cuando haya
terminado, haga clic en Deploy Web Service
Poco después se muestra el panel del servicio web:
Resumen
Al completar este tutorial, ha creado un entorno de ciencia de datos para generar
soluciones completas escalables en Azure Data Lake. Este entorno se usó para analizar
un conjunto de datos público grande. Para ello se recorrieron los pasos canónicos del
proceso de ciencia de datos, desde la adquisición de datos y el entrenamiento del
modelo hasta la implementación del modelo como servicio web. Se usó U-SQL para
procesar, explorar y muestrear los datos. Se utilizaron Python y Hive con Azure Machine
Learning Studio (clásico) para compilar e implementar modelos predictivos.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Proceso de ciencia de datos en equipos en acción: uso de Azure Synapse Analytics
Información general sobre el proceso de ciencia de datos con Spark en HDInsight
de Azure

Recursos relacionados
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Aprendizaje automático a escala
Proceso de datos en una máquina
virtual de SQL Server en Azure
Artículo • 30/05/2023

En este documento se aborda cómo explorar datos y generar características para los
datos almacenados en una VM de SQL Server en Azure. Este objetivo puede alcanzarse
mediante la administración de datos usando SQL o mediante un lenguaje de
programación, como Python.

7 Nota

En las instrucciones SQL de ejemplo de este documento se supone que los datos
están en SQL Server. Si no lo están, consulte el mapa de proceso de ciencia de
datos en la nube para obtener información sobre cómo mover los datos a SQL
Server.

Uso de SQL
En esta sección, se describen las siguientes tareas de tratamiento de datos mediante
SQL:

1. Exploración de datos
2. Generación de características

Exploración de datos
A continuación se muestran algunos scripts de SQL de ejemplo que se pueden usar para
explorar los almacenes de datos en SQL Server.

7 Nota

Para obtener un ejemplo práctico, puede usar el conjunto de datos NYC Taxi
dataset y consultar el IPNB denominado NYC Data wrangling using IPython
Notebook and SQL Server (Tratamiento de datos de la ciudad de Nueva York
mediante IPython Notebook y SQL Server), que ofrece un tutorial completo.

1. Obtener el número de observaciones por día


SELECT CONVERT(date, <date_columnname>) as date, count(*) as c from

<tablename> group by CONVERT(date, <date_columnname>)

2. Obtención de los niveles de una columna de categorías

select distinct <column_name> from <databasename>

3. Obtener el número de niveles de combinación de dos columnas de categorías

select <column_a>, <column_b>,count(*) from <tablename> group by <column_a>,

<column_b>

4. Obtener la distribución para columnas numéricas

select <column_name>, count(*) from <tablename> group by <column_name>

Generación de características
En esta sección, se describen formas de generar características mediante SQL:

1. Generación de características basadas en recuentos


2. Generación de características de discretización
3. Implementación de las características de una sola columna

7 Nota

Cuando genere características adicionales, puede agregarlas como columnas a la


tabla existente o crear una nueva tabla con las características adicionales y la clave
principal, que se pueden combinar con la tabla original.

Generación de características basadas en recuentos


Los ejemplos siguientes muestran dos formas de generar características de recuento. El
primer método usa la suma condicional y el segundo utiliza la cláusula 'where'. Estos
resultados pueden combinarse luego con la tabla original (con columnas de clave
principal) para disponer de características de recuento junto con los datos originales.

SQL

select <column_name1>,<column_name2>,<column_name3>, COUNT(*) as


Count_Features from <tablename> group by <column_name1>,<column_name2>,
<column_name3>

select <column_name1>,<column_name2> , sum(1) as Count_Features from


<tablename>
where <column_name3> = '<some_value>' group by <column_name1>,<column_name2>

Generación de características de discretización


En el ejemplo siguiente se muestra cómo generar características discretizadas mediante
la discretización (con cinco discretizaciones) de una columna numérica que puede
usarse en su lugar como una característica:

SQL

SELECT <column_name>, NTILE(5) OVER (ORDER BY <column_name>) AS BinNumber


from <tablename>

Implementación de las características de una sola


columna
En esta sección, se muestra cómo se implementa una sola columna de una tabla para
generar características adicionales. En el ejemplo se supone que hay una columna de
latitud o longitud en la tabla a partir de la cual está intentando generar características.

Aquí se incluye un breve manual sobre los datos de ubicación de latitud y longitud
(extraído de stackoverflow How to measure the accuracy of latitude and longitude?
(¿Cómo medir la precisión de la latitud y la longitud?)). Es útil comprender esta guía
antes de incluir la ubicación como una o más características:

La señal indica si estamos en el norte o sur, y este u oeste del mundo.


Un dígito de las centenas distinto de cero indica que se usa la longitud y no la
latitud.
El dígito de las decenas ofrece una posición a aproximadamente 1.000 kilómetros.
Nos brinda información útil sobre el continente u océano en el que nos
encontramos.
El dígito de las unidades (un grado decimal) indica una posición de hasta 111
kilómetros (60 millas náuticas, aproximadamente 69 millas). Puede indicarle
aproximadamente el estado, el país o la región en que se encuentra.
La primera posición decimal tiene un valor de hasta 11,1 km: puede distinguir la
posición de una ciudad grande de otra ciudad grande vecina.
La segundo posición decimal tiene un valor de hasta 1,1 km: puede separar un
pueblo del siguiente.
La tercera posición decimal tiene un valor de hasta 110 m: puede identificar un
campo agrícola extenso o campus universitario.
La cuarta posición decimal tiene un valor de hasta 11 m: puede identificar una
parcela de tierra. Es comparable a la precisión típica de una unidad GPS sin
corregir y sin interferencias.
La quinta posición decimal tiene un valor de hasta 1,1 m: puede distinguir entre
distintos árboles. Solo es posible conseguir una precisión de este nivel con
unidades GPS comerciales con corrección diferencial.
La sexta posición decimal tiene un valor de hasta 0,11 m: puede usarse para
diseñar estructuras en detalle, para el diseño de paisajes o la construcción de
carreteras. Debería ser más que suficiente para realizar el seguimiento de los
movimientos de glaciares y ríos. Esto se consigue al tomar medidas meticulosas
con GPS, como GPS corregido de forma diferencial.

La información de ubicación se puede caracterizar como sigue, con diferencias entre la


información de región, ubicación y ciudad. También es posible llamar a un punto de
conexión de REST, como la API de mapas de Bing disponible en Encontrar una ubicación
por punto para obtener la información de la región o el distrito.

SQL

select
<location_columnname>
,round(<location_columnname>,0) as l1
,l2=case when LEN (PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1)) >= 1 then
substring(PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1),1,1) else '0' end
,l3=case when LEN (PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1)) >= 2 then
substring(PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1),2,1) else '0' end
,l4=case when LEN (PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1)) >= 3 then
substring(PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1),3,1) else '0' end
,l5=case when LEN (PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1)) >= 4 then
substring(PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1),4,1) else '0' end
,l6=case when LEN (PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1)) >= 5 then
substring(PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1),5,1) else '0' end
,l7=case when LEN (PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1)) >= 6 then
substring(PARSENAME(round(ABS(<location_columnname>) -
FLOOR(ABS(<location_columnname>)),6),1),6,1) else '0' end
from <tablename>
Estas características basadas en ubicación se pueden usar aún más para generar
características de recuento adicionales, tal y como se describió anteriormente.

 Sugerencia

Puede insertar mediante programación los registros con el lenguaje que prefiera. Es
posible que deba insertar los datos en fragmentos para mejorar el rendimiento de
escritura (para obtener un ejemplo de cómo obtener esto mediante pyodbc,
consulte A HelloWorld sample to access SQLServer with python (Un ejemplo
Hola a todos para acceder a SQLServer con python)). Otra alternativa consiste en
insertar datos en la base de datos mediante la utilidad BCP.

Conexión con Azure Machine Learning


La característica recién generada se puede agregar como una columna a una tabla
existente o se puede almacenar en una tabla nueva y combinar con la tabla original para
el aprendizaje automático. Es posible generar o tener acceso a las características si ya se
han creado, mediante el módulo Importar datos en Azure Machine Learning, como se
muestra a continuación:

Uso de un lenguaje de programación como


Python
Usar Python para generar explorar datos y generar características cuando los datos
están en SQL Server es parecido a procesar los datos en blobs de Azure mediante
Python, como se documenta en Proceso de datos de blobs de Azure en su entorno de
ciencia de datos. Cargue los datos de la base de datos en una trama de datos Pandas
para un mayor procesamiento. Se documenta el proceso de conexión a la base de datos
y carga de los datos en la trama de datos de esta sección.

El formato de cadena de conexión siguiente puede usarse para conectarse a una base
de datos de SQL Server desde Python mediante pyodbc (reemplace servername,
dbname, username y password con sus valores específicos):

Python

#Set up the SQL Azure connection


import pyodbc
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=<servername>;DATABASE=
<dbname>;UID=<username>;PWD=<password>')

La biblioteca Pandas en Python ofrece un amplio conjunto de herramientas de análisis


de datos y estructuras de datos para la manipulación de datos para la programación en
Python. El código siguiente lee los resultados que se devuelven desde una base de
datos de SQL Server en una trama de datos de Pandas:

Python

# Query database and load the returned results in pandas data frame
data_frame = pd.read_sql('''select <columnname1>, <columnname2>... from
<tablename>''', conn)

Ya puede trabajar con la trama de datos de Pandas como se explica en el artículo


Proceso de datos de blobs de Azure en su entorno de ciencia de datos.

Ejemplo de ciencia de datos de Azure en acción


Para obtener un ejemplo de tutorial completo del Proceso de ciencia de datos de Azure
mediante un conjunto de datos público, consulte Proceso de ciencia de datos de Azure
en acción.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube


Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Hoja de referencia rápida del diseñador
de Azure Machine Learning
Artículo • 11/07/2023

La hoja de características de los algoritmos de Azure Machine Learning lo ayuda a


elegir el algoritmo correcto para un modelo de análisis predictivo.

Azure Machine Learning tiene una gran biblioteca de algoritmos de las familias de
clasificación, sistemas de recomendación, agrupación en clústeres, detección de
anomalías, regresión y análisis de texto. Cada uno de ellos está diseñado para resolver
un tipo de problema de aprendizaje automático diferente.

Descargar: Hoja de características de los


algoritmos de Machine Learning
Cuando descargue la hoja de referencia rápida, puede imprimirla en tamaño tabloide
(11 x 17 pulg.).

Descargue la hoja de referencia rápida aquí: Hoja de referencia rápida de algoritmos


de Machine Learning (11x17 pulg.)
Descargue e imprima la hoja de referencia rápida de algoritmos de Machine Learning en
tamaño tabloide para tenerlo a mano y que le sirva de ayuda al elegir un algoritmo.

Más ayuda con Machine Learning


Para obtener información general sobre el diseñador de Microsoft Azure Machine
Learning, vea ¿Qué es el diseñador de Azure Machine Learning?
Para obtener información general sobre Microsoft Azure Machine Learning,
consulte ¿Qué es Azure Machine Learning?
Para una explicación de cómo implementar un servicio web de puntuación, vea
Implementación de modelos de aprendizaje automático en Azure.
Para obtener una explicación de cómo utilizar un servicio web de puntuación, vea
Consumir un modelo de Azure Machine Learning que está implementado como un
servicio web.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.


Ciencia de datos con Spark en Azure
HDInsight
Artículo • 11/07/2023

En este conjunto de temas se muestra cómo utilizar Spark en HDInsight para completar
tareas comunes de ciencia de datos como la ingesta de datos, el diseño de
características, el modelado y la evaluación de modelos. Los datos que se utilizan son un
ejemplo del conjunto de datos de carreras y tarifas de taxi de la ciudad de Nueva York
en 2013 Los modelos creados incluyen regresión logística y lineal, bosques aleatorios y
árboles impulsados por gradiente: En los temas también se muestra cómo almacenar
estos modelos en el Azure Blob Storage (WASB) y cómo puntuar y evaluar su
rendimiento predictivo. En los temas más avanzados se describe cómo se pueden
entrenar los modelos mediante validación cruzada y barrido de hiperparámetros. En
este tema introductorio también se hace referencia al tema en el que se describe cómo
configurar un clúster de Spark que se necesita para completar los pasos de los tutoriales
proporcionados.

Spark y MLlib
Spark es una plataforma de procesamiento paralelo de código abierto que admite el
procesamiento en memoria para mejorar el rendimiento de las aplicaciones de análisis
de macrodatos. El motor de procesamiento Spark se ha creado para ofrecer velocidad,
facilidad de uso y análisis sofisticados. Las capacidades de cálculo distribuido en
memoria de Spark lo convierten en una buena opción para algoritmos iterativos en los
cálculos de gráficos y aprendizaje automático. MLlib es la biblioteca de aprendizaje
automático escalable de Spark que ofrece funcionalidades de modelado algorítmico en
este entorno distribuido.

HDInsight Spark
Spark en HDInsight es la oferta de Spark de código abierto hospedada por Azure.
También incluye compatibilidad con cuadernos de PySpark para Jupyter en el clúster de
Spark, que pueden ejecutar consultas interactivas de Spark SQL para transformar, filtrar
y visualizar los datos almacenados en blobs de Azure (WASB). PySpark es la API de
Python para Spark. Los fragmentos de código que proporcionan las soluciones y
muestran los trazados relevantes para visualizar los datos aquí se ejecutan en cuadernos
de Jupyter instalados en los clústeres de Spark. En estos temas, los pasos de modelado
también contienen código que muestra cómo entrenar, evaluar, guardar y usar cada
tipo de modelo.

Configuración: Clústeres de Spark y cuadernos


de Jupyter
Los pasos de instalación y el código proporcionado en este tutorial son para HDInsight
Spark 1.6. Sin embargo, Jupyter Notebooks se proporciona para clústeres de HDInsight
Spark 1.6 y Spark 2.0. Se proporciona una descripción de los cuadernos y de los vínculos
a estos en el archivo Readme.md del repositorio de GitHub que los contiene. No
obstante, este código y los cuadernos vinculados son genéricos y deberían funcionar en
cualquier clúster de Spark. Los pasos de configuración y administración del clúster
pueden ser ligeramente diferentes de los que se muestran aquí si no está usando Spark
en HDInsight. Para mayor comodidad, estos son los vínculos a los cuadernos de Jupyter
Notebook para Spark 1.6 (que se van a ejecutar en el kernel pySpark del servidor de
Jupyter Notebook) y Spark 2.0 (que se van a ejecutar en el kernel pySpark3 del servidor
de Jupyter Notebook):

Cuadernos de Spark 1.6


Estos cuadernos están indicados para ejecutarse en el kernel pySpark del servidor de
cuadernos de Jupyter.

pySpark-machine-learning-data-science-spark-data-exploration-modeling.ipynb :
ofrece información sobre cómo realizar el modelado, la puntuación y la
exploración de datos con diversos algoritmos.
pySpark-machine-learning-data-science-spark-advanced-data-exploration-
modeling.ipynb : incluye temas del cuaderno n.º 1 y el desarrollo de modelos
mediante el ajuste de hiperparámetros y la validación cruzada.
pySpark-machine-learning-data-science-spark-model-consumption.ipynb :
muestra cómo poner en funcionamiento un modelo guardado con Python en
clústeres de HDInsight.

Cuadernos de Spark 2.0


Estos cuadernos están indicados para ejecutarse en el kernel pySpark3 del servidor de
cuadernos de Jupyter.

Spark2.0-pySpark3-machine-learning-data-science-spark-advanced-data-
exploration-modeling.ipynb : En este archivo se ofrece información sobre cómo
realizar el modelado, la puntuación y la exploración de datos en clústeres de Spark
2.0 con el conjunto de datos de carreras y tarifas de taxi de Nueva York que se
describe aquí. Este cuaderno puede ser un buen punto de partida para explorar
rápidamente el código proporcionado para Spark 2.0. Para obtener un análisis más
pormenorizado de los datos del cuaderno sobre taxis en Nueva York, vea el
siguiente cuaderno de esta lista. En las notas que encontrará después de esta lista
se establece una comparación de estos cuadernos.
Spark2.0-pySpark3_NYC_Taxi_Tip_Regression.ipynb : En este archivo se muestra
cómo realizar la limpieza y transformación de datos (operaciones de dataframe y
Spark SQL), la exploración, el modelado y la puntuación con el conjunto de datos
de carreras y tarifas de taxi de Nueva York descrito aquí.
Spark2.0-pySpark3_Airline_Departure_Delay_Classification.ipynb : En este archivo
se muestra cómo realizar la limpieza y transformación de datos (operaciones de
dataframe y Spark SQL), la exploración, el modelado y la puntuación con el
conocido conjunto de datos de salidas puntuales de líneas aéreas de 2011 y 2012.
Se ha integrado el conjunto de datos de las líneas aéreas con los datos
climatológicos del aeropuerto (por ejemplo, velocidad del viento, temperatura,
altitud, etc.), antes de realizar el modelado, con el fin de poder incluir estas
características climatológicas en el modelo.

7 Nota

El conjunto de datos de las líneas aéreas se agregó a los cuadernos de Spark 2.0
para ilustrar mejor el uso de algoritmos de clasificación. Consulte los siguientes
vínculos para obtener información sobre el conjunto de datos de salidas puntuales
de las líneas aéreas y sobre el de datos climatológicos:

Datos de salida en hora de líneas aéreas:


https://www.transtats.bts.gov/ONTIME/

Datos meteorológicos de aeropuertos: https://www.ncdc.noaa.gov/

7 Nota

Los cuadernos de Spark 2.0 sobre los conjuntos de datos de los taxis de Nueva York
y de retrasos en los vuelos pueden tardar 10 minutos o más en ejecutarse
(dependiendo del tamaño del clúster de HDI). El primer cuaderno de la lista
anterior muestra muchos aspectos de la exploración de datos, la visualización y el
entrenamiento del modelo de ML en un cuaderno que tarda menos tiempo en
ejecutarse con conjuntos de datos de NYC de bajo muestreo, al que se han unido
previamente los archivos de taxi y tarifas: Spark2.0-pySpark3-machine-learning-
data-science-spark-advanced-data-exploration-modeling.ipynb . Este cuaderno
tarda menos tiempo en finalizar (2-3 minutos) y puede ser un buen punto de
partida para explorar rápidamente el código proporcionado para Spark 2.0.

Para obtener instrucciones sobre la operacionalización de un modelo de Spark 2.0 y el


consumo de modelo para puntuación, consulte el documento de Spark 1.6 sobre
consumo para obtener un ejemplo que muestre los pasos necesarios. Para utilizar este
ejemplo en Spark 2.0, reemplace el archivo de código Python por este archivo .

Prerrequisitos
Los procedimientos siguientes están relacionados con Spark 1.6. En la versión Spark 2.0,
use los cuadernos descritos anteriormente, con sus correspondientes vínculos.

1. Debe tener una suscripción de Azure. Si aún no tiene una, consulte Get Azure free
trial (Obtener una evaluación gratuita de Azure).

2. Para completar este tutorial se necesita un clúster de Spark 1.6. Para crear uno,
consulte las instrucciones proporcionadas en Introducción: creación de clústeres
de Apache Spark en HDInsight para Linux y ejecución de consultas interactivas
mediante Spark SQL (versión preliminar). En el menú Seleccionar tipo de clúster se
especifica el tipo de clúster y la versión.

7 Nota
Si quiere leer un tema que muestre cómo utilizar Scala en lugar de Python para
completar las tareas de un proceso de ciencia de datos de un extremo a otro,
consulte Ciencia de datos mediante Scala con Spark de Azure.

2 Advertencia

La facturación de los clústeres de HDInsight se prorratea por minuto, tanto si se


usan como si no. Por consiguiente, asegúrese de eliminar el clúster cuando
termine de usarlo. Consulte Eliminación de un clúster de HDInsight.

Datos de taxis de Nueva York de 2013


Los datos de carreras de taxi de Nueva York son aproximadamente 20 GB de archivos
comprimidos de valores separados por comas (CSV) (~48 GB sin comprimir), que
incluyen más de 173 millones de carreras individuales y las tarifas pagadas por cada
carrera. El registro de cada carrera incluye la hora y los puntos de recogida y destino, el
número de licencia anonimizado del conductor y el número de identificación del taxi.
Los datos cubren todos los viajes del año 2013 y se proporcionan en los dos conjuntos
de datos siguientes para cada mes:

1. Los archivos CSV 'trip_data' contienen información detallada de las carreras, como
el número de pasajeros, los puntos de recogida y destino, la duración de las
carreras y la longitud del recorrido. Estos son algunos registros de ejemplo:

medallion,hack_license,vendor_id,rate_code,store_and_fwd_flag,pickup_datetime,

dropoff_datetime,passenger_count,trip_time_in_secs,trip_distance,pickup_longit

ude,pickup_latitude,dropoff_longitude,dropoff_latitude

89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,1,N,2013

-01-01 15:11:48,2013-01-01
15:18:10,4,382,1.00,-73.978165,40.757977,-73.989838,40.751171

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013

-01-06 00:18:35,2013-01-06
00:22:54,1,259,1.50,-74.006683,40.731781,-73.994499,40.75066

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013
-01-05 18:49:41,2013-01-05

18:54:23,1,282,1.10,-74.004707,40.73777,-74.009834,40.726002
DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013
-01-07 23:54:15,2013-01-07

23:58:20,2,244,.70,-73.974602,40.759945,-73.984734,40.759388

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013

-01-07 23:25:03,2013-01-07

23:34:24,1,560,2.10,-73.97625,40.748528,-74.002586,40.747868

2. Los archivos CSV 'trip_fare' contienen información detallada de la tarifa que se


paga en cada carrera, como el tipo de pago, el importe de la tarifa, los
suplementos e impuestos, las propinas y peajes, y el importe total pagado. Estos
son algunos registros de ejemplo:

medallion, hack_license, vendor_id, pickup_datetime, payment_type,


fare_amount, surcharge, mta_tax, tip_amount, tolls_amount, total_amount

89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,2013-01-
01 15:11:48,CSH,6.5,0,0.5,0,0,7

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-

06 00:18:35,CSH,6,0.5,0.5,0,0,7

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-

05 18:49:41,CSH,5.5,1,0.5,0,0,7

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-

07 23:54:15,CSH,5,0.5,0.5,0,0,6

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-
07 23:25:03,CSH,9.5,0.5,0.5,0,0,10.5

Hemos tomado una muestra del 0,1 % de estos archivos y unido los archivos CSV
trip_data y trip_fare en un único conjunto de datos que se usará como conjunto de
datos de entrada en este tutorial. La clave única para unir trip_data y trip_fare se
compone de los campos: medallion, hack_licence y pickup_datetime. Cada registro del
conjunto de datos contiene los siguientes atributos que representan una carrera de taxi
de Nueva York:

Campo Breve descripción

medallion Licencias de taxi anónimas (identificador único del taxi)

hack_license Número de licencia anónima de taxi londinense


Campo Breve descripción

vendor_id Identificador del proveedor del taxi

rate_code Categoría de tarifa de taxi de Nueva York

store_and_fwd_flag Indicador de “guardar y reenviar”

pickup_datetime Fecha y hora de subida

dropoff_datetime Fecha y hora de bajada

pickup_hour Hora de recogida

pickup_week Semana del año de subida

weekday Día de la semana (intervalo de 1 a 7)

passenger_count Número de pasajeros en una carrera de taxi

trip_time_in_secs Tiempo de la carrera, en segundos

trip_distance Distancia recorrida en la carrera, en millas

pickup_longitude Longitud del punto de subida

pickup_latitude Latitud del punto de subida

dropoff_longitude Longitud del punto de bajada

dropoff_latitude Latitud del punto de bajada

direct_distance Distancia directa entre las ubicaciones de subida y bajada

payment_type Tipo de pago (efectivo, tarjeta de crédito, etc.)

fare_amount Importe de la tarifa en

surcharge Suplemento

mta_tax Impuesto de transporte en metro MTA

tip_amount Importe de la propina

tolls_amount Importe de los peajes

total_amount Importe total

tipped Con propina (0 o 1 para No o Sí)

tip_class Clase de propina (0: 0 USD, 1: 0-5 USD, 2: 6-10 USD, 3: 11-20 USD, 4:
>20 USD)
Ejecución del código desde un Notebook de
Jupyter en el clúster de Spark
Puede iniciar Jupyter Notebook desde el portal de Azure. Busque el clúster de Spark en
el panel y haga clic en él para entrar en la página de administración del clúster. Para
abrir el cuaderno asociado al clúster de Spark, haga clic en Paneles de clúster: >Jupyter
Notebook.

También puede ir a https://CLUSTERNAME.azurehdinsight.net/jupyter para tener acceso


a las instancias de Jupyter Notebook. Reemplace la parte CLUSTERNAME de esta
dirección URL por el nombre de su propio clúster. Necesitará la contraseña de su cuenta
de administrador para acceder a los Notebooks.
Seleccione PySpark para ver un directorio con algunos ejemplos de cuadernos
preempaquetados que utilizan la API PySpark. Los cuadernos que contienen los
ejemplos de código de este conjunto de temas de Spark están disponibles en GitHub .

Puede cargar los cuadernos directamente desde GitHub en el servidor de Jupyter


Notebook, en su clúster de Spark. En la página principal de su instancia de Jupyter, haga
clic en el botón Cargar de la parte derecha de la pantalla. Se abre un explorador de
archivos. Pegue aquí la dirección URL de GitHub (contenido sin procesar) del cuaderno y
haga clic en Abrir.

Verá el nombre de archivo en la lista de archivos de Jupyter de nuevo con un botón


Cargar . Haga clic en este botón Cargar . Ahora ya ha importado el cuaderno. Repita
estos pasos para cargar los otros cuadernos de este tutorial.

 Sugerencia

Puede hacer clic con el botón derecho en los vínculos del explorador y seleccionar
Copiar vínculo para obtener la dirección URL del contenido sin procesar de GitHub.
Puede pegar esta dirección URL en el cuadro de diálogo del explorador de carga de
archivos de Jupyter.

Ahora puede:

Ver el código haciendo clic en el cuaderno.


Ejecutar cada celda presionando MAYÚS+ENTRAR.
Ejecutar todo el cuaderno haciendo clic en Celda: >Ejecutar.
Usar la visualización automática de consultas.

 Sugerencia

El kernel de PySpark visualiza automáticamente la salida de las consultas de SQL


(HiveQL). Tiene la opción de seleccionar entre diferentes tipos de visualizaciones
(tabla, circular, línea, área o barra) mediante los botones del menú Tipo del
cuaderno:
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Aprendizaje automático a escala
Ciencia de datos mediante Scala y Spark
en Azure
Artículo • 11/07/2023

Este artículo muestra cómo utilizar Scala para tareas de aprendizaje automático
supervisado con los paquetes MLlib escalable y ML de Spark en un clúster de Spark en
HDInsight de Azure. Además, se explican cuáles son las tareas que constituyen el
proceso de ciencia de datos: exploración e ingesta de datos, visualización, ingeniería de
características, modelado y consumo de modelos. Los modelos en el artículo incluyen
regresión logística y lineal, bosques aleatorios y árboles incrementados de degradado
(GBTs), además de dos tareas habituales de aprendizaje automático supervisado:

Problema de regresión: predicción de propinas (en dólares) por una carrera de taxi
Clasificación binaria: predicción de si se dará propina o no (1/0) en una carrera de
taxi

Para llevar a cabo el proceso de modelado hay que realizar entrenamientos y


evaluaciones en conjuntos de datos de pruebas y métricas de precisión pertinentes. En
este artículo se describe cómo almacenar estos modelos en el Almacenamiento de blobs
de Azure, además de puntuar y evaluar su rendimiento predictivo. También se tratan
temas más avanzados sobre cómo optimizar modelos mediante validación cruzada y
barridos de hiperparámetros. Los datos que se utilizan son un ejemplo del conjunto de
datos de carreras y tarifas de taxi de la ciudad de Nueva York en 2013 disponible en
GitHub.

Scala es un lenguaje basado en la Máquina virtual Java que integra los conceptos del
lenguaje funcional y la programación orientada a objetos. Se trata de un lenguaje
escalable apropiado para efectuar el procesamiento distribuido en la nube y que se
ejecuta en los clústeres de Spark de Azure.

Spark es una plataforma de procesamiento paralelo de código abierto que admite el


procesamiento en memoria para mejorar el rendimiento de las aplicaciones de análisis
de macrodatos. El motor de procesamiento Spark se ha creado para ofrecer velocidad,
facilidad de uso y análisis sofisticados. Las capacidades de cálculo distribuido en
memoria de Spark lo convierten en una buena opción para algoritmos iterativos en los
cálculos de gráficos y aprendizaje automático. El paquete spark.ml proporciona un
conjunto uniforme de API de alto nivel creadas a partir de tramas de datos que ayudan
a crear y ajustar canalizaciones prácticas de aprendizaje automático. MLlib es la
biblioteca de aprendizaje automático escalable de Spark que ofrece funcionalidades de
modelado en este entorno distribuido.
Spark en HDInsight es la oferta de Spark de código abierto hospedada por Azure.
Asimismo, incluye compatibilidad con cuadernos de Scala de Jupyter Notebook en el
clúster de Spark, y permite ejecutar consultas interactivas de Spark SQL para
transformar, filtrar y visualizar los datos almacenados en Almacenamiento de blobs de
Azure. Los fragmentos de código de Scala en este artículo proporcionan las soluciones y
muestran los trazados pertinentes para visualizar los datos que se ejecutan en
cuadernos de Jupyter Notebook instalados en los clústeres de Spark. En estos temas, los
pasos de modelado también contienen código que muestra cómo entrenar, evaluar,
guardar y usar cada tipo de modelo.

Los pasos de instalación y el código de este artículo están diseñados para Spark 1.6 con
HDInsight de Azure 3.4. Sin embargo, este código y el de Jupyter Notebook de Scala
son genéricos y deberían funcionar en cualquier clúster de Spark. Los pasos de
configuración y administración del clúster pueden ser ligeramente diferentes de los que
se muestran aquí si no está usando Spark en HDInsight.

7 Nota

Si quiere leer un tema que muestre cómo utilizar Python en lugar de Scala para
completar las tareas de un proceso de ciencia de datos de un extremo a otro,
consulte Información general sobre la ciencia de los datos con Spark en
HDInsight de Azure.

Requisitos previos
Debe tener una suscripción de Azure. Si aún no tiene una, consiga una evaluación
gratuita de Azure .
Necesita un clúster de Spark 1.6 con HDInsight de Azure 3.4 para completar los
procedimientos siguientes. Para crear un clúster, consulte las instrucciones
proporcionadas en Introducción: creación de clústeres Apache Spark en HDInsight
para Linux y ejecución de consultas interactivas mediante Spark SQL. Establezca el
tipo de clúster y la versión en el menú Seleccionar tipo de clúster .
2 Advertencia

La facturación de los clústeres de HDInsight se prorratea por minuto, tanto si se


usan como si no. Por consiguiente, asegúrese de eliminar el clúster cuando
termine de usarlo. Consulte Eliminación de un clúster de HDInsight.

Para ver una descripción de los datos de taxis de Nueva York y las instrucciones para
ejecutar código desde un cuaderno de Jupyter Notebook en el clúster de Spark,
consulte las secciones apropiadas de Información general sobre la ciencia de los datos
con Spark en HDInsight de Azure.

Ejecución del código de Scala desde un


cuaderno de Jupyter Notebook del clúster
Spark
Puede iniciar un cuaderno de Jupyter Notebook desde el Portal de Azure. Busque el
clúster de Spark en el panel y haga clic en él para entrar en la página de administración
del clúster. Después, haga clic en Paneles de clúster y, después, en Jupyter Notebook
para abrir el cuaderno asociado al clúster de Spark.
También puedes acceder a cuadernos de Jupyter Notebook en
https://<clustername>.azurehdinsight.net/jupyter . Reemplace <clustername> por el

nombre del clúster. Necesitará la contraseña de su cuenta de administrador para


acceder a los cuadernos de Jupyter Notebook.

Seleccione Scala para ver un directorio con algunos ejemplos de cuadernos


preempaquetados que utilizan la API PySpark. La exploración de modelado y
puntuación mediante el cuaderno de Scala.ipynb con muestras de código de este
conjunto de temas Spark está disponible en GitHub .

Puede cargar el cuaderno directamente desde GitHub en el servidor de Jupyter


Notebook del clúster de Spark. En la página principal de Jupyter, haga clic en el botón
Upload (Cargar). En el Explorador de archivos, pegue la URL de GitHub (contenido sin
procesar) del cuaderno Scala y haga clic en Open(Abrir). El cuaderno de Scala está
disponible en la siguiente dirección URL:

Exploration-Modeling-and-Scoring-using-Scala.ipynb

Instalación: contextos preestablecidos de Spark


y Hive, instrucciones mágicas de Spark y
bibliotecas de Spark

Contextos preestablecidos de Spark y Hive


Scala

# SET THE START TIME


import java.util.Calendar
val beginningTime = Calendar.getInstance().getTime()

Los kernels de Spark que se proporcionan con cuadernos de Jupyter Notebook tienen
contextos preestablecidos. No es necesario establecer explícitamente los contextos de
Spark o Hive antes de empezar a trabajar con la aplicación que se esté desarrollando.
Los contextos preestablecidos son:

sc para SparkContext

sqlContext para HiveContext

Instrucciones mágicas de Spark


El kernel de Spark proporciona algunas instrucciones "mágicas" predefinidas, que son
comandos especiales a los que se puede llamar con %% . Dos de estos comandos se
utilizan en los siguientes ejemplos de código.

%%local especifica que el código de las líneas siguientes se ejecutará localmente.

El código debe estar en el lenguaje Scala.


%%sql -o <variable name> ejecuta una consulta de Hive en sqlContext . Si se pasa

el parámetro -o , el resultado de la consulta se conserva en el contexto de Scala


%%local como trama de datos de Spark.

Para más información sobre los kernels de cuadernos de Jupyter Notebook y las
"instrucciones mágicas" predefinidas que llama con %% (por ejemplo, %%local ), vea
Kernels disponibles para cuadernos de Jupyter con clústeres de Apache Spark en
HDInsight Linux.

Importación de bibliotecas
Importe las bibliotecas de Spark, MLlib y otras que necesite con el siguiente código.

Scala

# IMPORT SPARK AND JAVA LIBRARIES


import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.functions._
import java.text.SimpleDateFormat
import java.util.Calendar
import sqlContext.implicits._
import org.apache.spark.sql.Row

# IMPORT SPARK SQL FUNCTIONS


import org.apache.spark.sql.types.{StructType, StructField, StringType,
IntegerType, FloatType, DoubleType}
import org.apache.spark.sql.functions.rand

# IMPORT SPARK ML FUNCTIONS


import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.feature.{StringIndexer, VectorAssembler,
OneHotEncoder, VectorIndexer, Binarizer}
import org.apache.spark.ml.tuning.{ParamGridBuilder, TrainValidationSplit,
CrossValidator}
import org.apache.spark.ml.regression.{LinearRegression,
LinearRegressionModel, RandomForestRegressor, RandomForestRegressionModel,
GBTRegressor, GBTRegressionModel}
import org.apache.spark.ml.classification.{LogisticRegression,
LogisticRegressionModel, RandomForestClassifier,
RandomForestClassificationModel, GBTClassifier, GBTClassificationModel}
import org.apache.spark.ml.evaluation.{BinaryClassificationEvaluator,
RegressionEvaluator, MulticlassClassificationEvaluator}

# IMPORT SPARK MLLIB FUNCTIONS


import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS,
LogisticRegressionModel}
import org.apache.spark.mllib.regression.{LabeledPoint,
LinearRegressionWithSGD, LinearRegressionModel}
import org.apache.spark.mllib.tree.{GradientBoostedTrees, RandomForest}
import org.apache.spark.mllib.tree.configuration.BoostingStrategy
import org.apache.spark.mllib.tree.model.{GradientBoostedTreesModel,
RandomForestModel, Predict}
import org.apache.spark.mllib.evaluation.{BinaryClassificationMetrics,
MulticlassMetrics, RegressionMetrics}

# SPECIFY SQLCONTEXT
val sqlContext = new SQLContext(sc)

Ingesta de datos
El primer paso en el proceso de ciencia de datos es introducir los datos que desea
analizar. Se traen los datos de orígenes o sistemas externos en los que residan a su
entorno de exploración y modelado de datos. En este artículo, los datos introducidos
representan conjuntamente un 0,1 % del archivo de carreras y tarifas de taxi
(almacenado como un archivo .tsv). El entorno de exploración y modelado de datos es
Spark. Esta sección contiene el código para completar una serie de tareas:

1. Establecer rutas de acceso a directorios para almacenar datos y modelos.


2. Leer el conjunto de datos de entrada (almacenado como un archivo .tsv).
3. Definir un esquema para los datos y limpiarlos.
4. Crear una trama de datos limpia y almacenarla en la memoria caché.
5. Registrar los datos como una tabla temporal en SQLContext.
6. Consultar la tabla e importar los resultados en una trama de datos.

Establecer rutas de acceso de directorio para las


ubicaciones de almacenamiento en el Almacenamiento
de blobs de Azure.
Spark puede leer y escribir en el Almacenamiento de blobs de Azure. Puede usar Spark
para procesar cualquiera de los datos existentes y almacenar los resultados en el
Almacenamiento de blobs.

Para guardar modelos o archivos en el Almacenamiento de blobs, debe especificar la


ruta de acceso de forma adecuada. Se puede hacer referencia al contenedor
predeterminado asociado al clúster de Spark con un ruta que comience con wasb:/// .
Haga referencia a otras ubicaciones mediante wasb:// .

El siguiente ejemplo de código especifica la ubicación de los datos de entrada que se


leerán y la ruta de acceso al Almacenamiento de blobs conectado al clúster de Spark
donde se guardará el modelo.
Scala

# SET PATHS TO DATA AND MODEL FILE LOCATIONS


# INGEST DATA AND SPECIFY HEADERS FOR COLUMNS
val taxi_train_file =
sc.textFile("wasb://mllibwalkthroughs@cdspsparksamples.blob.core.windows.net
/Data/NYCTaxi/JoinedTaxiTripFare.Point1Pct.Train.tsv")
val header = taxi_train_file.first;

# SET THE MODEL STORAGE DIRECTORY PATH


# NOTE THAT THE FINAL BACKSLASH IN THE PATH IS REQUIRED.
val modelDir = "wasb:///user/remoteuser/NYCTaxi/Models/";

Importación de datos, creación de un conjunto de datos


distribuidos resistentes (RDD) y definición de tramas de
datos según el esquema
Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# DEFINE THE SCHEMA BASED ON THE HEADER OF THE FILE


val sqlContext = new SQLContext(sc)
val taxi_schema = StructType(
Array(
StructField("medallion", StringType, true),
StructField("hack_license", StringType, true),
StructField("vendor_id", StringType, true),
StructField("rate_code", DoubleType, true),
StructField("store_and_fwd_flag", StringType, true),
StructField("pickup_datetime", StringType, true),
StructField("dropoff_datetime", StringType, true),
StructField("pickup_hour", DoubleType, true),
StructField("pickup_week", DoubleType, true),
StructField("weekday", DoubleType, true),
StructField("passenger_count", DoubleType, true),
StructField("trip_time_in_secs", DoubleType, true),
StructField("trip_distance", DoubleType, true),
StructField("pickup_longitude", DoubleType, true),
StructField("pickup_latitude", DoubleType, true),
StructField("dropoff_longitude", DoubleType, true),
StructField("dropoff_latitude", DoubleType, true),
StructField("direct_distance", StringType, true),
StructField("payment_type", StringType, true),
StructField("fare_amount", DoubleType, true),
StructField("surcharge", DoubleType, true),
StructField("mta_tax", DoubleType, true),
StructField("tip_amount", DoubleType, true),
StructField("tolls_amount", DoubleType, true),
StructField("total_amount", DoubleType, true),
StructField("tipped", DoubleType, true),
StructField("tip_class", DoubleType, true)
)
)

# CAST VARIABLES ACCORDING TO THE SCHEMA


val taxi_temp = (taxi_train_file.map(_.split("\t"))
.filter((r) => r(0) != "medallion")
.map(p => Row(p(0), p(1), p(2),
p(3).toDouble, p(4), p(5), p(6), p(7).toDouble,
p(8).toDouble, p(9).toDouble, p(10).toDouble,
p(11).toDouble, p(12).toDouble, p(13).toDouble,
p(14).toDouble, p(15).toDouble, p(16).toDouble,
p(17), p(18), p(19).toDouble, p(20).toDouble,
p(21).toDouble, p(22).toDouble,
p(23).toDouble, p(24).toDouble, p(25).toDouble,
p(26).toDouble)))

# CREATE AN INITIAL DATA FRAME AND DROP COLUMNS, AND THEN CREATE A CLEANED
DATA FRAME BY FILTERING FOR UNWANTED VALUES OR OUTLIERS
val taxi_train_df = sqlContext.createDataFrame(taxi_temp, taxi_schema)

val taxi_df_train_cleaned =
(taxi_train_df.drop(taxi_train_df.col("medallion"))

.drop(taxi_train_df.col("hack_license")).drop(taxi_train_df.col("store_and_f
wd_flag"))

.drop(taxi_train_df.col("pickup_datetime")).drop(taxi_train_df.col("dropoff_
datetime"))

.drop(taxi_train_df.col("pickup_longitude")).drop(taxi_train_df.col("pickup_
latitude"))

.drop(taxi_train_df.col("dropoff_longitude")).drop(taxi_train_df.col("dropof
f_latitude"))

.drop(taxi_train_df.col("surcharge")).drop(taxi_train_df.col("mta_tax"))

.drop(taxi_train_df.col("direct_distance")).drop(taxi_train_df.col("tolls_am
ount"))

.drop(taxi_train_df.col("total_amount")).drop(taxi_train_df.col("tip_class")
)
.filter("passenger_count > 0 and passenger_count < 8 AND
payment_type in ('CSH', 'CRD') AND tip_amount >= 0 AND tip_amount < 30 AND
fare_amount >= 1 AND fare_amount < 150 AND trip_distance > 0 AND
trip_distance < 100 AND trip_time_in_secs > 30 AND trip_time_in_secs <
7200"));

# CACHE AND MATERIALIZE THE CLEANED DATA FRAME IN MEMORY


taxi_df_train_cleaned.cache()
taxi_df_train_cleaned.count()
# REGISTER THE DATA FRAME AS A TEMPORARY TABLE IN SQLCONTEXT
taxi_df_train_cleaned.registerTempTable("taxi_train")

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

Salida:

Tiempo de ejecución de la celda: 8 segundos.

Consulta de la tabla e importación de resultados en una


trama de datos
Ahora, consulte la tabla para obtener datos de tarifas, pasajeros y propinas, filtrar la
información dañada y no relevante, e imprimir varias filas.

Scala

# QUERY THE DATA


val sqlStatement = """
SELECT fare_amount, passenger_count, tip_amount, tipped
FROM taxi_train
WHERE passenger_count > 0 AND passenger_count < 7
AND fare_amount > 0 AND fare_amount < 200
AND payment_type in ('CSH', 'CRD')
AND tip_amount > 0 AND tip_amount < 25
"""
val sqlResultsDF = sqlContext.sql(sqlStatement)

# SHOW ONLY THE TOP THREE ROWS


sqlResultsDF.show(3)

Salida:

fare_amount passenger_count tip_amount tipped

13.5 1.0 2.9 1.0

16.0 2.0 3.4 1.0

10,5 2.0 1.0 1.0

Visualización y exploración de datos


Una vez incorporados los datos en Spark, el siguiente paso del proceso de la ciencia de
los datos es conocer mejor los datos mediante la exploración y la visualización. En esta
sección se examinan los datos de taxi mediante consultas SQL. Después, se importan los
resultados en una trama de datos para trazar las variables de destino y las posibles
características para inspeccionarlas de manera visual mediante la característica de
visualización automática de Jupyter.

Uso de instrucciones mágicas de SQL y locales para trazar


datos
De forma predeterminada, el resultado de cualquier fragmento de código que se
ejecuta desde un cuaderno de Jupyter Notebook está disponible en el contexto de la
sesión que se conserva en los nodos de trabajo. Si quiere guardar una carrera en los
nodos de trabajo de cada cálculo y todos los datos que necesita para dichos cálculos
están disponibles de forma local en el nodo del servidor de Jupyter (el nodo principal),
puede utilizar la instrucción mágica %%local para ejecutar el fragmento de código en el
servidor de Jupyter.

Instrucciones mágicas SQL ( %%sql ). El kernel de Spark en HDInsight admite


consultas sencillas de HiveQL en línea en SQLContext. El argumento ( -o
VARIABLE_NAME ) conserva la salida de la consulta SQL como una trama de datos de

Pandas en el servidor de Jupyter. Este valor significa que el resultado estará


disponible en el modo local.
%%local Instrucciones mágicas. Las instrucciones mágicas %%local se utilizan para

ejecutar código de forma local en el servidor de Jupyter, que es el nodo principal


del clúster de HDInsight. Normalmente, se utilizan juntas las instrucciones mágicas
%%local y %%sql con el parámetro -o . El parámetro -o conservaría la salida de la

consulta SQL localmente y luego la instrucción mágica %%local desencadenaría el


siguiente conjunto de fragmento de código para ejecutarse localmente en la salida
de las consultas SQL que se conserva localmente.

Consulta de datos mediante SQL


Esta consulta recupera carreras de taxi por importe de la tarifa, número de pasajeros y
propina.

Scala

# RUN THE SQL QUERY


%%sql -q -o sqlResults
SELECT fare_amount, passenger_count, tip_amount, tipped FROM taxi_train
WHERE passenger_count > 0 AND passenger_count < 7 AND fare_amount > 0 AND
fare_amount < 200 AND payment_type in ('CSH', 'CRD') AND tip_amount > 0 AND
tip_amount < 25

En el código siguiente, la instrucción mágica %%local crea una trama de datos local,
sqlResults. Puede utilizar sqlResults para el trazado mediante matplotlib.

 Sugerencia

La instrucción mágica local se emplea varias veces en este tutorial. Si la cantidad de


datos es elevada, realice un muestreo para crear una trama de datos que pueda
caber en la memoria local.

Trazado de datos
Se pueden trazar datos con código Python cuando la trama de datos esté en el contexto
local como trama de datos de Pandas.

Scala

# RUN THE CODE LOCALLY ON THE JUPYTER SERVER


%%local

# USE THE JUPYTER AUTO-PLOTTING FEATURE TO CREATE INTERACTIVE FIGURES.


# CLICK THE TYPE OF PLOT TO GENERATE (LINE, AREA, BAR, ETC.)
sqlResults

Tras ejecutar el código, el kernel de Spark visualiza automáticamente el resultado de las


consultas SQL (HiveQL). Puede elegir entre varios tipos de visualizaciones:

Tabla
Gráfico circular
Línea
Área
Barras

Este es el código para trazar los datos:

Scala

# RUN THE CODE LOCALLY ON THE JUPYTER SERVER AND IMPORT LIBRARIES
%%local
import matplotlib.pyplot as plt
%matplotlib inline
# PLOT TIP BY PAYMENT TYPE AND PASSENGER COUNT
ax1 = sqlResults[['tip_amount']].plot(kind='hist', bins=25,
facecolor='lightblue')
ax1.set_title('Tip amount distribution')
ax1.set_xlabel('Tip Amount ($)')
ax1.set_ylabel('Counts')
plt.suptitle('')
plt.show()

# PLOT TIP BY PASSENGER COUNT


ax2 = sqlResults.boxplot(column=['tip_amount'], by=['passenger_count'])
ax2.set_title('Tip amount by Passenger count')
ax2.set_xlabel('Passenger count')
ax2.set_ylabel('Tip Amount ($)')
plt.suptitle('')
plt.show()

# PLOT TIP AMOUNT BY FARE AMOUNT; SCALE POINTS BY PASSENGER COUNT


ax = sqlResults.plot(kind='scatter', x= 'fare_amount', y = 'tip_amount',
c='blue', alpha = 0.10, s=5*(sqlResults.passenger_count))
ax.set_title('Tip amount by Fare amount')
ax.set_xlabel('Fare Amount ($)')
ax.set_ylabel('Tip Amount ($)')
plt.axis([-2, 80, -2, 20])
plt.show()

Salida:
Creación y transformación de características, y
preparación de datos para su entrada en
funciones de modelado
Para utilizar las funciones de modelado de árbol en SparkML y MLlib, el destino y las
características se deben preparar mediante diferentes técnicas, como discretización,
indexación, codificación "one-hot" y vectorización. Estos son los procedimientos que
seguir en esta sección:

1. Creación de una nueva característica mediante la discretización de horas en ciclos


de tráfico.
2. Aplicación de indexación y codificación "one-hot" a características categóricas.
3. Muestreo y división de conjuntos de datos en fracciones de entrenamiento y
prueba.
4. Especificación de variables de entrenamiento y características, y creación de
tramas de datos o datos distribuidos resistentes (RDD) de punto con etiqueta de
entrada para entrenamientos y pruebas mediante indexación o codificación "one-
hot".
5. Categorización y vectorización automáticas de características y destinos con el
objetivo de utilizarlas como entradas para los modelos de aprendizaje automático.

Creación de una nueva característica mediante la


discretización de horas en cubos de tiempo de tráfico
Este código muestra cómo crear una nueva característica mediante la discretización de
horas en ciclos de tráfico y cómo almacenar en caché la trama de datos resultante en
memoria. Cuando se usan repetidamente conjuntos de datos distribuidos resistentes
(RDD) y tramas de datos, el almacenamiento en caché mejora los tiempos de ejecución.
Por lo tanto, almacenaremos en caché los RDD y las tramas de datos en varias fases en
los procedimientos siguientes.

Scala

# CREATE FOUR BUCKETS FOR TRAFFIC TIMES


val sqlStatement = """
SELECT *,
CASE
WHEN (pickup_hour <= 6 OR pickup_hour >= 20) THEN "Night"
WHEN (pickup_hour >= 7 AND pickup_hour <= 10) THEN "AMRush"
WHEN (pickup_hour >= 11 AND pickup_hour <= 15) THEN "Afternoon"
WHEN (pickup_hour >= 16 AND pickup_hour <= 19) THEN "PMRush"
END as TrafficTimeBins
FROM taxi_train
"""
val taxi_df_train_with_newFeatures = sqlContext.sql(sqlStatement)

# CACHE THE DATA FRAME IN MEMORY AND MATERIALIZE THE DATA FRAME IN MEMORY
taxi_df_train_with_newFeatures.cache()
taxi_df_train_with_newFeatures.count()

Indexación y codificación "one-hot" de características


categóricas
Las funciones de modelado y predicción de MLlib requieren características con datos de
entrada categóricos indexados o codificados antes de usarlos. Esta sección muestra
cómo indexar o codificar las características categóricas para su entrada en las funciones
de modelado.

Dependiendo del modelo, deberá indexarlo o codificarlo de maneras diferentes. Por


ejemplo, los modelos de regresión logística y lineal requieren una codificación "one-
hot". Asimismo, una función con tres categorías puede ampliarse en tres columnas de
característica. Cada columna contiene 0 o 1 según la categoría de una observación.
MLlib proporciona la función OneHotEncoder para realizar la codificación "one-hot".
Este codificador asigna una columna de índices de etiqueta a una columna de vectores
binarios, con un solo valor uno como máximo. Esta codificación permite aplicar
algoritmos que esperan características con valores numéricos, como la regresión
logística, a características categóricas.

Aquí solo transformamos cuatro variables para mostrar los ejemplos, que son cadenas
de caracteres. También se pueden indexar otras variables como variables categóricas
(por ejemplo, el día de la semana) que se representan mediante valores numéricos.

Para la indexación usamos StringIndexer() , y para la codificación "one-hot", funciones


OneHotEncoder() de MLlib. Este es el código para indexar y codificar características

categóricas:

Scala

# CREATE INDEXES AND ONE-HOT ENCODED VECTORS FOR SEVERAL CATEGORICAL


FEATURES

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# INDEX AND ENCODE VENDOR_ID


val stringIndexer = new
StringIndexer().setInputCol("vendor_id").setOutputCol("vendorIndex").fit(tax
i_df_train_with_newFeatures)
val indexed = stringIndexer.transform(taxi_df_train_with_newFeatures)
val encoder = new
OneHotEncoder().setInputCol("vendorIndex").setOutputCol("vendorVec")
val encoded1 = encoder.transform(indexed)

# INDEX AND ENCODE RATE_CODE


val stringIndexer = new
StringIndexer().setInputCol("rate_code").setOutputCol("rateIndex").fit(encod
ed1)
val indexed = stringIndexer.transform(encoded1)
val encoder = new
OneHotEncoder().setInputCol("rateIndex").setOutputCol("rateVec")
val encoded2 = encoder.transform(indexed)

# INDEX AND ENCODE PAYMENT_TYPE


val stringIndexer = new
StringIndexer().setInputCol("payment_type").setOutputCol("paymentIndex").fit
(encoded2)
val indexed = stringIndexer.transform(encoded2)
val encoder = new
OneHotEncoder().setInputCol("paymentIndex").setOutputCol("paymentVec")
val encoded3 = encoder.transform(indexed)
# INDEX AND TRAFFIC TIME BINS
val stringIndexer = new
StringIndexer().setInputCol("TrafficTimeBins").setOutputCol("TrafficTimeBins
Index").fit(encoded3)
val indexed = stringIndexer.transform(encoded3)
val encoder = new
OneHotEncoder().setInputCol("TrafficTimeBinsIndex").setOutputCol("TrafficTim
eBinsVec")
val encodedFinal = encoder.transform(indexed)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

Salida:

Tiempo de ejecución de la celda: 4 segundos.

Muestreo y división de conjuntos de datos en fracciones


de entrenamiento y prueba
Este código crea una muestra aleatoria de los datos (en este ejemplo, el 25 %). Aunque
no es necesario para este ejemplo debido al tamaño del conjunto de datos, el artículo
describe cómo realizar la muestra para que sepa cómo hacerlo cuando lo necesite.
Cuando las muestras son grandes, esto puede ahorrar mucho tiempo al entrenar
modelos. Después, se divide la muestra en una parte de entrenamiento (en este
ejemplo, el 75 %) y una parte de pruebas (25 %) para el modelado de clasificación y
regresión.

Se agrega un número aleatorio (entre 0 y 1) a cada fila (en una columna llamada "rand")
que puede utilizarse para seleccionar subconjuntos de validación cruzada durante el
entrenamiento.

Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# SPECIFY SAMPLING AND SPLITTING FRACTIONS


val samplingFraction = 0.25;
val trainingFraction = 0.75;
val testingFraction = (1-trainingFraction);
val seed = 1234;
val encodedFinalSampledTmp = encodedFinal.sample(withReplacement = false,
fraction = samplingFraction, seed = seed)
val sampledDFcount = encodedFinalSampledTmp.count().toInt

val generateRandomDouble = udf(() => {


scala.util.Random.nextDouble
})

# ADD A RANDOM NUMBER FOR CROSS-VALIDATION


val encodedFinalSampled = encodedFinalSampledTmp.withColumn("rand",
generateRandomDouble());

# SPLIT THE SAMPLED DATA FRAME INTO TRAIN AND TEST, WITH A RANDOM COLUMN
ADDED FOR DOING CROSS-VALIDATION (SHOWN LATER)
# INCLUDE A RANDOM COLUMN FOR CREATING CROSS-VALIDATION FOLDS
val splits = encodedFinalSampled.randomSplit(Array(trainingFraction,
testingFraction), seed = seed)
val trainData = splits(0)
val testData = splits(1)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

Salida:

Tiempo de ejecución de la celda: 2 segundos.

Especificación de variables de entrenamiento y


características, y creación de tramas de datos o RDD de
punto con etiqueta de entrada para entrenamientos y
pruebas mediante indexación o codificación "one-hot"
Esta sección contiene código que muestra cómo indexar datos de texto categóricos
como un tipo de datos de punto con etiqueta, y codificarlos para poder usarlos para
entrenar y probar la regresión logística de MLlib y otros modelos de clasificación. Los
objetos de punto con etiqueta son conjuntos de datos distribuidos resistentes (RDD)
con el formato de datos de entrada necesario para la mayoría de los algoritmos de
aprendizaje automático de MLlib. Un punto con etiqueta es un vector local, denso o
disperso, asociado con una etiqueta o respuesta.

En este código, puede especificar la variable de destino (dependiente) y las


características que se va a usar para entrenar modelos. Después, cree tramas de datos o
RDD de punto con etiqueta de entrada para entrenamientos y pruebas mediante
indexación o codificación "one-hot".
Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# MAP NAMES OF FEATURES AND TARGETS FOR CLASSIFICATION AND REGRESSION


PROBLEMS
val featuresIndOneHot = List("paymentVec", "vendorVec", "rateVec",
"TrafficTimeBinsVec", "pickup_hour", "weekday", "passenger_count",
"trip_time_in_secs", "trip_distance",
"fare_amount").map(encodedFinalSampled.columns.indexOf(_))
val featuresIndIndex = List("paymentIndex", "vendorIndex", "rateIndex",
"TrafficTimeBinsIndex", "pickup_hour", "weekday", "passenger_count",
"trip_time_in_secs", "trip_distance",
"fare_amount").map(encodedFinalSampled.columns.indexOf(_))

# SPECIFY THE TARGET FOR CLASSIFICATION ('tipped') AND REGRESSION


('tip_amount') PROBLEMS
val targetIndBinary =
List("tipped").map(encodedFinalSampled.columns.indexOf(_))
val targetIndRegression =
List("tip_amount").map(encodedFinalSampled.columns.indexOf(_))

# CREATE INDEXED LABELED POINT RDD OBJECTS


val indexedTRAINbinary = trainData.rdd.map(r =>
LabeledPoint(r.getDouble(targetIndBinary(0).toInt),
Vectors.dense(featuresIndIndex.map(r.getDouble(_)).toArray)))
val indexedTESTbinary = testData.rdd.map(r =>
LabeledPoint(r.getDouble(targetIndBinary(0).toInt),
Vectors.dense(featuresIndIndex.map(r.getDouble(_)).toArray)))
val indexedTRAINreg = trainData.rdd.map(r =>
LabeledPoint(r.getDouble(targetIndRegression(0).toInt),
Vectors.dense(featuresIndIndex.map(r.getDouble(_)).toArray)))
val indexedTESTreg = testData.rdd.map(r =>
LabeledPoint(r.getDouble(targetIndRegression(0).toInt),
Vectors.dense(featuresIndIndex.map(r.getDouble(_)).toArray)))

# CREATE INDEXED DATA FRAMES THAT YOU CAN USE TO TRAIN BY USING SPARK ML
FUNCTIONS
val indexedTRAINbinaryDF = indexedTRAINbinary.toDF()
val indexedTESTbinaryDF = indexedTESTbinary.toDF()
val indexedTRAINregDF = indexedTRAINreg.toDF()
val indexedTESTregDF = indexedTESTreg.toDF()

# CREATE ONE-HOT ENCODED (VECTORIZED) DATA FRAMES THAT YOU CAN USE TO TRAIN
BY USING SPARK ML FUNCTIONS
val assemblerOneHot = new VectorAssembler().setInputCols(Array("paymentVec",
"vendorVec", "rateVec", "TrafficTimeBinsVec", "pickup_hour", "weekday",
"passenger_count", "trip_time_in_secs", "trip_distance",
"fare_amount")).setOutputCol("features")
val OneHotTRAIN = assemblerOneHot.transform(trainData)
val OneHotTEST = assemblerOneHot.transform(testData)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

Salida:

Tiempo de ejecución de la celda: 4 segundos.

Categorización y vectorización automáticas de


características y destinos con el objetivo de utilizarlas
como entradas para los modelos de aprendizaje
automático
Utilice SparkML para categorizar correctamente las características y el destino para las
funciones de modelado de árbol. El código realiza dos tareas:

Crea un destino binario para la clasificación mediante la asignación de un valor de


0 o 1 a cada punto de datos entre 0 y 1 con un valor de umbral de 0,5.
Categoriza automáticamente las características. Si el número de valores numéricos
distintos de cualquiera de las características es inferior a 32, se categoriza la
característica.

Este es el código para estas dos tareas.

Scala

# CATEGORIZE FEATURES AND BINARIZE THE TARGET FOR THE BINARY CLASSIFICATION
PROBLEM

# TRAIN DATA
val indexer = new
VectorIndexer().setInputCol("features").setOutputCol("featuresCat").setMaxCa
tegories(32)
val indexerModel = indexer.fit(indexedTRAINbinaryDF)
val indexedTrainwithCatFeat = indexerModel.transform(indexedTRAINbinaryDF)
val binarizer: Binarizer = new
Binarizer().setInputCol("label").setOutputCol("labelBin").setThreshold(0.5)
val indexedTRAINwithCatFeatBinTarget =
binarizer.transform(indexedTrainwithCatFeat)

# TEST DATA
val indexerModel = indexer.fit(indexedTESTbinaryDF)
val indexedTrainwithCatFeat = indexerModel.transform(indexedTESTbinaryDF)
val binarizer: Binarizer = new
Binarizer().setInputCol("label").setOutputCol("labelBin").setThreshold(0.5)
val indexedTESTwithCatFeatBinTarget =
binarizer.transform(indexedTrainwithCatFeat)

# CATEGORIZE FEATURES FOR THE REGRESSION PROBLEM


# CREATE PROPERLY INDEXED AND CATEGORIZED DATA FRAMES FOR TREE-BASED MODELS

# TRAIN DATA
val indexer = new
VectorIndexer().setInputCol("features").setOutputCol("featuresCat").setMaxCa
tegories(32)
val indexerModel = indexer.fit(indexedTRAINregDF)
val indexedTRAINwithCatFeat = indexerModel.transform(indexedTRAINregDF)

# TEST DATA
val indexerModel = indexer.fit(indexedTESTbinaryDF)
val indexedTESTwithCatFeat = indexerModel.transform(indexedTESTregDF)

Clasificación binaria: predicción de si se debe


dar propina
En esta sección, crearemos tres tipos de modelos de clasificación binaria para predecir si
se debe pagar propina:

Un modelo de regresión logística con la función LogisticRegression() del


aprendizaje automático de Spark
Un modelo de clasificación de bosque aleatorio con la función
RandomForestClassifier() del aprendizaje automático de Spark

Un modelo de clasificación de árboles impulsados por gradientes con la función


GradientBoostedTrees() de MLlib

Crear un modelo de regresión logística


Ahora, cree un modelo de regresión logística utilizando la función LogisticRegression()
del aprendizaje automático de Spark. El código de creación del modelo se genera en
varios pasos:

1. Entrenamiento de datos del modelo con un conjunto de parámetros.


2. Evaluación del modelo en un conjunto de datos de prueba con métricas.
3. Guardado del modelo en Almacenamiento de blobs para utilizarse en el futuro.
4. Puntuación del modelo con los datos de prueba.
5. Trazado de los resultados con curvas de característica operativa del receptor
(ROC).

Este es el código para estos procedimientos:


Scala

# CREATE A LOGISTIC REGRESSION MODEL


val lr = new
LogisticRegression().setLabelCol("tipped").setFeaturesCol("features").setMax
Iter(10).setRegParam(0.3).setElasticNetParam(0.8)
val lrModel = lr.fit(OneHotTRAIN)

# PREDICT ON THE TEST DATA SET


val predictions = lrModel.transform(OneHotTEST)

# SELECT `BinaryClassificationEvaluator()` TO COMPUTE THE TEST ERROR


val evaluator = new
BinaryClassificationEvaluator().setLabelCol("tipped").setRawPredictionCol("p
robability").setMetricName("areaUnderROC")
val ROC = evaluator.evaluate(predictions)
println("ROC on test data = " + ROC)

# SAVE THE MODEL


val datestamp = Calendar.getInstance().getTime().toString.replaceAll(" ",
".").replaceAll(":", "_");
val modelName = "LogisticRegression__"
val filename = modelDir.concat(modelName).concat(datestamp)
lrModel.save(filename);

Cargue, puntúe y guarde los resultados.

Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# LOAD THE SAVED MODEL AND SCORE THE TEST DATA SET
val savedModel =
org.apache.spark.ml.classification.LogisticRegressionModel.load(filename)
println(s"Coefficients: ${savedModel.coefficients} Intercept:
${savedModel.intercept}")

# SCORE THE MODEL ON THE TEST DATA


val predictions =
savedModel.transform(OneHotTEST).select("tipped","probability","rawPredictio
n")
predictions.registerTempTable("testResults")

# SELECT `BinaryClassificationEvaluator()` TO COMPUTE THE TEST ERROR


val evaluator = new
BinaryClassificationEvaluator().setLabelCol("tipped").setRawPredictionCol("p
robability").setMetricName("areaUnderROC")
val ROC = evaluator.evaluate(predictions)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

# PRINT THE ROC RESULTS


println("ROC on test data = " + ROC)

Salida:

ROC de los datos de prueba = 0,9827381497557599

Use Python en las tramas de datos locales de Pandas para trazar la curva de ROC.

Scala

# QUERY THE RESULTS


%%sql -q -o sqlResults
SELECT tipped, probability from testResults

# RUN THE CODE LOCALLY ON THE JUPYTER SERVER AND IMPORT LIBRARIES
%%local
%matplotlib inline
from sklearn.metrics import roc_curve,auc

sqlResults['probFloat'] = sqlResults.apply(lambda row:


row['probability'].values()[0][1], axis=1)
predictions_pddf = sqlResults[["tipped","probFloat"]]

# PREDICT THE ROC CURVE


# predictions_pddf = sqlResults.rename(columns={'_1': 'probability',
'tipped': 'label'})
prob = predictions_pddf["probFloat"]
fpr, tpr, thresholds = roc_curve(predictions_pddf['tipped'], prob,
pos_label=1);
roc_auc = auc(fpr, tpr)

# PLOT THE ROC CURVE


plt.figure(figsize=(5,5))
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend(loc="lower right")
plt.show()

Salida:
Creación de un modelo de clasificación de bosque
aleatorio
Ahora, cree un modelo de clasificación de bosque aleatorio mediante la función
RandomForestClassifier() del aprendizaje automático de Spark y evalúe el modelo con

los datos de prueba.

Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# CREATE THE RANDOM FOREST CLASSIFIER MODEL


val rf = new
RandomForestClassifier().setLabelCol("labelBin").setFeaturesCol("featuresCat
").setNumTrees(10).setSeed(1234)

# FIT THE MODEL


val rfModel = rf.fit(indexedTRAINwithCatFeatBinTarget)
val predictions = rfModel.transform(indexedTESTwithCatFeatBinTarget)

# EVALUATE THE MODEL


val evaluator = new
MulticlassClassificationEvaluator().setLabelCol("label").setPredictionCol("p
rediction").setMetricName("f1")
val Test_f1Score = evaluator.evaluate(predictions)
println("F1 score on test data: " + Test_f1Score);

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

# CALCULATE BINARY CLASSIFICATION EVALUATION METRICS


val evaluator = new
BinaryClassificationEvaluator().setLabelCol("label").setRawPredictionCol("pr
obability").setMetricName("areaUnderROC")
val ROC = evaluator.evaluate(predictions)
println("ROC on test data = " + ROC)

Salida:

ROC de los datos de prueba = 0,9847103571552683

Creación de un modelo de clasificación GBT


Ahora, cree un modelo de clasificación GBT mediante la función GradientBoostedTrees()
de MLlib y evalúe el modelo con los datos de prueba.

Scala

# TRAIN A GBT CLASSIFICATION MODEL BY USING MLLIB AND A LABELED POINT

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# DEFINE THE GBT CLASSIFICATION MODEL


val boostingStrategy = BoostingStrategy.defaultParams("Classification")
boostingStrategy.numIterations = 20
boostingStrategy.treeStrategy.numClasses = 2
boostingStrategy.treeStrategy.maxDepth = 5
boostingStrategy.treeStrategy.categoricalFeaturesInfo = Map[Int, Int]((0,2),
(1,2),(2,6),(3,4))

# TRAIN THE MODEL


val gbtModel = GradientBoostedTrees.train(indexedTRAINbinary,
boostingStrategy)

# SAVE THE MODEL IN BLOB STORAGE


val datestamp = Calendar.getInstance().getTime().toString.replaceAll(" ",
".").replaceAll(":", "_");
val modelName = "GBT_Classification__"
val filename = modelDir.concat(modelName).concat(datestamp)
gbtModel.save(sc, filename);

# EVALUATE THE MODEL ON TEST INSTANCES AND THE COMPUTE TEST ERROR
val labelAndPreds = indexedTESTbinary.map { point =>
val prediction = gbtModel.predict(point.features)
(point.label, prediction)
}
val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble /
indexedTRAINbinary.count()
//println("Learned classification GBT model:\n" + gbtModel.toDebugString)
println("Test Error = " + testErr)

# USE BINARY AND MULTICLASS METRICS TO EVALUATE THE MODEL ON THE TEST DATA
val metrics = new MulticlassMetrics(labelAndPreds)
println(s"Precision: ${metrics.precision}")
println(s"Recall: ${metrics.recall}")
println(s"F1 Score: ${metrics.fMeasure}")

val metrics = new BinaryClassificationMetrics(labelAndPreds)


println(s"Area under PR curve: ${metrics.areaUnderPR}")
println(s"Area under ROC curve: ${metrics.areaUnderROC}")

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

# PRINT THE ROC METRIC


println(s"Area under ROC curve: ${metrics.areaUnderROC}")

Salida:

Área bajo la curva de ROC = 0,9846895479241554

Modelo de regresión: predicción del importe


de la propina
En esta sección, se crean dos tipos de modelos de regresión para predecir el importe de
la propina:

Un modelo de regresión lineal regularizada con la función LinearRegression()


del aprendizaje automático de Spark. Debe guardar el modelo y evaluarlo con
datos de prueba.
Un modelo de regresión de árboles impulsados por gradientes con la función
GBTRegressor() del aprendizaje automático de Spark.

Creación de un modelo d regresión lineal regularizada


Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# CREATE A REGULARIZED LINEAR REGRESSION MODEL BY USING THE SPARK ML


FUNCTION AND DATA FRAMES
val lr = new
LinearRegression().setLabelCol("tip_amount").setFeaturesCol("features").setM
axIter(10).setRegParam(0.3).setElasticNetParam(0.8)

# FIT THE MODEL BY USING DATA FRAMES


val lrModel = lr.fit(OneHotTRAIN)
println(s"Coefficients: ${lrModel.coefficients} Intercept:
${lrModel.intercept}")

# SUMMARIZE THE MODEL OVER THE TRAINING SET AND PRINT METRICS
val trainingSummary = lrModel.summary
println(s"numIterations: ${trainingSummary.totalIterations}")
println(s"objectiveHistory: ${trainingSummary.objectiveHistory.toList}")
trainingSummary.residuals.show()
println(s"RMSE: ${trainingSummary.rootMeanSquaredError}")
println(s"r2: ${trainingSummary.r2}")

# SAVE THE MODEL IN AZURE BLOB STORAGE


val datestamp = Calendar.getInstance().getTime().toString.replaceAll(" ",
".").replaceAll(":", "_");
val modelName = "LinearRegression__"
val filename = modelDir.concat(modelName).concat(datestamp)
lrModel.save(filename);

# PRINT THE COEFFICIENTS


println(s"Coefficients: ${lrModel.coefficients} Intercept:
${lrModel.intercept}")

# SCORE THE MODEL ON TEST DATA


val predictions = lrModel.transform(OneHotTEST)

# EVALUATE THE MODEL ON TEST DATA


val evaluator = new
RegressionEvaluator().setLabelCol("tip_amount").setPredictionCol("prediction
").setMetricName("r2")
val r2 = evaluator.evaluate(predictions)
println("R-sqr on test data = " + r2)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

Salida:

Tiempo de ejecución de la celda: 13 segundos.

Scala

# LOAD A SAVED LINEAR REGRESSION MODEL FROM BLOB STORAGE AND SCORE A TEST
DATA SET
# RECORD THE START TIME
val starttime = Calendar.getInstance().getTime()

# LOAD A SAVED LINEAR REGRESSION MODEL FROM AZURE BLOB STORAGE


val savedModel =
org.apache.spark.ml.regression.LinearRegressionModel.load(filename)
println(s"Coefficients: ${savedModel.coefficients} Intercept:
${savedModel.intercept}")

# SCORE THE MODEL ON TEST DATA


val predictions =
savedModel.transform(OneHotTEST).select("tip_amount","prediction")
predictions.registerTempTable("testResults")

# EVALUATE THE MODEL ON TEST DATA


val evaluator = new
RegressionEvaluator().setLabelCol("tip_amount").setPredictionCol("prediction
").setMetricName("r2")
val r2 = evaluator.evaluate(predictions)
println("R-sqr on test data = " + r2)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

# PRINT THE RESULTS


println("R-sqr on test data = " + r2)

Salida:

R-sqr de los datos de prueba = 0,5960320470835743

A continuación, consulta los resultados de pruebas como una trama de datos y usa
AutoVizWidget y matplotlib para visualizarlos.

SQL

# RUN A SQL QUERY


%%sql -q -o sqlResults
select * from testResults

# RUN THE CODE LOCALLY ON THE JUPYTER SERVER


%%local

# USE THE JUPYTER AUTO-PLOTTING FEATURE TO CREATE INTERACTIVE FIGURES


# CLICK THE TYPE OF PLOT TO GENERATE (LINE, AREA, BAR, AND SO ON)
sqlResults
Este código crea una trama de datos local a partir de los resultados de la consulta y
traza los datos. La instrucción mágica %%local crea una trama de datos local,
sqlResults , que puede usarse para trazar la información con matplotlib.

7 Nota

Esta instrucción mágica de Spark se emplea varias veces en este artículo. Si la


cantidad de datos es grande, realice un muestreo para crear una trama de datos
que pueda caber en la memoria local.

Creación de trazados con matplotlib de Python.

Scala

# RUN THE CODE LOCALLY ON THE JUPYTER SERVER AND IMPORT LIBRARIES
%%local
sqlResults
%matplotlib inline
import numpy as np

# PLOT THE RESULTS


ax = sqlResults.plot(kind='scatter', figsize = (6,6), x='tip_amount',
y='prediction', color='blue', alpha = 0.25, label='Actual vs. predicted');
fit = np.polyfit(sqlResults['tip_amount'], sqlResults['prediction'], deg=1)
ax.set_title('Actual vs. Predicted Tip Amounts ($)')
ax.set_xlabel("Actual")
ax.set_ylabel("Predicted")
#ax.plot(sqlResults['tip_amount'], fit[0] * sqlResults['prediction'] +
fit[1], color='magenta')
plt.axis([-1, 15, -1, 8])
plt.show(ax)

Salida:
Creación de un modelo de regresión GBT
Cree un modelo de clasificación de bosque aleatorio mediante la función
GBTRegressor() del aprendizaje automático de Spark y evalúe el modelo con los datos

de prueba.

Los árboles de potenciación del gradiente (GBT) son conjuntos de árboles de decisión.
Los GBT entrenan árboles de decisión de forma iterativa para minimizar una función de
pérdida y se pueden usar para la clasificación y regresión. Permiten controlar
características categóricas, no requieren ajustar la escala de las características y pueden
capturar errores de alineación e interacciones de las características. También se pueden
usar en una configuración de clasificación multiclase.

Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# TRAIN A GBT REGRESSION MODEL


val gbt = new
GBTRegressor().setLabelCol("label").setFeaturesCol("featuresCat").setMaxIter
(10)
val gbtModel = gbt.fit(indexedTRAINwithCatFeat)

# MAKE PREDICTIONS
val predictions = gbtModel.transform(indexedTESTwithCatFeat)

# COMPUTE TEST SET R2


val evaluator = new
RegressionEvaluator().setLabelCol("label").setPredictionCol("prediction").se
tMetricName("r2")
val Test_R2 = evaluator.evaluate(predictions)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

# PRINT THE RESULTS


println("Test R-sqr is: " + Test_R2);

Salida:

R-sqr de prueba = 0,7655383534596654

Utilidades avanzadas de modelado para la


optimización
En esta sección, utilizará herramientas de aprendizaje automático que los
desarrolladores usan con frecuencia para la optimización de modelos. En concreto,
pueden optimizarse los modelos de aprendizaje automático de tres maneras distintas
mediante barrido de parámetros y validación cruzada:

Dividir los datos en conjuntos de entrenamiento y validación, y optimizar el


modelo mediante barrido de hiperparámetros en un conjunto de entrenamiento y
mediante evaluación en un conjunto de validación (regresión lineal)
Optimizar el modelo mediante validación cruzada y barrido de hiperparámetros
con la función CrossValidator de SparkML (clasificación binaria)
Optimizar modelo usando código personalizado de validación cruzada y barrido
de parámetros para usar cualquier función de aprendizaje automático y conjunto
de parámetros (regresión lineal)

validación cruzada es una técnica que evalúa la calidad de la generalización que


realizará un modelo entrenado con un conjunto conocido de datos para predecir las
características de conjuntos de datos con los que no se haya entrenado. La idea general
tras esta técnica es que se entrena un modelo con un conjunto conocido de datos y
después se prueba la precisión de sus predicciones con un conjunto de datos
independiente. En este caso, se usa una implementación habitual en la que se divide un
conjunto de datos en kiteraciones y después se entrena el modelo como round-robin en
todas las iteraciones menos una.
optimización de los hiperparámetros es el problema de elegir un conjunto de
hiperparámetros para un algoritmo de aprendizaje, normalmente con el fin de optimizar
una medida del rendimiento del algoritmo con un conjunto de datos independiente. Un
hiperparámetro es un valor que debe especificar fuera del procedimiento de
entrenamiento del modelo. Las suposiciones que se hagan sobre estos hiperparámetros
pueden afectar a la flexibilidad y la precisión de los modelos. Los árboles de decisión
tienen hiperparámetros, como la profundidad que desee y el número de hojas del árbol.
Debe establecer un término de penalización para las clasificaciones incorrectas en las
máquinas de vectores de soporte (SVM).

Una forma habitual de realizar la optimización de hiperparámetros es una búsqueda de


cuadrícula, también denominada barrido de parámetros. En una búsqueda de
cuadrícula, se lleva a cabo una búsqueda exhaustiva en los valores de un subconjunto
concreto del espacio de hiperparámetros para un algoritmo de aprendizaje. La
validación cruzada puede proporcionar una métrica de rendimiento para ordenar los
resultados óptimos generados por el algoritmo de búsqueda de cuadrícula. Si utiliza el
barrido de hiperparámetros de validación cruzada, puede limitar problemas, como el
sobreajuste de un modelo de datos de entrenamiento. De este modo, el modelo sigue
aplicándose a un conjunto general de datos del que se extrajeron los datos de
entrenamiento.

Optimización del modelo de regresión lineal mediante


barrido de hiperparámetros
Ahora, divida los datos en conjuntos de entrenamiento y validación, optimice el modelo
mediante barrido de hiperparámetros en un conjunto de entrenamiento y evalúe en un
conjunto de validación (regresión lineal).

Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# RENAME `tip_amount` AS A LABEL


val OneHotTRAINLabeled =
OneHotTRAIN.select("tip_amount","features").withColumnRenamed(existingName="
tip_amount",newName="label")
val OneHotTESTLabeled =
OneHotTEST.select("tip_amount","features").withColumnRenamed(existingName="t
ip_amount",newName="label")
OneHotTRAINLabeled.cache()
OneHotTESTLabeled.cache()

# DEFINE THE ESTIMATOR FUNCTION: `THE LinearRegression()` FUNCTION


val lr = new
LinearRegression().setLabelCol("label").setFeaturesCol("features").setMaxIte
r(10)

# DEFINE THE PARAMETER GRID


val paramGrid = new ParamGridBuilder().addGrid(lr.regParam, Array(0.1, 0.01,
0.001)).addGrid(lr.fitIntercept).addGrid(lr.elasticNetParam, Array(0.1, 0.5,
0.9)).build()

# DEFINE THE PIPELINE WITH A TRAIN/TEST VALIDATION SPLIT (75% IN THE


TRAINING SET), AND THEN THE SPECIFY ESTIMATOR, EVALUATOR, AND PARAMETER GRID
val trainPct = 0.75
val trainValidationSplit = new
TrainValidationSplit().setEstimator(lr).setEvaluator(new
RegressionEvaluator).setEstimatorParamMaps(paramGrid).setTrainRatio(trainPct
)

# RUN THE TRAIN VALIDATION SPLIT AND CHOOSE THE BEST SET OF PARAMETERS
val model = trainValidationSplit.fit(OneHotTRAINLabeled)

# MAKE PREDICTIONS ON THE TEST DATA BY USING THE MODEL WITH THE COMBINATION
OF PARAMETERS THAT PERFORMS THE BEST
val testResults = model.transform(OneHotTESTLabeled).select("label",
"prediction")

# COMPUTE TEST SET R2


val evaluator = new
RegressionEvaluator().setLabelCol("label").setPredictionCol("prediction").se
tMetricName("r2")
val Test_R2 = evaluator.evaluate(testResults)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

println("Test R-sqr is: " + Test_R2);

Salida:

R-sqr de prueba = 0,6226484708501209

Optimización del modelo de clasificación binaria


mediante barrido de hiperparámetros y validación
cruzada
En esta sección se muestra cómo optimizar el modelo de clasificación binaria mediante
barrido de hiperparámetros y validación cruzada. Esto utiliza la función CrossValidator
del aprendizaje automático de Spark.
Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# CREATE DATA FRAMES WITH PROPERLY LABELED COLUMNS TO USE WITH THE TRAIN AND
TEST SPLIT
val indexedTRAINwithCatFeatBinTargetRF =
indexedTRAINwithCatFeatBinTarget.select("labelBin","featuresCat").withColumn
Renamed(existingName="labelBin",newName="label").withColumnRenamed(existingN
ame="featuresCat",newName="features")
val indexedTESTwithCatFeatBinTargetRF =
indexedTESTwithCatFeatBinTarget.select("labelBin","featuresCat").withColumnR
enamed(existingName="labelBin",newName="label").withColumnRenamed(existingNa
me="featuresCat",newName="features")
indexedTRAINwithCatFeatBinTargetRF.cache()
indexedTESTwithCatFeatBinTargetRF.cache()

# DEFINE THE ESTIMATOR FUNCTION


val rf = new
RandomForestClassifier().setLabelCol("label").setFeaturesCol("features").set
Impurity("gini").setSeed(1234).setFeatureSubsetStrategy("auto").setMaxBins(3
2)

# DEFINE THE PARAMETER GRID


val paramGrid = new ParamGridBuilder().addGrid(rf.maxDepth,
Array(4,8)).addGrid(rf.numTrees,
Array(5,10)).addGrid(rf.minInstancesPerNode, Array(100,300)).build()

# SPECIFY THE NUMBER OF FOLDS


val numFolds = 3

# DEFINE THE TRAIN/TEST VALIDATION SPLIT (75% IN THE TRAINING SET)


val CrossValidator = new CrossValidator().setEstimator(rf).setEvaluator(new
BinaryClassificationEvaluator).setEstimatorParamMaps(paramGrid).setNumFolds(
numFolds)

# RUN THE TRAIN VALIDATION SPLIT AND CHOOSE THE BEST SET OF PARAMETERS
val model = CrossValidator.fit(indexedTRAINwithCatFeatBinTargetRF)

# MAKE PREDICTIONS ON THE TEST DATA BY USING THE MODEL WITH THE COMBINATION
OF PARAMETERS THAT PERFORMS THE BEST
val testResults =
model.transform(indexedTESTwithCatFeatBinTargetRF).select("label",
"prediction")

# COMPUTE THE TEST F1 SCORE


val evaluator = new
MulticlassClassificationEvaluator().setLabelCol("label").setPredictionCol("p
rediction").setMetricName("f1")
val Test_f1Score = evaluator.evaluate(testResults)

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

Salida:

Tiempo de ejecución de la celda: 33 segundos.

Optimización del modelo de regresión lineal mediante


código personalizado de validación cruzada y barrido de
parámetros
A continuación, optimice el modelo usando código personalizado e identifique los
mejores parámetros del modelo mediante el criterio de mayor precisión. Después, cree
el modelo final, evalúelo con los datos de prueba y guárdelo en Almacenamiento de
blobs. Por último, cargue el modelo, puntúe los datos de prueba y evalúe su precisión.

Scala

# RECORD THE START TIME


val starttime = Calendar.getInstance().getTime()

# DEFINE THE PARAMETER GRID AND THE NUMBER OF FOLDS


val paramGrid = new ParamGridBuilder().addGrid(rf.maxDepth,
Array(5,10)).addGrid(rf.numTrees, Array(10,25,50)).build()

val nFolds = 3
val numModels = paramGrid.size
val numParamsinGrid = 2

# SPECIFY THE NUMBER OF CATEGORIES FOR CATEGORICAL VARIABLES


val categoricalFeaturesInfo = Map[Int, Int]((0,2),(1,2),(2,6),(3,4))

var maxDepth = -1
var numTrees = -1
var param = ""
var paramval = -1
var validateLB = -1.0
var validateUB = -1.0
val h = 1.0 / nFolds;
val RMSE = Array.fill(numModels)(0.0)

# CREATE K-FOLDS
val splits = MLUtils.kFold(indexedTRAINbinary, numFolds = nFolds, seed=1234)

# LOOP THROUGH K-FOLDS AND THE PARAMETER GRID TO GET AND IDENTIFY THE BEST
PARAMETER SET BY LEVEL OF ACCURACY
for (i <- 0 to (nFolds-1)) {
validateLB = i * h
validateUB = (i + 1) * h
val validationCV = trainData.filter($"rand" >= validateLB && $"rand" <
validateUB)
val trainCV = trainData.filter($"rand" < validateLB || $"rand" >=
validateUB)
val validationLabPt = validationCV.rdd.map(r =>
LabeledPoint(r.getDouble(targetIndRegression(0).toInt),
Vectors.dense(featuresIndIndex.map(r.getDouble(_)).toArray)));
val trainCVLabPt = trainCV.rdd.map(r =>
LabeledPoint(r.getDouble(targetIndRegression(0).toInt),
Vectors.dense(featuresIndIndex.map(r.getDouble(_)).toArray)));
validationLabPt.cache()
trainCVLabPt.cache()

for (nParamSets <- 0 to (numModels-1)) {


for (nParams <- 0 to (numParamsinGrid-1)) {
param =
paramGrid(nParamSets).toSeq(nParams).param.toString.split("__")(1)
paramval =
paramGrid(nParamSets).toSeq(nParams).value.toString.toInt
if (param == "maxDepth") {maxDepth = paramval}
if (param == "numTrees") {numTrees = paramval}
}
val rfModel = RandomForest.trainRegressor(trainCVLabPt,
categoricalFeaturesInfo=categoricalFeaturesInfo,
numTrees=numTrees,
maxDepth=maxDepth,

featureSubsetStrategy="auto",impurity="variance", maxBins=32)
val labelAndPreds = validationLabPt.map { point =>
val prediction =
rfModel.predict(point.features)
( prediction, point.label
)
}
val validMetrics = new RegressionMetrics(labelAndPreds)
val rmse = validMetrics.rootMeanSquaredError
RMSE(nParamSets) += rmse
}
validationLabPt.unpersist();
trainCVLabPt.unpersist();
}
val minRMSEindex = RMSE.indexOf(RMSE.min)

# GET THE BEST PARAMETERS FROM A CROSS-VALIDATION AND PARAMETER SWEEP


var best_maxDepth = -1
var best_numTrees = -1
for (nParams <- 0 to (numParamsinGrid-1)) {
param =
paramGrid(minRMSEindex).toSeq(nParams).param.toString.split("__")(1)
paramval = paramGrid(minRMSEindex).toSeq(nParams).value.toString.toInt
if (param == "maxDepth") {best_maxDepth = paramval}
if (param == "numTrees") {best_numTrees = paramval}
}
# CREATE THE BEST MODEL WITH THE BEST PARAMETERS AND A FULL TRAINING DATA
SET
val best_rfModel = RandomForest.trainRegressor(indexedTRAINreg,
categoricalFeaturesInfo=categoricalFeaturesInfo,
numTrees=best_numTrees,
maxDepth=best_maxDepth,

featureSubsetStrategy="auto",impurity="variance", maxBins=32)

# SAVE THE BEST RANDOM FOREST MODEL IN BLOB STORAGE


val datestamp = Calendar.getInstance().getTime().toString.replaceAll(" ",
".").replaceAll(":", "_");
val modelName = "BestCV_RF_Regression__"
val filename = modelDir.concat(modelName).concat(datestamp)
best_rfModel.save(sc, filename);

# PREDICT ON THE TRAINING SET WITH THE BEST MODEL AND THEN EVALUATE
val labelAndPreds = indexedTESTreg.map { point =>
val prediction =
best_rfModel.predict(point.features)
( prediction, point.label )
}

val test_rmse = new RegressionMetrics(labelAndPreds).rootMeanSquaredError


val test_rsqr = new RegressionMetrics(labelAndPreds).r2

# GET THE TIME TO RUN THE CELL


val endtime = Calendar.getInstance().getTime()
val elapsedtime = ((endtime.getTime() -
starttime.getTime())/1000).toString;
println("Time taken to run the above cell: " + elapsedtime + " seconds.");

# LOAD THE MODEL


val savedRFModel = RandomForestModel.load(sc, filename)

val labelAndPreds = indexedTESTreg.map { point =>


val prediction =
savedRFModel.predict(point.features)
( prediction, point.label )
}
# TEST THE MODEL
val test_rmse = new RegressionMetrics(labelAndPreds).rootMeanSquaredError
val test_rsqr = new RegressionMetrics(labelAndPreds).r2

Salida:

Tiempo de ejecución de la celda: 61 segundos.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Aprendizaje automático a escala
Ingeniería de características en
aprendizaje automático
Artículo • 11/07/2023

7 Nota

Este elemento está en mantenimiento. Le recomendamos que use el diseñador de


Azure Machine Learning .

) Importante

El soporte técnico de Machine Learning Studio (clásico) finalizará el 31 de agosto


de 2024. Se recomienda realizar la transición a Azure Machine Learning antes de
esa fecha.

A partir del 1 de diciembre de 2021 no se podrán crear recursos de Machine


Learning Studio (clásico). Hasta el 31 de agosto de 2024, puede seguir usando los
recursos de Machine Learning Studio (clásico) existentes.

Consulte la información acerca de traslado de proyectos de aprendizaje


automático de ML Studio (clásico) a Azure Machine Learning.
Más información acerca de Azure Machine Learning

La documentación de ML Studio (clásico) se está retirando y es posible que no se


actualice en el futuro.

En este artículo, obtendrá información sobre la ingeniería de características y su rol en la


mejora de los datos en el aprendizaje automático. Obtenga información de los ejemplos
ilustrativos extraídos de los experimentos de Azure Machine Learning Studio (clásico).

Diseño de características: El proceso de crear nuevas características a partir de


datos sin procesar para aumentar la eficacia predictiva del algoritmo de
aprendizaje. La ingeniería de características debe capturar información adicional
que no se pueda obviar fácilmente en el conjunto de características originales.
Selección de características: El proceso de seleccionar el subconjunto de claves de
las características en un intento por reducir la dimensionalidad del problema de
entrenamiento.
Normalmente, la ingeniería de características se aplica primero para generar
características adicionales y, a continuación, se realiza selección de características para
eliminar aquellas que son irrelevantes, redundantes o altamente correlacionadas.

La selección e ingeniería de características forman parte de la fase de modelado del


proceso de ciencia de datos en equipo (TDSP). Para obtener más información sobre
TDSP y el ciclo de vida de ciencia de datos, consulte ¿qué es el TDSP?

¿Qué es la ingeniería de características?


Los datos de entrenamiento se componen de una matriz formada por filas y columnas.
Cada fila de la matriz es una observación o un registro. Las columnas de cada fila son las
características que describen cada registro. Las características especificadas en el diseño
experimental deben caracterizar los patrones de los datos.

Aunque muchos de los campos de datos sin procesar se pueden usar directamente para
entrenar un modelo, a menudo es necesario crear características adicionales (de
ingeniería) para un conjunto de datos de entrenamiento mejorado.

Las características diseñadas que mejoran el entrenamiento proporcionan información


que ayuda a diferenciar de mejor manera los patrones de los datos. Pero este proceso
es, en cierto modo, un arte. Las decisiones acertadas y productivas a menudo requieren
conocimiento especializado.

Ejemplo 1: Incorporación de características


temporales para un modelo de regresión
Usemos el experimento Previsión de demanda de los alquileres de bicicletas en Azure
Machine Learning Studio (clásico) para mostrar cómo diseñar características para una
tarea de regresión. El objetivo de este experimento es predecir la demanda de los
alquileres de bicicletas en un mes/día/hora específico.

Conjunto de datos de alquiler de bicicletas


El Conjunto de datos UCI de alquiler de bicicletas se basa en datos reales de una
empresa de uso compartido de bicicletas basada en Estados Unidos. Representa el
número de los alquileres de bicicletas en una hora específica de un día para los años
2011 y 2012. Contiene 17.379 filas y 17 columnas.

El conjunto de características sin procesar contiene condiciones climáticas


(temperatura/humedad/velocidad del viento) y el tipo de día (festivo/día de semana). El
campo para la predicción es el contador, que representa las bicicletas alquiladas dentro
de una hora específica. El recuento oscila entre 1 y 977.

Crear un experimento de ingeniería de características


Con el objetivo de construir características eficaces en los datos de entrenamiento, se
crean cuatro modelos de regresión con el mismo algoritmo, pero con cuatro conjuntos
de datos de entrenamiento distintos. Los cuatro conjuntos de datos representan los
mismos datos de entrada sin procesar, pero con un número creciente del conjunto de
características. Estas características se agrupan en cuatro categorías:

1. A = características de clima + festivo + día de semana + fin de semana


correspondiente al día de la predicción
2. B = el número de bicicletas alquiladas en cada una de las 12 horas anteriores
3. C = el número de bicicletas alquiladas en cada uno de los 12 días anteriores a la
misma hora
4. D = el número de bicicletas arrendadas en cada una de las 12 semanas anteriores
a la misma hora y el mismo día

Aparte del conjunto de funciones A, que ya existe en los datos sin procesar originales,
los otros tres conjuntos de funciones se crean mediante el proceso de diseño de
funciones. El conjunto de funciones B captura la demanda de bicicletas reciente. El
conjunto de características C captura la demanda de bicicletas en una hora específica. El
conjunto de características D captura la demanda de bicicletas en una hora específica y
un día de la semana específico. Los conjuntos de datos de entrenamiento incluyen el
conjunto de características A, A+B, A+B+C y A+B+C+D, respectivamente.

Ingeniería de características con Studio (clásico)


En el experimento de Studio (clásico), estos cuatro conjuntos de datos de entrenamiento
se forman a través de cuatro ramas del conjunto de datos de entrada procesado
previamente. A excepción de la rama que se encuentra más a la izquierda, cada una de
estas ramas contiene un módulo Ejecutar script R, en el que las características derivadas
(conjuntos de características B, C y D) se construyen y anexan al conjunto de datos
importado.

En la siguiente figura se muestra el script de R que se usa para crear el conjunto de


características B en la segunda rama a la izquierda.
Results
La comparación de los resultados de rendimiento de los cuatro modelos se resume en la
siguiente tabla:

Las características A+B+C muestran los mejores resultados. La tasa de errores disminuye
cuando se incluyen conjuntos de datos adicionales en los datos de entrenamiento. Esto
verifica la presunción con respecto a que los conjuntos de características B y C
proporcionan información pertinente adicional para la tarea de regresión. Sin embargo,
agregar la característica D no parece proporcionar reducción adicional ninguna en lo
que respecta a la tasa de errores.

Ejemplo 2: Crear características para la minería


de texto
El diseño de características se aplica ampliamente en las tareas relacionadas con la
minería de texto como la clasificación de documentos y el análisis de opiniones. Dado
que las partes individuales del texto sin formato suelen servir como los datos de
entrada, es necesario el proceso de diseño de características para crear las
características que implican las frecuencias de palabras/frases.

Hash de características
Para llevar a cabo esta tarea, se aplica una técnica llamada hash de características que
permite convertir eficazmente las características arbitrarias de texto en índices. En lugar
de asociar cada característica de texto (palabras/frases) a un índice determinado, este
método aplica una función de hash a las características y el uso de sus valores de hash
como índices directamente.

En Studio (clásico), existe un módulo llamado Hash de características que crea


oportunamente las características de palabras y frases. La figura siguiente muestra un
ejemplo del uso de este módulo. El conjunto de datos de entrada contiene dos
columnas: la clasificación de libro, que va de 1 a 5, y el contenido mismo de la reseña. El
objetivo de este módulo es recuperar una gran cantidad de características nuevas que
muestran la frecuencia de repetición de las palabras/frases correspondientes dentro de
la reseña de ese libro en especial. Para usar este módulo, complete los siguientes pasos:

Primero, seleccione la columna que contiene el texto de entrada ("Col2" en este


ejemplo).
Segundo, defina el "Tamaño de bits de hash" en 8,lo que significa que se crearán
2^8=256 características. La palabra/frase en todo el texto tendrá hash en 256
índices. El parámetro "Tamaño de bits de hash" va de 1 a 31. Es menos probable
que las palabras/frases tengan hash en el mismo índice si este valor se define para
que sea un número mayor.
Tercero, defina el parámetro "N-gramas" en 2. Con este valor se obtiene la
frecuencia de repetición de unigramas (una característica para cada palabra única)
y bigramas (una características para cada par de palabras adyacentes) a partir del
texto de entrada. El parámetro "N-gramas" va de 0 a 10, lo que indica el número
máximo de palabras secuenciales que se incluirán en una característica.

En la figura siguiente se muestra cómo se ven estas nuevas características.


Conclusión
Las funciones diseñadas y seleccionadas aumentan la eficiencia del proceso de
entrenamiento, el que intenta extraer la información clave contenida en los datos.
También mejoran la eficacia de estos modelos para clasificar los datos de entrada de
manera precisa y para predecir resultados de interés de manera más sólida.

El diseño y la selección de características también se pueden combinar para que sea


posible hacer un mejor seguimiento computacional del aprendizaje. Para ello, mejora y
luego reduce el número de características que se necesitan para calibrar o entrenar un
modelo. Matemáticamente, las características seleccionadas son un conjunto mínimo de
variables independientes que explican los patrones de los datos y predicen los
resultados correctamente.

No siempre es necesario realizar el diseño o la selección de funciones. Depende de los


datos, del algoritmo seleccionado y del objetivo del experimento.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Para crear características para los datos en entornos específicos, consulte los artículos
siguientes:

Creación de características para los datos en SQL Server

Recursos relacionados
Selección de características en el proceso de ciencia de datos en equipos
Fase de modelado del ciclo de vida del proceso de ciencia de datos en equipos
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Implementación de modelos de ML en
producción para desempeñar un papel
activo en la toma de decisiones
empresariales
Artículo • 13/09/2023

La implementación de producción permite que un modelo desempeñe un rol activo en


una empresa. Las predicciones a partir de un modelo implementado pueden usarse en
las decisiones empresariales.

Plataformas de producción
Hay varios enfoques y plataformas para poner los modelos en producción. Estas son
algunas opciones:

Implementación de modelos con Azure Machine Learning


Implementación de un modelo en SQL-Server

7 Nota

Antes de la implementación, uno debe asegurarse de que la latencia de la


puntuación de los modelos es lo suficientemente baja para usarse en producción.

7 Nota

Para la implementación desde Azure Machine Learning, consulte Implementación


de modelos de aprendizaje automático en Azure.

Pruebas A/B
Si hay varios modelos en producción, se pueden usar pruebas A/B para comparar su
rendimiento.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Mark Tabladillo | Arquitecto sénior de soluciones en la nube

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es el Proceso de ciencia de datos en equipo (TDSP)?
Comparación de productos y tecnologías de aprendizaje automático de Microsoft
Compilación e implementación de un
modelo con Azure Synapse Analytics
Artículo • 30/05/2023

En este tutorial le guiaremos a través de la creación e implementación de un modelo de


aprendizaje automático mediante Azure Synapse Analytics para un conjunto de datos
disponible públicamente: el conjunto de datos NYC Taxi Trips . El modelo de clasificación
binaria construido predice si se dará propina por la carrera o no. Los modelos incluyen la
clasificación multiclase (si hay una propina o si no la hay) y la regresión (la distribución de
los importes de propinas pagadas).

El procedimiento sigue el flujo de trabajo del proceso de ciencia de datos en equipos


(TDSP) . Se muestra cómo configurar un entorno de ciencia de datos, cómo cargar los datos
en Azure Synapse Analytics y cómo usar Azure Synapse Analytics o un cuaderno de Jupyter
Notebook para explorar las características de datos y de diseño para modelar. Luego se
muestra cómo compilar e implementar un modelo con Azure Machine Learning.

El conjunto de datos NYC Taxi Trips


El conjunto de datos NYC Taxi Trip consta de aproximadamente 20 GB de archivos CSV
comprimidos (aproximadamente, 48 GB sin comprimir), que registran más de 173 millones
de carreras individuales y las tarifas pagadas por cada carrera. Cada registro de carrera
incluye la hora y la ubicación de recogida y llegada, el número de licencia del taxista
anonimizado y el número de placa (id. único del taxi). Los datos cubren todos los viajes del
año 2013 y se proporcionan en los dos conjuntos de datos siguientes para cada mes:

1. El archivo trip_data.csv contiene información detallada de las carreras, como el


número de pasajeros, los puntos de recogida y destino, la duración de las carreras y la
longitud del recorrido. Estos son algunos registros de ejemplo:

medallion,hack_license,vendor_id,rate_code,store_and_fwd_flag,pickup_datetime,dropoff_
datetime,passenger_count,trip_time_in_secs,trip_distance,pickup_longitude,pickup_latit

ude,dropoff_longitude,dropoff_latitude

89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,1,N,2013-01-01
15:11:48,2013-01-01 15:18:10,4,382,1.00,-73.978165,40.757977,-73.989838,40.751171

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013-01-06
00:18:35,2013-01-06 00:22:54,1,259,1.50,-74.006683,40.731781,-73.994499,40.75066
0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,1,N,2013-01-05
18:49:41,2013-01-05 18:54:23,1,282,1.10,-74.004707,40.73777,-74.009834,40.726002

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013-01-07
23:54:15,2013-01-07 23:58:20,2,244,.70,-73.974602,40.759945,-73.984734,40.759388

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,1,N,2013-01-07

23:25:03,2013-01-07 23:34:24,1,560,2.10,-73.97625,40.748528,-74.002586,40.747868

2. El archivo trip_fare.csv contiene información detallada de la tarifa que se paga en


cada carrera, como el tipo de pago, el importe de la tarifa, los suplementos e
impuestos, las propinas y los peajes, y el importe total pagado. Estos son algunos
registros de ejemplo:

medallion, hack_license, vendor_id, pickup_datetime, payment_type, fare_amount,


surcharge, mta_tax, tip_amount, tolls_amount, total_amount

89D227B655E5C82AECF13C3F540D4CF4,BA96DE419E711691B9445D6A6307C170,CMT,2013-01-01
15:11:48,CSH,6.5,0,0.5,0,0,7

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-06

00:18:35,CSH,6,0.5,0.5,0,0,7

0BD7C8F5BA12B88E0B67BED28BEA73D8,9FD8F69F0804BDB5549F40E9DA1BE472,CMT,2013-01-05

18:49:41,CSH,5.5,1,0.5,0,0,7

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07

23:54:15,CSH,5,0.5,0.5,0,0,6

DFD2202EE08F7A8DC9A57B02ACB81FE2,51EE87E3205C985EF8431D850C786310,CMT,2013-01-07
23:25:03,CSH,9.5,0.5,0.5,0,0,10.5

La clave única para unir trip_data y trip_fare se compone de los tres campos siguientes:

medallion,
hack_license y
pickup_datetime.

Realicemos tres tipos de tareas de predicción


Se formulan tres problemas de predicción basados en el valor tip_amount para mostrar tres
tipos de tareas de modelado:

1. Clasificación binaria: permite predecir si se pagó o no una propina tras una carrera; es
decir, un valor de tip_amount mayor que 0 USD es un ejemplo positivo, mientras que
un valor de tip_amount de 0 USD es un ejemplo negativo.
2. Clasificación multiclase: permite predecir el intervalo de la propina de la carrera.
Dividimos el valor de tip_amount en cinco ubicaciones o clases:

Class 0 : tip_amount = $0

Class 1 : tip_amount > $0 and tip_amount <= $5

Class 2 : tip_amount > $5 and tip_amount <= $10

Class 3 : tip_amount > $10 and tip_amount <= $20

Class 4 : tip_amount > $20

3. Tarea de regresión: Permite predecir el importe de la propina pagada por una carrera.

Configuración del entorno de ciencia de datos de


Azure para análisis avanzado
Para configurar el entorno de ciencia de datos de Azure, siga estos pasos.

Cree su propia cuenta de Almacenamiento de blobs de Azure.

Cuando aprovisione su propia instancia de Azure Blob Storage, elija una ubicación
geográfica para esta en la región centro-sur de EE.UU. , o lo más cerca posible de esta
región, ya que es donde se almacenan los datos de NYC Taxi. Los datos se copian con
AzCopy desde el contenedor de Almacenamiento de blobs público a un contenedor
de su propia cuenta de almacenamiento. Cuanto más se acerque el Almacenamiento
de blobs de Azure a la región centro-sur de EE. UU., más rápida se completará esta
tarea (paso 4).

Para crear una cuenta propia de Azure Storage, siga los pasos descritos en Acerca de
las cuentas de Azure Storage. Asegúrese de hacer anotaciones en los valores de las
credenciales de la cuenta de almacenamiento siguientes, que necesitará más adelante
en este tutorial.
Nombre de cuenta de almacenamiento
Clave de cuenta de almacenamiento
Nombre de contenedor (en donde los datos se van a almacenar en el
Almacenamiento de blobs de Azure)

Aprovisione su instancia de Azure Synapse Analytics. Siga la documentación de Creación


de una instancia de Azure Synapse Analytics en Azure Portal y realización de consultas para
aprovisionar una instancia de Azure Synapse Analytics. Asegúrese de que hacer anotaciones
en las credenciales de Azure Synapse Analytics siguientes que se usarán en los pasos
posteriores.

Nombre del servidor: <nombre del servidor>.database.windows.net


Nombre de SQLDW (base de datos)
Nombre de usuario
Contraseña

Instale Visual Studio y SQL Server Data Tools. Para obtener instrucciones, vea Introducción
a Visual Studio 2019 para Azure Synapse Analytics.

Conéctese a Azure Synapse Analytics con Visual Studio. Para obtener instrucciones,
consulte los pasos 1 y 2 en Conexión a SQL Analytics en Azure Synapse Analytics.

7 Nota

Ejecute la siguiente consulta SQL en la base de datos que creó en Azure Synapse
Analytics (en lugar de la consulta proporcionada en el paso 3 del tema sobre la
conexión) para crear una clave maestra.

SQL

BEGIN TRY
--Try to create the master key
CREATE MASTER KEY
END TRY
BEGIN CATCH
--If the master key exists, do nothing
END CATCH;

Cree un área de trabajo de Azure Machine Learning en su suscripción de Azure. Para ver
instrucciones, consulte Creación de un área de trabajo de Azure Machine Learning.

Carga de datos en Azure Synapse Analytics


Abra una consola de comandos de Windows PowerShell. Ejecute los comandos de
PowerShell siguientes para descargar los archivos de script SQL de ejemplo que
compartimos en GitHub en un directorio local especificado con el parámetro -DestDir.
Puede cambiar el valor del parámetro -DestDir en cualquier directorio local. Si -DestDir no
existe, lo creará el script de PowerShell.

7 Nota
Es posible que necesite ejecutar como administrador el siguiente script de PowerShell
si su directorio DestDir necesita privilegios de administrador para crearlo o escribir en
él.

Azure PowerShell

$source = "https://raw.githubusercontent.com/Azure/Azure-MachineLearning-
DataScience/master/Misc/SQLDW/Download_Scripts_SQLDW_Walkthrough.ps1"
$ps1_dest = "$pwd\Download_Scripts_SQLDW_Walkthrough.ps1"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source, $ps1_dest)
.\Download_Scripts_SQLDW_Walkthrough.ps1 –DestDir 'C:\tempSQLDW'

Cuando se haya ejecutado correctamente, el directorio de trabajo actual cambia a -DestDir.


Debe ver una pantalla similar a la siguiente:

En su -DestDir, ejecute el siguiente script de PowerShell en modo de administrador:

Azure PowerShell

./SQLDW_Data_Import.ps1

Cuando se ejecuta el script de PowerShell por primera vez, se le pedirá que introduzca
información desde Azure Synapse Analytics y la cuenta de Almacenamiento de blobs de
Azure. Cuando este script de PowerShell termine de ejecutarse por primera vez, las
credenciales indicadas se habrán escrito en un archivo de configuración SQLDW.conf del
directorio de trabajo actual. La ejecución futura de este archivo de script de PowerShell
puede leer todos los parámetros necesarios de este archivo de configuración. Si necesita
cambiar algunos parámetros, puede elegir escribir los parámetros en la pantalla después
del aviso mediante la eliminación de este archivo de configuración y de escribir los valores
de parámetros cuando se le solicite o cambiar los valores de parámetros mediante la
edición del archivo SQLDW.conf en el directorio -DestDir .

7 Nota

Para evitar conflictos de nombres de esquema con los que ya existen en Azure Synapse
Analytics, al leer los parámetros directamente desde el archivo SQLDW.conf, se agrega
un número aleatorio de tres dígitos al nombre del esquema desde el archivo
SQLDW.conf como el nombre de esquema predeterminado para cada ejecución. El
script de PowerShell puede pedirle un nombre de esquema: se puede especificar el
nombre a discreción del usuario.

Este archivo de script de PowerShell realiza las tareas siguientes:

Descarga e instala AzCopy, si AzCopy no se ha instalado aún

Azure PowerShell

$AzCopy_path = SearchAzCopy
if ($AzCopy_path -eq $null){
Write-Host "AzCopy.exe is not found in C:\Program Files*. Now,
start installing AzCopy..." -ForegroundColor "Yellow"
InstallAzCopy
$AzCopy_path = SearchAzCopy
}
$env_path = $env:Path
for ($i=0; $i -lt $AzCopy_path.count; $i++){
if ($AzCopy_path.count -eq 1){
$AzCopy_path_i = $AzCopy_path
} else {
$AzCopy_path_i = $AzCopy_path[$i]
}
if ($env_path -notlike '*' +$AzCopy_path_i+'*'){
Write-Host $AzCopy_path_i 'not in system path, add it...'
[Environment]::SetEnvironmentVariable("Path",
"$AzCopy_path_i;$env_path", "Machine")
$env:Path =
[System.Environment]::GetEnvironmentVariable("Path","Machine")
$env_path = $env:Path
}

Copia datos en la cuenta de Almacenamiento de blobs privada desde el blob público


con AzCopy

Azure PowerShell

Write-Host "AzCopy is copying data from public blob to yo storage account.


It may take a while..." -ForegroundColor "Yellow"
$start_time = Get-Date
AzCopy.exe /Source:$Source /Dest:$DestURL /DestKey:$StorageAccountKey /S
$end_time = Get-Date
$time_span = $end_time - $start_time
$total_seconds = [math]::Round($time_span.TotalSeconds,2)
Write-Host "AzCopy finished copying data. Please check your storage
account to verify." -ForegroundColor "Yellow"
Write-Host "This step (copying data from public blob to your storage
account) takes $total_seconds seconds." -ForegroundColor "Green"
Carga datos mediante Polybase (mediante la ejecución de LoadDataToSQLDW.sql)
para Azure Synapse Analytics de la cuenta de almacenamiento de blobs privada con
los siguientes comandos.

Creación de un esquema

SQL

EXEC (''CREATE SCHEMA {schemaname};'');

Creación de una credencial con ámbito de base de datos

SQL

CREATE DATABASE SCOPED CREDENTIAL {KeyAlias}


WITH IDENTITY = ''asbkey'' ,
Secret = ''{StorageAccountKey}''

Creación de un origen de datos externo para un blob de Azure Storage

SQL

CREATE EXTERNAL DATA SOURCE {nyctaxi_trip_storage}


WITH
(
TYPE = HADOOP,
LOCATION
=''wasbs://{ContainerName}@{StorageAccountName}.blob.core.windows.net''
,
CREDENTIAL = {KeyAlias}
)
;

CREATE EXTERNAL DATA SOURCE {nyctaxi_fare_storage}


WITH
(
TYPE = HADOOP,
LOCATION
=''wasbs://{ContainerName}@{StorageAccountName}.blob.core.windows.net''
,
CREDENTIAL = {KeyAlias}
)
;

Cree un formato de archivo externo para un archivo .csv. Los datos se


descomprimen y los campos se separan con el carácter de barra vertical.

SQL
CREATE EXTERNAL FILE FORMAT {csv_file_format}
WITH
(
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS
(
FIELD_TERMINATOR ='','',
USE_TYPE_DEFAULT = TRUE
)
)
;

Cree tablas externas de tarifas y propinas para el conjunto de datos de NYC Taxi en
el Almacenamiento de blobs de Azure.

SQL

CREATE EXTERNAL TABLE {external_nyctaxi_fare}


(
medallion varchar(50) not null,
hack_license varchar(50) not null,
vendor_id char(3),
pickup_datetime datetime not null,
payment_type char(3),
fare_amount float,
surcharge float,
mta_tax float,
tip_amount float,
tolls_amount float,
total_amount float
)
with (
LOCATION = ''/nyctaxifare/'',
DATA_SOURCE = {nyctaxi_fare_storage},
FILE_FORMAT = {csv_file_format},
REJECT_TYPE = VALUE,
REJECT_VALUE = 12
)

CREATE EXTERNAL TABLE {external_nyctaxi_trip}


(
medallion varchar(50) not null,
hack_license varchar(50) not null,
vendor_id char(3),
rate_code char(3),
store_and_fwd_flag char(3),
pickup_datetime datetime not null,
dropoff_datetime datetime,
passenger_count int,
trip_time_in_secs bigint,
trip_distance float,
pickup_longitude varchar(30),
pickup_latitude varchar(30),
dropoff_longitude varchar(30),
dropoff_latitude varchar(30)
)
with (
LOCATION = ''/nyctaxitrip/'',
DATA_SOURCE = {nyctaxi_trip_storage},
FILE_FORMAT = {csv_file_format},
REJECT_TYPE = VALUE,
REJECT_VALUE = 12
)

Carga de datos de tablas externas de Azure Blob Storage en Azure Synapse


Analytics

SQL

CREATE TABLE {schemaname}.{nyctaxi_fare}


WITH
(
CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = HASH(medallion)
)
AS
SELECT *
FROM {external_nyctaxi_fare}
;

CREATE TABLE {schemaname}.{nyctaxi_trip}


WITH
(
CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = HASH(medallion)
)
AS
SELECT *
FROM {external_nyctaxi_trip}
;

Cree una tabla de datos de ejemplo (NYCTaxi_Sample) e inserte datos en ella


mediante la selección de consultas SQL en las tablas de carreras y tarifas.
(Algunos pasos de este tutorial necesitan usar esta tabla de ejemplo).

SQL

CREATE TABLE {schemaname}.{nyctaxi_sample}


WITH
(
CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = HASH(medallion)
)
AS
(
SELECT t.*, f.payment_type, f.fare_amount, f.surcharge,
f.mta_tax, f.tolls_amount, f.total_amount, f.tip_amount,
tipped = CASE WHEN (tip_amount > 0) THEN 1 ELSE 0 END,
tip_class = CASE
WHEN (tip_amount = 0) THEN 0
WHEN (tip_amount > 0 AND tip_amount <= 5) THEN 1
WHEN (tip_amount > 5 AND tip_amount <= 10) THEN 2
WHEN (tip_amount > 10 AND tip_amount <= 20) THEN 3
ELSE 4
END
FROM {schemaname}.{nyctaxi_trip} t, {schemaname}.{nyctaxi_fare} f
WHERE datepart("mi",t.pickup_datetime) = 1
AND t.medallion = f.medallion
AND t.hack_license = f.hack_license
AND t.pickup_datetime = f.pickup_datetime
AND pickup_longitude <> ''0''
AND dropoff_longitude <> ''0''
)
;

La ubicación geográfica de las cuentas de almacenamiento afecta a los tiempos de carga.

7 Nota

Según la ubicación geográfica de la cuenta de almacenamiento de blobs privada, el


proceso de copiar datos de un blob público a su cuenta de almacenamiento privada
puede tardar unos 15 minutos o incluso más tiempo, y el proceso de carga de datos
desde la cuenta de almacenamiento a Azure Synapse Analytics podría tardar 20
minutos o más tiempo.

Tendrá que decidir qué hacer si tiene archivos de origen y de destino duplicados.

7 Nota

Si los archivos .csv que se van a copiar desde el almacenamiento de blobs público a la
cuenta de almacenamiento de blobs privada ya existen en la cuenta de
almacenamiento de blobs privada, AzCopy le preguntará si desea sobrescribirlos. Si no
desea sobrescribirlos, escriba n cuando se le solicite. Si desea sobrescribir todos ellos,
escriba a cuando se le solicite. También puede escribir y para sobrescribir los archivos
.csv individualmente.
Puede usar sus propios datos. Si los datos están en la máquina local en la aplicación de la
vida real, todavía puede usar AzCopy para cargar los datos locales a su área privada de
Azure Blob Storage. Solo tiene que cambiar la ubicación de origen, $Source =
"http://getgoing.blob.core.windows.net/public/nyctaxidataset" , en el comando de

AzCopy del archivo de scripts de PowerShell por un directorio local que contiene los datos.

 Sugerencia

Si los datos ya están en el Almacenamiento de blobs de Azure privado en la aplicación


de la vida real, puede omitir el paso de AzCopy en el script de PowerShell y cargar
directamente los datos en Azure Synapse Analytics. Esto requerirá modificaciones
adicionales del script para adaptarlo al formato de los datos.

Este script de Powershell también conecta la información de Azure Synapse Analytics en los
archivos de ejemplo de exploración de datos SQLDW_Explorations.sql,
SQLDW_Explorations.ipynb y SQLDW_Explorations_Scripts.py para que estos tres archivos
están listos para ser probados de inmediato cuando finalice el script de PowerShell.

Después de una ejecución correcta, verá una pantalla similar a la siguiente:

Exploración de datos y diseño de características


en Azure Synapse Analytics
En esta sección, realizamos la generación de características y la exploración de datos
mediante la ejecución de consultas SQL en Azure Synapse Analytics directamente mediante
Visual Studio Data Tools. Todas las consultas SQL que se usan en esta sección se pueden
encontrar en el script de ejemplo llamado SQLDW_Explorations.sql. Este archivo ya lo ha
descargado en el directorio local el script de PowerShell. También puede recuperarlo desde
GitHub . Pero el archivo de GitHub no tiene la información de Azure Synapse Analytics
conectada.

Conéctese con Azure Synapse Analytics utilizando Visual Studio con el nombre de inicio de
sesión de Azure Synapse Analytics y la contraseña y abra el Explorador de objetos SQL para
confirmar que la base de datos y las tablas se han importado. Recupere el archivo
SQLDW_Explorations.sql.

7 Nota

Para abrir un editor de consultas de Almacenamiento de datos paralelos (PDW), utilice


el comando Nueva consulta mientras el PDW está seleccionado en el Explorador de
objetos SQL. El editor de consultas estándar de SQL no es compatible con PDW.

A continuación se muestra el tipo de tareas de exploración de datos y de generación de


características realizado en esta sección:

Explorar distribuciones de datos de algunos campos en diferentes ventanas de


tiempo.
Investigar la calidad de los datos de los campos de longitud y latitud.
Generar etiquetas de clasificación binaria y multiclase según el valor de tip_amount.
Generar características y calcular o comparar distancias de carreras.
Combinar las dos tablas y extraer una muestra aleatoria que se usará para generar
modelos.

Comprobación de la importación de datos


Estas consultas proporcionan una comprobación rápida del número de filas y columnas en
las tablas que se rellenaron anteriormente mediante la importación masiva paralela de
Polybase.

-- Informe con el número de filas de la tabla <nyctaxi_trip> sin recorrido de tabla

SQL

SELECT SUM(rows) FROM sys.partitions WHERE object_id = OBJECT_ID('<schemaname>.


<nyctaxi_trip>')
-- Informe con el número de columnas de la tabla <nyctaxi_trip>

SQL

SELECT COUNT(*) FROM information_schema.columns WHERE table_name =


'<nyctaxi_trip>' AND table_schema = '<schemaname>'

Salida: debe obtener 173 179 759 filas y 14 columnas.

Exploración: Distribución de carreras por medallion


Esta consulta de ejemplo identifica las licencias (números de taxi) que han completado más
de 100 carreras dentro de un período de tiempo especificado. La consulta se beneficiaría
del acceso de la tabla con particiones, ya que está condicionada por el esquema de
partición de pickup_datetime. La consulta el conjunto de datos completo también hará uso
de la tabla con particiones o del recorrido de índice.

SQL

SELECT medallion, COUNT(*)


FROM <schemaname>.<nyctaxi_fare>
WHERE pickup_datetime BETWEEN '20130101' AND '20130331'
GROUP BY medallion
HAVING COUNT(*) > 100

Salida: la consulta debe devolver una tabla con filas en las que se especifiquen las 13 369
licencias (taxis) y el número de carreras completadas en 2013. La última columna contiene
el recuento del número de carreras realizadas.

Exploración: distribución de carreras por medallion y


hack_license
Este ejemplo identifica las licencias (números de taxi) y los números de hack_license
(conductores) que han completado más de 100 carreras dentro de un período de tiempo.

SQL

SELECT medallion, hack_license, COUNT(*)


FROM <schemaname>.<nyctaxi_fare>
WHERE pickup_datetime BETWEEN '20130101' AND '20130131'
GROUP BY medallion, hack_license
HAVING COUNT(*) > 100

Salida: la consulta debe devolver una tabla con 13 369 filas en las que se especifiquen los
13 369 identificadores de vehículo/conductor que han realizado más de 100 carreras en
2013. La última columna contiene el recuento del número de carreras realizadas.

Evaluación de la calidad de los datos: compruebe los


registros con longitud o latitud incorrectas
En este ejemplo se investiga si alguno de los campos de longitud y latitud contiene un valor
no válido (los grados radianes deben encontrarse entre -90 y 90) o tienen coordenadas (0,
0).

SQL

SELECT COUNT(*) FROM <schemaname>.<nyctaxi_trip>


WHERE pickup_datetime BETWEEN '20130101' AND '20130331'
AND (CAST(pickup_longitude AS float) NOT BETWEEN -90 AND 90
OR CAST(pickup_latitude AS float) NOT BETWEEN -90 AND 90
OR CAST(dropoff_longitude AS float) NOT BETWEEN -90 AND 90
OR CAST(dropoff_latitude AS float) NOT BETWEEN -90 AND 90
OR (pickup_longitude = '0' AND pickup_latitude = '0')
OR (dropoff_longitude = '0' AND dropoff_latitude = '0'))

Salida: la consulta devuelve 837 467 carreras con campos de latitud o longitud no válidos.

Exploración: distribución de carreras con propinas frente a


sin propinas
Este ejemplo busca el número de carreras en las que se han dado propinas frente a aquellas
en las que no se han dado en un período de tiempo especificado (o en el conjunto de datos
completo si se abarca todo el año, como se establece aquí). Esta distribución refleja la
distribución de etiquetas binarias que se usará más adelante para el modelado de
clasificación binaria.

SQL

SELECT tipped, COUNT(*) AS tip_freq FROM (


SELECT CASE WHEN (tip_amount > 0) THEN 1 ELSE 0 END AS tipped, tip_amount
FROM <schemaname>.<nyctaxi_fare>
WHERE pickup_datetime BETWEEN '20130101' AND '20131231') tc
GROUP BY tipped

Salida: La consulta debe devolver las siguientes frecuencias de propinas para el año 2013:
90 447 622 con propina y 82 264 709 sin propina.

Exploración: Distribución por intervalos y clases de propinas


Este ejemplo calcula la distribución de los intervalos de propinas de un período de tiempo
determinado (o en el conjunto de datos completo si abarca todo el año). Esta distribución
de las clases de etiquetas se usará posteriormente para el modelado de clasificación
multiclase.

SQL

SELECT tip_class, COUNT(*) AS tip_freq FROM (


SELECT CASE
WHEN (tip_amount = 0) THEN 0
WHEN (tip_amount > 0 AND tip_amount <= 5) THEN 1
WHEN (tip_amount > 5 AND tip_amount <= 10) THEN 2
WHEN (tip_amount > 10 AND tip_amount <= 20) THEN 3
ELSE 4
END AS tip_class
FROM <schemaname>.<nyctaxi_fare>
WHERE pickup_datetime BETWEEN '20130101' AND '20131231') tc
GROUP BY tip_class

Salida:

tip_class tip_freq

1 82 230 915

2 6 198 803

3 1 932 223

0 82 264 625

4 85 765

Exploración: proceso y comparación de la distancia de la


carrera
En este ejemplo se convierte la longitud y latitud de los puntos de recogida y destino a
puntos geográficos de SQL, se calcula la distancia de la carrera mediante la diferencia de
puntos geográficos de SQL y se devuelve una muestra aleatoria de los resultados de la
comparación. En el ejemplo se limitan los resultados a coordenadas válidas usando solo la
consulta de evaluación de calidad de datos tratada anteriormente.

SQL

/****** Object: UserDefinedFunction [dbo].[fnCalculateDistance] ******/


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type IN ('FN', 'IF') AND name =
'fnCalculateDistance')
DROP FUNCTION fnCalculateDistance
GO

-- User-defined function to calculate the direct distance in mile between two


geographical coordinates.
CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2
float, @Long2 float)

RETURNS float
AS
BEGIN
DECLARE @distance decimal(28, 10)
-- Convert to radians
SET @Lat1 = @Lat1 / 57.2958
SET @Long1 = @Long1 / 57.2958
SET @Lat2 = @Lat2 / 57.2958
SET @Long2 = @Long2 / 57.2958
-- Calculate distance
SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) *
COS(@Long2 - @Long1))
--Convert to miles
IF @distance <> 0
BEGIN
SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) /
@distance);
END
RETURN @distance
END
GO

SELECT pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude,


dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude,
dropoff_longitude) AS DirectDistance
FROM <schemaname>.<nyctaxi_trip>
WHERE datepart("mi",pickup_datetime)=1
AND CAST(pickup_latitude AS float) BETWEEN -90 AND 90
AND CAST(dropoff_latitude AS float) BETWEEN -90 AND 90
AND pickup_longitude != '0' AND dropoff_longitude != '0'

Diseño de características con las funciones de SQL


A veces, las funciones de SQL pueden ser una opción eficiente de diseño de características.
En este tutorial, hemos definido una función SQL para calcular la distancia directa entre las
ubicaciones de recogida y entrega. Puede ejecutar los scripts SQL siguientes en Visual
Studio Data Tools.

Este es el script SQL que define la función de distancia.

SQL
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE type IN ('FN', 'IF') AND name =
'fnCalculateDistance')
DROP FUNCTION fnCalculateDistance
GO

-- User-defined function calculate the direct distance between two geographical


coordinates.
CREATE FUNCTION [dbo].[fnCalculateDistance] (@Lat1 float, @Long1 float, @Lat2
float, @Long2 float)

RETURNS float
AS
BEGIN
DECLARE @distance decimal(28, 10)
-- Convert to radians
SET @Lat1 = @Lat1 / 57.2958
SET @Long1 = @Long1 / 57.2958
SET @Lat2 = @Lat2 / 57.2958
SET @Long2 = @Long2 / 57.2958
-- Calculate distance
SET @distance = (SIN(@Lat1) * SIN(@Lat2)) + (COS(@Lat1) * COS(@Lat2) *
COS(@Long2 - @Long1))
--Convert to miles
IF @distance <> 0
BEGIN
SET @distance = 3958.75 * ATAN(SQRT(1 - POWER(@distance, 2)) /
@distance);
END
RETURN @distance
END
GO

Este es un ejemplo para llamar a esta función para generar características en la consulta
SQL:

-- Consulta de ejemplo para llamar a la función para crear características

SQL

SELECT pickup_latitude, pickup_longitude, dropoff_latitude, dropoff_longitude,


dbo.fnCalculateDistance(pickup_latitude, pickup_longitude, dropoff_latitude,
dropoff_longitude) AS DirectDistance FROM <schemaname>.<nyctaxi_trip> WHERE
datepart("mi",pickup_datetime)=1 AND CAST(pickup_latitude AS float) BETWEEN -90
AND 90 AND CAST(dropoff_latitude AS float) BETWEEN -90 AND 90 AND
pickup_longitude != '0' AND dropoff_longitude != '0'
Salida: esta consulta genera una tabla (con 2 803 538 filas) con las latitudes y longitud de
los puntos de origen y destino y las distancias directas correspondientes en millas. Estos
son los resultados de las tres primeras filas:

(Número pickup_latitude pickup_longitude dropoff_latitude dropoff_longitude DirectDistance


de fila)

1 40,731804 -74,001083 40,736622 -73,988953 0,7169601222

2 40,715794 -74,010635 40,725338 -74,00399 0,7448343721

3 40,761456 -73,999886 40,766544 -73,988228 0,7037227967

Preparar datos para la generación de modelos


La siguiente consulta combina las tablas nyctaxi_trip y nyctaxi_fare, genera una etiqueta de
clasificación binaria tipped, una etiqueta de clasificación multiclase tip_class y extrae una
muestra del conjunto de datos combinado completo. El muestreo se realiza mediante la
recuperación de un subconjunto de los viajes en función de la hora de recogida. Esta
consulta SQL se puede copiar y pegar para la ingesta directa de datos desde la instancia de
SQL Database en Azure. La consulta excluye los registros con coordenadas (0, 0) incorrectas.

SQL

SELECT t.*, f.payment_type, f.fare_amount, f.surcharge, f.mta_tax,


f.tolls_amount, f.total_amount, f.tip_amount,
CASE WHEN (tip_amount > 0) THEN 1 ELSE 0 END AS tipped,
CASE WHEN (tip_amount = 0) THEN 0
WHEN (tip_amount > 0 AND tip_amount <= 5) THEN 1
WHEN (tip_amount > 5 AND tip_amount <= 10) THEN 2
WHEN (tip_amount > 10 AND tip_amount <= 20) THEN 3
ELSE 4
END AS tip_class
FROM <schemaname>.<nyctaxi_trip> t, <schemaname>.<nyctaxi_fare> f
WHERE datepart("mi",t.pickup_datetime) = 1
AND t.medallion = f.medallion
AND t.hack_license = f.hack_license
AND t.pickup_datetime = f.pickup_datetime
AND pickup_longitude != '0' AND dropoff_longitude != '0'

Cuando esté listo para continuar con Azure Machine Learning, puede:

1. Guardar la consulta SQL final para extraer y muestrear los datos, y copiar y pegar la
consulta directamente en un cuaderno en Azure Machine Learning, o
2. Conservar los datos muestreados y de ingeniería que planea usar para la generación
de modelos en una nueva tabla de Azure Synapse Analytics y acceder a esa tabla
mediante un almacén de datos en Azure Machine Learning.
Exploración de datos e ingeniería de
características en el cuaderno
En esta sección, se llevará a cabo la exploración de datos y la generación de características
con consultas Python y SQL en la instancia de Azure Synapse Analytics creada
anteriormente. Se han descargado un cuaderno de ejemplo denominado
SQLDW_Explorations.ipynb y un archivo de script de Python
SQLDW_Explorations_Scripts.py en el directorio local. También están disponibles en
GitHub . Estos dos archivos son idénticos en los scripts de Python. El archivo de script de
Python se proporciona en caso de que quiera usar Python sin un cuaderno. Estos dos
archivos de Python de muestra están diseñados en Python 2.7.

La información necesaria de Azure Synapse Analytics en el cuaderno de Jupyter Notebook


de ejemplo y el archivo de script de Python descargados en el equipo local se ha conectado
antes por el script de PowerShell. Son ejecutables sin ninguna modificación.

Si ya ha configurado un área trabajo de Azure Machine Learning, puede cargar


directamente el cuaderno de ejemplo en el área AzureML Notebooks. Para obtener
instrucciones sobre cómo cargar un cuaderno, consulte Ejecución de cuadernos de Jupyter
Notebook en el área de trabajo.

Nota: Para ejecutar el cuaderno de Jupyter Notebook de ejemplo o el archivo de scripts de


Python, se necesitan los siguientes paquetes Python.

Pandas
numpy
matplotlib
pyodbc
PyTables

La secuencia recomendada al crear soluciones de análisis avanzado en Azure Machine


Learning con datos de gran tamaño es la siguiente:

Leer una pequeña muestra de los datos en una trama de datos en memoria.
Realizar algunas visualizaciones y exploraciones con los datos de muestreo.
Experimentar con el diseño de características con los datos de muestreo.
Para el diseño de características, la exploración y la manipulación de datos más
grandes, usar Python para emitir consultas SQL directamente en Azure Synapse
Analytics.
Decidir el tamaño de muestra que se usará para la creación del modelo de Azure
Machine Learning.

A continuación, se muestran algunas exploraciones de datos, visualizaciones de datos y


ejemplos de diseño de características. Se pueden encontrar más exploraciones de datos en
el cuaderno de Jupyter Notebook de ejemplo y en el archivo de script de Python de
ejemplo.

Inicialización de las credenciales de la base de datos


Inicialice la configuración de conexión de base de datos en las variables siguientes:

SQL

SERVER_NAME=<server name>
DATABASE_NAME=<database name>
USERID=<user name>
PASSWORD=<password>
DB_DRIVER = <database driver>

Creación de conexiones de base de datos


Esta es la cadena de conexión que crea la conexión a la base de datos.

SQL

CONNECTION_STRING = 'DRIVER=
{'+DRIVER+'};SERVER='+SERVER_NAME+';DATABASE='+DATABASE_NAME+';UID='+USERID+';P
WD='+PASSWORD
conn = pyodbc.connect(CONNECTION_STRING)

Informe con el número de filas y columnas de la tabla


<nyctaxi_trip>
SQL

nrows = pd.read_sql('''
SELECT SUM(rows) FROM sys.partitions
WHERE object_id = OBJECT_ID('<schemaname>.<nyctaxi_trip>')
''', conn)

print 'Total number of rows = %d' % nrows.iloc[0,0]

ncols = pd.read_sql('''
SELECT COUNT(*) FROM information_schema.columns
WHERE table_name = ('<nyctaxi_trip>') AND table_schema = ('<schemaname>')
''', conn)

print 'Total number of columns = %d' % ncols.iloc[0,0]

Número total de filas = 173179759


Número total de columnas = 14

Informe con el número de filas y columnas de la tabla


<nyctaxi_fare>
SQL

nrows = pd.read_sql('''
SELECT SUM(rows) FROM sys.partitions
WHERE object_id = OBJECT_ID('<schemaname>.<nyctaxi_fare>')
''', conn)

print 'Total number of rows = %d' % nrows.iloc[0,0]

ncols = pd.read_sql('''
SELECT COUNT(*) FROM information_schema.columns
WHERE table_name = ('<nyctaxi_fare>') AND table_schema = ('<schemaname>')
''', conn)

print 'Total number of columns = %d' % ncols.iloc[0,0]

Número total de filas = 173179759


Número total de columnas = 11

Lectura de una muestra de datos pequeña de la base de


datos de Azure Synapse Analytics
SQL

t0 = time.time()

query = '''
SELECT TOP 10000 t.*, f.payment_type, f.fare_amount, f.surcharge,
f.mta_tax,
f.tolls_amount, f.total_amount, f.tip_amount
FROM <schemaname>.<nyctaxi_trip> t, <schemaname>.<nyctaxi_fare> f
WHERE datepart("mi",t.pickup_datetime) = 1
AND t.medallion = f.medallion
AND t.hack_license = f.hack_license
AND t.pickup_datetime = f.pickup_datetime
'''

df1 = pd.read_sql(query, conn)

t1 = time.time()
print 'Time to read the sample table is %f seconds' % (t1-t0)

print 'Number of rows and columns retrieved = (%d, %d)' % (df1.shape[0],


df1.shape[1])
El tiempo empleado en leer la tabla de ejemplo es 14,096495 segundos Número de filas y
columnas recuperadas = (1000, 21)

Estadísticas descriptivas
Ya puede explorar los datos de muestreo. Comenzamos echando un vistazo a algunas
estadísticas descriptivas del campo trip_distance (o de cualquier otro que elija).

SQL

df1['trip_distance'].describe()

Visualización: Ejemplo de diagrama de caja


A continuación, observaremos el diagrama de caja de la distancia de la carrera para ver los
cuantiles.

SQL

df1.boxplot(column='trip_distance',return_type='dict')

Visualización: Ejemplo de diagrama de distribución


Diagramas que visualizan la distribución y un histograma de las distancias de las carreras
muestreadas.

SQL

fig = plt.figure()
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
df1['trip_distance'].plot(ax=ax1,kind='kde', style='b-')
df1['trip_distance'].hist(ax=ax2, bins=100, color='k')

Visualización: Diagramas de barras y líneas


En este ejemplo, se discretiza la distancia de la carrera en cinco discretizaciones y se
visualizan los resultados de la discretización.

SQL

trip_dist_bins = [0, 1, 2, 4, 10, 1000]


df1['trip_distance']
trip_dist_bin_id = pd.cut(df1['trip_distance'], trip_dist_bins)
trip_dist_bin_id

Podemos trazar la distribución de discretización anterior en un gráfico de barras o líneas


con:

SQL

pd.Series(trip_dist_bin_id).value_counts().plot(kind='bar')
y

SQL

pd.Series(trip_dist_bin_id).value_counts().plot(kind='line')

Visualización: Ejemplo de gráfico de dispersión


Se muestra el gráfico de dispersión entre trip_time_in_secs y trip_distance para ver si existe
algún tipo de correlación.

SQL

plt.scatter(df1['trip_time_in_secs'], df1['trip_distance'])
También podemos comprobar la relación entre rate_code y trip_distance.

SQL

plt.scatter(df1['passenger_count'], df1['trip_distance'])

Exploración de datos en datos de muestreo mediante


consultas SQL en Jupyter Notebook
En esta sección, se exploran las distribuciones de datos con los datos de los datos de
muestreo que se conservan en la nueva tabla que se creó anteriormente. Se pueden realizar
exploraciones similares con las tablas originales.

Exploración: notificación del número de filas y columnas de la tabla


de muestreo

SQL

nrows = pd.read_sql('''SELECT SUM(rows) FROM sys.partitions WHERE object_id =


OBJECT_ID('<schemaname>.<nyctaxi_sample>')''', conn)
print 'Number of rows in sample = %d' % nrows.iloc[0,0]

ncols = pd.read_sql('''SELECT count(*) FROM information_schema.columns WHERE


table_name = ('<nyctaxi_sample>') AND table_schema = '<schemaname>'''', conn)
print 'Number of columns in sample = %d' % ncols.iloc[0,0]

Exploración: distribución con propinas y sin propinas

SQL

query = '''
SELECT tipped, count(*) AS tip_freq
FROM <schemaname>.<nyctaxi_sample>
GROUP BY tipped
'''

pd.read_sql(query, conn)

Exploración: distribución de la clase de prueba

SQL

query = '''
SELECT tip_class, count(*) AS tip_freq
FROM <schemaname>.<nyctaxi_sample>
GROUP BY tip_class
'''

tip_class_dist = pd.read_sql(query, conn)

Exploración: trazado de la distribución de propinas por clase

SQL

tip_class_dist['tip_freq'].plot(kind='bar')
Exploración: distribución diaria de carreras

SQL

query = '''
SELECT CONVERT(date, dropoff_datetime) AS date, COUNT(*) AS c
FROM <schemaname>.<nyctaxi_sample>
GROUP BY CONVERT(date, dropoff_datetime)
'''

pd.read_sql(query,conn)

Exploración: distribución de carreras por placa

SQL

query = '''
SELECT medallion,count(*) AS c
FROM <schemaname>.<nyctaxi_sample>
GROUP BY medallion
'''

pd.read_sql(query,conn)

Exploración: Distribución de carreras por medallion y hack_license

SQL

query = '''select medallion, hack_license,count(*) from <schemaname>.


<nyctaxi_sample> group by medallion, hack_license'''
pd.read_sql(query,conn)
Exploración: distribución del tiempo de la carrera

SQL

query = '''select trip_time_in_secs, count(*) from <schemaname>.


<nyctaxi_sample> group by trip_time_in_secs order by count(*) desc'''
pd.read_sql(query,conn)

Exploración: distribución de la distancia de la carrera

SQL

query = '''select floor(trip_distance/5)*5 as tripbin, count(*) from


<schemaname>.<nyctaxi_sample> group by floor(trip_distance/5)*5 order by
count(*) desc'''
pd.read_sql(query,conn)

Exploración: distribución del tipo de pago

SQL

query = '''select payment_type,count(*) from <schemaname>.<nyctaxi_sample>


group by payment_type'''
pd.read_sql(query,conn)

Comprobar el formulario final de la tabla con características

SQL

query = '''SELECT TOP 100 * FROM <schemaname>.<nyctaxi_sample>'''


pd.read_sql(query,conn)

Creación de modelos en Azure Machine Learning


Ya está todo listo para pasar a la creación del modelo y la implementación del mismo en
Azure Machine Learning. Los datos están listos para usarse en cualquiera de los problemas
de predicción identificados anteriormente, a saber:

1. Clasificación binaria: permite predecir si se dio propina en una carrera o no.


2. Clasificación multiclase: permite predecir el rango de la propina dada, según las
clases definidas anteriormente.
3. Tarea de regresión: Permite predecir el importe de la propina pagada por una carrera.
Para iniciar el ejercicio de modelado, inicie sesión en el área de trabajo de Azure Machine
Learning. Si aún no ha creado un área de trabajo de aprendizaje automático, consulte
Creación de un área de trabajo.

1. Para empezar a usar Azure Machine Learning, consulte ¿Qué es Azure Machine
Learning?
2. Inicie sesión en Azure Portal .
3. La página principal de Machine Learning ofrece una gran cantidad de información, así
como vídeos, tutoriales, vínculos a referencias de módulos y otros recursos. Para
obtener más información sobre Azure Machine Learning, visite el Centro de
documentación de Azure Machine Learning.

Un experimento de entrenamiento típico consta de los pasos siguientes:

1. Crear un recurso de creación (cuaderno o diseñador, por ejemplo).


2. Llevar los datos a Azure Machine Learning.
3. Preprocesar, transformar y manipular los datos según sea necesario.
4. Generar características según sea necesario.
5. Dividir los datos en conjuntos de datos de entrenamiento, validación y pruebas (o
disponer de conjuntos de datos independientes para cada uno).
6. Seleccionar uno o varios algoritmos de aprendizaje automático, según el problema de
aprendizaje que se quiera resolver. Por ejemplo: clasificación binaria, clasificación
multiclase, regresión.
7. Entrenar uno o varios modelos utilizando el conjunto de datos de entrenamiento.
8. Puntuar el conjunto de datos de validación con los modelos entrenados.
9. Evaluar los modelos para calcular las métricas relevantes para el problema de
aprendizaje.
10. Ajustar los modelos y seleccionar el mejor para su implementación.

En este ejercicio, ya se han explorado y diseñado los datos en Azure Synapse Analytics, y
también se ha decidido el tamaño del ejemplo para la ingesta en Azure Machine Learning.
Este es el procedimiento para crear uno o varios de los modelos de predicción:

1. Llevar los datos a Azure Machine Learning. Para obtener más información, consulte
Opciones de ingesta de datos para flujos de trabajo de Azure Machine Learning.
2. Conectar con Synapse Analytics. Para obtener más información, consulte Vinculación
de las áreas de trabajo de Azure Synapse Analytics y Azure Machine Learning, y
asociación de grupos de Azure Spark.

) Importante

En los ejemplos de consultas de extracción y muestreo de datos de modelado de las


secciones anteriores, las etiquetas de los tres ejercicios de modelado se incluyen en
la consulta. Un paso importante (requerido) en cada uno de los ejercicios de
modelado consiste en excluir las etiquetas innecesarias de los otros dos problemas y
cualquier otra fuga de destino. Por ejemplo, cuando use clasificación binaria, utilice la
etiqueta tipped y excluya los campos tip_class, tip_amount y total_amount. Estos
últimos son fugas de destino ya que implican que se pagó propina.

Implementación de modelos en Azure Machine


Learning
Cuando el modelo esté listo, podrá implementarlo fácilmente como un servicio web
directamente desde el modelo almacenado en la ejecución del experimento. Para más
información sobre las opciones de implementación, consulte Implementación de modelos
de aprendizaje automático en Azure.

Resumen
A modo de recapitulación, en este tutorial paso a paso se ha creado un entorno de ciencia
de datos de Azure, se ha trabajado con un conjunto de datos público grande de principio a
fin, llevándolo a través del proceso de ciencia de datos en equipos, desde la adquisición de
los datos al entrenamiento del modelo, para finalizar con la implementación de un servicio
web de Azure Machine Learning.

Información de licencia
Microsoft comparte este tutorial de ejemplo y sus scripts y cuadernos adjuntos bajo la
licencia MIT. Vea el archivo LICENSE.txt que se encuentra en el directorio del código de
ejemplo en GitHub para obtener más detalles.

Referencias
Estadísticas e investigación de la Comisión de taxis y limusinas de la Ciudad de Nueva
York
Búsqueda y consulta de una
knowledge base empresarial
mediante Azure OpenAI o Azure
Cognitive Search
Azure Blob Storage Azure Cache for Redis Azure Cognitive Search Servicios de Azure AI

Inteligencia de documentos de Azure

En este artículo se describe cómo usar Azure OpenAI Service o Azure Cognitive Search
para buscar documentos en los datos de la empresa y recuperar resultados para
proporcionar una experiencia de preguntas y respuestas al estilo ChatGPT. En esta
solución se describen dos enfoques:

Enfoque de inserciones: Use el modelo de inserción de Azure OpenAI para crear


datos vectorizados. El vector de búsqueda es una característica que aumenta
significativamente la relevancia semántica de los resultados de la búsqueda.

Enfoque de Azure Cognitive Search: Use Azure Cognitive Search para buscar y
recuperar datos de texto relevantes basados en una consulta del usuario. Este
servicio admite búsqueda de texto completo, búsqueda semántica, vector de
búsqueda y búsqueda híbrida.

7 Nota

En Azure Cognitive Search, las características de búsqueda semántica y vector de


búsqueda se encuentran actualmente en versión preliminar pública.

Arquitectura: Enfoque de inserción


Embedding creation Query and retrieval
5 5
Query

1
Storage Function apps Azure Cache for Azure App 1
User
accounts Redis 2 Service 4
2 4
3
Vectorize Return top k Results passed
Translate Create
Extract text query matching content with prompt
(optional) embeddings
3

Azure OpenAI Azure OpenAI


Azure Azure AI Azure OpenAI embedding language model
Translator Document embedding model
Intelligence model

Descargue un archivo Visio de esta arquitectura.

Flujo de datos
Los documentos que se van a ingerir pueden provenir de varios orígenes, como archivos
en un servidor FTP, datos adjuntos de correo electrónico o datos adjuntos de
aplicaciones web. Estos documentos se pueden ingerir en Azure Blob Storage a través
de servicios como Azure Logic Apps, Azure Functions o Azure Data Factory. Data Factory
es óptimo para transferir datos masivos.

Creación de inserción:

1. El documento se ingiere en Blob Storage y se desencadena una función de Azure


para extraer texto de los documentos.

2. Si los documentos están en un idioma que no es inglés y se requiere traducción,


una función de Azure puede llamar a Azure Translator para que realice la
traducción.

3. Si los documentos son archivos PDF o imágenes, una función de Azure puede
llamar al Documento de inteligencia de Azure AI para extraer el texto. Si el
documento es un archivo de Excel, CSV, Word o texto, el código de Python se
puede usar para extraer el texto.

4. A continuación, el texto extraído se fragmenta correctamente y se usa un modelo


de inserción de Azure OpenAI para convertir cada fragmento en inserciones.

5. Estas inserciones se conservan en la base de datos vectorial. Esta solución usa el


nivel Enterprise de Azure Cache for Redis, pero se puede usar cualquier base de
datos vectorial.

Consulta y recuperación:

1. El usuario envía una consulta a través de una aplicación de usuario.


2. El modelo de inserción de Azure OpenAI se usa para convertir la consulta en
inserciones vectoriales.

3. Una búsqueda de similitud vectorial que usa este vector de consulta en la base de
datos vectorial devuelve el contenido coincidente k superior. El contenido
coincidente que se va a recuperar se puede establecer según un umbral definido
por una medida de similitud, como la similitud coseno.

4. El contenido recuperado k superior y el símbolo del sistema se envían al modelo


de lenguaje de OpenAI de Azure, como GPT-3.5 Turbo o GPT-4.

5. Los resultados de la búsqueda se presentan como la respuesta a la consulta de


búsqueda iniciada por el usuario o los resultados de la búsqueda se pueden usar
como los datos de base para un escenario de conversación multiturno.

Arquitectura: enfoque de extracción de Azure


Cognitive Search
Index creation Query and retrieval
Pull Query
API

1 2 1
Storage Azure Cognitive Azure App User
accounts Search Service
3 4
AI enrichment skillsets
(optional) Create system prompt Call language model
2 3

Azure AI Azure AI Azure OpenAI


Translator Document language model
Intelligence

Descargue un archivo Visio de esta arquitectura.

Creación del índice:

1. Azure Cognitive Search se usa para crear un índice de búsqueda de los


documentos en Blob Storage. Azure Cognitive Search admite Blob Storage, por lo
que el modelo de extracción se usa para rastrear el contenido y la funcionalidad se
implementa a través de indexadores.

7 Nota

Azure Cognitive Search admite otros orígenes de datos para la indexación al


usar el modelo de extracción. Los documentos también se pueden indexar
desde varios orígenes de datos y consolidarse en un único índice.
2. Si determinados escenarios requieren traducción de documentos, se puede usar
Azure Translator, que es una característica que se incluye en la aptitud integrada.

3. Si los documentos no se pueden buscar, como archivos PDF o imágenes


digitalizados, la inteligencia artificial se puede aplicar mediante aptitudes
integradas o personalizadas como conjuntos de aptitudes en Azure Cognitive
Search. La aplicación de inteligencia artificial a un contenido que no admite
búsquedas de texto completo se denomina enriquecimiento con IA. Según el
requisito, el Documento de inteligencia de Azure AI se puede usar como una
aptitud personalizada para extraer texto de archivos PDF o imágenes a través de
modelos de análisis de documentos, modelos precompilados o modelos de
extracción personalizados.

Si el enriquecimiento con IA es un requisito, debe usar el modelo de extracción


(indexadores) para cargar un índice.

Si se agregan campos vectoriales al esquema de índice, lo que carga los datos


vectoriales para la indexación, el vector de búsqueda se puede habilitar mediante
la indexación de esos datos vectoriales. Los datos vectoriales se pueden generar a
través de inserciones de Azure OpenAI.

Consulta y recuperación:

1. Un usuario envía una consulta a través de una aplicación de usuario.

2. La consulta se pasa a Azure Cognitive Search a través de la API de REST de


documentos de búsqueda. El tipo de consulta puede ser sencillo, lo que es óptimo
para la búsqueda de texto completo o completo, que es para construcciones de
consulta avanzadas, como expresiones regulares, búsqueda aproximada y de
caracteres comodín, y búsqueda por proximidad. Si el tipo de consulta se establece
en semántico, se realiza una búsqueda semántica en los documentos y se recupera
el contenido correspondiente. Azure Cognitive Search también admite la vector de
búsqueda y la búsqueda híbrida, que requiere que la consulta de usuario se
convierta en inserciones vectoriales.

3. El contenido recuperado y el símbolo del sistema se envían al modelo de lenguaje


de Azure OpenAI, como GPT-3.5 Turbo o GPT-4.

4. Los resultados de la búsqueda se presentan como la respuesta a la consulta de


búsqueda iniciada por el usuario o los resultados de la búsqueda se pueden usar
como los datos de base para un escenario de conversación multiturno.
Arquitectura: enfoque de inserción de Azure
Cognitive Search
Si no se admite el origen de datos, puede usar el modelo de inserción para cargar los
datos en Azure Cognitive Search.

Push Index creation Query and retrieval


API 2
Query

Azure App Azure Cognitive Azure App 1


Files Service User
Search Service
4
For translating and extracting text 3 3
(optional) Call language model
Create system prompt

Azure OpenAI
Azure AI Azure AI language model
Translator Document
1 Intelligence 2

Descargue un archivo Visio de esta arquitectura.

Creación del índice:

1. Si el documento que se va a ingerir debe traducirse, se puede usar Azure


Translator.
2. Si el documento está en un formato que no se puede buscar, como un PDF o una
imagen, se puede usar el Documento de inteligencia de Azure AI para extraer
texto.
3. El texto extraído se puede vectorizar a través del vector de búsqueda de
inserciones de Azure OpenAI y los datos se pueden insertar en un índice de Azure
Cognitive Search a través de una API de REST o un SDK de Azure.

Consulta y recuperación:

La consulta y recuperación en este enfoque es la misma que la del enfoque de


extracción anteriormente mencionado en este artículo.

Componentes
Azure OpenAI proporciona a la API de REST acceso a los modelos de lenguaje
de Azure OpenAI, como GPT-3, Codex y la serie de modelos de inserción para la
generación de contenido, el resumen, la búsqueda semántica y la conversión de
lenguaje natural a código. Puede acceder al servicio a través de las API de REST, el
SDK de Python o la interfaz basada en web en Azure OpenAI Studio .
El Documento de inteligencia de Azure AI es un servicio de Azure AI . Ofrece
funcionalidades de análisis de documentos para extraer texto impreso y
manuscrito, tablas y pares clave-valor. El Documento de inteligencia de Azure AI
proporciona modelos precompilados que pueden extraer datos de facturas,
documentos, recibos, tarjetas de identificación y tarjetas de presentación. También
lo puede usar para entrenar e implementar modelos personalizados mediante un
modelo de formulario de plantilla personalizada o un modelo de documento
neuronal personalizado.

Document Intelligence Studio proporciona una interfaz de usuario para explorar


las características y modelos del Documento de inteligencia de Azure AI, así como
para compilar, etiquetar, entrenar e implementar modelos personalizados.

Azure Cognitive Search es un servicio en la nube que proporciona


infraestructura, API y herramientas para la búsqueda. Puede usar Azure Cognitive
Search para compilar experiencias de búsqueda a partir de contenido privado
heterogéneo de aplicaciones web, móviles y empresariales.

Blob Storage es la solución de almacenamiento de objetos para archivos sin


procesar en este escenario. Blob Storage admite bibliotecas para varios lenguajes,
como .NET, Node.js y Python. Las aplicaciones pueden acceder a archivos en Blob
Storage a través de HTTP o HTTPS. Blob Storage tiene niveles de acceso frecuente,
esporádico y de archivo para admitir la optimización de costos para almacenar
grandes cantidades de datos.

El nivel Enterprise de Azure Cache for Redis proporciona módulos de Redis


Enterprise administrados, como RediSearch, RedisBloom, RedisTimeSeries y
RedisJSON. Los campos vectoriales permiten la búsqueda de similitud vectorial,
que admite la indexación de vectores en tiempo real, algoritmos de fuerza bruta
(FLAT) y algoritmos de mundo pequeño jerárquico navegable (HNSW),
actualizaciones de vectores en tiempo real y búsqueda de vecinos k más próximos.
Azure Cache for Redis incorpora una solución crítica de almacenamiento de datos
de baja latencia y alto rendimiento para las aplicaciones modernas.

Alternativas
En función de su escenario, puede agregar los siguientes flujos de trabajo.

Use las características de Lenguaje de Azure AI, respuesta a preguntas y


reconocimiento del lenguaje conversacional para crear una capa conversacional
natural sobre sus datos. Estas características buscan respuestas adecuadas para la
entrada de la knowledge base de información personalizada.
Para crear datos vectorizados, puede usar cualquier modelo de inserción. También
puede usar la API de recuperación de imágenes de Visión de servicios de Azure AI
para vectorizar imágenes. Esta herramienta está disponible en versión preliminar
privada.

Use la extensión de Durable Functions para Azure Functions como herramienta de


integración de primer código para realizar pasos de procesamiento de texto, como
leer escritura a mano, texto y tablas, y lenguaje de procesamiento para extraer
entidades en función del tamaño y la escala de la carga de trabajo.

Puede usar cualquier base de datos relacional para el almacenamiento persistente


de las inserciones extraídas, lo que incluye:
Azure SQL Database
Azure Cosmos DB
Azure Database para PostgreSQL
Azure Database for MySQL

Detalles del escenario


El procesamiento manual consume cada vez más tiempo, es propenso a errores y
consume muchos recursos debido al gran volumen de documentos. Las organizaciones
que controlan grandes volúmenes de documentos, gran cantidad de datos no
estructurados de diferentes formatos, como PDF, Excel, CSV, Word, PowerPoint y
formatos de imagen, enfrentan un desafío significativo para el procesamiento de
documentos digitalizados y manuscritos y los formularios de sus clientes.

Estos documentos y formularios contienen información crítica, como los datos


personales, el historial médico y los informes de evaluación de daños, que deben
extraerse y procesarse con precisión.

Las organizaciones a menudo ya tienen su propia knowledge base de información, que


se puede usar para responder a preguntas con la respuesta más adecuada. Puede usar
los servicios y las canalizaciones descritos en estas soluciones para crear un origen para
mecanismos de búsqueda de documentos.

Posibles casos de uso


Esta solución proporciona valor a las organizaciones de sectores como empresas
farmacéuticas y servicios financieros. Se aplica a cualquier empresa que tenga un gran
número de documentos con información insertada. Esta solución de búsqueda de un
extremo a otro con tecnología de inteligencia artificial se puede usar para extraer
información significativa de los documentos en función de la consulta del usuario para
proporcionar una experiencia de preguntas y respuestas al estilo de ChatGPT.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Dixit Arora | Ingeniero de clientes sénior, ISV DN CoE


Jyotsna Ravi | Ingeniero principal de clientes, ISV DN CoE

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es la inteligencia de documentos de Azure AI?
¿Qué es Azure OpenAI?
¿Qué es Azure Machine Learning?
Introducción a Blob Storage
¿Qué es Lenguaje de Azure AI?
Introducción a Azure Data Lake Storage Gen2
Biblioteca cliente de QnA Maker de Azure
Crear, entrenar y publicar la base de conocimiento de QnA Maker
¿Qué es la respuesta a preguntas?

Recursos relacionados
Resumen de documentos basados en consultas
Automatización de la identificación, clasificación y búsqueda de documentos
mediante Durable Functions
Indexación de contenido y metadatos de archivos mediante Azure Cognitive
Search
Enriquecimiento con IA con procesamiento de imágenes y texto
Extraer y analizar datos del centro
de llamadas
Azure Blob Storage Voz de Azure AI Servicios de Azure AI Power BI

En este artículo se describe cómo extraer información de las conversaciones de los


clientes en un centro de llamadas mediante los servicios de Azure AI y Azure OpenAI
Service. Usar estos análisis en tiempo real y posteriores a la llamada para mejorar la
eficacia del centro de llamadas y la satisfacción del cliente.

Architecture

Intelligent transcription Interact and visualize

Extract insights from call transcripts


Insights in Power BI
(Near real-time)
Caller

Extraction Storage Enrichment


File Audio
Person-to-person upload files
conversation
Azure AI Web app
Azure Language
Telephony Azure
Blob Storage
server Azure Blob Storage
Azure
Blob Storage
speech to text
Azure OpenAI CRM
Call-center agent Service

Detailed call
history, summaries,
reasons for calling

Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de datos
1. Una llamada telefónica entre un agente y un cliente se registra y almacena en
Azure Blob Storage. Los archivos de audio se cargan en una cuenta de Azure
Storage a través de un método compatible, como la herramienta basada en la
interfaz de usuario, el Explorador de Azure Storage o un SDK de Storage o una API.

2. Voz de Azure AI se usa para transcribir archivos de audio en modo por lotes de
forma asincrónica con la diarización de altavoz habilitada. Los resultados de la
transcripción se conservan en Blob Storage.
3. Lenguaje de Azure AI se usa para detectar y redactar datos personales en la
transcripción.

Para la transcripción del modo por lotes y la detección y la reacción de datos


personales, use la herramienta Cliente de ingesta de servicios de IA. La herramienta
Cliente de ingesta usa un enfoque sin códigos para la transcripción del centro de
llamadas.

4. Azure OpenAI se usa para procesar la transcripción y extraer entidades, resumir la


conversación y analizar opiniones. La salida procesada se almacena en
Blob Storage y, a continuación, se analiza y visualiza mediante otros servicios.
También puede almacenar la salida en un almacén de datos para realizar un
seguimiento de los metadatos y para la generación de informes. Usar
Azure OpenAI para procesar la información de transcripción almacenada.

5. Power BI o una aplicación web personalizada hospedada por App Service se usa
para visualizar la salida. Ambas opciones proporcionan información casi en tiempo
real. Puede almacenar esta salida en un CRM, por lo que los agentes tienen
información contextual sobre por qué se llamó al cliente y pueden resolver
rápidamente posibles problemas. Este proceso está totalmente automatizado, lo
que ahorra tiempo y esfuerzo a los agentes.

Componentes
Blob Storage es la solución de almacenamiento de objetos para archivos sin
procesar en este escenario. Blob Storage admite bibliotecas para lenguajes como
.NET, Node.js y Python. Las aplicaciones pueden acceder a archivos en Blob
Storage a través de HTTP o HTTPS. Blob Storage tiene niveles de acceso frecuente,
esporádico y de archivo para almacenar grandes cantidades de datos, lo que
optimiza los costes.

Azure OpenAI proprociona acceso a modelos de lenguaje de Azure OpenAI,


como la serie de modelos GPT-3, Codex e Embeddings para la generación de
contenido, el resumen, la búsqueda semántica y la conversión del lenguaje natural
al código. Puede acceder al servicio a través de las API REST, el SDK de Python o la
interfaz basada en web en Azure OpenAI Studio .

Voz de Azure AI es una API basada en inteligencia artificial que proporciona


funcionalidades de voz, como la conversión de voz en texto, de texto a voz, la
traducción de voz y el reconocimiento del hablante. Esta arquitectura usa la
funcionalidad de transcripción por lotes de Voz de Azure AI.
Lenguaje de Azure AI consolida los servicios de procesamiento del lenguaje
natural de Azure. Para obtener más información sobre las opciones precompiladas
y personalizables, consulte Características disponibles del Lenguaje Azure AI.

Language Studio proporciona una interfaz de usuario para explorar y analizar las
características de los servicios de IA para lenguaje. Language Studio proporciona
opciones para compilar, etiquetar, entrenar e implementar modelos
personalizados.

Power BI es un software como servicio (SaaS) que proporciona información


visual e interactiva para el análisis empresarial. Proporciona funcionalidades de
transformación y se conecta a otros orígenes de datos.

Alternativas
En función de su escenario, puede agregar los siguientes flujos de trabajo.

Realizar el resumen de la conversación utilizando el modelo precompilado en


Lenguaje de Azure AI.
Según el tamaño y la escala de la carga de trabajo, puede usar Azure Functions
como una herramienta de integración de código primero para realizar pasos de
procesamiento de texto, como el resumen de texto en los datos extraídos.
Implementar una solución personalizada de conversión de voz en texto.

Detalles del escenario


Esta solución usa Voz de Azure AI para convertir audio en texto escrito. El Lenguaje de
Azure AI redacta información confidencial en la transcripción de conversaciones. Azure
OpenAI extrae información de la conversación del cliente para mejorar la eficiencia del
centro de llamadas y la satisfacción del cliente. Use esta solución para procesar texto
transcrito, reconocer y quitar información confidencial y realizar análisis de opiniones.
Escale los servicios y la canalización para dar cabida a cualquier volumen de datos
grabados.

Posibles casos de uso


Esta solución proporciona valor a organizaciones de sectores como las
telecomunicaciones y los servicios financieros. Se aplica a cualquier organización que
grabe conversaciones. Los centros de llamadas internos o de atención al cliente se
benefician del uso de esta solución.
Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de
Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad
de una carga de trabajo. Para más información, consulte Marco de buena arquitectura
de Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Buscar el acuerdo de nivel de servicio de disponibilidad (SLA) para cada


componente de SLA para servicios en línea .
Para diseñar aplicaciones de alta disponibilidad con cuentas de almacenamiento,
consulte las opciones de configuración.
Para garantizar la resistencia de los servicios de proceso y los almacenes de datos
en este escenario, use el modo de error para servicios como Azure Functions y
Storage. Para obtener más información, vea la Lista de comprobación de
resistencia para servicios de Azure.
Copia de seguridad y recuperación de los modelos de Form Recognizer.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Implementar recomendaciones de protección de datos, administración de


identidades y acceso, y seguridad de red para Blob Storage, servicios de IA y
Azure OpenAI.
Configuración de redes virtuales de servicios de IA.

Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y
mejorar las eficiencias operativas. Para más información, vea Información general del
pilar de optimización de costos.

El coste total de esta solución depende del nivel de precios de sus servicios. Los factores
que pueden afectar al precio de cada componente son:

El número de documentos que se procesen.


El número de solicitudes simultáneas que reciba la aplicación.
El tamaño de los datos que se almacenen después del procesamiento.
La región de implementación.

Para obtener más información, vea los siguientes recursos:

Precios de Azure OpenAI


Precios de Blob Storage
Precios de Lenguaje de Azure AI
Precios de Azure Machine Learning

Utilizar la calculadora de precios de Azure para estimar el coste de su solución.

Eficiencia del rendimiento


La eficiencia del rendimiento es la capacidad que tiene la carga de trabajo para
satisfacer de manera eficiente las demandas que los usuarios hayan realizado sobre ella.
Para más información, consulte Información general sobre el pilar de eficiencia del
rendimiento.

Cuando se procesan grandes volúmenes de datos, puede exponer cuellos de botella de


rendimiento. Para garantizar una eficiencia de rendimiento adecuada, comprenda y
planee las opciones de escalado que se usarán con la característica de escalado
automático de servicios de IA.

La API de voz por lotes está diseñada para grandes volúmenes, pero otras API de
servicios de IA pueden tener límites de solicitudes, dependiendo del nivel de
suscripción. Considerar la posibilidad de incluir en contenedores las API de servicios de
IA para evitar ralentizar el procesamiento de gran volumen. Los contenedores
proporcionan flexibilidad de implementación en la nube y en el entorno local. Mitigar
los efectos secundarios de los lanzamientos de nueva versión mediante el uso de
contenedores. Para obtener más información, consulte Compatibilidad con
contenedores en servicios de IA.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:

Dixit Arora | Ingeniero de clientes sénior, ISV DN CoE


Jyotsna Ravi | Ingeniero principal de clientes, ISV DN CoE
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
¿Qué es Voz de Azure AI?
¿Qué es Azure OpenAI?
¿Qué es Azure Machine Learning?
Introducción a Blob Storage
¿Qué es Lenguaje de Azure AI?
Introducción a Azure Data Lake Storage Gen2
¿Qué es Power BI?
Cliente de ingesta con servicios de IA
Análisis y transcripción posterior a la llamadas

Recursos relacionados
Uso de una canalización de transcripción de voz en texto para analizar
conversaciones grabadas
Implementación de una solución personalizada de conversión de voz en texto
Crear modelos acústicos y de lenguaje personalizado
Implementación de una solución personalizada de conversión de voz en texto
Implementación del registro y la
supervisión de modelos de Azure
OpenAI
Servicios de Azure AI Azure API Management Azure Monitor Microsoft Entra ID

Esta solución proporciona un registro y una supervisión completos y una seguridad


mejorada para las implementaciones empresariales de la API de Azure OpenAI Service.
La solución permite funcionalidades avanzadas de registro para realizar un seguimiento
del uso y el rendimiento de la API y medidas de seguridad sólidas para ayudar a
proteger los datos confidenciales y ayudar a evitar actividades malintencionadas.

Architecture

Descargue un archivo Visio de esta arquitectura.

Flujo de trabajo
1. Las aplicaciones cliente acceden a los puntos de conexión de Azure OpenAI para
realizar la generación de texto (finalizaciones) y el entrenamiento del modelo
(ajuste preciso).

2. Azure Application Gateway proporciona un único punto de entrada a los modelos


de Azure OpenAI y equilibrio de carga para las API.
7 Nota

No se admite el equilibrio de carga de operaciones con estado, como el ajuste


de modelos, las implementaciones y la inferencia de modelos ajustados.

3. Azure API Management habilita controles de seguridad y auditoría y supervisión


de los modelos de Azure OpenAI.
a. En API Management, se concede acceso de seguridad mejorada a través de
grupos de Microsoft Entra con permisos de acceso basados en suscripciones.
b. La auditoría está habilitada para todas las interacciones con los modelos
mediante el registro de solicitudes de Azure Monitor.
c. La supervisión proporciona métricas y KPI detallados del uso del modelo de
Azure OpenAI, incluida la información de aviso y las estadísticas de token para la
rastreabilidad del uso.

4. API Management se conecta a todos los recursos de Azure a través de Azure


Private Link. Esta configuración proporciona seguridad mejorada para todo el
tráfico a través de puntos de conexión privados y contiene tráfico en la red
privada.

5. Varias instancias de Azure OpenAI permiten escalar horizontalmente el uso de la


API para garantizar la alta disponibilidad y la recuperación ante desastres para el
servicio.

Componentes
Application Gateway . Equilibrador de carga de aplicaciones para ayudar a
garantizar que todos los usuarios de las API de Azure OpenAI obtengan la
respuesta más rápida y el rendimiento más alto para las finalizaciones del modelo.
API Management . Plataforma de API Management para acceder a puntos de
conexión de Azure OpenAI de back-end. Proporciona supervisión y registro que no
está disponible de forma nativa en Azure OpenAI.
Azure Virtual Network . Infraestructura de red privada en la nube. Proporciona
aislamiento de red para que todo el tráfico de red de los modelos se enrute de
forma privada a Azure OpenAI.
Azure OpenAI . Servicio que hospeda modelos y proporciona salidas de
finalización de modelos generativas.
Supervisión . Observabilidad de un extremo a otro para aplicaciones. Proporciona
acceso a los registros de aplicación a través de Lenguaje de consulta Kusto.
También habilita los informes del panel y las funcionalidades de supervisión y
alertas.
Azure Key Vault Almacenamiento de seguridad mejorada para claves y secretos
que usan las aplicaciones.
Azure Storage . Almacenamiento de aplicaciones en la nube. Proporciona a Azure
OpenAI accesibilidad a los artefactos de entrenamiento del modelo.
Microsoft Entra ID . Administrador de identidades de seguridad mejorada.
Permite la autenticación y autorización de usuario a la aplicación y a los servicios
de plataforma que admiten la aplicación. También proporciona directiva de grupo
para asegurarse de que el principio de privilegios mínimos se aplica a todos los
usuarios.

Alternativas
Azure OpenAI proporciona registro y supervisión nativos. Puede usar esta funcionalidad
nativa para realizar un seguimiento de la telemetría del servicio, pero el registro
predeterminado de Cognitive Services no realiza un seguimiento ni registra entradas y
salidas del servicio, como avisos, tokens y modelos. Estas métricas son especialmente
importantes para el cumplimiento y para asegurarse de que el servicio funciona según
lo previsto. Además, mediante el seguimiento de las interacciones con los modelos de
lenguaje grande implementados en Azure OpenAI, puede analizar cómo usa su
organización el servicio para identificar los patrones de costo y uso que pueden ayudar
a informar sobre el escalado y la asignación de recursos.

En la tabla siguiente se proporciona una comparación de las métricas proporcionadas


por el registro predeterminado de Azure OpenAI y los proporcionados por esta
solución.

ノ Expand table

Métrica Registro predeterminado Esta solución


de Azure OpenAI

Recuento de solicitudes x x

Datos en (tamaño) / salida x x


de datos (tamaño)

Latencia x x

Transacciones del token x x


(total)
Métrica Registro predeterminado Esta solución
de Azure OpenAI

Dirección IP del autor de la x (último octeto x


llamada enmascarado)

Uso del modelo x

Uso de tokens x x
(entrada/salida)

Detalle del símbolo del x (limitado a


sistema de entrada 8192 caracteres de
respuesta)

Detalles de finalización de x (limitado a


salida 8192 caracteres de
respuesta)

Operaciones de x x
implementación

Operaciones de inserción x x (limitado a


8192 caracteres de
respuesta)

Detalles del escenario


Las grandes empresas que usan modelos de IA generativos deben implementar la
auditoría y el registro del uso de estos modelos para garantizar el uso responsable y el
cumplimiento corporativo. Esta solución proporciona registro y supervisión de nivel
empresarial para todas las interacciones con los modelos de IA para mitigar el uso
perjudicial de los modelos y ayudar a garantizar que se cumplan los estándares de
seguridad y cumplimiento. La solución se integra con las API existentes para Azure
OpenAI con poca modificación para aprovechar las bases de código existentes. Los
administradores también pueden supervisar el uso del servicio para informes.

La solución proporciona estas ventajas:

Registro completo de la ejecución del modelo de Azure OpenAI, en el que se


realiza un seguimiento de la dirección IP de origen. La información de registro
incluye texto que los usuarios envían al modelo y el texto recibido del modelo. Este
registro ayuda a garantizar que los modelos se usen de forma responsable y
dentro de los casos de uso aprobados del servicio.
Alta disponibilidad de las API del modelo para asegurarse de que se cumplen las
solicitudes de usuario incluso si el tráfico supera los límites de un único servicio de
Azure OpenAI.
Acceso basado en rol administrado a través de Microsoft Entra ID para asegurarse
de que se aplica el principio de privilegios mínimos.

Consulta de ejemplo para la supervisión del uso

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend modelkey = substring(parse_json(BackendResponseBody)['model'], 0,
indexof(parse_json(BackendResponseBody)['model'], '-', 0, -1, 2))
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])
['prompt_tokens']
| extend completiontokens = parse_json(parse_json(BackendResponseBody)
['usage'])['completion_tokens']
| extend totaltokens = parse_json(parse_json(BackendResponseBody)['usage'])
['total_tokens']
| extend ip = CallerIpAddress
| summarize
sum(todecimal(prompttokens)),
sum(todecimal(completiontokens)),
sum(todecimal(totaltokens)),
avg(todecimal(totaltokens))
by ip, model

Salida:

Consulta de ejemplo para la supervisión del uso de la solicitud

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])
['prompt_tokens']
| extend prompttext = substring(parse_json(parse_json(BackendResponseBody)
['choices'])[0], 0, 100)

Salida:

Posibles casos de uso


Implementación de Azure OpenAI para usuarios empresariales internos para
acelerar la productividad.
Alta disponibilidad de Azure OpenAI para aplicaciones internas.
Uso de la seguridad mejorada de Azure OpenAI en sectores regulados.

Consideraciones
Estas consideraciones implementan los pilares del Azure Well-Architected Framework,
que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de
una carga de trabajo. Para más información, consulte Marco de buena arquitectura de
Microsoft Azure.

Confiabilidad
La confiabilidad garantiza que tu aplicación puede cumplir los compromisos contraídos
con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.

Este escenario garantiza la alta disponibilidad de los modelos de lenguaje grandes para
los usuarios empresariales. Azure Application Gateway proporciona un mecanismo
eficaz de entrega de aplicaciones de nivel 7 para garantizar un acceso rápido y
coherente a las aplicaciones. Puede usar API Management para configurar, administrar y
supervisar el acceso a los modelos. La alta disponibilidad inherente de servicios de
plataforma como Storage, Key Vault y Virtual Network garantiza una alta confiabilidad
para la aplicación. Por último, varias instancias de Azure OpenAI garantizan la resistencia
del servicio en caso de errores en el nivel de aplicación. Estos componentes de
arquitectura pueden ayudarle a garantizar la confiabilidad de la aplicación a escala
empresarial.

Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y
sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Mediante la implementación de procedimientos recomendados para el aislamiento de


nivel de aplicación y de red de los servicios en la nube, este escenario mitiga los riesgos
de filtración de datos y pérdida de datos. Todo el tráfico de red que contiene datos
potencialmente confidenciales que se introducen en el modelo está aislado en una red
privada. Este tráfico no atraviesa rutas públicas de Internet. Puede usar Azure
ExpressRoute para aislar aún más el tráfico de red a la intranet corporativa y ayudar a
garantizar la seguridad de red de un extremo a otro.

Optimización de costos
La optimización de costos trata de reducir los gastos innecesarios y mejorar las
eficiencias operativas. Para más información, vea Información general del pilar de
optimización de costos.

Para ayudarle a explorar el costo de ejecución de este escenario, hemos preconfigurado


todos los servicios de la calculadora de precios de Azure. Para obtener información
sobre cómo cambiarían los precios en su caso de uso, cambie las variables apropiadas
para que coincidan con el tráfico esperado.

Los tres perfiles de costo de ejemplo siguientes proporcionan estimaciones basadas en


la cantidad de tráfico. (Las estimaciones suponen que un documento contiene
aproximadamente 1000 tokens).

Pequeño : para procesar 10 000 documentos al mes.


Medio : para procesar 100 000 documentos al mes.
Grande : para procesar 10 millones de documentos al mes.

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Creadores de entidad de seguridad:


Ashish Chauhan | Arquitecto de soluciones en la nube: datos/IA
Jake Wang | Arquitecto de soluciones en la nube: IA/aprendizaje automático

Otros colaboradores:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Formulario de solicitud de Azure OpenAI
Procedimientos recomendados para la ingeniería de solicitudes con OpenAI API
Azure OpenAI: documentación, inicios rápidos y referencia de API
Azure-Samples/openai-python-enterprise-logging (GitHub)
Configuración de redes virtuales de Azure Cognitive Services

Recursos relacionados
Protección de las API con Azure Application Gateway y Azure API Management
Resumen de documentos basados en consultas
Diseño de arquitectura de IA
Compilación de canalizaciones del
modelo de lenguaje con memoria
Bing Web Search Azure Cache for Redis Azure Pipelines

Adelántese a la competencia al estar informado y tener un profundo conocimiento de


sus productos y productos de la competencia. Una canalización de IA y aprendizaje
automático ayuda a recopilar, analizar y resumir información pertinente de forma rápida
y eficaz. Esta arquitectura incluye varios modelos eficaces de Azure OpenAI Service.
Estos modelos se emparejan con el popular marco de LangChain de código abierto que
se usa para desarrollar aplicaciones con tecnología de modelos de lenguaje.

7 Nota

Algunas partes de la introducción, los componentes y el flujo de trabajo de este


artículo se generaron con la ayuda de ChatGPT. Pruébelo para usted o pruébelo
para su empresa.

Architecture

Descargue un archivo de PowerPoint de esta arquitectura.


Flujo de trabajo
La canalización por lotes almacena información interna del producto de la empresa en
una base de datos de búsqueda vectorial rápida. Para lograr este resultado, se lleva
acabo el siguiente procedimiento:

1. Los documentos internos de la empresa para los productos se importan y se


convierten en vectores utilizables en búsquedas. Los documentos relacionados con
los productos se recopilan de los departamentos, como ventas, marketing y
desarrollo de productos. A continuación, estos documentos se examinan y se
convierten en texto con la tecnología de reconocimiento óptico de caracteres
(OCR).
2. Una utilidad de fragmentación de LangChain fragmenta los documentos en partes
más pequeñas y más fáciles de administrar. La fragmentación divide el texto en
frases u oraciones significativas que se pueden analizar por separado y mejora la
precisión de las funcionalidades de búsqueda de la canalización.
3. El modelo de lenguaje convierte cada fragmento en una inserción vectorizada. Las
inserciones son un tipo de representación que captura el significado y el contexto
del texto. Al convertir cada fragmento en una inserción vectorizada, puede
almacenar y buscar los documentos en función de su significado en lugar de su
texto sin formato. Para evitar la pérdida de contexto en cada fragmento de los
documentos, LangChain proporciona varias utilidades para este paso de la división
de texto, como funcionalidades para ventanas deslizantes o la especificación de
superposición de texto. Entre algunas características clave se incluyen utilidades
para etiquetar fragmentos con metadatos de los documentos, optimizar el paso de
recuperación de documentos y la referencia descendente.
4. Cree un índice en una base de datos de almacén de vectores para almacenar el
texto sin formato del documento, los vectores de inserción y los metadatos. Las
inserciones resultantes se almacenan en una base de datos de almacén de vectores
junto con el texto sin formato del documento y los metadatos pertinentes, como el
título y el origen del documento.

Una vez completada la canalización por lotes, la canalizaciónasincrónica en tiempo real


busca información pertinente. Se lleva a cabo el procedimiento siguiente:

5. Introduzca una consulta y los metadatos pertinentes, como su rol en la empresa o


la unidad de negocio en la que trabaja. Luego, un modelo de inserciones convierte
la consulta en una inserción vectorizada.
6. El modelo de lenguaje de orquestador descompone la consulta, o la tarea
principal, en el conjunto de subtareas necesarias para responder a la consulta. La
conversión de la tarea principal en una serie de subtareas más sencillas permite al
modelo de lenguaje abordar cada tarea con mayor precisión, lo que da como
resultado mejores respuestas con menos tendencia a imprecisiones.
7. Las subtareas de inserción y descompuestas resultantes se almacenan en la
memoria del modelo de LangChain.
a. Los fragmentos de documentos principales internos que son pertinentes para la
consulta se recuperan de la base de datos interna. Se hace una búsqueda rápida
de vectores para los principales documentos similares n que se almacenan
como vectores en Azure Cache for Redis.
b. En paralelo, se hace una búsqueda web de productos externos similares a través
del complemento del modelo de lenguaje de Bing Search para LangChain con
una consulta de búsqueda generada que redacta el modelo de lenguaje de
orquestador. Los resultados se almacenan en el componente de memoria del
modelo externo.
8. Se consulta la base de datos del almacén de vectores y devuelve las páginas de
información de productos de mayor pertinencia (fragmentos y referencias). El
sistema consulta la base de datos del almacén de vectores mediante la inserción
de consultas y devuelve las páginas de información de productos de mayor
pertinencia, junto con los fragmentos de texto y las referencias pertinentes. La
información pertinente se almacena en la memoria del modelo de LangChain.
9. El sistema usa la información almacenada en la memoria del modelo de LangChain
para crear una nueva solicitud que se envía al modelo de lenguaje de orquestador
para crear un informe de resumen en función de la consulta, la knowledge base
interna de la empresa y los resultados web externos.
10. Como opción, la salida del paso anterior se pasa a un filtro de moderación para
quitar la información no deseada. El informe final del producto competitivo se le
envía.

Componentes
Azure OpenAI Service proporciona acceso mediante la API de REST a los eficaces
modelos de lenguaje de OpenAI, incluidas las series de modelos de inserciones,
GPT-3, GPT-3.5 y GPT-4. Puede adaptar con facilidad estos modelos a la tarea
específica, como la generación de contenido, el resumen, la búsqueda semántica,
la conversión de texto a vectores de inserción semánticamente eficaces y la
traducción de lenguaje natural a código.

LangChain es un marco de código abierto de terceros que puede usar para


desarrollar aplicaciones con la tecnología de modelos de lenguaje. LangChain
facilita el trabajo y la creación con los modelos de inteligencia artificial al
proporcionar el marco de orquestación de canalización y las utilidades asistentes
para ejecutar canalizaciones eficaces y de varios modelos.
La memoria hace referencia a la captura de información. De manera
predeterminada, las cadenas de modelado de lenguaje (o las canalizaciones) y los
agentes funcionan sin estado. Controlan cada consulta entrante de manera
independiente, al igual que los modelos de lenguaje subyacentes y los modelos de
chat que usan. Pero en aplicaciones determinadas, como los bots de chat, es
fundamental conservar la información de las interacciones pasadas a corto y largo
plazo. En este ámbito es donde se aplica el concepto de "memoria". LangChain
proporciona herramientas de utilidad prácticas para administrar y manipular los
mensajes de chat pasados. Estas utilidades están diseñadas para ser modulares,
independientemente de su uso específico. LangChain también ofrece métodos sin
complicaciones para integrar estas utilidades en la memoria de las cadenas
mediante los modelos de lenguaje .

El kernel semántico es un kit de desarrollo de software (SDK) de código abierto


que puede usar para orquestar e implementar los modelos de lenguaje. Puede
explorar el kernel semántico como una posible alternativa a LangChain.

Detalles del escenario


Esta arquitectura usa una canalización de IA y aprendizaje automático, LangChain y
modelos de lenguaje para crear un análisis completo de la comparación del producto
con los productos similares de la competencia. La canalización consta de dos
componentes principales: una canalización por lotes y una canalización asincrónica en
tiempo real. Cuando se envía una consulta a la canalización en tiempo real, el modelo
de lenguaje de orquestador, a menudo GPT-4 o el modelo de lenguaje más eficaz
disponible, deriva un conjunto de tareas para responder a la pregunta. Estas subtareas
invocan otros modelos de lenguaje y API para extraer la base de datos interna de
productos de la empresa y la red pública de Internet para crear un informe que muestre
la posición competitiva de sus productos frente a los productos de la competencia.

Posibles casos de uso


Puede aplicar esta solución a los escenarios siguientes:

Compare la información interna del producto de la empresa que tiene una


knowledge base interna con los productos de la competencia que tienen
información que se recupera de una búsqueda web de Bing.
Haga una búsqueda de documentos y una recuperación de información.
Cree un bot de chat para uso interno que tenga una knowledge base interna y
también se mejore mediante una búsqueda web externa.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Brandon Cowen | Arquitecto sénior especialista en soluciones en la nube de IA

Otro colaborador:

Ashish Chauhun | Arquitecto sénior especialista en soluciones en la nube de IA

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Acelerador de procesos empresariales de Azure
Azure OpenAI
PyR de inserciones de Azure OpenAI
ChatGPT
Búsqueda empresarial con arquitectura de OpenAI
IA generativa para desarrolladores: Exploración de nuevas herramientas y API en
Azure OpenAI Service
LangChain
Memoria con modelos de lenguaje
Inicio rápido: Introducción a la generación de texto mediante Azure OpenAI
Service
Redis en Azure OpenAI
Revolucionar los datos empresariales con ChatGPT: aplicaciones de nueva
generación con Azure OpenAI y Azure Cognitive Search
Kernel semántico
Bases de datos vectoriales con Azure OpenAI

Recursos relacionados
Diseño de arquitectura de IA
Tipos de servicios de API de lenguaje
Resumen de documentos basados en
consultas
Artículo • 13/09/2023

En esta guía se muestra cómo realizar el resumen de documentos mediante el modelo


GPT-3 de Azure OpenAI. Describe conceptos relacionados con el proceso de resumen
de documentos, enfoques para el proceso y recomendaciones sobre qué modelo usar
para casos de uso específicos. Por último, presenta dos casos de uso, junto con
fragmentos de código de ejemplo, para ayudarle a comprender los conceptos clave.

Architecture
En el diagrama siguiente se muestra cómo una consulta de usuario captura los datos
pertinentes. El generador de resumen usa GPT-3 para generar un resumen del texto del
documento más relevante. En esta arquitectura, el punto de conexión GPT-3 se usa para
resumir el texto.

Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de trabajo
Este flujo de trabajo se produce casi en tiempo real.

1. Un usuario envía una consulta. Por ejemplo, un empleado de una empresa de


fabricación busca información específica sobre una pieza de máquina en el portal
de empresa. La consulta se procesa primero mediante un reconocedor de
intenciones como el reconocimiento del lenguaje conversacional. Las entidades o
conceptos pertinentes de la consulta de usuario se usan para seleccionar y
presentar un subconjunto de documentos de un knowledge base que se rellena sin
conexión (en este caso, la base de datos knowledge base de la empresa). La salida
se introduce en un motor de búsqueda y análisis como Azure Elastic Search , que
filtra los documentos pertinentes para devolver un conjunto de documentos de
cientos en lugar de miles o decenas de miles.
2. La consulta de usuario se vuelve a aplicar en un punto de conexión de búsqueda
como Azure Cognitive Search para clasificar el conjunto de documentos
recuperado en orden de relevancia (clasificación de páginas). Se selecciona el
documento con la clasificación más alta.
3. El documento seleccionado se examina en busca de oraciones pertinentes. Este
proceso de examen usa un método grueso, como extraer todas las oraciones que
contienen la consulta del usuario o un método más sofisticado, como las
incrustaciones GPT-3, para buscar material semánticamente similar en el
documento.
4. Una vez extraído el texto pertinente, el punto de conexión de finalizaciones de
GPT-3 con el generador de resumen resume el contenido extraído. En este
ejemplo, se devuelve el resumen de detalles importantes sobre la parte
especificada por el empleado en la consulta.

Este artículo se centra en el componente de resumen de la arquitectura.

Detalles del escenario


Las empresas suelen crear y mantener una knowledge base sobre procesos
empresariales, clientes, productos e información. Sin embargo, devolver contenido
relevante basado en una consulta de usuario de un conjunto de datos grande suele ser
difícil. El usuario puede consultar el knowledge base y buscar un documento aplicable
mediante métodos como la clasificación de páginas, pero profundizar más en el
documento para buscar información relevante normalmente se convierte en una tarea
manual que tarda tiempo. Sin embargo, con los avances recientes en los modelos de
transformador de base como el desarrollado por OpenAI, el mecanismo de consulta se
ha refinado mediante métodos de búsqueda semántica que usan información de
codificación como incrustaciones para encontrar información relevante. Estos
desarrollos permiten resumir el contenido y presentarlo al usuario de forma concisa y
concreta.

El resumen de documentos es el proceso de creación de resúmenes a partir de grandes


volúmenes de datos, a la vez que se mantienen elementos informativos importantes y
contenido de valor. En este artículo se muestra cómo usar las funcionalidades de GPT-3
de Azure OpenAI Service para un caso de uso específico. GPT-3 es una herramienta
eficaz que puede usarse para una gran variedad de tareas de procesamiento de
lenguaje natural, como traducciones de idiomas, bots de chat, hacer resúmenes de
textos y crear contenido. Los métodos y la arquitectura que se describen aquí son
personalizables y se pueden aplicar a muchos conjuntos de datos.

Posibles casos de uso


El resumen de documentos se aplica a cualquier dominio organizativo que requiera que
los usuarios busquen grandes cantidades de datos de referencia y generen un resumen
que describa concisamente la información pertinente. Los dominios típicos incluyen
organizaciones legales, financieras, de noticias, sanitarias y académicas. Los posibles
casos de uso para hacer resúmenes son:

Generar resúmenes para resaltar información clave sobre noticias, informes


financieros, etc.
Crear una referencia rápida para hacer referencia a un argumento, por ejemplo, en
procedimientos legales.
Proporcionar contexto para la tesis de un documento, como en la configuración
académica.
Escribir reseñas literarias.
Anotar una bibliografía.

Algunas ventajas de usar un servicio de resumen para cualquier caso de uso son:

Se reduce el tiempo de lectura.


Búsquedas más eficaces en grandes volúmenes de datos dispares.
Menor probabilidad de sesgo de técnicas de resumen humano. (Esta ventaja
depende de la parcialidad de los datos de entrenamiento).
Permitir que los empleados y los usuarios se centren en un análisis más detallado.

Aprendizaje en contexto
El servicio OpenAI de Azure usa un modelo de finalización generativa. El modelo usa
instrucciones de lenguaje natural para identificar la tarea solicitada y la aptitud
requerida, un proceso conocido como ingeniería de solicitud. Al usar este enfoque, la
primera parte de la solicitud incluye instrucciones de lenguaje natural o ejemplos de la
tarea que se quiere llevar a cabo. El modelo termina la terea prediciendo el texto
siguiente más probable. Esta técnica se conoce como aprendizaje en contexto.

Con el aprendizaje en contexto, los modelos de lenguaje pueden aprender tareas a


partir de unos pocos ejemplos. El modelo de lenguaje se proporciona con una solicitud
que contiene una lista de pares de entrada-salida que determinan una tarea y prosigue
con una entrada de prueba. El modelo realiza una predicción mediante el
acondicionamiento en la solicitud y la predicción de los siguientes tokens.

Hay tres enfoques principales para el aprendizaje en contexto: el aprendizaje zero-shot,


el aprendizaje few-shot y los métodos de ajuste preciso que cambian y mejoran la salida.
Estos enfoques varían en función de la cantidad de datos específicos de la tarea que se
proporcionan al modelo.

Zero-shot: En este enfoque, no se proporciona ningún ejemplo al modelo. Solo se


proporciona la solicitud de la tarea como entrada. En el aprendizaje zero-shot, el
modelo depende de los conceptos entrenados previamente. Responde solo en función
de los datos en los que está entrenado. No comprende necesariamente el significado
semántico, pero tiene un conocimiento estadístico que se basa en todo lo que se
aprende de Internet sobre lo que se debe generar a continuación. El modelo intenta
relacionar la tarea dada con las categorías existentes que ya ha aprendido y responde
en consecuencia.

Few-shot: En este caso, un usuario incluye varios ejemplos en la solicitud de llamada


que muestran el formato y el contenido de respuesta que espera. El modelo se
proporciona con un conjunto de datos de entrenamiento muy pequeño para guiar sus
predicciones. El entrenamiento con un pequeño conjunto de ejemplos permite que el
modelo generalice y comprenda las tareas no relacionadas pero no vistos previamente.
La creación de algunos ejemplos puede ser difícil porque necesita articular con precisión
la tarea que desea que el modelo realice. Un problema observado habitualmente es que
los modelos son sensibles al estilo de escritura que se usa en los ejemplos de
entrenamiento, especialmente los modelos pequeños.

Ajuste preciso: El ajuste preciso es un proceso de adaptación de modelos a sus propios


conjuntos de datos. En este paso de personalización, puede mejorar el proceso
haciendo lo siguiente:

Incluir un conjunto de datos más grande (al menos 500 ejemplos).


Usar técnicas de optimización tradicionales con la propiedad de retropropagación
para reajustar los pesos del modelo. Estas técnicas permiten obtener resultados de
mayor calidad que los que los enfoques zero-shot o few-shot proporcionan por sí
mismos.
Mejorar el enfoque de pocos pasos mediante el entrenamiento de los pesos del
modelo con avisos específicos y una estructura concreta. Esta técnica permite
obtener mejores resultados en un mayor número de tareas sin necesidad de
proporcionar ejemplos en la solicitud. El resultado es menos texto enviado y
menos tokens.
Al crear una solución en GPT-3, el esfuerzo principal es el diseño y el contenido de la
solicitud de entrenamiento.

Ingeniería rápida
La ingeniería rápida es una materia de procesamiento de lenguaje natural que implica la
detección de entradas que producen salidas deseables o útiles. Cuando un usuario hace
una solicitud al sistema, la forma en que se expresa el contenido puede cambiar
drásticamente la salida. El diseño de la solicitud es el proceso más significativo para
garantizar que el modelo GPT-3 proporciona una respuesta adaptada al contexto y a lo
que se quiere.

La arquitectura descrita en este artículo usa el punto de conexión de finalizaciones para


el hacer resumen. El punto de conexión de finalizaciones es una API de Azure Cognitive
Services que acepta un mensaje parcial o contexto como entrada y devuelve una o
varias salidas que continúan o completan el texto de entrada. Un usuario proporciona
texto de entrada a modo de solicitud y el modelo genera un texto que intenta coincidir
con el contexto o patrón proporcionado. El diseño de la solicitud depende en gran
medida de la tarea y los datos. La incorporación de ingeniería rápida en un conjunto de
datos de ajuste preciso e investigación de lo que funciona mejor antes de usar el
sistema en producción requiere un tiempo y un esfuerzo significativos.

Diseño de la solicitud
Los modelos GPT-3 pueden realizar varias tareas, por lo que debe ser explícito en los
objetivos del diseño. Los modelos calculan la salida deseada en función de la solicitud
proporcionada.

Por ejemplo, si entra las palabras "dame una lista de razas de gatos", el modelo no
asumirá automáticamente que le pide una lista de razas de gatos. Podría estar
pidiéndole al modelo que continuara una conversación en la que las primeras palabras
fueran "Dame una lista de razas de gatos" y las siguientes "y te diré cuáles me gustan".
Si el modelo solo asumiera que quiere una lista de gatos, no sería tan bueno en la
creación de contenidos, en la clasificación o en otras tareas.

Como se describe en Aprenda a generar o manipular texto, hay tres directrices básicas
para crear solicitudes:

Mostrar y contar Mejore la claridad sobre lo que desea proporcionando


instrucciones, ejemplos o una combinación de estos dos. Si quiere que el modelo
clasifique una lista de elementos por orden alfabético o que clasifique un párrafo
por opinión, muéstrele que eso es lo que quiere.
Proporcionar datos de calidad. Si va a crear un clasificador o quiere que un
modelo siga un patrón, asegúrese de proporcionar suficientes ejemplos. También
debe revisar estos ejemplos. Normalmente, el modelo puede reconocer errores
ortográficos y devolver una respuesta, pero podría suponer que los errores
ortográficos son intencionales, lo que puede afectar a la respuesta.
Compruebe la configuración. La configuración de temperature y el top_p controla
cómo de determinante es el modelo a la hora de generar una respuesta. Si
pregunta para obtener una respuesta que solo tenga una respuesta correcta,
configure estas opciones en un nivel inferior. Si quiere respuestas más diversas, es
posible que quiera configurar las opciones en un nivel superior. Un error común es
suponer que estas configuraciones son controles de "inteligencia" o "creatividad".

Alternativas
El reconocimiento del lenguaje conversacional de Azure es una alternativa al generador
de resumen que se usa aquí. El propósito principal de la comprensión del lenguaje
conversacional es crear modelos que predigan la intención general de una expresión
entrante, extraigan información valiosa de ella y generen una respuesta que se alinee
con el tema. Resulta útil en las aplicaciones de bot de chat cuando puede hacer
referencia a un knowledge base existente para encontrar la sugerencia que mejor se
corresponda con la expresión entrante. No ayuda mucho cuando el texto de entrada no
requiere una respuesta. La intención de esta arquitectura es generar un breve resumen
de los contenidos textuales largos. La esencia del contenido se describe de forma
concisa y se representa toda la información importante.

Escenarios de ejemplo

Caso de uso: Resumen de documentos legales


En este caso de uso, se resume una colección de proyectos legislativos aprobados a
través del Congreso. El resumen está ajustado para acercarlo a un resumen generado
por personas, lo que se conoce como resumen de verdad fundamentada.

La ingeniería rápida zero-shot se usa para resumir las facturas. A continuación, se


modifican la solicitud y la configuración para generar diferentes resúmenes como
salidas.

Dataset
El primer conjunto de datos es el conjunto de datos BillSum para resumir las facturas
estatales del Congreso de Estados Unidos y California. En este ejemplo solo se usan las
leyes del Congreso. Los datos se dividen en 18.949 facturas que se usarán para el
entrenamiento y 3.269 facturas que se usarán para las pruebas. BillSum se centra en la
legislación de longitud media que tiene entre 5.000 y 20.000 caracteres. Está limpiado y
preprocesado.

Para obtener más información sobre el conjunto de datos y las instrucciones para su
descarga, vea FiscalNote /BillSum .

Esquema BillSum

El esquema del conjunto de datos BillSum incluye:

bill_id . Identificador del error.

text . Texto de la factura.


summary . Un resumen escrito por una persona de la factura.

title . Título de la factura.


text_len . Longitud del carácter de la entidad.

sum_len . Longitud del carácter del resumen de la factura.

En este caso de uso, se usan los elementos text y summary .

Zero-shot
El objetivo aquí es enseñar el modelo GPT-3 para aprender la entrada de estilo de
conversación. El punto de conexión de finalizaciones se usa para crear una API de Azure
OpenAI y una solicitud que genera el mejor resumen posible de la factura. Es
importante crear cuidadosamente las solicitudes para que se extraiga información
relevante. Para extraer resúmenes generales de una factura determinada, se usa el
siguiente formato.

Prefijo: lo que desea que haga.


Introducción al contexto: contexto.
Contexto: la información necesaria para proporcionar una respuesta. En este caso,
el texto que se va a resumir.
Sufijo: forma prevista de la respuesta. Por ejemplo, una respuesta, una finalización
o un resumen.

Python
API_KEY = # SET YOUR OWN API KEY HERE
RESOURCE_ENDPOINT = " -- # SET A LINK TO YOUR RESOURCE ENDPOINT -- "

openai.api_type = "azure"
openai.api_key = API_KEY
openai.api_base = RESOURCE_ENDPOINT
openai.api_version = "2022-12-01-preview"
prompt_i = 'Summarize the legislative bill given the title and the
text.\n\nTitle:\n'+" ".join([normalize_text(bill_title_1)])+ '\n\nText:\n'+
" ".join([normalize_text(bill_text_1)])+'\n\nSummary:\n'
response = openai.Completion.create(
engine=TEXT_DAVINCI_001
prompt=prompt_i,
temperature=0.4,
max_tokens=500,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
stop=['\n\n###\n\n'], # The ending token used during inference. Once it
reaches this token, GPT-3 knows the completion is over.
best_of=1
)
= 1

Texto original:SAMPLE_BILL_1 .

Verdad fundamentada: Ley Nacional de Incentivos Fiscales a la Educación Científica


para Empresas en 2007: Modifica el Código de Rentas Internas para permitir un crédito
fiscal empresarial general para las contribuciones de bienes o servicios a las escuelas
primarias y secundarias y para la formación del profesorado con el fin de promover la
educación en ciencia, tecnología, ingeniería o matemáticas.

Resumen del modelo zero-shot: La Ley nacional de incentivos fiscales para la educación
científica para empresas de 2007 crearía un nuevo crédito fiscal para empresas que
hagan contribuciones a la ciencia, la tecnología, la ingeniería y la educación matemática
(STEM) en el nivel de escuela primaria y secundaria. El crédito sería igual al 100 por
ciento de las contribuciones STEM calificadas del contribuyente para el año sujeto
pasivo. Las contribuciones de STEM calificadas incluyen contribuciones a la escuela
STEM, gastos de externificación de maestros DE STEM y gastos de formación de
profesores de STEM.

Observaciones: El modelo de captura cero genera un resumen concisa y generalizado


del documento. Es similar a la verdad fundamentada en escritos por personas y captura
los mismos puntos clave. Se organiza como un resumen escrito por personas y
permanece centrado en el punto.
Ajuste preciso
El ajuste preciso mejora el aprendizaje zero-shot mediante el entrenamiento en más
ejemplos de los que puede incluir en la solicitud, por lo que se obtienen mejores
resultados en un mayor número de tareas. Después de ajustar un modelo, no es
necesario proporcionar ejemplos en la solicitud. El ajuste preciso ahorra dinero al
reducir el número de tokens necesarios y permite solicitudes de menor latencia.

En un nivel alto, el ajuste preciso incluye estos pasos:

Preparar y cargar los datos de entrenamiento.


Entrenar un nuevo modelo ajustado.
Usar el modelo con ajuste preciso.

Para más información, consulte Personalización de un modelo con el servicio OpenAI de


Azure.

Preparar datos para el ajuste preciso

Este paso permite mejorar el modelo zero-shot mediante la incorporación de ingeniería


rápida en las solicitudes que se usan para el ajuste preciso. Esto ayuda a proporcionar
instrucciones al modelo sobre cómo acercarse a los pares de solicitud y finalización. En
un modelo de ajuste preciso, las solicitudes proporcionan un punto de partida del que
el modelo puede aprender y usarse para realizar predicciones. Este proceso permite que
el modelo comience con una comprensión básica de los datos, lo que se puede mejorar
gradualmente a medida que el modelo se expone a más datos. Además, las solicitudes
pueden ayudar al modelo a identificar patrones en los datos que, de lo contrario,
podrían perderse.

La misma estructura de ingeniería de solicitudes también se usa durante la inferencia,


una vez finalizado el entrenamiento del modelo, de modo que el modelo reconozca el
comportamiento que ha aprendido durante el entrenamiento y pueda generar
finalizaciones como se indica.

Python

#Adding variables used to design prompts consistently across all examples


#You can learn more here: https://learn.microsoft.com/azure/cognitive-
services/openai/how-to/prepare-dataset

LINE_SEP = " \n "


PROMPT_END = " [end] "
#Injecting the zero-shot prompt into the fine-tune dataset
def stage_examples(proc_df):
proc_df['prompt'] = proc_df.apply(lambda x:"Summarize the legislative
bill. Do not make up facts.\n\nText:\n"+"
".join([normalize_text(x['prompt'])])+'\n\nSummary:', axis=1)
proc_df['completion'] = proc_df.apply(lambda x:"
"+normalize_text(x['completion'])+PROMPT_END, axis=1)

return proc_df

df_staged_full_train = stage_examples(df_prompt_completion_train)
df_staged_full_val = stage_examples(df_prompt_completion_val)

Ahora que los datos están almacenados provisionalmente para el ajuste preciso en el
formato adecuado, puede empezar a ejecutar los comandos de ajuste.

A continuación, puede usar la CLI de OpenAI para ayudar con algunos de los pasos de
preparación de datos. La herramienta OpenAI valida los datos, proporciona sugerencias
y vuelve a formatear los datos.

Python

openai tools fine_tunes.prepare_data -f


data/billsum_v4_1/prompt_completion_staged_train.csv

openai tools fine_tunes.prepare_data -f


data/billsum_v4_1/prompt_completion_staged_val.csv

Ajuste del conjunto de datos

Python

payload = {
"model": "curie",
"training_file": " -- INSERT TRAINING FILE ID -- ",
"validation_file": "-- INSERT VALIDATION FILE ID --",
"hyperparams": {
"n_epochs": 1,
"batch_size": 200,
"learning_rate_multiplier": 0.1,
"prompt_loss_weight": 0.0001
}
}

url = RESOURCE_ENDPOINT + "openai/fine-tunes?api-version=2022-12-01-preview"


r = requests.post(url,
headers={
"api-key": API_KEY,
"Content-Type": "application/json"
},
json = payload
)
data = r.json()
print(data)
fine_tune_id = data['id']
print('Endpoint Called: {endpoint}'.format(endpoint = url))
print('Status Code: {status}'.format(status= r.status_code))
print('Fine tuning job ID: {id}'.format(id=fine_tune_id))
print('Response Information \n\n {text}'.format(text=r.text))

Evaluación del modelo con ajuste preciso

En esta sección se muestra cómo evaluar el modelo con ajuste preciso.

Python

#Run this cell to check status


url = RESOURCE_ENDPOINT + "openai/fine-tunes/<--insert fine-tune id-->?api-
version=2022-12-01-preview"
r = requests.get(url,
headers={
"api-key": API_KEY,
"Content-Type": "application/json"
}
)

data = r.json()
print('Endpoint Called: {endpoint}'.format(endpoint = url))
print('Status Code: {status}'.format(status= r.status_code))
print('Fine tuning ID: {id}'.format(id=fine_tune_id))
print('Status: {status}'.format(status = data['status']))
print('Response Information \n\n {text}'.format(text=r.text))

Texto original:SAMPLE_BILL_1 .

Verdad fundamentada: Ley Nacional de Incentivos Fiscales a la Educación Científica


para Empresas en 2007: Modifica el Código de Rentas Internas para permitir un crédito
fiscal empresarial general para las contribuciones de bienes o servicios a las escuelas
primarias y secundarias y para la formación del profesorado con el fin de promover la
educación en ciencia, tecnología, ingeniería o matemáticas.

Resumen del modelo con ajuste preciso: Este proyecto de ley proporciona un crédito
fiscal para las contribuciones a las escuelas primarias y secundarias que benefician a la
ciencia, la tecnología, la ingeniería y la educación matemática. El crédito es igual al 100%
de las contribuciones STEM calificadas realizadas por los contribuyentes durante el año
sujeto pasivo. Las contribuciones de STEM calificadas incluyen: (1) contribuciones a la
escuela STEM, (2) gastos de externificación de maestros DE STEM y (3) gastos de
formación de profesores de STEM. El presupuesto también ofrece un crédito fiscal para
las contribuciones a las escuelas primarias y secundarias que benefician a la ciencia, la
tecnología, la ingeniería o la educación matemática. El crédito es igual al 100% de las
contribuciones del servicio STEM calificadas realizadas por los contribuyentes durante el
año sujeto pasivo. Las contribuciones calificadas a los servicios STEM incluyen: (1)
contribuciones de servicio STEM pagadas o incurridas durante el año sujeto pasivo para
los servicios prestados en el Estados Unidos o en una base militar fuera de la Estados
Unidos; y (2) propiedad de inventario STEM aportada durante el año sujeto pasivo que
utiliza una organización educativa ubicada en el Estados Unidos o en una base militar
fuera del Estados Unidos para proporcionar educación en los grados K-12 en ciencia,
tecnología, ingeniería o matemáticas.

Para obtener los resultados de resumir algunas facturas más mediante los enfoques
zero-shot y ajuste preciso, consulte Resultados del conjunto de datos BillSum .

Observaciones: En general, el modelo ajustado hace un excelente trabajo de resumir la


factura. Captura la jerga específica del dominio y los puntos clave que se representan,
pero no se explican en la verdad fundamentada en escritos por personas. Se diferencia
del modelo de captura cero proporcionando un resumen más detallado y completo.

Caso de uso: informes financieros


En este caso de uso, la ingeniería rápida de disparo cero se usa para crear resúmenes de
informes financieros. A continuación, se usa un resumen del enfoque de resúmenes para
generar los resultados.

Resumen del enfoque de resúmenes


Al escribir mensajes, el total de solicitudes y finalizaciones resultantes de GPT-3 debe
incluir menos de 4000 tokens, por lo que se ha de limitar a un par de páginas de texto
de resumen. En el caso de los documentos que normalmente contienen más de 4000
tokens (aproximadamente 3000 palabras), puede usar un resumen del enfoque de
resúmenes . Cuando se usa este enfoque, todo el texto se divide primero para cumplir
las restricciones de token. A continuación, se derivan resúmenes de los textos más
cortos. En el paso siguiente, se crea un resumen de los resúmenes. En este caso de uso
se muestra el resumen del enfoque de resúmenes con un modelo zero-shot. Esta
solución es útil para documentos largos. Además, en esta sección se describe cómo las
diferentes prácticas de ingeniería rápida pueden variar los resultados.

7 Nota

El ajuste preciso no se aplica en el caso de uso financiero porque no hay suficientes


datos disponibles para completar ese paso.
Dataset
El conjunto de datos para este caso de uso es técnico e incluye métricas cuantitativas
clave para evaluar el rendimiento de una empresa.

El conjunto de datos financieros incluye:

url : la dirección URL del informe financiero.

pages : la página del informe que contiene información clave que se va a resumir
(indizada 1).
completion : el resumen de la verdad fundamentada del informe.
comments : cualquier información adicional necesaria.

En este caso de uso, se resumirá el informe financiero de Rathbone , del conjunto de


datos. Rathbone es una empresa individual de gestión de inversiones y riquezas para
clientes privados. El informe destaca el rendimiento de Rathbone en 2020 y menciona
métricas de rendimiento como beneficios, FUMA e ingresos. La información clave que se
va a resumir está en la página 1 del PDF.

Python

API_KEY = # SET YOUR OWN API KEY HERE


RESOURCE_ENDPOINT = "# SET A LINK TO YOUR RESOURCE ENDPOINT"

openai.api_type = "azure"
openai.api_key = API_KEY
openai.api_base = RESOURCE_ENDPOINT
openai.api_version = "2022-12-01-preview"
name = os.path.abspath(os.path.join(os.getcwd(), '---INSERT PATH OF LOCALLY
DOWNLOADED RATHBONES_2020_PRELIM_RESULTS---')).replace('\\', '/')

pages_to_summarize = [0]
# Using pdfminer.six to extract the text
# !pip install pdfminer.six
from pdfminer.high_level import extract_text
t = extract_text(name
, page_numbers=pages_to_summarize
)
print("Text extracted from " + name)
t

Enfoque zero-shot

Al usar el enfoque de disparo cero, no se proporcionan ejemplos resueltos. Solo se


proporciona el comando y la entrada sin resolver. En este ejemplo, se usa el modelo
Instruct. Este modelo está diseñado específicamente para tomar una instrucción y
registrar una respuesta para él sin contexto adicional, que es ideal para el enfoque zero-
shot.

Después de extraer el texto, puede usar varias solicitudes para ver cómo influyen en la
calidad del resumen:

Python

#Using the text from the Rathbone's report, you can try different prompts to
see how they affect the summary

prompt_i = 'Summarize the key financial information in the report using


qualitative metrics.\n\nText:\n'+" ".join([normalize_text(t)])+'\n\nKey
metrics:\n'

response = openai.Completion.create(
engine="davinci-instruct",
prompt=prompt_i,
temperature=0,
max_tokens=2048-int(len(prompt_i.split())*1.5),
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)
print(response.choices[0].text)
>>>
- Funds under management and administration (FUMA) reached £54.7 billion at
31 December 2020, up 8.5% from £50.4 billion at 31 December 2019
- Operating income totalled £366.1 million, 5.2% ahead of the prior year
(2019: £348.1 million)
- Underlying1 profit before tax totalled £92.5 million, an increase of 4.3%
(2019: £88.7 million); underlying operating margin of 25.3% (2019: 25.5%)

# Different prompt

prompt_i = 'Extract most significant money related values of financial


performance of the business like revenue, profit, etc. from the below text
in about two hundred words.\n\nText:\n'+"
".join([normalize_text(t)])+'\n\nKey metrics:\n'

response = openai.Completion.create(
engine="davinci-instruct",
prompt=prompt_i,
temperature=0,
max_tokens=2048-int(len(prompt_i.split())*1.5),
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)
print(response.choices[0].text)
>>>
- Funds under management and administration (FUMA) grew by 8.5% to reach
£54.7 billion at 31 December 2020
- Underlying profit before tax increased by 4.3% to £92.5 million,
delivering an underlying operating margin of 25.3%
- The board is announcing a final 2020 dividend of 47 pence per share, which
brings the total dividend to 72 pence per share, an increase of 2.9% over
2019

Desafíos

Como puede ver, el modelo podría generar métricas que no se mencionan en el


texto original.

Solución propuesta: puede resolver este problema cambiando la solicitud.

El resumen podría centrarse en una sección del artículo y descuidar otra


información importante.

Solución propuesta: puede probar un resumen del enfoque de resúmenes. Divida


el informe en secciones y cree resúmenes más pequeños que puede resumir para
crear el resumen de salida.

Este código implementa las soluciones propuestas:

Python

# Body of function

from pdfminer.high_level import extract_text

text = extract_text(name
, page_numbers=pages_to_summarize
)

r = splitter(200, text)

tok_l = int(2000/len(r))
tok_l_w = num2words(tok_l)

res_lis = []
# Stage 1: Summaries
for i in range(len(r)):
prompt_i = f'Extract and summarize the key financial numbers and
percentages mentioned in the Text in less than {tok_l_w}
words.\n\nText:\n'+normalize_text(r[i])+'\n\nSummary in one paragraph:'

response = openai.Completion.create(
engine=TEXT_DAVINCI_001,
prompt=prompt_i,
temperature=0,
max_tokens=tok_l,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)
t = trim_incomplete(response.choices[0].text)
res_lis.append(t)

# Stage 2: Summary of summaries


prompt_i = 'Summarize the financial performance of the business like
revenue, profit, etc. in less than one hundred words. Do not make up values
that are not mentioned in the Text.\n\nText:\n'+"
".join([normalize_text(res) for res in res_lis])+'\n\nSummary:\n'

response = openai.Completion.create(
engine=TEXT_DAVINCI_001,
prompt=prompt_i,
temperature=0,
max_tokens=200,
top_p=1.0,
frequency_penalty=0.5,
presence_penalty=0.5,
best_of=1
)

print(trim_incomplete(response.choices[0].text))

La solicitud de entrada incluye el texto original del informe financiero de Rathbone para
un año específico.

Verdad fundamentada: Rathbones ha notificado ingresos de £366,1m en 2020, hasta


£348,1m en 2019, y un aumento del beneficio subyacente antes de impuestos de hasta
£92,5m desde £88,7m. Los activos bajo gestión aumentaron el 8,5% de £50,4bn a
£54,7bn, con activos en gestión de la riqueza aumentando 4,4% a £44,9bn. Los flujos
netos fueron de 2,100 millones de libras en 2020 en comparación con los 600 millones
de libras del año anterior, impulsados principalmente por 1,500 millones de libras en su
negocio de fondos y 400 millones debido a la transferencia de activos de Barclays
Wealth.

Resumen zero-shot de los resúmenes de salida: Rathbones entregó un fuerte


desempeño en 2020, con fondos bajo gestión y administración (FUMA) creciendo un
8,5% para alcanzar £54,7 mil millones al final del año. El beneficio subyacente antes del
impuesto aumentó un 4,3% a 92,5 millones de libras, lo que proporciona un margen
operativo subyacente del 25,3%. Los flujos netos totales en el grupo eran de 2,100
millones de libras, lo que representa una tasa de crecimiento del 4,2%. El beneficio antes
de impuestos del año fue de 43,8 millones de libras, con beneficios básicos por acción
que totalizaron 49,6p. Los ingresos operativos del año fueron del 5,2% por delante del
año anterior, lo que totalizó 366,1 millones de libras.

Observaciones: El resumen del enfoque de resúmenes genera un gran conjunto de


resultados que resuelve los desafíos encontrados inicialmente cuando se proporcionó
un resumen más detallado y completo. Hace un gran trabajo de capturar el jerga
específico del dominio y los puntos clave, que se representan en la verdad
fundamentada, pero no se explican bien.

El modelo zero-shot funciona bien para resumir documentos estándar. Si los datos son
específicos del sector o específicos del tema, contiene jerga específica del sector o
requiere conocimientos específicos del sector, el ajuste preciso funciona mejor. Por
ejemplo, este enfoque funciona bien para revistas médicas, formularios legales y
estados financieros. Puede usar el enfoquefew-shot en lugar de zero-shot para
proporcionar al modelo ejemplos de cómo formular un resumen, por lo que puede
aprender a imitar el resumen proporcionado. Para el enfoque zero-shot, esta solución
no vuelve a entrenar el modelo. El conocimiento del modelo se basa en el
entrenamiento GPT-3. GPT-3 está entrenado con casi todos los datos disponibles de
Internet. Funciona bien para las tareas que no requieren conocimientos específicos.

Para obtener los resultados del uso del resumen de resumen de resúmenes sobre
algunos informes del conjunto de datos financiero, consulte Resultados para resumen
de resúmenes .

Recomendaciones
Hay muchas maneras de abordar el resumen mediante GPT-3, incluyendo el zero-shot,
el few-shot y el ajuste preciso. Los enfoques generan resúmenes de calidad variable.
Puede explorar qué enfoque genera los mejores resultados para su caso de uso previsto.

En función de las observaciones sobre las pruebas presentadas en este artículo, estas
son algunas recomendaciones:

Zero-shot es mejor para los documentos estándar que no requieren


conocimientos de dominio específicos. Este enfoque intenta capturar toda la
información de alto nivel de una manera concisa, similar a la humana y
proporciona un resumen de línea base de alta calidad. Zero-shot crea un resumen
de alta calidad para el conjunto de datos legal que se usa en las pruebas de este
artículo.
Few-shot es difícil de usar para resumir documentos largos porque se supera la
limitación del token cuando se proporciona un texto de ejemplo. En su lugar,
puede usar un resumen zero-shot del enfoque de resúmenes para documentos
largos o aumentar el conjunto de datos para habilitar el ajuste preciso. El resumen
del enfoque de resúmenes genera excelentes resultados para el conjunto de datos
financiero que se usa en estas pruebas.
El ajuste preciso resulta más útil para casos de uso técnicos o específicos de
dominio cuando la información no está disponible fácilmente. Para lograr los
mejores resultados con este enfoque, necesita un conjunto de datos que contenga
un par de miles de muestras. El ajuste preciso captura el resumen de algunas
maneras con plantilla, intentando cumplir con la forma en que el conjunto de
datos presenta los resúmenes. Para el conjunto de datos legal, este enfoque
genera una mayor calidad de resumen que la creada por el enfoque zero-shot.

Evaluación del resumen


Hay varias técnicas para evaluar el rendimiento de los modelos de resumen.

Estas son algunas:

ROUGE (Subestudio orientado a la recuperación para la evaluación de Gisting). Esta


técnica incluye medidas para determinar automáticamente la calidad de un resumen
comparándolo con resúmenes ideales creados por humanos. Las medidas cuentan el
número de unidades superpuestas, como n-gramas, secuencias de palabras y pares de
palabras, entre el resumen generado por el equipo que se evalúa y los resúmenes
ideales.

Este es un ejemplo:

Python

reference_summary = "The cat ison porch by the tree"


generated_summary = "The cat is by the tree on the porch"
rouge = Rouge()
rouge.get_scores(generated_summary, reference_summary)
[{'rouge-1': {'r':1.0, 'p': 1.0, 'f': 0.999999995},
'rouge-2': {'r': 0.5714285714285714, 'p': 0.5, 'f': 0.5333333283555556},
'rouge-1': {'r': 0.75, 'p': 0.75, 'f': 0.749999995}}]

BERTScore. Esta técnica calcula las puntuaciones de similitud mediante la alineación de


resúmenes generados y de referencia en un nivel de token. Las alineaciones de tokens
se calculan de forma expanstina para maximizar la similitud coseno entre las
incrustaciones de tokens contextualizadas de BERT.

Este es un ejemplo:

Python
import torchmetrics
from torchmetrics.text.bert import BERTScore
preds = "You should have ice cream in the summer"
target = "Ice creams are great when the weather is hot"
bertscore = BERTScore()
score = bertscore(preds, target)
print(score)

Matriz de similitud. Una matriz de similitud es una representación de las similitudes


entre diferentes entidades en una evaluación de resumen. Puede usarlo para comparar
distintos resúmenes del mismo texto y medir su similitud. Se representa mediante una
cuadrícula bidimensional, donde cada celda contiene una medida de la similitud entre
dos resúmenes. Puede medir la similitud mediante varios métodos, como la similitud de
coseno, la similitud de Jaccard y la distancia de edición. A continuación, use la matriz
para comparar los resúmenes y determinar cuál es la representación más precisa del
texto original.

Este es un comando de ejemplo que obtiene la matriz de similitud de una comparación


BERTScore de dos oraciones similares:

Python

bert-score-show --lang en -r "The cat is on the porch by the tree"


-c "The cat is by the tree on the porch"
-f out.png

La primera frase, "el gato está en el porche junto al árbol", se conoce como candidato.
La segunda frase se conoce como referencia. El comando usa BERTScore para comparar
las oraciones y generar una matriz.

Esta matriz siguiente muestra la salida generada por el comando anterior:


Para obtener más información, vea SummEval: reevaluación de la evaluación de
resúmenes . Para obtener un kit de herramientas de PyPI para resúmenes, consulte
summ-eval 0.892 .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Noa Ben-Efraim | Científica orientada a datos &

Otros colaboradores:

Mick Alberts | Escritor técnico


Rania Bayoumy | Administradora de programas técnicos sénior
Harsha Viswanath | Directora principal de ciencias aplicadas

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Azure OpenAI: documentación, inicios rápidos y referencia de API
¿Cuáles son las intenciones en LUIS?
Reconocimiento del lenguaje conversacional
Jupyter Notebook con detalles técnicos y ejecución de este caso de uso

Recursos relacionados
Diseño de arquitectura de IA
Elección de una tecnología de servicios cognitivos de Microsoft
Tecnología de procesamiento de lenguaje natural
Resumen de conversación
Servicios de Azure AI

La mayoría de las empresas proporcionan soporte de servicio al cliente para ayudar a los
clientes con las consultas de productos, la solución de problemas y el mantenimiento o
actualización de características o del propio producto. Para proporcionar una resolución
satisfactoria, los especialistas de atención al cliente deben responder rápidamente y con
información precisa. OpenAI puede ayudar a las organizaciones con soporte técnico al
cliente de varias maneras.

En esta guía se describe cómo generar los resúmenes de las interacciones entre el
agente y el cliente mediante el modelo GPT-3 de Azure OpenAI. Contiene una
arquitectura de ejemplo de un extremo a otro que ilustra los componentes clave
implicados en la obtención de un resumen de una entrada de texto. La generación de la
entrada de texto está fuera del ámbito de esta guía. El objetivo de esta guía es describir
el proceso de implementación del resumen de un conjunto de conversaciones de
ejemplo entre el agente y el cliente y analizar los resultados de varios enfoques para la
creación del resumen.

Escenarios de conversación
Bots de chat de autoservicio (totalmente automatizados). En este escenario, los
clientes pueden interactuar con un bot de chat con tecnología de GPT-3 y
entrenado con datos específicos del sector. El bot de chat puede comprender las
preguntas de los clientes y responder adecuadamente en función de las respuestas
aprendidas de una knowledge base.
Bot de chat con intervención del agente (semiautomatizado). Las preguntas
planteadas por los clientes a veces son complejas y requieren de intervención
humana. En tales casos, GPT-3 puede proporcionar un resumen de la conversación
entre el bot de chat y el cliente, y ayudar al agente con búsquedas rápidas de
información adicional de una gran knowledge base.
Resumen de transcripciones (totalmente automatizadas o semiautomatizadas). En
la mayoría de los centros de atención al cliente, los agentes son necesarios para
resumir las conversaciones y mantener el registro, hacer seguimientos futuros,
llevar a cabo entrenamiento y realizar otros procesos internos. GPT-3 puede
proporcionar resúmenes automatizados o semiautomatizados que capturan los
detalles destacados de las conversaciones para su uso posterior.
Esta guía se centra en el proceso de resumen de transcripciones mediante Azure OpenAI
GPT-3.

En promedio, un agente tarda entre 5 y 6 minutos en resumir una sola conversación


entre el agente y el cliente. Dados los grandes volúmenes de solicitudes que manejan
los equipos de servicio normalmente, realizar esta tarea adicional puede sobrecargar al
equipo. OpenAI es una buena manera de ayudar a los agentes con las actividades
relacionadas con el resumen. Puede mejorar la eficacia del proceso de soporte al cliente
y proporcionar una mayor precisión. El resumen de conversaciones se puede aplicar a
cualquier tarea de soporte técnico al cliente que implique la interacción entre agente y
cliente.

Servicio de resumen de conversaciones


El resumen de conversaciones es adecuado en escenarios en los que las conversaciones
de soporte técnico al cliente siguen un formato de pregunta y respuesta.

Algunas ventajas de usar un servicio de resumen son:

Mayor eficiencia: permite a los agentes de servicio al cliente resumir rápidamente


las conversaciones de los clientes, lo que elimina la necesidad de intercambios
largos. Esta eficiencia ayuda a acelerar la resolución de problemas de los clientes.
Servicio al cliente mejorado: los agentes pueden usar resúmenes de
conversaciones en interacciones futuras para encontrar rápidamente la
información necesaria para resolver con precisión los problemas de los clientes.
Uso compartido de conocimientos mejorado: el resumen de conversaciones puede
ayudar a los equipos de servicio al cliente a compartir conocimientos entre sí de
forma rápida y eficaz. Equipa a los equipos de atención al cliente con mejores
resoluciones y les ayuda a proporcionar un soporte más rápido.

Architecture
Una arquitectura típica para un generador de resumen de conversación tiene tres fases
principales: preprocesamiento, resumen y posprocesamiento. Si la entrada contiene una
conversación verbal o cualquier forma de voz, la voz debe transcribirse a texto. Para más
información, consulte Servicio de conversión de voz en texto de Azure .

Esta es una arquitectura de ejemplo:


Descargue un archivo de PowerPoint de esta arquitectura.

Flujo de trabajo
1. Recopile los datos de entrada: introduzca los datos de entrada pertinentes en la
canalización. Si el origen es un archivo de audio, debe convertirlo en texto
mediante un servicio de TTS como texto a voz de Azure.
2. Preprocese los datos: quite la información confidencial y cualquier conversación
que no sea importante de los datos.
3. Incorpore los datos al generador de resúmenes: pase los datos en una solicitud a
través de las API de Azure OpenAI. Los modelos de aprendizaje en contexto
incluyen zero-shot, few-shot o el modelo personalizado.
4. Genere el resumen: el modelo generará un resumen de la conversación.
5. Procesamiento posterior a los datos: aplique un filtro de palabras soeces y varias
comprobaciones de validación al resumen. Agregue los datos confidenciales que
se quitaron durante el paso previo al proceso en el resumen.
6. Evalúe los resultados: revise y evalúe los resultados. Este paso puede ayudarle a
identificar las áreas en las que el modelo debe mejorarse y a encontrar errores.

En las secciones siguientes se proporcionan más detalles sobre las tres fases principales.

Procesamiento previo
El objetivo del preprocesamiento es asegurarse de que los datos proporcionados al
servicio de generación de resumen sean relevantes y no incluyan información
confidencial.
Estos son algunos pasos de preprocesamiento que pueden ayudar a condicionar los
datos sin procesar. Es posible que tenga que aplicar uno o varios pasos, según el caso
de uso.

Quite la información de identificación personal (DCP). Puede usar la API de DCP


conversacional (versión preliminar) para quitar la DCP del texto transcrito o escrito.
En este ejemplo se muestra la salida después de que la API ha quitado la DCP:

Document text: Parker Doe has repaid all of their loans as of


2020-04-25. Their SSN is 999-99-9999. To contact them, use
their phone number 555-555-0100. They are originally from
Brazil and have Brazilian CPF number 998.214.865-68
Redacted document text: ******* has repaid all of their
loans as of *******. Their SSN is *******. To contact
them, use their phone number *******. They are originally from
Brazil and have Brazilian CPF number 998.214.865-68

...Entity 'Parker Doe' with category 'Person' got redacted


...Entity '2020-04-25' with category 'DateTime' got redacted
...Entity '999-99-9999' with category 'USSocialSecurityNumber' got
redacted
...Entity '555-555-0100' with category 'PhoneNumber' got redacted

Quite la información irrelevante. Los agentes del cliente inician conversaciones


con intercambios casuales que no incluyen información relevante. Se puede
agregar un desencadenador a una conversación para identificar el punto en el que
se aborda la cuestión o la pregunta pertinente por primera vez. Quitar ese
intercambio del contexto puede mejorar la precisión del servicio generador de
resúmenes, ya que el modelo se ajustará a la información más relevante de la
conversación. El motor Curie GPT-3 es una opción popular para esta tarea porque
se entrena ampliamente, mediante el contenido de Internet, para identificar este
tipo de conversación casual.

Quite conversaciones excesivamente negativas. Las conversaciones también


pueden incluir opiniones negativas de clientes infelices. Puede usar métodos de
filtrado de contenido de Azure como Azure Content Moderator para quitar del
análisis conversaciones que contengan información confidencial. Como alternativa,
OpenAI ofrece un punto de conexión de moderación, una herramienta que puede
usar para comprobar si el contenido cumple las directivas de contenido de
OpenAI.

Generador de resúmenes
El punto de conexión de la API de finalización de texto de OpenAI se denomina punto
de conexión de finalizaciones. Para iniciar el proceso de finalización de texto, se requiere
una solicitud. La ingeniería de solicitud es un proceso que se usa en modelos de
lenguaje grandes. La primera parte de la solicitud incluye instrucciones de lenguaje
natural o ejemplos de la tarea específica solicitada (en este escenario, la creación del
resumen). Las solicitudes permiten a los desarrolladores proporcionar contexto a la API,
lo que puede ayudar a generar finalizaciones de texto más relevantes y precisas. El
modelo termina la tarea prediciendo el texto siguiente más probable. Esta técnica se
conoce como aprendizaje en contexto.

7 Nota

El resumen mediante extracción intenta identificar y extraer información destacada


de un texto y agruparla para generar un resumen conciso sin comprender el
significado ni el contexto.

El resumen abstracto reescribe un texto creando primero una representación


semántica interna y a continuación, creando un resumen mediante el
procesamiento del lenguaje natural. Este proceso implica paráfrasis.

Hay tres enfoques principales para entrenar a los modelos para el aprendizaje en
contexto: zero-shot, few-shot y ajuste preciso. Estos enfoques varían en función de la
cantidad de datos específicos de la tarea que se proporcionan al modelo.

Zero-shot: En este enfoque, no se proporciona ningún ejemplo al modelo. La


solicitud de tarea es la única entrada. En el aprendizaje zero-shot, el modelo se
basa en los datos en los que GPT-3 ya está entrenado (casi todos los datos
disponibles de Internet). El modelo intenta relacionar la tarea dada con las
categorías existentes que ya ha aprendido y responde en consecuencia.

Few-shot: Al usar este enfoque, se incluye un pequeño número de ejemplos en la


solicitud que muestran el formato de respuesta esperado y el contexto. El modelo
se proporciona con una cantidad muy pequeña de datos de entrenamiento,
normalmente solo algunos ejemplos, para guiar sus predicciones. El entrenamiento
con un pequeño conjunto de ejemplos permite que el modelo generalice y
comprenda las tareas relacionadas pero no vistas previamente. La creación de
estos ejemplos de few-shot puede ser difícil porque necesitan aclarar la tarea que
desea que realice el modelo. Un problema observado habitualmente es que los
modelos son sensibles al estilo de escritura que se usa en los ejemplos de
entrenamiento, especialmente los modelos pequeños.
Las principales ventajas de este enfoque son una reducción significativa de la
necesidad de datos específicos de la tarea y un potencial reducido para aprender
una distribución excesivamente estrecha de un conjunto de datos de ajuste preciso
estrecho pero grande.

Con este enfoque, no se pueden actualizar los pesos del modelo entrenado
previamente.

Para obtener más información, consulte Los modelos de lenguaje son aprendices
de few-shot .

Ajuste preciso: El ajuste preciso es el proceso de adaptar modelos para obtener un


resultado deseado específico a partir de sus propios conjuntos de datos. Implica
volver a entrenara los modelos con los datos nuevos. Para más información, vea
Aprenda a personalizar un modelo para la aplicación.

Puede usar este paso de personalización para mejorar el proceso al:


Incluir un conjunto mayor de datos de ejemplo.
Usar técnicas de optimización tradicionales con la propiedad de
retropropagación para reajustar los pesos del modelo. Estas técnicas permiten
obtener resultados de mayor calidad que los que los enfoques zero-shot o few-
shot proporcionan por sí mismos.
Mejorar el enfoque de few-shot mediante el entrenamiento de los pesos del
modelo con solicitudes específicas y una estructura concreta. Esta técnica
permite obtener mejores resultados en un mayor número de tareas sin
necesidad de proporcionar ejemplos en la solicitud. El resultado es menos texto
enviado y menos tokens.

Las desventajas incluyen la necesidad de un gran conjunto de datos nuevo para


cada tarea, la posibilidad de una generalización deficiente fuera de la distribución y
la posibilidad de aprovechar características falsas de los datos de entrenamiento,
lo que da lugar a altas posibilidades de comparación injusta con el rendimiento
humano.

La creación de un conjunto de datos para la personalización del modelo es


diferente del diseño de solicitudes para usar con otros modelos. Las solicitudes de
finalización suelen usar instrucciones detalladas o técnicas de aprendizaje de few-
shot y consisten en múltiples ejemplos. Para el ajuste preciso, recomendamos que
cada ejemplo de entrenamiento consista en un solo ejemplo de entrada y su salida
deseada. No es necesario dar instrucciones detalladas o ejemplos en la solicitud.

A medida que aumenta el número de ejemplos de entrenamiento, los resultados


mejoran. Se recomienda incluir al menos 500 ejemplos. Es habitual usar entre miles
y cientos de miles de ejemplos etiquetados. En general, comprobamos que cada
vez que se duplique el tamaño del conjunto de datos se produzca un aumento
lineal de la calidad del modelo.

En esta guía se muestran los motores curie-instruct/text-curie-001 y davinci-


instruct/text-davinci-001. Estos motores se actualizan con frecuencia. La versión que use
puede ser diferente.

Posprocesamiento
Se recomienda comprobar la validez de los resultados obtenidos de GPT-3. Implemente
comprobaciones de validez mediante un enfoque mediante programación o
clasificadores, según el caso de uso. Estas son algunas comprobaciones críticas:

Compruebe que no se han perdido puntos significativos.


Compruebe si hay imprecisiones fácticas.
Compruebe si hay sesgos introducidos por los datos de entrenamiento usados en
el modelo.
Compruebe que el modelo no cambie el texto agregando nuevas ideas o puntos.
Este problema se conoce como alucinación.
Compruebe si hay errores gramaticales y ortográficos.
Use un filtro de contenido de palabras soeces como Content Moderator para
asegurarse de que no se incluya contenido inapropiado o irrelevante.

Por último, vuelva a introducir cualquier información vital que se haya quitado
previamente del resumen, como la información confidencial.

En algunos casos, también se envía un resumen de la conversación al cliente, junto con


la transcripción original. En estos casos, el procesamiento posterior implica anexar la
transcripción al resumen. También puede incluir la adición de oraciones introductorias
como "Consulte el resumen siguiente".

Consideraciones
Es importante ajustar los modelos base con un conjunto de datos de entrenamiento
específico del sector y cambiar el tamaño de los conjuntos de datos disponibles. Los
modelos con ajuste preciso funcionan mejor cuando los datos de entrenamiento
incluyen al menos 1000 puntos de datos y los datos ciertos (resúmenes generados por
el usuario) que se usan para entrenar los modelos son de alta calidad.

El inconveniente es el costo. El proceso de etiquetado y limpieza de conjuntos de datos


puede ser costoso. Para garantizar datos de entrenamiento de alta calidad, es posible
que tenga que inspeccionar manualmente los resúmenes ciertos y reescribir los
resúmenes de baja calidad. Tenga en cuenta los siguientes puntos sobre la fase de
resumen:

Ingeniería de solicitud: cuando se proporcionan pocas instrucciones, Davinci a


menudo funciona mejor que otros modelos. Para optimizar los resultados,
experimente con diferentes solicitudes de modelos diferentes.
Tamaño del token: un generador de resumen basado en GPT-3 se limita a un total
de 4 098 tokens, incluidas la solicitud y la finalización. Para resumir pasajes más
grandes, separe el texto en partes que cumplan estas restricciones. Resuma cada
parte individualmente y, a continuación, recopile los resultados en un resumen
final.
Descarte la información no utilizada: los modelos entrenados son tan buenos
como los datos de entrenamiento que proporcione. Asegúrese de que los
resúmenes ciertos en los datos de entrenamiento sean adecuados para la
información que finalmente desea resumir en los diálogos.
Punto de detención: el modelo deja de resumir cuando alcanza un punto de
detención natural o una secuencia de detención que usted proporcione. Pruebe
este parámetro para elegir entre varios resúmenes y comprobar si los resúmenes
tienen un aspecto incompleto.

Escenario de ejemplo: Resumen de las


transcripciones de centros de llamadas
En este escenario se muestra cómo la característica de resumen de Azure OpenAI puede
ayudar a los agentes de servicio al cliente con las tareas de resumen. Prueba los
enfoques de zero-shot, few-shot y ajuste preciso, y compara los resultados contra los
resúmenes generados por el usuario.

El conjunto de datos que se usa en este escenario es un conjunto de conversaciones


hipotéticas entre clientes y agentes en el centro de atención al cliente de Xbox sobre
diversos productos y servicios de Xbox. El chat hipotético se etiqueta con Solicitud. El
resumen abstracto escrito por personas se etiqueta con Finalización.

Prompt Completion

Cliente: Pregunta sobre XAIL El cliente quiere saber si necesita


registrarse para los anillos de versión
Agente: ¡Hola! ¿Cómo puedo ayudarte hoy? preliminar para unirse a Xbox Accessibility
Insider League. El agente responde que no
Cliente: Hola, tengo una pregunta sobre el
Prompt Completion

anillo de Accessibility Insider es obligatorio, aunque algunas


experiencias pueden requerirlo.
Agente: Muy bien. Sin duda, puedo
ayudarte con eso.

Cliente: ¿Necesito suscribirme al anillo de la


versión preliminar para unirme a la
Accessibility League?

Agente: No. Puedes dejar la consola fuera


de los anillos de Xbox Preview y aun así
unirte a la liga. Sin embargo, ten en cuenta
que algunas experiencias disponibles para ti
pueden requerir que te unas a un anillo de
Xbox Preview.

Cliente: Está bien. ¿Y puedo suscribirme al


anillo de versión preliminar más adelante?

Agente: Correcto.

Cliente: Perfecto.

Salida ideal. El objetivo es crear resúmenes que sigan este formato: "El cliente dijo x. El
agente respondió y". Otro objetivo es capturar características destacadas del cuadro de
diálogo, como la queja del cliente, la resolución sugerida y las acciones de seguimiento.

Este es un ejemplo de una interacción de asistencia al cliente, seguida de un resumen


completo escrito por el usuario:

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo estás hoy?

Cliente: Estoy bien.

Agente. Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento (o el mejor precio con descuento
disponible) para seguir jugando el juego una vez que salga del catálogo.

Cliente: Entiendo, gracias.

Resumen cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Zero-shot
El enfoque de zero-shot es útil cuando no tiene suficientes datos de entrenamiento
etiquetados. En este caso, no hay suficientes resúmenes ciertos. Es importante diseñar
las solicitudes cuidadosamente para extraer la información relevante. El siguiente
formato se usa para extraer resúmenes generales de los chats entre el agente y el
cliente:

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

Este es un ejemplo que muestra cómo ejecutar un modelo zero-shot:

Python

rouge = Rouge()
# Run zero-shot prediction for all engines of interest
deploymentNames = ["curie-instruct","davinci-instruct"] # also known as
text-davinci/text-instruct
for deployment in deploymentNames:
url = openai.api_base + "openai/deployments/" + deployment + "/completions?
api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling…" + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = build_prompt(prefix, [test['prompt'][i]], suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the
dataset
)
scores = rouge.get_scores(normalize_text(response_i[‘choices’][ 0]
['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i[‘choices’][0][‘text’]) for i in
response_list]
test[deployment + "_zeroshotsummary"] = summary_list
test[deployment + "_zeroshotroguescore"] = rouge_list

Resultados y observaciones
La salida del modelo zero-shot se genera directamente desde el modelo base. En este
caso, tanto Curie como Davinci resumen el cuadro de diálogo bastante bien. La única
diferencia notable es que el modelo Curie proporciona un poco menos de detalle. Curie
inicia el resumen con "el cliente pregunta al agente sobre Xbox Game Pass". La frase
correspondiente en Davinci es "el cliente preguntó por cuánto tiempo podía acceder a
los juegos después de salgan del catálogo de Xbox Game Pass".

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo te va?

Cliente: Estoy bien.

Agente: Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento, o el mejor precio con descuento
disponible, para seguir jugando el juego una vez que sale del catálogo.

Cierto
El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado de Davinci

El cliente preguntó por cuánto tiempo podía acceder a los juegos después de que salen
del catálogo de Xbox Game Pass. El agente le dijo que necesitaría comprar una copia
digital del juego desde la aplicación Xbox para Windows o la Microsoft Store para poder
continuar jugando. El agente también recordó al cliente que se le notificaría antes de
que un juego salga del catálogo de Xbox Game Pass. Como miembro, el cliente podrá
comprar cualquier juego en el catálogo con un máximo de 20 % de descuento o el
mejor precio con descuento disponible.

Resultado de Curie

El cliente pregunta al agente sobre Xbox Game Pass. El agente indica al cliente que una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El agente también le recuerda al cliente que Xbox notificará a los
miembros antes de que un juego salga del catálogo de Xbox Game Pass.

Few-shot
Cuando se usa el enfoque few-shot, el modelo se proporciona con un pequeño número
de ejemplos.

context_primer = "Below are examples of conversations and their corresponding

summaries:"

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

Este es un ejemplo que muestra cómo ejecutar un modelo de few-shot:

Python

train_small = train[]
train_small_json = train_small.to_dict(orient='records')
compiled_train_prompt = build_prompt_fewshot(prefix,context_primer,
train_small_json, suffix)

for deployment in deploymentNames:


url = openai.api_base + "openai/deployments/" + deployment + "/completions?
api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling…" + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = compiled_train_prompt+build_prompt(prefix, [test['prompt'][i]],
suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the
dataset
)
scores = rouge.get_scores(normalize_text(response_i['choices'][ 0]
['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i['choices'][0]['text']) for i in
response_list]
test[deployment + "_fewshot"] = summary_list
test[deployment + "_FSscore1"] = rouge_list

Resultados y observaciones
Con el enfoque de few-shot, los resúmenes continúan capturando características
destacadas de la conversación. El resumen de Davinci es más compacto y más cercano a
ser cierto. Curie fabrica algunos detalles triviales.

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo te va?

Cliente: Estoy bien.

Agente: Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento, o el mejor precio con descuento
disponible, para seguir jugando el juego una vez que sale del catálogo.

Cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado de Davinci

El cliente quería saber por cuánto tiempo podía acceder a los juegos después de que
salen de Game Pass. El agente informa que una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente tendría que comprar una copia digital u obtener otra forma
de derecho para continuar jugando el juego.

Resultado de Curie

El cliente tiene una pregunta sobre el Game Pass. El cliente está bien. El agente necesita
ayuda con el Xbox Game Pass. El cliente pregunta por cuánto tiempo puede acceder a
los juegos después de que salen del catálogo de Game Pass. El agente informa que, una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El cliente está encantado de escuchar esto y agradece al agente.

Ajuste preciso
El ajuste preciso es el proceso de adaptar los modelos para obtener un resultado
deseado específico a partir de sus propios conjuntos de datos.

Este es un formato de ejemplo:

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}


{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

Resultados y observaciones
Las pruebas sugieren que un modelo Curie de ajuste preciso conduce a resultados que
son comparables a los de un modelo de few-shot de Davinci. Ambos resúmenes
capturan la pregunta del cliente y la respuesta del agente sin capturar los detalles sobre
los descuentos y sin agregar contenido. Ambos resúmenes son similares al cierto.

Diálogo

Cliente: Hola. Tengo una pregunta sobre Game Pass.

Agente: Hola. ¿Cómo te va?

Cliente: Estoy bien.

Agente: Veo que necesitas ayuda con Xbox Game Pass.

Cliente: Sí. Quería saber por cuánto tiempo puedo acceder a los juegos después de que
salgan de Game Pass.

Agente: Una vez que un juego sale del catálogo de Xbox Game Pass, tendrás que
comprar una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder seguir
jugando el juego. Recuerda que Xbox notifica a los miembros antes de que un juego
salga del catálogo de Xbox Game Pass. Y, como miembro, puedes comprar cualquier
juego en el catálogo con hasta un 20 % de descuento, o el mejor precio con descuento
disponible, para seguir jugando el juego una vez que sale del catálogo.

Cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado de Curie

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que
salen de Game Pass. El agente explica que, una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente debe comprar una copia digital desde la aplicación Xbox
para Windows o la Microsoft Store, reproducirlo desde un disco u obtener otra forma de
derecho para poder continuar jugando el juego.

Conclusiones
Por lo general, el modelo Davinci requiere menos instrucciones para realizar las tareas
que otros modelos, como Curie. Davinci es más adecuado para resumir texto que
requiera una comprensión del contexto o del lenguaje específico. Dado que Davinci es
el modelo más complejo, su latencia es mayor que la de otros modelos. Curie es más
rápido que Davinci y es capaz de resumir conversaciones.

Estas pruebas sugieren que puede generar mejores resúmenes al proporcionar más
instrucciones al modelo a través de los métodos few-shot o de ajuste preciso. Los
modelos de ajuste preciso son mejores para adaptarse a la estructura y el contexto
aprendidos a partir de un conjunto de datos de entrenamiento. Esta funcionalidad es
especialmente útil cuando los resúmenes son específicos del dominio (por ejemplo,
generar resúmenes a partir de las notas de un médico o de la atención al cliente con
una receta en línea). Si usa el ajuste preciso, tiene más control sobre los tipos de
resúmenes que ve.

Para facilitar la comparación, este es un resumen de los resultados presentados


anteriormente:

Cierto

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que se
hayan retirado de Game Pass. El agente informa al cliente que tendría que comprar el
juego para seguir teniendo acceso.

Resultado zero-shot de Davinci

El cliente preguntó por cuánto tiempo podía acceder a los juegos después de que salen
del catálogo de Xbox Game Pass. El agente le dijo que necesitaría comprar una copia
digital del juego desde la aplicación Xbox para Windows o la Microsoft Store para poder
continuar jugando. El agente también recordó al cliente que se le notificaría antes de
que un juego salga del catálogo de Xbox Game Pass. Como miembro, el cliente podrá
comprar cualquier juego en el catálogo con hasta 20 % de descuento o el mejor precio
con descuento disponible.

Resultado zero-shot de Curie

El cliente pregunta al agente sobre Xbox Game Pass. El agente indica al cliente que una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El agente también le recuerda al cliente que Xbox notificará a los
miembros antes de que un juego salga del catálogo de Xbox Game Pass.

Resultado few-shot de Davinci


El cliente quería saber por cuánto tiempo podía acceder a los juegos después de que
salen de Game Pass. El agente informa que una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente tendría que comprar una copia digital u obtener otra forma
de derecho para continuar jugando el juego.

Resultado few-shot de Curie

El cliente tiene una pregunta sobre el Game Pass. El cliente está bien. El agente necesita
ayuda con el Xbox Game Pass. El cliente pregunta por cuánto tiempo puede acceder a
los juegos después de que salen del catálogo de Game Pass. El agente informa que, una
vez que un juego sale del catálogo de Xbox Game Pass, el cliente tendrá que comprar
una copia digital desde la aplicación Xbox para Windows o la Microsoft Store,
reproducirlo desde un disco u obtener otra forma de derecho para poder continuar
jugando el juego. El cliente está encantado de escuchar esto y agradece al agente.

Resultado de ajuste preciso de Curie

El cliente quiere saber por cuánto tiempo puede acceder a los juegos después de que
salen de Game Pass. El agente explica que, una vez que un juego sale del catálogo de
Xbox Game Pass, el cliente debe comprar una copia digital desde la aplicación Xbox
para Windows o la Microsoft Store, reproducirlo desde un disco u obtener otra forma de
derecho para poder continuar jugando el juego.

Evaluación del resumen


Hay varias técnicas para evaluar el rendimiento de los modelos de resumen.

Estas son algunas:

ROUGE (Subestudio orientado a la recuperación para la evaluación de Gisting). Esta


técnica incluye medidas para determinar automáticamente la calidad de un resumen
comparándolo con resúmenes ideales creados por humanos. Las medidas cuentan el
número de unidades superpuestas, como n-gramas, secuencias de palabras y pares de
palabras, entre el resumen generado por el equipo que se evalúa y los resúmenes
ideales.

Este es un ejemplo:

Python

reference_summary = "The cat ison porch by the tree"


generated_summary = "The cat is by the tree on the porch"
rouge = Rouge()
rouge.get_scores(generated_summary, reference_summary)
[{'rouge-1': {'r':1.0, 'p': 1.0, 'f': 0.999999995},
'rouge-2': {'r': 0.5714285714285714, 'p': 0.5, 'f': 0.5333333283555556},
'rouge-1': {'r': 0.75, 'p': 0.75, 'f': 0.749999995}}]

BertScore. Esta técnica calcula las puntuaciones de similitud mediante la alineación de


resúmenes generados y de referencia en un nivel de token. Las alineaciones de tokens
se calculan de forma expanstina para maximizar la similitud coseno entre las
incrustaciones de tokens contextualizadas de BERT.

Este es un ejemplo:

Python

import torchmetrics
from torchmetrics.text.bert import BERTScore
preds = "You should have ice cream in the summer"
target = "Ice creams are great when the weather is hot"
bertscore = BERTScore()
score = bertscore(preds, target)
print(score)

Matriz de similitud. Una matriz de similitud es una representación de las similitudes


entre diferentes entidades en la evaluación del resumen. Puede usarlo para comparar
distintos resúmenes del mismo texto y medir su similitud. Se representa mediante una
cuadrícula bidimensional, donde cada celda contiene una medida de la similitud entre
dos resúmenes. Puede medir la similitud mediante varios métodos, como la similitud de
coseno, la similitud de Jaccard y la distancia de edición. A continuación, use la matriz
para comparar los resúmenes y determinar cuál es la representación más precisa del
texto original.

Este es un comando de ejemplo que genera la matriz de similitud de una comparación


BERTScore de dos oraciones similares:

Python

bert-score-show --lang en -r "The cat is on the porch by the tree"


-c "The cat is by the tree on the porch"
-f out.png

La primera frase, "El gato está en el porche junto al árbol", se conoce como candidato.
La segunda frase se conoce como referencia. El comando usa BERTScore para comparar
las oraciones y generar una matriz.

Esta matriz siguiente muestra la salida generada por el comando anterior:


Para obtener más información, vea SummEval: reevaluación de la evaluación de


resúmenes . Para obtener un kit de herramientas de PyPI para resúmenes, consulte
summ-eval 0.892 .

Uso responsable
GPT puede producir excelentes resultados, pero debe comprobar la salida en busca de
sesgos sociales, éticos y legales, y también resultados dañinos. Al ajustar los modelos,
debe quitar los puntos de datos que pueda ser perjudicial que aprenda el modelo.
Puede formar equipos de alerta para identificar las salidas dañinas del modelo. Puede
implementar este proceso manualmente y respaldarlo mediante métodos
semiautomatizados. Puede generar casos de prueba mediante modelos de lenguaje y, a
continuación, usar un clasificador para detectar comportamientos dañinos en los casos
de prueba. Por último, debe realizar una comprobación manual de los resúmenes
generados para asegurarse de que estén listos para usarse.
Para obtener más información, vea Equipos de alerta para modelos de lenguaje con
modelos de lenguaje .

Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes
colaboradores.

Autor principal:

Meghna Jani | Científico de datos & aplicado II

Otro colaborador:

Mick Alberts | Escritor técnico

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes
Más información sobre Azure OpenAI
Artículo de referencia de ROUGE
Módulo de entrenamiento: Introducción a Azure OpenAI Service
Ruta de aprendizaje: Desarrollo de soluciones de IA con Azure OpenAI

Recursos relacionados
Resumen de documentos basados en consultas
Elección de una tecnología de servicios cognitivos de Microsoft
Tecnología de procesamiento de lenguaje natural

También podría gustarte