

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á.

# Registrar uma versão do modelo
<a name="model-registry-version"></a>

Você pode registrar um modelo Amazon SageMaker AI criando uma versão do modelo que especifica o grupo de modelos ao qual ele pertence. Uma versão do modelo deve incluir os respectivos artefatos (os pesos treinados de um modelo) e o respectivo código de inferência.

Um *pipeline de inferência* é um modelo de SageMaker IA composto por uma sequência linear de dois a quinze contêineres que processam solicitações de inferência. Você registra um pipeline de inferência especificando os contêineres e as variáveis de ambiente associadas. Para obter mais informações sobre os pipelines de inferência, consulte [Pipelines de inferência na Amazon AI SageMaker](inference-pipelines.md).

Você pode registrar um modelo com um pipeline de inferência especificando os contêineres e as variáveis de ambiente associadas. Para criar uma versão do modelo com um pipeline de inferência usando o AWS SDK para Python (Boto3) console do Amazon SageMaker Studio ou criando uma etapa em um pipeline de criação de modelos de SageMaker IA, use as etapas a seguir. 

**Topics**
+ [Registrar uma versão do modelo (SageMaker AI Pipelines)](#model-registry-pipeline)
+ [Registrar uma versão do modelo (Boto3)](#model-registry-version-api)
+ [Registrar uma versão do modelo (Studio ou Studio Classic)](#model-registry-studio)
+ [Registrar uma versão do modelo de uma conta diferente](#model-registry-version-xaccount)

## Registrar uma versão do modelo (SageMaker AI Pipelines)
<a name="model-registry-pipeline"></a>

Para registrar uma versão do modelo usando um pipeline de criação de modelos de SageMaker IA, crie uma `RegisterModel` etapa em seu pipeline. Para obter mais informações sobre a criação de uma etapa `RegisterModel` de um pipeline, consulte [Etapa 8: Definir uma RegisterModel etapa para criar um pacote de modelo](define-pipeline.md#define-pipeline-register).

## Registrar uma versão do modelo (Boto3)
<a name="model-registry-version-api"></a>

Para registrar uma versão do modelo usando o Boto3, chame a operação de API `create_model_package`.

Primeiro, você configura o dicionário de parâmetros para passar a operação de API `create_model_package`.

```
# Specify the model source
model_url = "s3://your-bucket-name/model.tar.gz"

modelpackage_inference_specification =  {
    "InferenceSpecification": {
      "Containers": [
         {
            "Image": image_uri,
	    "ModelDataUrl": model_url
         }
      ],
      "SupportedContentTypes": [ "text/csv" ],
      "SupportedResponseMIMETypes": [ "text/csv" ],
   }
 }

# Alternatively, you can specify the model source like this:
# modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url

create_model_package_input_dict = {
    "ModelPackageGroupName" : model_package_group_name,
    "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)",
    "ModelApprovalStatus" : "PendingManualApproval"
}
create_model_package_input_dict.update(modelpackage_inference_specification)
```

Em seguida, você chama a operação de API `create_model_package`, passando no dicionário de parâmetros que você acabou de configurar.

```
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict)
model_package_arn = create_model_package_response["ModelPackageArn"]
print('ModelPackage Version ARN : {}'.format(model_package_arn))
```

## Registrar uma versão do modelo (Studio ou Studio Classic)
<a name="model-registry-studio"></a>

Para registrar uma versão do modelo no console do Amazon SageMaker Studio, conclua as etapas a seguir com base no uso do Studio ou do Studio Classic.

------
#### [ Studio ]

1. Abra o console do SageMaker Studio seguindo as instruções em [Iniciar o Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. No painel de navegação à esquerda, selecione **Modelos** no menu.

1. Escolha a guia **Modelos registrados**, se ainda não estiver selecionada.

1. Logo abaixo da guia **Modelos registrados**, escolha **Grupos de modelos** e **Meus modelos**, se ainda não estiverem selecionados.

1. Escolha **Registrar**. Isso abrirá a página do **Registrar modelo**.

1. Siga as instruções fornecidas na página **Registrar modelo**. 

1. Depois de analisar suas escolhas, escolha **Registrar**. Assim que concluído, a página de versão do modelo **Visão geral** será aberta.

------
#### [ Studio Classic ]

1. Faça login no Amazon SageMaker Studio Classic. Para obter mais informações, consulte [Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. No painel de navegação à esquerda, selecione o ícone **Início** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Escolha **Modelos** e, em seguida, **Registro de modelo**.

1. Abra o formulário **Registrar versão**. É possível fazer isso de duas formas:
   + Escolha **Ações** e, em seguida, escolha **Criar versão do modelo**.
   + Selecione o nome do grupo de modelos para o qual você deseja criar uma versão do modelo e escolha **Criar versão do modelo**.

1. No formulário **Registrar versão do modelo**, insira as seguintes informações:
   + No menu suspenso **Nome do grupo de pacotes de modelos**, selecione o nome do grupo de modelos.
   + (Opcional) Insira uma descrição para sua versão do modelo.
   + No menu suspenso **Status da aprovação do modelo**, selecione o status da aprovação da versão.
   + (Opcional) No campo **Metadados personalizados**, adicione tags personalizadas como pares de valores-chave.

1. Escolha **Próximo**.

1. No formulário **Especificação de inferência**, insira as seguintes informações:
   + Insira o local da sua imagem de inferência.
   + Insira o local do artefato de dados do modelo.
   + (Opcional) Insira informações sobre as imagens preferidas para trabalhos de inferência em tempo real e transformação, além dos tipos de MIME de entrada e saída compatíveis.

1. Escolha **Próximo**.

1. (Opcional) Forneça detalhes para ajudar nas recomendações de endpoints.

1. Escolha **Próximo**.

1. (Opcional) Escolha as métricas do modelo que você deseja incluir.

1. Escolha **Próximo**.

1. Verifique se as configurações exibidas estão corretas e escolha **Registrar versão do modelo**. Se, posteriormente, você vir uma janela modal com uma mensagem de erro, escolha **Exibir** (ao lado da mensagem) para visualizar a origem do erro.

1. Confirme se a nova versão do modelo aparece na página do grupo de modelos principais.

------

## Registrar uma versão do modelo de uma conta diferente
<a name="model-registry-version-xaccount"></a>

Para registrar versões de modelo com um grupo de modelos criado por uma AWS conta diferente, você deve adicionar uma política de AWS Identity and Access Management recursos entre contas para habilitar essa conta. Por exemplo, uma AWS conta em sua organização é responsável pelos modelos de treinamento e uma conta diferente é responsável pelo gerenciamento, implantação e atualização dos modelos. Você cria políticas de recursos do IAM e aplica as políticas ao recurso de contas específicas ao qual deseja conceder acesso para esse caso. Para obter mais informações sobre políticas de recursos entre contas em AWS, consulte [Lógica de avaliação de políticas entre contas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) no Guia do *AWS Identity and Access Management usuário*.

Para permitir a descoberta entre contas e, portanto, que outras contas visualizem grupos de pacotes de modelo por meio da conta do proprietário do recurso, consulte [Detecção entre contas](model-registry-ram.md).

**nota**  
Você também deve usar uma chave do KMS para criptografar a ação de [configurar dados de saída](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html) durante o treinamento para implantação do modelo entre contas.

Para habilitar o registro de modelos entre contas no SageMaker AI, você precisa fornecer uma política de recursos entre contas para o grupo de modelos que contém as versões do modelo. Veja a seguir um exemplo que cria políticas entre contas para o Grupo de Modelos e aplica essas políticas a esse recurso específico.

A configuração a seguir deve ser definida na conta de origem, que registra modelos entre contas em um grupo de modelos. Neste exemplo, a conta de origem é a conta de treinamento de modelos que treinará e, em seguida, registrará o modelo entre contas no Registro do Modelo da conta do Registro do Modelo.

O exemplo pressupõe que você tenha definido anteriormente as seguintes variáveis:
+ `sm_client`— Um cliente SageMaker AI Boto3.
+ `model_package_group_name`: O grupo de modelos ao qual você deseja conceder acesso.
+ `model_package_group_arn`: O ARN do grupo de modelos ao qual você deseja conceder acesso entre contas.
+ `bucket`: O bucket do Amazon S3 em que os artefatos de treinamento de modelos são armazenados.

Para poder implantar um modelo criado em uma conta diferente, o usuário deve ter uma função que tenha acesso às ações de SageMaker IA, como uma função com a política `AmazonSageMakerFullAccess` gerenciada. Para obter informações sobre políticas gerenciadas por SageMaker IA, consulte[AWS políticas gerenciadas para Amazon SageMaker AI](security-iam-awsmanpol.md).

### Políticas de recursos do IAM obrigatórias
<a name="model-registry-version-xaccount-policies"></a>

O diagrama a seguir captura as políticas necessárias para permitir o registro do modelo entre contas. Conforme mostrado, essas políticas precisam estar ativas durante o treinamento do modelo para registrar adequadamente o modelo na conta do Registro de Modelos.

![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/model_registry_cross_account.png)


O Amazon ECR, o Amazon S3 AWS KMS e as políticas são demonstradas nos seguintes exemplos de código. 

**Exemplo de política do Amazon ECR**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:Describe*"
            ]
        }
    ]
}
```

------

**Exemplo de política do Amazon S3**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetBucketAcl",
                "s3:GetObjectAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

** AWS KMS Política de amostra**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### Aplicar políticas de recursos às contas
<a name="model-registry-version-xaccount-policy-usage"></a>

A configuração de política a seguir aplica as políticas abordadas na seção anterior e deve ser colocada na conta de treinamento de modelos.

```
import json

# The Model Registry account id of the Model Group 
model_registry_account = "111111111111"

# The model training account id where training happens
model_training_account = "222222222222"

# 1. Create a policy for access to the ECR repository 
# in the model training account for the Model Registry account Model Group
ecr_repository_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [{"Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": {
          "AWS": f"arn:aws:iam::{model_registry_account}:root"
        },
        "Action": [
          "ecr:BatchGetImage",
          "ecr:Describe*"
        ]
    }]
}

# Convert the ECR policy from JSON dict to string
ecr_repository_policy = json.dumps(ecr_repository_policy)

# Set the new ECR policy
ecr = boto3.client('ecr')
response = ecr.set_repository_policy(
    registryId = model_training_account,
    repositoryName = "decision-trees-sample",
    policyText = ecr_repository_policy
)

# 2. Create a policy in the model training account for access to the S3 bucket 
# where the model is present in the Model Registry account Model Group
bucket_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [{"Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": {"AWS": f"arn:aws:iam::{model_registry_account}:root"
        },
        "Action": [
          "s3:GetObject",
          "s3:GetBucketAcl",
          "s3:GetObjectAcl"
        ],
        "Resource": [
          "arn:aws:s3:::{bucket}/*",
	  "Resource: arn:aws:s3:::{bucket}"
        ]
    }]
}

# Convert the S3 policy from JSON dict to string
bucket_policy = json.dumps(bucket_policy)

# Set the new bucket policy
s3 = boto3.client("s3")
response = s3.put_bucket_policy(
    Bucket = bucket,
    Policy = bucket_policy)

# 3. Create the KMS grant for the key used during training for encryption
# in the model training account to the Model Registry account Model Group
client = boto3.client("kms")

response = client.create_grant(
    GranteePrincipal=model_registry_account,
    KeyId=kms_key_id
    Operations=[
        "Decrypt",
        "GenerateDataKey",
    ],
)
```

A configuração a seguir precisa ser colocada na conta do Registro do Modelo em que o Grupo de Modelos existe.

```
# The Model Registry account id of the Model Group 
model_registry_account = "111111111111"

# 1. Create policy to allow the model training account to access the ModelPackageGroup
model_package_group_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPermModelPackageVersion",
            "Effect": "Allow",
            "Principal": {"AWS": f"arn:aws:iam::{model_training_account}:root"},
            "Action": ["sagemaker:CreateModelPackage"],
            "Resource": f"arn:aws:sagemaker:{region}:{model_registry_account}:model-package/{model_package_group_name}/*"
        }
    ]
}

