Introducción (AWS CLI) - Amazon Personalize

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción (AWS CLI)

En este ejercicio, utilizará 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 los recursos de Amazon Personalize.

nota

Los AWS CLI comandos de este ejercicio se probaron 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 de conjuntos de datos pasando una AWS Key Management Serviceclave ARN y la clave ARN de un IAM rol que tenga permisos de acceso a esa clave como parámetros de entrada. Para obtener más información sobre elAPI, consulteCreateDatasetGroup.

    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

    ARNSe muestra el grupo de conjuntos de datos, por ejemplo:

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

    Use el describe-dataset-group comando para mostrar el grupo de conjuntos de datos que creó, especificando el grupo de conjuntos de datos devueltoARN.

    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 a que el grupo de conjuntos de datos se status muestre como ACTIVE antes de crear un conjunto de datos en el grupo. Esta operación suele ser rápida.

    Si no recuerdas el grupo de conjuntos de datosARN, usa el list-dataset-groups comando para mostrar todos los grupos de conjuntos de datos que creaste, junto con sus respectivos gruposARNs.

    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 JSON formato guardando el siguiente código en un archivo denominadoMovieRatingSchema.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 JSON archivos 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 elAPI, consulteCreateSchema.

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

    Se muestra el esquema Amazon Resource Name (ARN), 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 grupo de conjuntos de datos ARN y el esquema ARN que se devolvieron 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 acerca deAPI, consulteCreateDataset.

    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

    ARNSe muestra el 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 conjunto de datos ARN y el nombre del bucket de Amazon S3 que se devolvieron en los pasos anteriores. Proporcione el rol AWS Identity and Access Management (IAM) en el ARN que lo creóCreación de un IAM rol para Amazon Personalize. Para obtener más información sobre elAPI, consulteCreateDatasetImportJob.

      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

      ARNSe muestra el trabajo de importación del 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 trabajo de importación del conjunto de datos ARN que se devolvió en el paso anterior. Para obtener más información sobre elAPI, consulteDescribeDatasetImportJob.

      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. Inicialmente, los status programas son CREATEPENDING, 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 se completa cuando el estado se muestra comoACTIVE. 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, debe crear la configuración para entrenar el modelo mediante la CreateSolution operación y dejar 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, utilizará la receta Usuario-Personalización-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 la 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)\"}}"

    ARNSe muestra 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 la solución ARN que se devolvió en el paso anterior. Para obtener más información acerca deAPI, consulteDescribeSolution.

    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 la versión de la solución comienza una vez que se haya creado la soluciónACTIVE. Una vez que comience el entrenamiento, puede obtener el nombre de recurso de Amazon (ARN) de la versión de la solución con el siguiente ListSolutionVersionscomando:

    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 la versión de la solución ARN que se devolvió en el paso anterior. Para obtener más información acerca deAPI, consulteDescribeSolutionVersion.

    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. Inicialmente, el estado se muestra como CREATEPENDING, 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 status es ACTIVE válida, la formación se ha completado.

    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 a que finalice la formación (el estado de la formación de la versión de la solución se muestra comoACTIVE) antes de usar esta versión de la 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 la versión de la solución ARN que se devolvió anteriormente. Para obtener más información acerca deAPI, consulteGetSolutionMetrics.

    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 su campaña, su aplicación cliente podrá obtener recomendaciones mediante el GetRecommendationsAPI.

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

    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 la campaña ARN que se devolvió en el paso anterior. Para obtener más información sobre elAPI, consulteDescribeCampaign.

    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 a que se status muestre como ACTIVE antes de recibir recomendaciones de la campaña.

Ejecute el comando get-recommendations para obtener recomendaciones. Proporciona la campaña ARN 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 elAPI, consulteGetRecommendations.

nota

No todas las recetas son compatibles con GetRecommendationsAPI. Para obtener más información, consulte Elección de una receta.

El AWS CLI comando al que se llama en este paso,personalize-runtime, es diferente al 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 artículos recomendados (películasIDs) que podrían interesar 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" }, ... ] }