AWS Lambda: Clasificación e implementación

Clasificación e implementación de tickets de soporte de TI

Clasificación de tickets de IT

Descripción del proyecto y supuestos iniciales

Como parte de nuestro proyecto final de computación cognitiva, decidimos enfrentar un desafío empresarial de la vida real para el cual eligió la gestión de servicios de TI. De todos los casos de negocios, nos interesaron cuatro casos de usuarios que podrían ser adecuados para nuestro proyecto.

1. En el servicio de asistencia, casi el 30–40% de los tickets de incidentes no se envían al equipo correcto y los tickets siguen recorriendo una y otra vez, y cuando llega al equipo adecuado, el problema puede haberse extendido y llegar a la alta dirección invitando a muchos problema

2. Digamos que los usuarios están teniendo problemas con las impresoras. El usuario llama a la mesa de ayuda, él crea un ticket con el Soporte de TI y se dan cuenta de que necesitan actualizar una configuración en el sistema del usuario y luego resuelven el ticket. ¿Qué pasa si otros 10 usuarios reportan el mismo problema. Podemos usar estos datos y analizar el problema subyacente mediante el uso de datos no estructurados. Además, podemos analizar la tendencia y minimizar los tickets de incidentes.

3. Bot virtual que puede responder y gestionar tickets de usuario.

De los tres casos de uso, decidimos utilizar el primer caso de uso por ahora debido a nuestra limitación de tiempo y recursos.

