O que mudou no SageMaker Feature Store
O Amazon SageMaker Feature Store é um repositório gerenciado e dedicado para armazenar, compartilhar e gerenciar features para modelos de Aprendizado de Máquina (ML). O serviço já suportava formato de tabela Apache Iceberg, ingestão via streaming e ingestão em lote escalável — e agora a AWS anuncia três novas capacidades que chegam juntas no SageMaker Python SDK v3.8.0.
Dois problemas operacionais aparecem de forma consistente quando times de ML escalam suas plataformas do ambiente experimental para produção. O primeiro é garantir controle de acesso a dados sensíveis de features sem criar overhead manual para cada novo grupo de features. O segundo é manter os custos de armazenamento previsíveis quando workloads de streaming de alta frequência geram volumes crescentes de metadados Apache Iceberg.
Um exemplo concreto ilustra bem o segundo problema: um time de analytics de varejo descobriu que seu offline store baseado em Apache Iceberg havia acumulado mais de 50 TB de arquivos de metadados em menos de um ano, gerando cobranças inesperadas e substanciais no Amazon Simple Storage Service (Amazon S3).
As três novas capacidades
A AWS anunciou as seguintes adições disponíveis no SageMaker Python SDK v3.8.0:
- Integração nativa com AWS Lake Formation – Permite registrar o offline store no Lake Formation durante a criação do grupo de features, ou em grupos já existentes, para aplicar controle de acesso em nível de coluna, linha e célula. Sem necessidade de configuração manual do Lake Formation.
- Propriedades adicionais de tabela Apache Iceberg – Controle de políticas de retenção de metadados e ciclo de vida de snapshots na criação ou em grupos de features existentes, prevenindo acúmulo de metadados e reduzindo custos de armazenamento.
- Suporte ao Feature Store no SageMaker Python SDK v3 – O SDK v3.8.0 modernizado traz o conjunto completo de capacidades do Feature Store, incluindo as novidades, em um pacote modular, mais rápido e mais leve.
Pré-requisitos
Para acompanhar os exemplos, são necessários:
- Uma conta AWS com permissões para criar recursos do Amazon SageMaker AI.
- Uma execution role do Amazon SageMaker AI com acesso ao Amazon S3, AWS Glue e AWS Lake Formation.
- SageMaker Python SDK v3.8.0 ou superior. Instale com o comando:
pip install --upgrade "sagemaker>=3.8.0"
- Para integração com Lake Formation: ao menos um Administrador do Data Lake (Data Lake Administrator) configurado na conta. O Feature Store valida isso antes de ativar o controle de acesso.
- Um bucket Amazon S3 existente para os dados do offline store.
Feature Store no SageMaker Python SDK v3
O SageMaker Python SDK v3.8.0, lançado em 16 de abril de 2026, é a base das capacidades descritas neste post. O SDK modernizado introduz arquitetura modular, melhor desempenho e remoção de dependências legadas (como PyTorch), resultando em instalação mais rápida e ambientes mais enxutos.
As seguintes capacidades do Feature Store estão disponíveis no SDK v3:
- Gerenciamento do ciclo de vida de grupos de features: criar, descrever, atualizar, deletar e listar.
- Operações de registro: PutRecord, GetRecord e BatchGetRecord.
- Extração de dataset de treinamento: queries com correção de ponto no tempo (point-in-time–correct).
- Ingestão de DataFrame:
FeatureGroupManager.ingest()a partir de DataFrames Pandas e Spark. - Novos parâmetros para offline store:
IcebergPropertieseLakeFormationConfigsuportados nos fluxos de criação e atualização.
A superfície de API do Feature Store é consistente com o SDK v2, portanto o código existente funciona com mudanças mínimas. Consulte o changelog do SDK v3 para detalhes sobre breaking changes em outras áreas.
Início rápido com o SDK v3
Veja como criar um grupo de features com os novos parâmetros de Lake Formation e Iceberg:
fg = FeatureGroupManager.create(
feature_group_name="my-features",
record_identifier_feature_name="user_id",
event_time_feature_name="event_time",
feature_definitions=df,
role_arn=role,
online_store_config={"EnableOnlineStore": True},
offline_store_config=OfflineStoreConfig(
s3_storage_config=S3StorageConfig(s3_uri=f"s3://{bucket}/feature-store/"),
table_format="Iceberg",
),
lake_formation_config=LakeFormationConfig(
enabled=True,
hybrid_access_mode_enabled=True,
acknowledge_risk=True,
),
iceberg_properties=IcebergProperties(
properties={
"write.metadata.delete-after-commit.enabled": "true",
"write.metadata.previous-versions-max": "10",
}
),
)
Governança do offline store com integração nativa ao Lake Formation
Configurar o AWS Lake Formation em dados do Feature Store anteriormente exigia diversas etapas manuais: registrar localizações no S3, revogar o grupo IAMAllowedPrincipals e configurar filtros de dados para cada grupo de features. O processo era demorado, sujeito a erros e precisava ser repetido para cada novo grupo. Organizações de serviços financeiros, saúde e outros setores regulados, que precisam de controle de acesso em nível de coluna, linha e célula, sentiam esse peso de forma especial.
Agora é possível ativar o controle de acesso do Lake Formation no offline store de um grupo de features no momento da criação, passando um LakeFormationConfig para o FeatureGroupManager.create(). Também é possível ativá-lo em grupos de features existentes usando FeatureGroupManager.enable_lake_formation().
Quando essa configuração é ativada, o Feature Store executa automaticamente as seguintes operações:
- Adiciona o local de dados S3 ao Lake Formation. O prefixo S3 do offline store é registrado como um local de data lake governado pelo Lake Formation. Os serviços analíticos confiáveis (Amazon Athena, AWS Glue, Amazon EMR, Amazon Redshift Spectrum) passam a receber credenciais temporárias do Lake Formation para consultar os dados.
- Desativa o modo de acesso híbrido (opcional). Quando
hybrid_access_mode_enabled=False, o SDK revoga o grant IAMAllowedPrincipal na tabela do AWS Glue, forçando o acesso exclusivamente pelo modelo de permissões do Lake Formation. Comhybrid_access_mode_enabled=True, as políticas do AWS Identity and Access Management (IAM) e as permissões do Lake Formation coexistem — útil para migrações graduais. Saiba mais sobre o modo de acesso híbrido. - Fornece uma política de deny recomendada para o S3. Para quem precisa de governança ponta a ponta, o SDK registra uma política de bucket recomendada como mensagem de aviso após a ativação. Aplique essa política ao bucket Amazon S3 para bloquear leituras diretas por principals não autorizados, fechando o último caminho que poderia contornar o Lake Formation.
Esta é uma configuração opcional por grupo de features. Se omitida, o comportamento permanece inalterado e os grupos de features existentes continuam funcionando com acesso baseado em IAM.
Exemplo de código — criação com Lake Formation
O código a seguir cria um novo grupo de features com controle de acesso do Lake Formation ativado. Para opções adicionais de configuração, consulte Ativar Lake Formation com Feature Groups.
fg = FeatureGroupManager.create(
feature_group_name="governed-customer-features",
record_identifier_feature_name="customer_id",
event_time_feature_name="event_time",
feature_definitions=customer_df,
role_arn=role,
online_store_config={"EnableOnlineStore": True},
offline_store_config=OfflineStoreConfig(
s3_storage_config=S3StorageConfig(s3_uri=f"s3://{bucket}/feature-store/"),
table_format="Iceberg",
),
lake_formation_config=LakeFormationConfig(
enabled=True,
hybrid_access_mode_enabled=True,
acknowledge_risk=True,
),
)
Para ativar o Lake Formation em um grupo de features existente:
fg = FeatureGroupManager.get(
feature_group_name="existing-feature-group",
)
fg.enable_lake_formation(
hybrid_access_mode_enabled=True,
acknowledge_risk=True,
)
Após a configuração do grupo de features, use o console ou a API do Lake Formation para conceder permissões granulares: acesso SELECT apenas a colunas específicas (filtragem por coluna), restrição de analistas a linhas de uma determinada região (filtragem por linha), ou combinação de ambos para controle em nível de célula.
Considerações importantes
- O online store não é afetado. O controle de acesso do Lake Formation se aplica apenas ao offline store. O online store continua usando autorização baseada em IAM, sem impacto na latência de inferência em tempo real.
- Funciona com AWS Glue e Iceberg. O controle de acesso do Lake Formation se aplica da mesma forma independentemente do formato de tabela usado no offline store.
- Compatível com múltiplas contas. Se você usa o AWS Resource Access Manager (AWS RAM) para compartilhar tabelas do Feature Store entre contas, os grants do Lake Formation continuam funcionando junto com os padrões existentes de compartilhamento entre contas. Observação: o modo de acesso híbrido deve ser desativado para acesso entre contas quando o formato de tabela é Iceberg.
- Pré-requisito: Data Lake Administrator. O sistema valida que ao menos um Administrador do Data Lake está configurado na conta antes de ativar o controle de acesso. Se nenhum existir, a chamada de criação retorna um erro imediato e descritivo, em vez de falhar de forma assíncrona.
Gerenciamento do offline store com propriedades adicionais do Iceberg
O Amazon SageMaker Feature Store suporta Apache Iceberg como formato de tabela para o offline store, melhorando o desempenho de queries via compactação e suportando operações em nível de registro. Esta seção apresenta novos parâmetros que oferecem controle sobre o ciclo de vida dos metadados Iceberg.
Em workloads com escrita de alta frequência — como pipelines de features via streaming que ingerem registros a cada poucos segundos — os arquivos de metadados Iceberg se acumulam a cada commit. Sem controles de ciclo de vida, esses metadados podem crescer exponencialmente. Um cliente com mais de 40 grupos de features em streaming viu seu bucket S3 crescer de alguns gigabytes para mais de 50 TB de metadados em menos de um ano. O Feature Store estava fazendo commits no offline store com alta frequência (menos de 10 minutos entre commits), e cada commit gerava novos arquivos de metadados. As operações de limpeza tentadas via Amazon Athena (OPTIMIZE e VACUUM) expiravam em tabelas acima de 50 TB, exigindo jobs custosos no Amazon EMR Serverless Spark e até a reescrita completa das tabelas.
A solução
Agora é possível passar uma configuração IcebergProperties ao criar um grupo de features no formato Iceberg. Essas propriedades são aplicadas à tabela Iceberg subjacente, dando controle sobre o ciclo de vida dos metadados desde o primeiro dia. Também é possível atualizar as propriedades Iceberg em grupos de features existentes usando FeatureGroupManager.update().
Alguns exemplos de propriedades suportadas:
write.metadata.delete-after-commit.enabled— Padrão:false. Deleta os arquivos de metadados mais antigos após cada commit.write.metadata.previous-versions-max— Padrão:100. Número máximo de versões anteriores de metadados a manter no histórico.history.expire.max-snapshot-age-ms— Padrão:432000000(5 dias). Idade máxima dos snapshots a manter ao expirar o histórico.history.expire.min-snapshots-to-keep— Padrão:1. Número mínimo de snapshots a manter ao expirar o histórico.write.target-file-size-bytes— Padrão:536870912(512 MB). Tamanho-alvo para arquivos de dados gerados.write.parquet.row-group-size-bytes— Padrão:134217728(128 MB). Tamanho do row group Parquet.read.split.target-size— Padrão:134217728(128 MB). Tamanho-alvo ao combinar splits de entrada de dados.
Para a lista completa de propriedades suportadas, consulte o guia de gerenciamento de metadados Iceberg na documentação do SageMaker AI.
Exemplo de código — criação com IcebergProperties
fg = FeatureGroupManager.create(
feature_group_name="streaming-click-features",
record_identifier_feature_name="session_id",
event_time_feature_name="event_time",
feature_definitions=clicks_df,
role_arn=role,
offline_store_config=OfflineStoreConfig(
s3_storage_config=S3StorageConfig(s3_uri=f"s3://{bucket}/feature-store/"),
table_format="Iceberg",
),
iceberg_properties=IcebergProperties(
properties={
"write.metadata.delete-after-commit.enabled": "true",
"write.metadata.previous-versions-max": "10",
"history.expire.max-snapshot-age-ms": "86400000",
"history.expire.min-snapshots-to-keep": "5",
"write.target-file-size-bytes": "536870912",
}
),
)
Para atualizar propriedades Iceberg em um grupo de features existente:
fg = FeatureGroupManager.get(
feature_group_name="existing-feature-group",
include_iceberg_properties=True,
)
fg.update(
iceberg_properties=IcebergProperties(
properties={
"write.metadata.delete-after-commit.enabled": "true",
"write.metadata.previous-versions-max": "10",
}
)
)
Boas práticas
- Comece pela limpeza de metadados para workloads de streaming. Se o pipeline escreve no offline store mais de uma vez por minuto, defina
write.metadata.delete-after-commit.enabledcomo"true"e limite owrite.metadata.previous-versions-max. Essa é a mudança de configuração com maior impacto na prevenção de custos excessivos de armazenamento. - Continue executando compactação. Essas propriedades gerenciam o ciclo de vida dos metadados, mas ainda é necessário executar a compactação Iceberg (usando Athena OPTIMIZE + VACUUM ou ações de manutenção do Spark) para mesclar arquivos de dados pequenos e otimizar o desempenho de queries.
- Ajuste a retenção de snapshots conforme necessidades de conformidade. Workloads com auditoria intensiva que exigem queries de time-travel devem usar valores maiores para
history.expire.min-snapshots-to-keepehistory.expire.max-snapshot-age-ms. Pipelines de streaming otimizados para custo se beneficiam de retenção menor. - Defina as propriedades na criação. Essas propriedades entram em vigor em novos commits. Para grupos de features existentes com metadados acumulados, use
FeatureGroupManager.update()para definir as propriedades e, em seguida, execute expiração de snapshots e deleção de arquivos órfãos para recuperar o espaço de armazenamento.
Combinando as duas capacidades
Ao combinar as duas capacidades em uma única chamada FeatureGroupManager.create(), o resultado é um grupo de features simultaneamente governado e otimizado para custo — sem necessidade de configuração adicional. Os metadados do offline store são gerenciados automaticamente e o controle de acesso do Lake Formation está ativo sem registro manual. O online store continua servindo features com baixa latência via autorização IAM.
fg = FeatureGroupManager.create(
feature_group_name="real-time-user-signals",
record_identifier_feature_name="user_id",
event_time_feature_name="event_time",
feature_definitions=signals_df,
role_arn=role,
online_store_config={"EnableOnlineStore": True},
offline_store_config=OfflineStoreConfig(
s3_storage_config=S3StorageConfig(s3_uri=f"s3://{bucket}/feature-store/"),
table_format="Iceberg",
),
lake_formation_config=LakeFormationConfig(
enabled=True,
hybrid_access_mode_enabled=True,
acknowledge_risk=True,
),
iceberg_properties=IcebergProperties(
properties={
"write.metadata.delete-after-commit.enabled": "true",
"write.metadata.previous-versions-max": "10",
"history.expire.max-snapshot-age-ms": "86400000",
"history.expire.min-snapshots-to-keep": "5",
}
),
)
Para notebooks completos com instruções passo a passo, consulte o notebook de governança com Lake Formation e o notebook de propriedades de tabela Iceberg no repositório do SageMaker Python SDK.
Limpeza de recursos
Para evitar cobranças contínuas, delete os grupos de features criados durante o walkthrough. Se você adicionou localizações Amazon S3 ao Lake Formation, cancele o registro delas pelo console do Lake Formation ou pela API DeregisterResource. Revogue também as permissões do Lake Formation concedidas durante os testes.
Conclusão
Em conjunto, essas melhorias tornam o Amazon SageMaker Feature Store mais simples de proteger, mais eficiente em custos e mais rápido de integrar aos pipelines de ML. Ao automatizar o controle de acesso do Lake Formation, expor configurações granulares de ciclo de vida do Iceberg e entregar tudo isso em um SDK modular e leve, a AWS removeu o trabalho repetitivo que antes separava as equipes de um gerenciamento de features pronto para produção em escala.
Para mais informações, consulte a documentação do Feature Store, o guia de controle de acesso com Lake Formation, o guia de gerenciamento de metadados Iceberg e as notas de versão do SDK v3. Para praticar, experimente o notebook do Lake Formation e o notebook de propriedades Iceberg.
Leituras relacionadas
- Understanding the Key Capabilities of Amazon SageMaker Feature Store
- Speed ML Development Using SageMaker Feature Store and Apache Iceberg Offline Store Compaction
- Control Access to Amazon SageMaker Feature Store Offline Using AWS Lake Formation
- Build an Offline Feature Store Using Amazon SageMaker Unified Studio and SageMaker Catalog
Fonte
Accelerate ML feature pipelines with new capabilities in Amazon SageMaker Feature Store (https://aws.amazon.com/blogs/machine-learning/accelerate-ml-feature-pipelines-with-new-capabilities-in-amazon-sagemaker-feature-store/)
Leave a Reply