# Convert the policy from JSON dict to string
model_package_group_policy = json.dumps(model_package_group_policy)

# Set the new policy
response = sm_client.put_model_package_group_policy(
    ModelPackageGroupName = model_package_group_name,
    ResourcePolicy = model_package_group_policy)
```

Por fim, use a ação `create_model_package` a partir da conta de treinamento de modelos para registrar o pacote de modelos entre contas.

```
# Specify the model source
model_url = "s3://{bucket}/model.tar.gz"

#Set up the parameter dictionary to pass to the create_model_package API operation
modelpackage_inference_specification =  {
    "InferenceSpecification": {
        "Containers": [
            {
                "Image": f"{model_training_account}.dkr.ecr.us-east-2.amazonaws.com/decision-trees-sample:latest",
                "ModelDataUrl": model_url
            }
        ],
        "SupportedContentTypes": [ "text/csv" ],
        "SupportedResponseMIMETypes": [ "text/csv" ],
    }
}

# Alternatively, you can specify the model source like this:
# modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url

create_model_package_input_dict = {
    "ModelPackageGroupName" : model_package_group_arn,
    "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)",
    "ModelApprovalStatus" : "PendingManualApproval"
}
create_model_package_input_dict.update(modelpackage_inference_specification)

# Create the model package in the Model Registry account
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict)
model_package_arn = create_model_package_response["ModelPackageArn"]
print('ModelPackage Version ARN : {}'.format(model_package_arn))
```