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:
-
Consulte los Requisitos previos para los ejercicios de introducción de la introducción.
-
Configure la AWS CLI, tal y como se especifica en Configuración de AWS CLI.
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.
-
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-arnarn: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/MovieRatingDatasetGroupSe 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
ylist-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. -
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 enratings.csv
. El nombre del esquema esInteractions
, 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" }
-
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" }
-
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 dename
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/MovieRatingSchemaSe muestra el ARN del conjunto de datos, por ejemplo:
{ "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS" }
-
Añada los datos de entrenamiento al conjunto de datos.
-
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-arnroleArn
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" }
-
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/MovieRatingImportJobSe 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.
-
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" }
-
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/MovieSolutionSe 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" } }
-
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 -
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" } }
-
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.
-
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.
-
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 1A continuación, se muestra una respuesta de ejemplo:
{ "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign" }
-
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/MovieRecommendationCampaignA 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" }, ... ] }