Herramientas y tecnologías utilizadas

  • Instancia ServiceNow (una plataforma de gestión de servicios de TI.
  • Función AWS Lambda.
  • Instancia EC2.
  • Python.
  • Modelos de redes neuronales.
  • 50000+ boletos de muestra de abierto fuentes.

Descripción general del proceso

El flujo de trabajo general del proceso se puede dividir en varias partes secundarias. En la figura a continuación se muestra una descripción general de muy alto nivel.

Conjunto de datos

Extrajimos el conjunto de datos directamente de service now e intentamos clasificarlos usando técnicas ML para crear un conjunto de datos etiquetado. Simplemente conservamos la descripción y las categorías del boleto y seguimos con el análisis para obtener las 5 categorías principales para incidentes.

Las etiquetas se agregaron una vez que clasificamos las 5 categorías principales de incidentes utilizando el Modelado de Temas

Descripción general del caso de uso

La mayoría de los problemas críticos se manejan y se rastrean en forma de tickets en un entorno de TI típico. La infraestructura de TI es un grupo de componentes conectados entre sí en una red. Entonces, cuando un componente se cae, toma muchos otros componentes junto con él. Incluso puede llevar días averiguar qué salió mal y encontrar la causa raíz. Por lo tanto, es esencial notificar a los propietarios de los componentes

de manera inmediata para que se puedan tomar las medidas adecuadas para evitar que esto suceda.

Estos problemas generalmente son informados por los usuarios a la línea de ayuda o al servicio de atención al cliente que son la primera línea de asistencia. Desafortunadamente, es difícil que alguien esté al tanto de todos los componentes y, por lo tanto, los tickets se envían al equipo equivocado. Para que llegue al equipo original, podría llevar incluso días o semanas. Por lo tanto, pensamos que podríamos usar la PNL para resolver este problema.

La Administración de servicios de TI, en promedio, genera más de 40 GB de datos. Eso nos da suficiente información para entrenar e implementar nuestro modelo.

Nuestro modelo, cuando se implementa correctamente, podría ahorrar miles de millones de dólares a las unidades de negocios, ya que pierden muchos acuerdos de nivel de servicio debido a esto.

Basado en computación en la nube ITSM

Este caso de negocios era casi imposible de manejar antes de la llegada de la computación en la nube. La computación en la nube hizo que esta integración entre los algoritmos de aprendizaje automático y la Gestión de servicios de TI fuera posible.

En nuestro caso empresarial, utilizamos una aplicación de Gestión de servicios de TI basada en la nube llamada Servicenow y accedimos al modelo de aprendizaje automático incluido en el AWS. Función lambda mediante la puerta de enlace API.

Integración entre ServiceNow y AWS:

Los servicios web permiten que las aplicaciones se conecten a otras aplicaciones de software a través de una red, lo que permite un intercambio de información entre el proveedor (servidor) y el cliente. (consumidor).

Un consumidor de servicios web (cliente) solicita información a un proveedor de servicios web (servidor). Un proveedor de servicios web procesa la solicitud y devuelve un código de estado y un cuerpo de respuesta. Cuando se devuelve el cuerpo de respuesta, el consumidor del servicio web extrae información del cuerpo de la respuesta y actúa sobre los datos extraídos.

ServiceNow puede consumir servicios web de proveedores externos o de otra instancia de ServiceNow.

En nuestro caso, usó la url del punto final activada por la puerta de enlace de la API utilizando los servicios web Rest y accedí a ella utilizando el javascript que se ejecuta en la creación del ticket.

Al crear un ticket, se activa el javascript que envía la descripción del incidente a nuestro modelo ubicado en AWS, que realiza las operaciones de aprendizaje automático y devuelve las categorías predichas y la probabilidad.

Modelado de temas para la categorización

· Seleccionamos la cantidad de temas antes de tiempo, incluso si no estamos seguros de cuáles son los temas.

Cada documento se representa como una distribución sobre temas.

· Cada tema se representa como una distribución sobre palabras.

Usamos Wordnet de NLTK para encontrar el yo Anings de palabras, sinónimos, antónimos y más. Además, usamos WordNetLemmatizer para obtener la palabra raíz.

Luego leemos nuestro conjunto de datos línea por línea y preparamos cada línea para LDA y almacenamos en una lista.

LDA con Gensim

Primero, estamos creando un diccionario a partir de los datos, luego convertimos al corpus bag-of-words y guardamos el diccionario y el corpus para uso futuro.

Luego tratamos de encontrar 5 temas usando LDA:

pyLDAvis

pyLDAvis está diseñado para ayudar a los usuarios a interpretar los temas en un modelo de tema que se ha ajustado a un corpus de datos de texto. El paquete extrae información de un modelo de tema LDA ajustado para informar una visualización interactiva basada en la web.

Visualización de 5 temas:

Del Modelado de temas llegamos a la conclusión de que el conjunto de datos completo se puede dividir en 5 categorías:

  • Network
  • User Maintenance
  • Base de datos
  • Application Workbench
  • Security

Luego, etiquetamos nuestro conjunto de datos y en consecuencia. preparó un conjunto de datos para realizar un aprendizaje supervisado en él.

RNN para clasificación: –

Un canal de clasificación de texto de extremo a extremo se compone de los siguientes componentes:

1. Texto de capacitación: es el texto de entrada a través del cual nuestro modelo de aprendizaje supervisado puede aprender y predecir la clase requerida.

2. Vector de características: un vector de características es un vector que contiene información que describe las características de los datos de entrada.

3. Etiquetas: estas son las categorías / clases predefinidas que nuestro modelo predecirá

4. ML Algo: Es el algoritmo a través del cual nuestro modelo puede manejar la clasificación de texto (en nuestro caso: CNN, RNN, HAN)

5. Modelo predictivo: un modelo que se entrena en el conjunto de datos histórico que puede realizar predicciones de etiquetas.

Clasificación de incidentes mediante red neuronal recurrente (RNN):

A red neuronal recurrente (RNN) es una clase de la red neuronal artificial donde las conexiones entre los nodos forman un gráfico dirigido a lo largo de una secuencia. Esto le permite exhibir un comportamiento temporal dinámico durante una secuencia de tiempo.

El uso del conocimiento de una inserción externa puede mejorar la precisión de su RNN porque integra nueva información (léxica y semántica) sobre las palabras, una información que se ha entrenado y destilado en un corpus de datos muy grande. La inserción pre-entrenada que usamos es GloVe .

RNN es una secuencia de bloques de redes neuronales que están vinculados entre sí como una cadena. Cada uno está pasando un mensaje a un sucesor.

una parte de la red neuronal, AA, mira alguna entrada xtxt y genera un valor htht. Un bucle permite que la información pase de un paso de la red al siguiente.

Estos bucles hacen que las redes neuronales recurrentes parezcan algo misteriosas. Sin embargo, si piensas un poco más, resulta que no son tan diferentes a una red neuronal normal. Una red neuronal recurrente se puede considerar como copias múltiples de la misma red, cada una de las cuales pasa un mensaje a un sucesor. Considere lo que sucede si desenrollamos el bucle:

Redes LSTM

Las redes de memoria a corto plazo a largo plazo, generalmente llamadas “LSTM”, son un tipo especial de RNN, capaz de aprender dependencias a largo plazo. Fueron introducidos por Hochreiter & Schmidhuber (1997) y fueron refinados y popularizados por muchas personas en el siguiente trabajo. 1 Funcionan tremendamente bien en una gran variedad de problemas, y ahora están ampliamente utilizado.

Los LSTM están diseñados explícitamente para evitar el problema de dependencia a largo plazo. ¡Recordar información durante largos periodos de tiempo es prácticamente su comportamiento predeterminado, no es algo que les cueste aprender!

Todas las redes neuronales recurrentes tienen la forma de una cadena de módulos de red neuronal que se repiten. En los RNN estándar, este módulo de repetición tendrá una estructura muy simple, como una sola capa de tanh.

El módulo de repetición en un RNN estándar contiene una sola capa.

Los LSTM también tienen esta estructura de tipo cadena, pero la repetición El módulo tiene una estructura diferente. En lugar de tener una sola capa de red neuronal, hay cuatro que interactúan de una manera muy especial.

El módulo de repetición en un LSTM contiene cuatro capas interactivas.

No se preocupe por los detalles de lo que está sucediendo. Veremos el diagrama LSTM paso a paso más adelante. Por ahora, solo intentemos sentirnos cómodos con la notación que usaremos.

En el diagrama anterior, cada línea transporta un vector completo, desde la salida de un nodo hasta las entradas de otras. Los círculos rosados ​​representan operaciones puntuales, como la adición de vectores, mientras que los cuadros amarillos son capas de red neuronal aprendidas. Las líneas que se fusionan denotan concatenación, mientras que una línea de bifurcación denota el contenido que se está copiando y las copias que van a diferentes ubicaciones.

La idea central detrás de los LSTM

La clave para los LSTM es el estado de la celda, la línea horizontal que recorre la parte superior de El diagrama.

El estado de la celda es algo así como una cinta transportadora. Corre hacia abajo por toda la cadena, con solo algunas interacciones lineales menores. Es muy fácil que la información fluya sin cambios.

El LSTM tiene la capacidad de eliminar o agregar información al estado de la celda, cuidadosamente regulada por estructuras llamadas compuertas.

Las compuertas son una forma de permitir que la información, opcionalmente, permita que la información pase a través de ella. . Se componen de una capa de red neural sigmoidea y una operación de multiplicación puntual.

La capa sigmoidea genera números entre cero y uno, que describen la cantidad de cada componente que se debe dejar pasar. Un valor de cero significa “no dejar pasar nada”, mientras que un valor de uno significa “dejar pasar todo”.

Un LSTM tiene tres de estas compuertas, para proteger y controlar el estado de la celda.

Paso a paso LSTM Walk Through

El primer paso en nuestro LSTM es decidir qué información vamos a eliminar del estado de la celda. Esta decisión la toma una capa sigmoidea llamada “capa de puerta olvidada”. Mira ht − 1ht − 1 y xtxt, y genera un número entre 00 y 11 para cada número en el estado de celda Ct − 1Ct − 1. Un 11 representa “mantener esto completamente” mientras que un 00 representa “deshacerse completamente de esto”.

Regresemos a nuestro ejemplo de un modelo de lenguaje que trata de predecir la siguiente palabra basada en todos los anteriores. En tal problema, el estado de la celda podría incluir el género del sujeto presente, de modo que se puedan usar los pronombres correctos. Cuando vemos un tema nuevo, queremos olvidar el género del tema anterior.

El siguiente paso es decidir qué información nueva vamos a almacenar en el estado de la celda. Esto tiene dos partes. Primero, una capa sigmoide llamada “capa de puerta de entrada” decide qué valores actualizaremos. A continuación, una capa tanh crea un vector de nuevos valores candidatos, C̃ tC ~ t, que se podrían agregar al estado. En el siguiente paso, combinaremos estos dos para crear una actualización para el estado.

En el ejemplo de nuestro modelo de lenguaje, nos gustaría agregar el género del nuevo sujeto al estado de la celda, para reemplazar el antiguo que estamos olvidando.

Ahora es el momento de actualizar el estado de celda anterior, Ct − 1Ct − 1, en el estado de celda nueva CtCt. Los pasos anteriores ya decidieron qué hacer, solo necesitamos hacerlo.

Multiplicamos el estado anterior por ftft, olvidando las cosas que decidimos olvidar antes. Luego lo agregamos ̃ C̃ tit ∗ C ~ t. Estos son los nuevos valores candidatos, en función de cuánto decidimos actualizar cada valor de estado.

En el caso del modelo de idioma, aquí es donde realmente eliminamos la información sobre el género del sujeto anterior y agregamos la nueva información. , como decidimos en los pasos anteriores.

Finalmente, tenemos que decidir lo que vamos a producir. Esta salida se basará en nuestro estado de celda, pero será una versión filtrada. Primero, ejecutamos una capa sigmoidea que decide qué partes del estado de la celda vamos a generar. Luego, colocamos el estado de la celda a través de tanhtanh (para empujar los valores para que estén entre −1−1 y 11) y lo multiplicamos por la salida de la puerta sigmoide, de modo que solo emitimos las partes que decidimos.

Para el ejemplo del modelo de lenguaje, ya que acaba de ver un tema, podría querer dar información relevante a un verbo, en caso de que eso sea lo que viene. Por ejemplo, podría mostrar si el sujeto es singular o plural, de modo que sepamos en qué forma se debe conjugar un verbo si eso es lo que sigue a continuación.

Variantes en la memoria a corto plazo a largo plazo

Lo que he descrito así lejos es un LSTM bastante normal. Pero no todos los LSTM son iguales a los anteriores. De hecho, parece que casi todos los papeles relacionados con LSTM utilizan una versión ligeramente diferente. Las diferencias son menores, pero vale la pena mencionar algunas de ellas.

Una variante popular de LSTM, introducida por Gers & Schmidhuber (2000), está agregando “conexiones de mirilla”. Esto significa que dejamos que las capas de la puerta miren el estado de la celda .

El diagrama anterior agrega mirillas a todas las puertas, pero muchos documentos darán algunas mirillas y no otras.

Otra variación es usar puertas acopladas de olvido y entrada. En lugar de decidir por separado qué debemos olvidar y a qué debemos agregar nueva información, tomamos esas decisiones juntos. Solo olvidamos cuando vamos a ingresar algo en su lugar. Solo ingresamos valores nuevos al estado cuando olvidamos algo más antiguo.

Una variación un poco más dramática en el LSTM es la Unidad Recurrente Cerrada, o GRU, introducida por Cho, et al. (2014) . Combina las puertas de olvido y entrada en una sola “puerta de actualización”. También combina el estado de celda y el estado oculto, y realiza otros cambios. El modelo resultante es más simple que los modelos LSTM estándar, y se está haciendo cada vez más popular.

Nuestra arquitectura

Modelo general

Modelo LSTM

Para usar Keras en datos de texto, primero tenemos que preprocesarlo. Para esto, podemos usar la clase Tokenizer de Keras. Este objeto toma como argumento num_words, que es el número máximo de palabras guardadas después de la tokenización según su frecuencia de palabras.

Una vez que el tokenizador se ajusta a los datos, podemos usarlo para convertir cadenas de texto en secuencias de números. Estos números representan la posición de cada palabra en el diccionario (considérelo como mapeo).

  • En este proyecto, intentamos abordar el problema usando una red neuronal recurrente y un codificador LSTM basado en la atención.
  • Usando Codificador LSTM, intentamos codificar toda la información del texto en la última salida de la Red neuronal recurrente antes de ejecutar la red de avance para la clasificación.
  • Esto es muy similar a la máquina de traducción neuronal y secuencia a la secuencia de aprendizaje.
  • Utilizamos la capa LSTM en Keras para abordar el problema de las dependencias a largo plazo.

Puntuación y selección del modelo

Nuestra clasificación y selección del modelo se basa en las métricas de evaluación estándar Precisión, precisión y puntuación F1, que se definen a continuación :

donde:

· TP representa el número de clasificaciones positivas verdaderas. Es decir, los registros con la etiqueta A real que se han clasificado correctamente o “pronosticados”, como etiqueta A.

· TN es el número de clasificaciones negativas verdaderas. Es decir, los registros con una etiqueta real que no es igual a A que se han clasificado correctamente como no pertenecientes a la etiqueta A.

· FP es el número de clasificaciones de falsos positivos, es decir, los registros con una etiqueta real que no sea A que tienen se clasificó incorrectamente como perteneciente a la categoría A.

· FN es el número de falsos negativos, es decir, registros con una etiqueta igual a A que se han clasificado incorrectamente como no pertenecientes a la categoría A.

Figura 3. “Confusión matriz ”de categorizaciones pronosticadas frente a categorizaciones reales

La combinación de clasificaciones pronosticadas y reales se conoce como“ matriz de confusión ”, ilustrada en la Figura 3. En el contexto de estas definiciones, las diversas métricas de evaluación proporcionan las siguientes perspectivas:

Precisión:
  • La proporción del número total de predicciones del modelo que fueron correctas.
  • También llamada valor predictivo positivo: la proporción de predicciones correctas en relación con todas las predicciones ns para esa clase específica.
Recuperación:

También llamada tasa positiva verdadera, TPR, tasa de acierto o sensibilidad): La proporción de positivos verdaderos en relación con todos los positivos reales.

