Introducción (AWS CLI) - Amazon Personalize

Introducción (AWS CLI)

En este ejercicio, utilizará la AWS Command Line Interface (AWS CLI) para explorar Amazon Personalize. Creará una campaña que devuelve recomendaciones de películas para un ID de usuario determinado.

Antes de empezar este ejercicio, haga lo siguiente:

Cuando termine el ejercicio de introducción, para evitar incurrir en cargos innecesarios, elimine los recursos que ha creado. Para obtener más información, consulte Requisitos para eliminar recursos de Amazon Personalize.

nota

La comandos de la AWS CLI de este ejercicio se han probado en Linux. Para obtener información sobre el uso de comandos de AWS CLI en Windows, consulte Especificación de valores de parámetros para la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

Siga los pasos para crear un grupo de conjuntos de datos, añadir un conjunto de datos al grupo y, a continuación, rellenar el conjunto de datos con los datos de valoraciones de películas.

  1. Ejecute el siguiente comando para crear un grupo de conjuntos de datos. Puede cifrar el grupo del conjunto de datos pasando un ARN de clave de AWS Key Management Service y el ARN de un rol de IAM que tenga permisos de acceso a esa clave como parámetros de entrada. Para obtener más información sobre la API, consulte CreateDatasetGroup.

    aws personalize create-dataset-group --name MovieRatingDatasetGroup --kms-key-arn arn:aws:kms:us-west-2:01234567890:key/1682a1e7-a94d-4d92-bbdf-837d3b62315e --role-arn arn:aws:iam::01234567890:KMS-key-access

    Se muestra el ARN del grupo de conjuntos de datos, por ejemplo:

    { "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup" }

    Utilice el comando describe-dataset-group para mostrar el grupo de conjuntos de datos que ha creado especificando el ARN del grupo de conjuntos de datos que ha obtenido.

    aws personalize describe-dataset-group \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup

    Se muestran el grupo de conjuntos de datos y sus propiedades, por ejemplo:

    { "datasetGroup": { "name": "MovieRatingDatasetGroup", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "status": "ACTIVE", "creationDateTime": 1542392161.262, "lastUpdatedDateTime": 1542396513.377 } }
    nota

    Espere hasta que el valor de status para el grupo de conjuntos de datos sea ACTIVE antes de poder crear un conjunto de datos en el grupo. Esta operación suele ser rápida.

    Si no recuerda el ARN del grupo de conjuntos de datos, utilice el comando list-dataset-groups para mostrar todos los grupos de conjuntos de datos que ha creado, junto con sus ARN.

    aws personalize list-dataset-groups
    nota

    Los comandos describe-object y list-objects están disponibles para la mayoría de los objetos de Amazon Personalize. Estos comandos no se muestran en el resto de este ejercicio, pero están disponibles.

  2. Cree un archivo de esquema en formato JSON guardando el siguiente código en un archivo denominado MovieRatingSchema.json. El esquema coincide con los encabezados que añadió previamente en ratings.csv. El nombre del esquema es Interactions, que coincide con uno de los tipos de conjuntos de datos que reconoce Amazon Personalize. Para obtener más información, consulte Creación de archivos JSON de esquema para los esquemas de Amazon Personalize.

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  3. Ejecute el siguiente comando para crear un esquema. Especifique el archivo que guardó en el paso anterior. En el ejemplo, el archivo pertenece a la carpeta actual. Para obtener más información sobre la API, consulte CreateSchema.

    aws personalize create-schema \ --name MovieRatingSchema \ --schema file://MovieRatingSchema.json

    Se muestra el nombre de recurso de Amazon (ARN) del esquema, por ejemplo:

    { "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema" }
  4. Ejecute el siguiente comando para crear un conjunto de datos vacío. Proporcione el ARN del grupo de conjuntos de datos y el ARN del esquema que obtuvo en los pasos anteriores. El valor de dataset-type debe coincidir con el valor de name del esquema del paso anterior. Para obtener más información sobre la API, consulte CreateDataset.

    aws personalize create-dataset \ --name MovieRatingDataset \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --dataset-type Interactions \ --schema-arn arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema

    Se muestra el ARN del conjunto de datos, por ejemplo:

    { "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS" }
  5. Añada los datos de entrenamiento al conjunto de datos.

    1. Ejecute el siguiente comando para crear un trabajo de importación de conjunto de datos. Proporcione el ARN del conjunto de datos y el nombre del bucket de Amazon S3 que obtuvo en los pasos anteriores. Indique el ARN del rol de AWS Identity and Access Management (IAM) que creó en Creación de un rol de IAM para Amazon Personalize. Para obtener más información sobre la API, consulte CreateDatasetImportJob.

      aws personalize create-dataset-import-job \ --job-name MovieRatingImportJob \ --dataset-arn arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS \ --data-source dataLocation=s3://amzn-s3-demo-bucket/ratings.csv \ --role-arn roleArn

      Se muestra el ARN del trabajo de importación de conjunto de datos, por ejemplo:

      { "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob" }
    2. Compruebe el estado utilizando el comando describe-dataset-import-job. Proporcione el ARN del trabajo de importación de conjunto de datos que obtuvo en el paso anterior. Para obtener más información sobre la API, consulte DescribeDatasetImportJob.

      aws personalize describe-dataset-import-job \ --dataset-import-job-arn arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob

      Se muestran las propiedades del trabajo de importación del conjunto de datos y su estado. En un principio, el valor de status es CREATE PENDING; por ejemplo:

      { "datasetImportJob": { "jobName": "MovieRatingImportJob", "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob", "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS", "dataSource": { "dataLocation": "s3://amzn-s3-demo-bucket/ratings.csv" }, "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }

      La importación del conjunto de datos finaliza cuando el estado es ACTIVO. En ese momento, estará listo para entrenar el modelo utilizando el conjunto de datos especificado.

      nota

      La importación lleva tiempo. Espere hasta que se haya completado la importación del conjunto de datos para entrenar el modelo con el conjunto de datos.

Para entrenar un modelo, cree la configuración para entrenarlo mediante la operación CreateSolution y deje activado el entrenamiento automático. La solución comienza automáticamente a entrenar la primera solución en una hora.

Para entrenar un modelo, se utiliza una receta y sus datos de entrenamiento. Amazon Personalize proporciona un conjunto de recetas predefinidas. Para obtener más información, consulte Elección de una receta. Para este ejercicio, debe usar la receta User-Personalization-v2.

  1. Cree la configuración de entrenamiento de un modelo con el siguiente comando. Este comando crea una solución que utiliza el entrenamiento automático. Crea automáticamente una nueva versión de solución cada siete días (el valor predeterminado).

    aws personalize create-solution \ --name MovieSolution \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --recipe-arn arn:aws:personalize:::recipe/aws-user-personalization-v2 \ --perform-auto-training \ --solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(7 days)\"}}"

    Se muestra el ARN de la solución, por ejemplo:

    { "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution" }
  2. Compruebe el estado del proceso de creación con el comando describe-solution. Proporcione el ARN de la solución que se devolvió en el paso anterior. Para obtener más información sobre la API, consulte DescribeSolution.

    aws personalize describe-solution \ --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution

    Se muestran las propiedades de la solución, entre ellas, status, para la operación de creación. Por ejemplo:

    { "solution": { "name": "MovieSolution", "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution", "performHPO": false, "performAutoML": false, "recipeArn": "arn:aws:personalize:::recipe/aws-user-personalization-v2", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "solutionConfig": { "algorithmHyperParameters": { "apply_recency_bias": "true" }, "featureTransformationParameters": {}, "autoTrainingConfig": { "schedulingExpression": "rate(7 days)" } }, "status": "ACTIVE", "creationDateTime": "2021-05-12T16:27:59.819000-07:00", "lastUpdatedDateTime": "2021-05-12T16:27:59.819000-07:00" } }
  3. Con el entrenamiento automático, el entrenamiento de versiones de solución comienza una vez que el estado de la solución sea ACTIVE. Una vez que comience el entrenamiento, puede obtener el nombre de recurso de Amazon (ARN) de la versión de solución con el siguiente comando ListSolutionVersions:

    aws personalize list-solution-versions --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution
  4. Compruebe el estado del proceso de entrenamiento de la versión de solución utilizando el comando describe-solution-version. Proporcione el ARN de versión de solución que se devolvió en el paso anterior. Para obtener más información sobre la API, consulte DescribeSolutionVersion.

    aws personalize describe-solution-version \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id

    Se muestran las propiedades de la versión de solución y el valor de status del entrenamiento. En un principio, el estado mostrado es CREATE PENDING; por ejemplo:

    { "solutionVersion": { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", ..., "status": "CREATE PENDING" } }
  5. Cuando la versión de la solución de status se muestre como ACTIVE, el entrenamiento habrá terminado.

    Ahora puede revisar las métricas de entrenamiento y crear una campaña con la versión de la solución.

    nota

    El entrenamiento lleva tiempo. Espere hasta que finalice el entrenamiento (cuando el estado del entrenamiento de la versión de solución sea ACTIVE) para poder utilizar esta versión de solución en una campaña.

  6. Puede validar el rendimiento de la versión de solución revisando sus métricas. Ejecute el siguiente comando para obtener las métricas de la versión de solución. Proporcione el ARN de la versión de la solución que se devolvió anteriormente. Para obtener más información sobre la API, consulte GetSolutionMetrics.

    aws personalize get-solution-metrics \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id

    A continuación, se muestra una respuesta de ejemplo:

    { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/www-solution/<version-id>", "metrics": { "coverage": 0.0485, "mean_reciprocal_rank_at_25": 0.0381, "normalized_discounted_cumulative_gain_at_10": 0.0363, "normalized_discounted_cumulative_gain_at_25": 0.0984, "normalized_discounted_cumulative_gain_at_5": 0.0175, "precision_at_10": 0.0107, "precision_at_25": 0.0207, "precision_at_5": 0.0107 } }

Para poder obtener recomendaciones, debe implementar una versión de la solución. La implementación de una solución también se conoce como crear una campaña. Una vez que haya creado una campaña, su aplicación cliente puede obtener recomendaciones utilizando la API GetRecommendations.

  1. Ejecute el siguiente comando para crear una campaña. Proporcione el ARN de versión de solución que se devolvió en el paso anterior. Para obtener más información sobre la API, consulte CreateCampaign.

    aws personalize create-campaign \ --name MovieRecommendationCampaign \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id \ --min-provisioned-tps 1

    A continuación, se muestra una respuesta de ejemplo:

    { "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign" }
  2. Ejecute el siguiente comando para comprobar el estado de la implementación: Proporcione el ARN de la campaña que se devolvió en el paso anterior. Para obtener más información sobre la API, consulte DescribeCampaign.

    aws personalize describe-campaign \ --campaign-arn arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign

    A continuación, se muestra una respuesta de ejemplo:

    { "campaign": { "name": "MovieRecommendationCampaign", "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign", "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "minProvisionedTPS": "1", "creationDateTime": 1543864775.923, "lastUpdatedDateTime": 1543864791.923, "status": "CREATE IN_PROGRESS" } }
    nota

    Espere hasta que la propiedad status se muestre como ACTIVE para poder obtener recomendaciones de la campaña.

Ejecute el comando get-recommendations para obtener recomendaciones. Proporcione el ARN de la campaña que se devolvió en el paso anterior. En la solicitud, debe especificar un ID de usuario del conjunto de datos de valoraciones de películas. Para obtener más información sobre la API, consulte GetRecommendations.

nota

No todas las recetas admiten la API GetRecommendations. Para obtener más información, consulte Elección de una receta.

El comando de la AWS CLI que se utiliza en este paso, personalize-runtime, no coincide con el de los pasos anteriores.

aws personalize-runtime get-recommendations \ --campaign-arn arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign \ --user-id 123

Como respuesta, la campaña devuelve una lista de recomendaciones de elementos (ID de películas) que podrían gustarle al usuario. La lista está ordenada por orden descendente de relevancia para el usuario.

{ "itemList": [ { "itemId": "14" }, { "itemId": "15" }, { "itemId": "275" }, { "itemId": "283" }, { "itemId": "273" }, ... ] }