TabTransformer - Amazon SageMaker

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

TabTransformer

TabTransformeré uma nova arquitetura de modelagem de dados tabulares profunda para aprendizado supervisionado. A TabTransformer arquitetura é construída em self-attention-based Transformers. As camadas do Transformer transformam as incorporações de recursos categóricos em incorporações contextuais robustas para obter maior precisão de previsão. Além disso, as incorporações contextuais aprendidas TabTransformer são altamente robustas contra recursos de dados ausentes e ruidosos e fornecem melhor interpretabilidade.

Como usar SageMaker TabTransformer

Você pode usar TabTransformer como um algoritmo SageMaker integrado da Amazon. A seção a seguir descreve como usar TabTransformer com o SDK do SageMaker Python. Para obter informações sobre como usar a interface TabTransformer do usuário do Amazon SageMaker Studio Classic, consulteTreine, implante e avalie modelos pré-treinados com SageMaker JumpStart.

  • Use TabTransformer como um algoritmo embutido

    Use o algoritmo TabTransformer integrado para criar um contêiner TabTransformer de treinamento, conforme mostrado no exemplo de código a seguir. Você pode identificar automaticamente o URI TabTransformer integrado da imagem do algoritmo usando a SageMaker image_uris.retrieve API (ou a get_image_uri API se estiver usando o SDK do Amazon SageMaker Python versão 2).

    Depois de especificar o URI da TabTransformer imagem, você pode usar o TabTransformer contêiner para criar um estimador usando a API Estimator e SageMaker iniciar um trabalho de treinamento. O algoritmo TabTransformer incorporado é executado no modo script, mas o script de treinamento é fornecido para você e não há necessidade de substituí-lo. Se você tiver uma vasta experiência no uso do modo script para criar um trabalho de SageMaker treinamento, poderá incorporar seus próprios scripts de TabTransformer treinamento.

    from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "pytorch-tabtransformerclassification-model", "*", "training" training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=train_model_id, model_version=train_model_version, image_scope=train_scope, instance_type=training_instance_type ) # Retrieve the training script train_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope=train_scope ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_binary/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyperparameters for training the model hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version ) # [Optional] Override default hyperparameters with custom values hyperparameters[ "n_epochs" ] = "50" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # Create SageMaker Estimator instance tabular_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( { "training": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )

    Para obter mais informações sobre como configurar o TabTransformer como um algoritmo incorporado, consulte os exemplos de cadernos a seguir.

Interface de entrada e saída para o TabTransformer algoritmo

TabTransformer opera em dados tabulares, com as linhas representando observações, uma coluna representando a variável ou rótulo de destino e as colunas restantes representando características.

A SageMaker implementação do TabTransformer suporte CSV para treinamento e inferência:

  • Para treinamento ContentType, as entradas válidas devem ser text/csv.

  • Para inferência ContentType, as entradas válidas devem ser text/csv.

nota

Para treinamento de CSV, o algoritmo de treinamento pressupõe que a variável de destino está na primeira coluna e que o CSV não tem um registro de cabeçalho.

Para inferência de CSV, o algoritmo pressupõe que a entrada do CSV não tem a coluna de rótulo.

Formato de entrada para dados de treinamento, dados de validação e recursos categóricos

Lembre-se de como formatar seus dados de treinamento para serem inseridos no TabTransformer modelo. Você precisa fornecer o caminho para um bucket do Amazon S3 que contenha seus dados de treinamento e validação. Você também pode incluir uma lista de recursos categóricos. Use os canais training e validation para fornecer seus dados de entrada. Como alternativa, você pode usar somente o canal training.

Use ambos os canais training e validation

Você pode fornecer seus dados de entrada por meio de dois caminhos S3, um para o canal training e outro para o canal validation. Cada caminho do S3 pode ser um prefixo do S3 que aponta para um ou mais arquivos CSV ou um caminho completo do S3 apontando para um arquivo CSV específico. As variáveis de destino devem estar na primeira coluna do seu arquivo CSV. As variáveis preditoras (atributos) devem estar nas colunas restantes. Se vários arquivos CSV forem fornecidos para os validation canais training ou, o TabTransformer algoritmo concatena os arquivos. Os dados de validação são usados para calcular uma pontuação de validação no final de cada iteração de reforço. A interrupção antecipada é aplicada quando a pontuação de validação para de melhorar.

Se seus preditores incluírem atributos categóricos, você poderá fornecer um arquivo JSON nomeado categorical_index.json no mesmo local do arquivo ou arquivos de dados de treinamento. Se você fornecer um arquivo JSON para recursos categóricos, seu canal training deverá apontar para um prefixo S3 e não para um arquivo CSV específico. Esse arquivo deve conter um dicionário Python em que a chave é a string "cat_index_list" e o valor é uma lista de números inteiros exclusivos. Cada número inteiro na lista de valores deve indicar o índice da coluna dos recursos categóricos correspondentes em seu arquivo CSV de dados de treinamento. Cada valor deve ser um número inteiro positivo (maior que zero porque zero representa o valor alvo), menor que o Int32.MaxValue (2147483647) e menor que o número total de colunas. Só deve haver um arquivo JSON de índice categórico.

Use somente o canal training:

Como alternativa, você pode fornecer seus dados de entrada por meio de um único caminho S3 para o canal training. Esse caminho do S3 deve apontar para um diretório com um subdiretório chamado training/ que contém um ou mais arquivos CSV. Opcionalmente, você pode incluir outro subdiretório no mesmo local chamado validation/ que também tenha um ou mais arquivos CSV. Se os dados de validação não forem fornecidos, 20% dos seus dados de treinamento serão amostrados aleatoriamente para servir como dados de validação. Se seus preditores incluírem atributos categóricos, você poderá fornecer um arquivo JSON nomeado categorical_index.json no mesmo local dos seus subsidiretórios.

nota

Para o modo de entrada de treinamento CSV, a memória total disponível para o algoritmo (contagem de instância multiplicada pela memória disponível no InstanceType) deve ser capaz de conter o conjunto de dados de treinamento.

Recomendação de instância do Amazon EC2 para o algoritmo TabTransformer

SageMaker TabTransformer oferece suporte ao treinamento de CPU de instância única e GPU de instância única. Apesar de os custos por instância serem mais altos, as GPUs treinam mais rapidamente, o que as tornam mais econômicas. Para aproveitar o treinamento da GPU, especifique o tipo de instância como uma das instâncias da GPU (por exemplo, P3). SageMaker TabTransformer atualmente não oferece suporte ao treinamento de várias GPUs.

TabTransformer cadernos de amostra

A tabela a seguir descreve uma variedade de exemplos de notebooks que abordam diferentes casos de uso do algoritmo da Amazon SageMaker TabTransformer .

Título do caderno Descrição

Classificação tabular com o algoritmo da Amazon SageMaker TabTransformer

Este notebook demonstra o uso do SageMaker TabTransformer algoritmo da Amazon para treinar e hospedar um modelo de classificação tabular.

Regressão tabular com o algoritmo da Amazon SageMaker TabTransformer

Este notebook demonstra o uso do SageMaker TabTransformer algoritmo da Amazon para treinar e hospedar um modelo de regressão tabular.

Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo SageMaker, consulte. Instâncias do Amazon SageMaker Notebook Depois de criar uma instância do notebook e abri-la, escolha a guia SageMakerExemplos para ver uma lista de todas as SageMaker amostras. Para abrir um caderno, escolha sua guia Use (Uso) e depois escolha Create copy (Criar cópia).