Tasa positiva falsa: (también llamada alarma falsa tasa): La proporción de falsos positivos en relación con todos los negativos reales (FPR).

F1: (La más robusta) Media armónica de precisión y recuperación.

Salidas: –

Modelo de RNN general: –

RNN con capa LSTM

Observaciones: –

El modelo RNN general sin LSTM nos proporcionó la precisión del 66%, mientras que pudimos aumentarla al 69% utilizando la capa de red LSTM en RNN

el volumen de datos resultó en una precisión casi estancada después del 70% y no importó si aumentamos las épocas como se evidenció en la trama.

Sin embargo, el 69% fue una clasificación bastante justa ya que pretendemos entrenarla en línea y mejorar continuamente la precisión a medida que aumenta el volumen de datos.

Modelo Deployment

Para el alcance de este proyecto, planeamos implementar el modelo en Amazon AWS e integrarlo con Service Now para que el modelo realice las predicciones en línea o en tiempo real. Para realizar esto, primero exportaremos el modelo volcándolo en un archivo pickle. Además, escribiremos una función que se conectará al depósito S3 y buscará y leerá el archivo pickle desde allí y volverá a crear el modelo.

Por lo tanto, el flujo de trabajo se ve así:

  1. Crea el incidente en Service Now
  2. El incidente se recibe en AWS y nuestra instancia o servicio de AWS EC2 se está ejecutando
  3. Recupere el archivo function.py del cubo S3 que leerá el modelo del archivo Pickle y volverá a crear el modelo
  4. . Extraerá la característica del servicio. solicitud, es decir, descripción del incidente
  5. Ahora, el código se ejecutará en AWS Lambda y nos proporcionará la categoría a la que pertenece el incidente
  6. Cree una instancia de EC2 en AWS: –
  7. Primero, cree una cuenta de AWS que le dará uso gratuito durante 1 año en algunos servicios limitados, pero es suficiente para este proyecto
  8. Cree una instancia de EC2 y seleccione la máquina de nivel gratuito o si tiene créditos en su cuenta y necesita una máquina más potente que pueda seleccione de otras opciones [1 9659135] Configure un entorno de tiempo de ejecución virtual para Python en AWS y una vez que haya terminado, a continuación, comprima todos los archivos de configuración en un solo archivo y también incluya el archivo function.py en el archivo zip, ya que lo cargaremos en AWS S3 bucket [19659135] Cree un depósito S3 y cargue su archivo pickle que contenga detalles del modelo, como el nombre del modelo, los hiperparámetros y los pesos del modelo, y también cargue el archivo zip que contiene el archivo function.py junto con los ajustes de configuración para el entorno virtual de Python
  1. Ahora Por último, configure AWS Lambda. Aquí es donde ejecutaremos el script de Python y realizaremos las predicciones.

