Conceitos básicos (AWS CLI) - Amazon Personalize

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceitos básicos (AWS CLI)

Neste exercício, você usa o AWS Command Line Interface (AWS CLI) para explorar o Amazon Personalize. Você vai criar uma campanha que retorna recomendações de filmes para um determinado ID de usuário.

Antes de começar este exercício, faça o seguinte:

Ao terminar o exercício de introdução, para evitar cobranças desnecessárias, exclua os recursos que você criou. Para obter mais informações, consulte Requisitos para excluir recursos do Amazon Personalize.

nota

Os AWS CLI comandos deste exercício foram testados no Linux. Para obter informações sobre como usar os comandos da AWS CLI no Windows, consulte Como especificar valores de parâmetros para AWS Command Line Interface no Guia do usuário da AWS Command Line Interface .

Siga as etapas para criar um grupo de conjuntos de dados, adicione um conjunto de dados ao grupo e preencha o conjunto de dados usando os dados de classificação do filme.

  1. Crie um grupo de conjuntos de dados executando o seguinte comando. Você pode criptografar o grupo de conjuntos de dados passando uma AWS Key Management Servicechave ARN e a ARN de uma IAM função que tenha permissões de acesso a essa chave como parâmetros de entrada. Para obter mais informações sobre oAPI, 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

    O grupo de conjuntos de dados ARN é exibido, por exemplo:

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

    Use o describe-dataset-group comando para exibir o grupo de conjuntos de dados que você criou, especificando o grupo de conjuntos de dados retornado. ARN

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

    O grupo de conjuntos de dados e suas propriedades são exibidos, por exemplo:

    { "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 até que o grupo de conjuntos de dados status apareça ACTIVE antes de criar um conjunto de dados no grupo. Em geral, essa operação é rápida.

    Se você não se lembra do grupo de conjuntos de dadosARN, use o list-dataset-groups comando para exibir todos os grupos de conjuntos de dados que você criou, junto com os deles. ARNs

    aws personalize list-dataset-groups
    nota

    Os comandos describe-object e list-objects estão disponíveis para a maioria dos objetos do Amazon Personalize. Esses comandos não serão mostrados no restante deste exercício, mas eles estão disponíveis.

  2. Crie um arquivo de esquema em JSON formato salvando o código a seguir em um arquivo chamadoMovieRatingSchema.json. O esquema corresponde aos cabeçalhos que você adicionou anteriormente ao arquivo ratings.csv. O nome do esquema é Interactions, que corresponde a um dos tipos de conjunto de dados reconhecidos pelo Amazon Personalize. Para obter mais informações, consulte Criação de JSON arquivos de esquema para seus dados.

    { "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. Crie um esquema executando o seguinte comando. Especifique o arquivo que você salvou na etapa anterior. O exemplo mostra o arquivo como pertencente à pasta atual. Para obter mais informações sobre oAPI, consulteCreateSchema.

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

    O esquema Amazon Resource Name (ARN) é exibido, por exemplo:

    { "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema" }
  4. Crie um conjunto de dados vazio executando o seguinte comando. Forneça o grupo de conjuntos de dados ARN e o esquema ARN que foram retornados nas etapas anteriores. O dataset-type deve corresponder ao tipo do esquema name da etapa anterior. Para obter mais informações sobre oAPI, 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

    O conjunto de dados ARN é exibido, por exemplo:

    { "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS" }
  5. Adicione os dados de treinamento ao conjunto de dados.

    1. Crie um trabalho de importação do conjunto de dados executando o seguinte comando. Forneça o conjunto de dados ARN e o nome do bucket do Amazon S3 que foram retornados nas etapas anteriores. Forneça a função AWS Identity and Access Management (IAM) na ARN qual você criouCriação de uma IAM função para o Amazon Personalize. Para obter mais informações sobre oAPI, 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

      O trabalho de importação do conjunto de dados ARN é exibido, por exemplo:

      { "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob" }
    2. Verifique o status usando o comando describe-dataset-import-job. Forneça o trabalho de importação do conjunto de dados ARN que foi retornado na etapa anterior. Para obter mais informações sobre oAPI, consulteDescribeDatasetImportJob.

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

      As propriedades do trabalho de importação do conjunto de dados, incluindo seu status, são exibidas. Inicialmente, os status shows eram CREATEPENDING, por exemplo:

      { "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 } }

      A importação do conjunto de dados é concluída quando o status é exibido comoACTIVE. Agora, você está pronto para treinar o modelo usando o conjunto de dados especificado.

      nota

      A importação é demorada. Aguarde até que a importação do conjunto de dados seja concluída antes de treinar o modelo usando o conjunto de dados.

Para treinar um modelo, você cria a configuração para treinar o modelo usando a CreateSolution operação e deixa o treinamento automático ativado. A solução começa automaticamente a treinar a primeira solução em uma hora.

Você treina um modelo usando uma fórmula e seus dados de treinamento. O Amazon Personalize fornece um conjunto de fórmulas predefinidas. Para obter mais informações, consulte Escolher uma fórmula. Para este exercício, você usa a receita User-Personalization-v2.

  1. Crie a configuração para treinar um modelo executando o comando a seguir. Esse comando cria uma solução que usa treinamento automático. Ele cria automaticamente uma nova versão da solução a cada sete dias (o padrão).

    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)\"}}"

    A solução ARN é exibida, por exemplo:

    { "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution" }
  2. Verifique o status de criação usando o comando describe-solution. Forneça a solução ARN que foi retornada na etapa anterior. Para obter mais informações sobre oAPI, consulteDescribeSolution.

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

    As propriedades da solução e o status de criação são exibidos. Por exemplo:

    { "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. Com o treinamento automático, o treinamento da versão da solução começa dentro de um período após o término da soluçãoACTIVE. Após o início do treinamento, você pode obter o Amazon Resource Name (ARN) da versão da solução com o seguinte ListSolutionVersionscomando:

    aws personalize list-solution-versions --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution
  4. Verifique o status de treinamento da versão da solução usando o comando describe-solution-version. Forneça a versão da solução ARN que foi retornada na etapa anterior. Para obter mais informações sobre oAPI, consulteDescribeSolutionVersion.

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

    As propriedades da versão da solução e o status do treinamento são exibidos. Inicialmente, o status é exibido como CREATEPENDING, por exemplo:

    { "solutionVersion": { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", ..., "status": "CREATE PENDING" } }
  5. Quando a versão da solução status forACTIVE, o treinamento estará concluído.

    Agora você pode revisar as métricas de treinamento e criar uma campanha usando a versão da solução.

    nota

    O treinamento é demorado. Espere até que o treinamento seja concluído (o status do treinamento da versão da solução aparece comoACTIVE) antes de usar essa versão da solução em uma campanha.

  6. Você pode validar o desempenho da versão da solução analisando as métricas dela. Obtenha as métricas para a versão da solução executando o comando a seguir. Forneça a versão da solução ARN que foi retornada anteriormente. Para obter mais informações sobre oAPI, consulteGetSolutionMetrics.

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

    Uma resposta de exemplo é mostrada:

    { "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 } }

Antes de obter recomendações, você deve implantar uma versão da solução. A implantação de uma solução também é conhecida como a criação de uma campanha. Depois de criar sua campanha, seu aplicativo cliente pode obter recomendações usando GetRecommendations API o.

  1. Crie uma campanha executando o seguinte comando. Forneça a versão da solução ARN que foi retornada na etapa anterior. Para obter mais informações sobre oAPI, 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

    Uma resposta de exemplo é mostrada:

    { "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign" }
  2. Verifique o status da implantação executando o seguinte comando. Forneça a campanha ARN que foi devolvida na etapa anterior. Para obter mais informações sobre oAPI, consulteDescribeCampaign.

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

    Uma resposta de exemplo é mostrada:

    { "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 até os status shows ACTIVE antes de receber recomendações da campanha.

Obtenha recomendações executando o comando get-recommendations. Forneça a campanha ARN que foi devolvida na etapa anterior. Na solicitação, você especifica um ID de usuário do conjunto de dados de classificações de filmes. Para obter mais informações sobre oAPI, consulteGetRecommendations.

nota

Nem todas as receitas suportam GetRecommendations API o. Para obter mais informações, consulte Escolher uma fórmula.

O AWS CLI comando que você chama nesta etapa,personalize-runtime, é diferente do que nas etapas anteriores.

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

Em resposta, a campanha retorna uma lista de recomendações de itens (filmeIDs) que o usuário pode gostar. A lista é classificada em ordem decrescente de relevância para o usuário.

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