paint-brush
La IA está mapeando conexiones ocultas y recién está comenzandopor@andrei9735
Nueva Historia

La IA está mapeando conexiones ocultas y recién está comenzando

por Andrei4m2025/02/14
Read on Terminal Reader

Demasiado Largo; Para Leer

Desde los motores de recomendación hasta la optimización de la red, la predicción de enlaces es una herramienta versátil que aporta valor.
featured image - La IA está mapeando conexiones ocultas y recién está comenzando
Andrei HackerNoon profile picture
0-item

En esta quinta y última publicación de nuestra serie sobre predicción de enlaces con Neptune ML, profundizaremos en el proceso de inferencia: configuraremos un punto final de inferencia para usar nuestro modelo GNN entrenado para predicciones de enlaces. Para establecer el punto final, usaremos la API del clúster Neptune y los artefactos del modelo almacenados en S3. Con el punto final activo, lo consultaremos para la predicción de enlaces, utilizando una consulta de Gremlin para identificar conexiones potenciales de alta confianza en nuestro gráfico.


A esta altura, ya hemos cargado los datos de la red social Twitch en el clúster Neptune (como se describe en la Parte 1 de esta serie), exportamos los datos usando el perfil ML (consulte la Parte 2 para obtener más detalles), preprocesamos los datos (como se explica en la Parte 3), entrenamos el modelo (consulte la Parte 4) y ahora estamos listos para usar el modelo entrenado para generar predicciones.


Lea la parte 1 aquí ; la parte 2 aquí ; la parte 3 aquí; y la parte 4 aquí .

CREANDO EL PUNTO FINAL

Creemos el punto final de inferencia utilizando la API del clúster y los artefactos del modelo que tenemos en S3. Como es habitual, primero necesitamos un rol de IAM que tenga acceso a S3 y SageMaker. El rol también debe tener una política de confianza que nos permita agregarlo al clúster de Neptune (la política de confianza se puede encontrar en la Parte 3 de esta guía). También necesitamos proporcionar acceso a SageMaker y a la API de CloudWatch desde dentro de la VPC, por lo que necesitamos los puntos finales de la VPC como se explica en la Parte 1 de esta serie.


Utilicemos la API del clúster para crear un punto final de inferencia con este comando curl:

 curl -XPOST https://(YOUR_NEPTUNE_ENDPOINT):8182/ml/endpoints \ -H 'Content-Type: application/json' \ -d '{ "mlModelTrainingJobId": YOUR_MODEL_TRAINING_JOB_ID, "neptuneIamRoleArn": "arn:aws:iam::123456789012:role/NeptuneMLNeptuneRole" }'

Podemos usar los parámetros ' instanceType ' y ' instanceCount ' para elegir el tipo de instancia EC2 que se usará para la predicción de enlaces e implementar más de una instancia. La lista completa de parámetros se puede encontrar aquí . Usaremos la instancia predeterminada ' ml.m5(d).xlarge ' ya que tiene suficiente CPU y RAM para nuestro pequeño gráfico, y este tipo de instancia fue recomendado en infer_instance_recommendation.json que se generó después del entrenamiento del modelo en nuestra etapa anterior:

 { "disk_size": 12023356, "instance": "ml.m5d.xlarge", "mem_size": 13847612 }

La API responde con el ID del punto final de inferencia:

 {"id":"b217165b-7780-4e73-9d8a-5b6f7cfef9f6"}

Luego podemos verificar el estado del punto final de inferencia con este comando:

 curl https://YOUR_NEPTUNE_ENDPOINT:8182/ml/endpoints/INFERENCE_ENDPOINT_ID?neptuneIamRole='arn:aws:iam::123456789012:role/NeptuneMLNeptuneRole'

y una vez que responde con ' status: InService ' de esta manera,

 { "endpoint": { "name": "YOUR_INFERENCE_ENDPOINT_NAME-endpoint", "arn": "...", "status": "InService" }, "endpointConfig": {...}, "id": "YOUR_INFERENCE_ENDPOINT_ID", "status": "InService" }

Significa que estamos listos para comenzar a usarlo con consultas de bases de datos.

El punto final también se puede ver y administrar desde la consola de AWS, en SageMaker -> Inferencia -> Puntos finales.

CONSULTA DEL PUNTO FINAL

Utilicemos el punto final para predecir nuevos enlaces de "seguimiento" en el gráfico. Para ello, debemos elegir el vértice de origen de los posibles nuevos enlaces.

Es útil si el vértice de origen ya tiene enlaces, por lo que usaremos esta consulta para obtener el vértice con la mayor cantidad de enlaces existentes (conexiones outE e inE):

 gV() .group() .by() .by(bothE().count()) .order(local) .by(values, Order.desc) .limit(local, 1) .next()

El resultado es

 {v[1773]: 1440}

lo que significa que el vértice con ID = 1773 tiene 1440 conexiones (720 inE y 720 outE).

Para obtener el número de aristas que comienzan en el nodo 1773 y el número de aristas que terminan en ese nodo podemos usar estas consultas:

 gV('1773').outE().count() gV('1773').inE().count()

Se espera el mismo número de conexiones inE y outE porque el conjunto de datos inicial contiene amistades mutuas y aumentamos los datos con bordes inversos para que funcione con el gráfico dirigido de Neptuno.


Ahora, obtengamos las conexiones previstas. Para ello, ejecutaremos una consulta de Gremlin con predicados de Neptune ML . Usaremos el punto final de inferencia y la función de SageMaker que se agregó al clúster de la base de datos para obtener los usuarios que el usuario 1773 podría seguir con un umbral de confianza (probabilidad mínima de existencia de vínculo según el modelo) de al menos 0,1 (10 %) , mientras que excluimos a los usuarios que el usuario 1773 ya está siguiendo:

 %%gremlin g.with('Neptune#ml.endpoint', 'YOUR_INFERENCE_ENDPOINT_NAME') .with('Neptune#ml.iamRoleArn', 'arn:aws:iam::123456789012:role/NeptuneMLSagemakerRole') .with('Neptune#ml.limit', 10000) .with('Neptune#ml.threshold', 0.1D) .V('1773') .out('follows') .with('Neptune#ml.prediction') .hasLabel('user') .not( __.in('follows').hasId('1773') )


Esto devuelve 4 resultados:

 "Result" "v[755]" "v[6086]" "v[6382]" "v[7005]"


Según nuestro modelo, hay al menos un 10 % de posibilidades de que el usuario 1773 siga a cada uno de estos 4 usuarios. Tal vez podamos mejorar el modelo aumentando la cantidad de trabajos de entrenamiento a al menos 10, como recomienda AWS, y luego comparar el rendimiento del modelo resultante y los vínculos previstos. En aplicaciones reales, agregar datos de perfil y actividad del usuario al gráfico también mejora la precisión de la predicción.


Las conexiones previstas en los conjuntos de datos de redes sociales se pueden utilizar para proporcionar recomendaciones personalizadas, como sugerencias de amigos y contenido, mejorando la participación del usuario y el crecimiento de la comunidad, reduciendo la pérdida de clientes y proporcionando datos adicionales para publicidad dirigida.


Aunque aplicamos la predicción de enlaces a un conjunto de datos de redes sociales, es solo una de las muchas aplicaciones posibles de esta tecnología. Desde los motores de recomendación hasta la optimización de redes, la predicción de enlaces es una herramienta versátil que aporta valor al descubrir relaciones ocultas dentro de los datos. A medida que las aplicaciones basadas en gráficos continúan expandiéndose, el potencial de la predicción de enlaces en todas las industrias promete nuevos conocimientos, eficiencia y experiencias de usuario mejoradas.