AWS Lambda es un servicio de cómputo que le permite ejecutar el código sin necesidad de aprovisionar o administrar los servidores. Se encarga de esa parte en sí. Lo mejor de AWS Lambda es que usted paga solo por el tiempo de cómputo que consume, no hay cargo cuando su código no se está ejecutando. Con AWS Lambda, puede ejecutar código para prácticamente cualquier tipo de aplicación o servicio backend, todo con administración cero. AWS Lambda ejecuta su código en una infraestructura de cómputo de alta disponibilidad y realiza toda la administración de los recursos de cómputo, incluido el mantenimiento del servidor y del sistema operativo, el aprovisionamiento de capacidad y el escalado automático, la supervisión de códigos y el registro. Todo lo que necesita hacer es suministrar su código en uno de los idiomas que admite AWS Lambda.

Aunque no pudimos configurar el lambda de AWS ya que ninguno de nosotros estaba familiarizado con él, tenemos que revisar la documentación y nos quedamos cortos. de tiempo. Estamos planeando extender el proyecto para nuestro otro curso y completarlo. Actualizaremos el blog una vez que logremos nuestro objetivo.

Integración entre ServiceNow y AWS:

Los servicios web permiten que las aplicaciones se conecten a otras aplicaciones de software a través de una red, lo que permite un intercambio de información entre el proveedor (servidor) y cliente (consumidor).

Un consumidor de servicios web (cliente) solicita información de un proveedor de servicios web (servidor). Un proveedor de servicios web procesa la solicitud y devuelve un código de estado y un cuerpo de respuesta. Cuando se devuelve el cuerpo de respuesta, el consumidor del servicio web extrae información del cuerpo de la respuesta y actúa sobre los datos extraídos.

ServiceNow puede consumir servicios web de proveedores externos o de otra instancia de ServiceNow.

En nuestro caso, usó la url de punto final activada por la puerta de enlace API utilizando los servicios web Rest y accedí utilizando javascript que se ejecuta en la creación del ticket.

Al crear un ticket, se activa el javascript que envía la descripción del incidente a nuestro modelo ubicado en AWS, que realiza las operaciones de aprendizaje automático y devuelve las categorías y la probabilidad pronosticadas.

Ámbito futuro:

Este proyecto aún no se ha completado ya que nos quedaba poco tiempo. Estamos trabajando en este proyecto y planeamos llevarlo adelante para poder implementar nuestro código en AWS e integrarlo con Service Now. Actualizaremos el blog tan pronto como progresemos. 🙂

Enlace de Github: –https://github.com/pankajkishore/Cognitive-Project

Dejá un comentario