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á.
Criação de um canal de entrada de ML no AWS Clean Rooms ML
Pré-requisitos:
-
E Conta da AWS com acesso a AWS Clean Rooms
-
Uma colaboração configurada AWS Clean Rooms onde você deseja criar o canal de entrada de ML
-
Permissões para consultar dados e criar canais de entrada de ML na colaboração.
-
(Opcional) Um algoritmo de modelo existente para associar ao canal de entrada de ML ou permissões para criar um novo
-
(Opcional) Tabelas com regras de análise que podem ser executadas para o modelo especificado.
-
(Opcional) Um modelo de consulta ou análise SQL existente a ser usado para gerar o conjunto de dados
-
(Opcional) Uma função de serviço existente com permissões apropriadas ou permissões para criar uma nova função de serviço
-
(Opcional) Uma AWS KMS chave personalizada se você quiser usar sua própria chave de criptografia
-
Permissões apropriadas para criar e gerenciar modelos de ML na colaboração
Um canal de entrada de ML é um conjunto de dados criado a partir de uma consulta de dados específica. Membros com a capacidade de consultar dados podem preparar seus dados para treinamento e inferência criando um canal de entrada de ML. A criação de um canal de entrada de ML permite que os dados sejam usados em diferentes modelos de treinamento dentro da mesma colaboração. Você deve criar canais de entrada de ML separados para treinamento e inferência.
Para criar um canal de entrada de ML, você deve especificar a consulta SQL usada para consultar os dados de entrada e criar o canal de entrada de ML. Os resultados dessa consulta nunca são compartilhados com nenhum membro e permanecem dentro dos limites do Clean Rooms ML. O Amazon Resource Name (ARN) de referência é usado nas próximas etapas para treinar um modelo ou executar inferência.
- Console
-
Para criar um canal de entrada de ML (console)
-
Faça login no Console de gerenciamento da AWS e abra o AWS Clean Rooms console em https://console.aws.amazon.com/cleanrooms
. -
No painel de navegação à esquerda, escolha Colaborações.
-
Na página Colaborações, escolha a colaboração em que você deseja criar um canal de entrada de ML.
-
Depois que a colaboração for aberta, escolha a guia Modelos de ML.
-
Em Modelos de ML personalizados, na seção Canais de entrada de ML, escolha Criar canal de entrada de ML.
-
Na página Criar canal de entrada de ML, para obter detalhes do canal de entrada de ML, faça o seguinte:
-
Em Nome, insira um nome exclusivo para seu canal.
-
(Opcional) Em Descrição, insira uma descrição do seu canal.
-
Em Algoritmo do modelo associado, selecione o algoritmo a ser usado.
Escolha Associar algoritmo de modelo para adicionar um novo.
-
-
Para Conjunto de dados, escolha um método para gerar o conjunto de dados de treinamento:
-
Escolha a consulta SQL para usar os resultados de uma consulta SQL como o conjunto de dados de treinamento.
Se você escolheu consulta SQL, insira sua consulta no campo Consulta SQL.
(Opcional) Para importar uma consulta que você usou recentemente, escolha Importar de consultas recentes.
-
Escolha Modelo de análise para usar os resultados de um modelo de análise como conjunto de dados de treinamento.
Atenção
A geração de dados sintéticos protege contra a inferência de atributos individuais, independentemente de indivíduos específicos estarem presentes no conjunto de dados original ou de atributos de aprendizagem desses indivíduos. No entanto, isso não impede que valores literais do conjunto de dados original, incluindo informações de identificação pessoal (PII), apareçam no conjunto de dados sintético.
Recomendamos evitar valores no conjunto de dados de entrada associados a apenas um titular de dados, pois eles podem reidentificar um titular de dados. Por exemplo, se apenas um usuário residir em um CEP, a presença desse CEP no conjunto de dados sintético confirmaria que o usuário estava no conjunto de dados original. Técnicas como truncar valores de alta precisão ou substituir catálogos incomuns por outros podem ser usadas para mitigar esse risco. Essas transformações podem fazer parte da consulta usada para criar o canal de entrada de ML.
-
Se nenhuma tabela estiver associada, escolha Associar tabela para adicionar tabelas com uma regra de análise que possa ser executada para o modelo especificado.
-
Escolha o tipo de trabalhador a ser usado ao criar esse canal de dados. O tipo de trabalhador padrão é CR.1X. Especifique o número de trabalhadores a serem usados. O número padrão do trabalhador é 16. Para especificar as propriedades do Spark:
-
Expanda as propriedades do Spark.
-
Escolha Adicionar propriedades do Spark.
-
Na caixa de diálogo de propriedades do Spark, escolha um nome de propriedade na lista suspensa e insira um Valor.
A tabela a seguir fornece uma definição para cada propriedade.
Para obter mais informações sobre as propriedades do Spark, consulte Propriedades do Spark na documentação
do Apache Spark. Nome da propriedade Description Valor padrão Falhas do Spark.Task.max
Controla quantas vezes consecutivas uma tarefa pode falhar antes que o trabalho falhe. Requer um valor maior ou igual a 1. O número de novas tentativas permitidas é igual a esse valor menos 1. A contagem de falhas é reiniciada se alguma tentativa for bem-sucedida. Falhas em tarefas diferentes não se acumulam até esse limite.
4
spark.sql.files. maxPartitionBytes
Define o número máximo de bytes a serem compactados em uma única partição ao ler fontes baseadas em arquivos, como Parquet, JSON e ORC.
128 MB
Spark.Hadoop.FS.S3.max Tentativas
Define o número máximo de tentativas para operações de arquivos do Amazon S3.
spark.network.timeout
Define o tempo limite padrão para todas as interações de rede. Substitui as seguintes configurações de tempo limite se elas não estiverem definidas:
-
spark.storage. blockManagerHeartbeatTimeoutMs
-
spark.shuffle.io.Tempo limite de conexão
-
spark.rpc.askTimeout
-
Spark.rpc.LookupTimeout
Década de 120
spark.rdd.com press
Especifica se as partições RDD serializadas devem ser compactadas usando spark.io.compression.codec. Aplica-se a StorageLevel .MEMORY_ONLY_SER em Java e Scala ou .MEMORY_ONLY em Python. StorageLevel Reduz o espaço de armazenamento, mas requer tempo adicional de processamento da CPU.
FALSE
spark.shuffle.spill.compress
Especifica se os dados de derramamento aleatório devem ser compactados usando spark.io.compression.codec.
TRUE
spark.sql.adaptativo. advisoryPartitionSizeInBytes
Define o tamanho de destino em bytes para partições aleatórias durante a otimização adaptativa quando spark.sql.adaptive.enabled é verdadeiro. Controla o tamanho da partição ao unir partições pequenas ou dividir partições inclinadas.
(valor de spark.sql.adaptive.shuffle. targetPostShuffleInputSize)
spark.sql.adaptativo. autoBroadcastJoinLimite
Define o tamanho máximo da tabela em bytes para transmissão aos nós de trabalho durante as junções. Aplica-se somente na estrutura adaptativa. Usa o mesmo valor padrão de spark.sql. autoBroadcastJoinLimite. Defina como -1 para desativar a transmissão.
(none)
spark.sql.adaptive.coalescePartitions.Enabled
Especifica se as partições aleatórias contíguas devem ser unidas com base em spark.sql.adaptive. advisoryPartitionSizeInBytes para otimizar o tamanho da tarefa. Requer que spark.sql.adaptive.enabled seja verdadeiro.
TRUE
Partições spark.sql.adaptive.coalesce. initialPartitionNum
Define o número inicial de partições aleatórias antes da coalescência. Requer que spark.sql.adaptive.enabled e spark.sql.adaptive.coalescePartitions.enabled sejam verdadeiros. O padrão é o valor de spark.sql.shuffle.partitions.
(none)
Partições spark.sql.adaptive.coalesce. minPartitionSize
Define o tamanho mínimo para partições aleatórias agrupadas para evitar que as partições se tornem muito pequenas durante a otimização adaptativa.
1 MB
spark.sql.adaptive.coalescePartitions.Parallelism First
Especifica se os tamanhos das partições devem ser calculados com base no paralelismo do cluster em vez de spark.sql.adaptive. advisoryPartitionSizeInBytes durante a coalescência de partições. Gera tamanhos de partição menores do que o tamanho de destino configurado para maximizar o paralelismo. Recomendamos definir isso como false em clusters ocupados para melhorar a utilização dos recursos, evitando pequenas tarefas excessivas.
TRUE
spark.sql.adaptive.enabled
Especifica se a execução adaptativa de consultas deve ser habilitada para otimizar novamente os planos de consulta durante a execução da consulta, com base em estatísticas precisas de tempo de execução.
TRUE
spark.sql.adaptativo. forceOptimizeSkewedJunte-se
Especifica se a ativação deve ser forçada, OptimizeSkewedJoin mesmo que isso introduza um embaralhamento extra.
FALSE
spark.sql.adaptativo. localShuffleReader.ativado
Especifica se os leitores aleatórios locais devem ser usados quando o particionamento aleatório não é necessário, como após a conversão de junções de classificação e mesclagem em junções de hash de transmissão. Requer que spark.sql.adaptive.enabled seja verdadeiro.
TRUE
spark.sql.adaptativo. maxShuffledHashJoinLocalMapThreshold
Define o tamanho máximo da partição em bytes para criar mapas de hash locais. Prioriza as junções de hash embaralhadas sobre as junções de classificação e mesclagem quando:
-
Esse valor é igual ou excede spark.sql.adaptive. advisoryPartitionSizeInBytes
-
Todos os tamanhos de partição estão dentro desse limite
Substitui spark.sql.join. preferSortMergeConfiguração de junção.
0 bytes
spark.sql.adaptativo. optimizeSkewsInRebalancePartitions.habilitado
Especifica se as partições aleatórias distorcidas devem ser otimizadas dividindo-as em partições menores com base em spark.sql.adaptive. advisoryPartitionSizeInBytes. Requer que spark.sql.adaptive.enabled seja verdadeiro.
TRUE
spark.sql.adaptativo. rebalancePartitionsSmallPartitionFactor
Define o fator limite de tamanho para mesclar partições durante a divisão. Partições menores que esse fator multiplicado por spark.sql.adaptive. advisoryPartitionSizeInBytes são mesclados.
0.2
spark.sql.adaptive.skewJoin.Enabled
Especifica se deve lidar com a distorção de dados em junções embaralhadas dividindo e, opcionalmente, replicando partições distorcidas. Aplica-se às junções de hash embaralhadas e sorte-mescladas. Requer que spark.sql.adaptive.enabled seja verdadeiro.
TRUE
spark.sql.adaptive.skewJoin. skewedPartitionFactor
Determina o fator de tamanho que determina a inclinação da partição. Uma partição é distorcida quando seu tamanho excede ambos:
-
Esse fator multiplicado pelo tamanho médio da partição
-
O valor de spark.sql.adaptive.skewJoin. skewedPartitionThresholdInBytes
5
spark.sql.adaptive.skewJoin. skewedPartitionThresholdInBytes
Define o limite de tamanho em bytes para identificar partições distorcidas. Uma partição é distorcida quando seu tamanho excede ambos:
-
Esse limite
-
O tamanho médio da partição multiplicado por spark.sql.adaptive.SkewJoin. skewedPartitionFactor
Recomendamos definir esse valor maior que spark.sql.adaptive. advisoryPartitionSizeInBytes.
256 MB
spark.sql. autoBroadcastJoinLimite
Define o tamanho máximo da tabela em bytes para transmissão aos nós de trabalho durante as junções. Defina como -1 para desativar a transmissão.
10 MB
Spark.sql.Tempo limite de transmissão
Controla o período de tempo limite em segundos para as operações de transmissão durante as junções de transmissão.
300 segundos
spark.sql.cbo.enabled
Especifica se a otimização baseada em custos (CBO) deve ser ativada para a estimativa das estatísticas do plano.
FALSE
spark.sql.cbo.joinreorder.dp.star.filter
Especifica se a heurística do filtro de junção em estrela deve ser aplicada durante a enumeração de junção com base no custo.
FALSE
spark.sql.cbo.joinReorder.dp.Threshold
Define o número máximo de nós unidos permitidos no algoritmo de programação dinâmica.
12
spark.sql.cbo.joinReorder.enabled
Especifica se a reordenação de junções deve ser ativada na otimização baseada em custos (CBO).
FALSE
spark.sql.cbo.planStats.Enabled
Especifica se as contagens de linhas e estatísticas de colunas do catálogo devem ser buscadas durante a geração do plano lógico.
FALSE
spark.sql.cbo. starSchemaDetection
Especifica se a reordenação de junções deve ser ativada com base na detecção do esquema em estrela.
FALSE
spark.sql.files. maxPartitionNum
Define o número máximo de partições de arquivo divididas para fontes baseadas em arquivos (Parquet, JSON e ORC). Redimensiona as partições quando a contagem inicial excede esse valor. Esse é um alvo sugerido, não um limite garantido.
(none)
spark.sql.files. maxRecordsPerArquivo
Define o número máximo de registros a serem gravados em um único arquivo. Nenhum limite se aplica quando definido como zero ou um valor negativo.
0
spark.sql.files. minPartitionNum
Define o número mínimo de partições de arquivo divididas para fontes baseadas em arquivos (Parquet, JSON e ORC). O padrão é spark.sql. leafNodeDefaultParalelismo. Esse é um alvo sugerido, não um limite garantido.
(none)
spark.sql. inMemoryColumnarArmazenamento. Tamanho do lote
Controla o tamanho do lote para armazenamento em cache colunar. Aumentar o tamanho melhora a utilização e a compactação da memória, mas aumenta o risco de out-of-memory erros.
10000
spark.sql. inMemoryColumnarArmazenamento. Comprimido
Especifica se os codecs de compressão devem ser selecionados automaticamente para colunas com base nas estatísticas de dados.
TRUE
spark.sql. inMemoryColumnarArmazenamento. enableVectorizedReader
Especifica se a leitura vetorizada deve ser ativada para o armazenamento em cache colunar.
TRUE
spark.sql.legacy. allowHashOnMapType
Especifica se as operações de hash devem ser permitidas em estruturas de dados do tipo mapa. Essa configuração antiga mantém a compatibilidade com o tratamento de tipos de mapas das versões mais antigas do Spark.
spark.sql.legacy. allowNegativeScaleOfDecimal
Especifica se valores de escala negativos devem ser permitidos nas definições de tipo decimal. Essa configuração antiga mantém a compatibilidade com versões mais antigas do Spark que suportavam escalas decimais negativas.
spark.sql.legacy. castComplexTypesToString.habilitado
Especifica se o comportamento legado deve ser ativado para converter tipos complexos em cadeias de caracteres. Mantém a compatibilidade com as regras de conversão de tipos das versões mais antigas do Spark.
spark.sql.legacy. charVarcharAsCorda
Especifica se os tipos CHAR e VARCHAR devem ser tratados como tipos STRING. Essa configuração antiga fornece compatibilidade com o tratamento de tipos de string das versões mais antigas do Spark.
spark.sql.legacy. createEmptyCollectionUsingStringType
Especifica se as coleções vazias devem ser criadas usando elementos do tipo string. Essa configuração antiga mantém a compatibilidade com o comportamento de inicialização da coleção das versões mais antigas do Spark.
spark.sql.legacy. exponentLiteralAsDecimal. Ativado
Especifica se os literais exponenciais devem ser interpretados como tipos decimais. Essa configuração antiga mantém a compatibilidade com o tratamento literal numérico das versões mais antigas do Spark.
spark.sql.legacy.json. allowEmptyString.ativado
Especifica se as cadeias de caracteres vazias devem ser permitidas no processamento de JSON. Essa configuração antiga mantém a compatibilidade com o comportamento de análise JSON das versões mais antigas do Spark.
spark.sql.legacy.parquet.int96 RebaseModelRead
Especifica se o modo antigo de rebase de INT96 carimbo de data/hora deve ser usado ao ler arquivos Parquet. Essa configuração antiga mantém a compatibilidade com o tratamento de timestamp das versões mais antigas do Spark.
spark.sql.legacy. timeParserPolicy
Controla o comportamento da análise de tempo para compatibilidade com versões anteriores. Essa configuração herdada determina como os carimbos de data/hora e as datas são analisados a partir de cadeias de caracteres.
Spark.sql.legacy.TypeCoertion. datetimeToString.ativado
Especifica se o comportamento de coerção do tipo legado deve ser ativado ao converter valores de data e hora em cadeias de caracteres. Mantém a compatibilidade com as regras de conversão de data e hora das versões mais antigas do Spark.
spark.sql. maxSinglePartitionBytes
Define o tamanho máximo da partição em bytes. O planejador introduz operações aleatórias para partições maiores para melhorar o paralelismo.
128m
spark.sql.Cache de metadados TTLSeconds
Controla o time-to-live (TTL) para caches de metadados. Aplica-se aos metadados do arquivo de partição e aos caches do catálogo de sessões. Requer:
-
Um valor positivo maior que zero
-
Spark.sql.CatalogImplementation configurada para hive
-
spark.sql.hive. filesourcePartitionFileCacheSize maior que zero
-
spark.sql.hive. manageFilesourcePartitions definido como verdadeiro
-1000 ms
spark.sql.optimizer. collapseProjectAlwaysEm linha
Especifica se as projeções e expressões embutidas adjacentes devem ser reduzidas, mesmo quando isso causa duplicação.
FALSE
spark.sql.optimizer. dynamicPartitionPruning.ativado
Especifica se devem ser gerados predicados para colunas de partição usadas como chaves de junção.
TRUE
spark.sql.optimizer. enableCsvExpressionOtimização
Especifica se as expressões CSV devem ser otimizadas no otimizador de SQL removendo colunas desnecessárias das operações from_csv.
TRUE
spark.sql.optimizer. enableJsonExpressionOtimização
Especifica se as expressões JSON devem ser otimizadas no otimizador de SQL por meio de:
-
Removendo colunas desnecessárias das operações from_json
-
Simplificando as combinações from_json e to_json
-
Otimizando as operações named_struct
TRUE
spark.sql.optimizer.Regras excluídas
Define as regras do otimizador a serem desativadas, identificadas por nomes de regras separados por vírgula. Algumas regras não podem ser desativadas, pois são necessárias para serem corretas. O otimizador registra quais regras foram desativadas com sucesso.
(none)
spark.sql.optimizer.runtime.BloomFilter. applicationSideScanSizeThreshold
Define o tamanho mínimo de escaneamento agregado em bytes necessário para injetar um filtro Bloom no lado do aplicativo.
10 GB
spark.sql.optimizer.runtime.BloomFilter. creationSideThreshold
Define o limite máximo de tamanho para injetar um filtro Bloom no lado da criação.
10 MB
spark.sql.optimizer.runtime.BloomFilter.Enabled
Especifica se um filtro Bloom deve ser inserido para reduzir os dados aleatórios quando um lado de uma junção aleatória tem um predicado seletivo.
TRUE
spark.sql.optimizer.runtime.BloomFilter. expectedNumItems
Define o número padrão de itens esperados no filtro Bloom em tempo de execução.
1000000
spark.sql.optimizer.runtime.BloomFilter. maxNumBits
Define o número máximo de bits permitidos no filtro Bloom em tempo de execução.
67108864
spark.sql.optimizer.runtime.BloomFilter. maxNumItems
Define o número máximo de itens esperados permitidos no filtro Bloom em tempo de execução.
4000000
spark.sql.optimizer.runtime.bloomfilter.number.threshold
Limita o número máximo de filtros de tempo de execução não DPP permitidos por consulta para evitar out-of-memory erros no driver.
10
spark.sql.optimizer.runtime.bloomfilter.Numbits
Define o número padrão de bits usados no filtro Bloom em tempo de execução.
8388608
spark.sql.optimizer.runtime. rowlevelOperationGroupFiltro ativado
Especifica se a filtragem de grupos de tempo de execução deve ser ativada para operações em nível de linha. Permite que as fontes de dados:
-
Remova grupos inteiros de dados (como arquivos ou partições) usando filtros de fonte de dados
-
Execute consultas em tempo de execução para identificar registros correspondentes
-
Descarte grupos desnecessários para evitar regravações caras
Limitações:
-
Nem todas as expressões podem ser convertidas em filtros de fonte de dados
-
Algumas expressões exigem avaliação do Spark (como subconsultas)
TRUE
spark.sql.optimizer.RuntimeFilter. semiJoinReduction.ativado
Especifica se uma junção semi-aleatória deve ser inserida para reduzir os dados aleatórios quando um lado de uma junção aleatória tem um predicado seletivo.
FALSE
spark.sql.parquet.aggregatePushdown
Especifica se os agregados devem ser enviados para o Parquet para otimização. Suporta:
-
MIN e MAX para tipos booleano, inteiro, flutuante e de data
-
CONTAGEM para todos os tipos de dados
Lança uma exceção se faltarem estatísticas em qualquer rodapé do arquivo Parquet.
FALSE
spark.sql.parquet. columnarReaderBatchTamanho
Controla o número de linhas em cada lote de leitores vetorizados do Parquet. Escolha um valor que equilibre a sobrecarga de desempenho e o uso de memória para evitar out-of-memory erros.
4096
spark.sql.session.fuso horário
Define o fuso horário da sessão para lidar com carimbos de data/hora em literais de string e conversão de objetos Java. Aceita:
-
area/city Formato baseado IDs na região (como América/Los_Angeles)
-
Deslocamentos de zona no formato (+/-) HH, (+/-) HH:mm ou (+/-) HH:mm:ss (como -08 ou + 01:00)
-
UTC ou Z como aliases para + 00:00
(valor do fuso horário local)
spark.sql.shuffle.partições
Define o número padrão de partições para o embaralhamento de dados durante junções ou agregações. Não pode ser modificado entre reinicializações de consultas de streaming estruturadas no mesmo local do ponto de verificação.
200
spark.sql. shuffledHashJoinFator
Define o fator de multiplicação usado para determinar a elegibilidade da junção de hash aleatória. Uma junção de hash aleatória é selecionada quando o tamanho dos dados do lado pequeno multiplicado por esse fator é menor que o tamanho dos dados do lado grande.
3
spark.sql.sources. parallelPartitionDiscovery.limite
Define o número máximo de caminhos para a listagem de arquivos do lado do driver com fontes baseadas em arquivos (Parquet, JSON e ORC). Quando excedidos durante a descoberta da partição, os arquivos são listados usando uma tarefa distribuída separada do Spark.
32
spark.sql.statistics.histogram.enabled
Especifica se devem ser gerados histogramas de altura equivalente durante o cálculo das estatísticas da coluna para melhorar a precisão da estimativa. Requer uma varredura de tabela adicional além da necessária para estatísticas básicas de colunas.
FALSE
-
-
Em Retenção de dados em dias, insira o número de dias para manter os dados.
-
Para Formato de resultado, escolha CSV ou Parquet como o formato de dados que o canal de entrada ML deve usar.
-
-
Em Acesso ao serviço, escolha o nome da função de serviço existente que será usado para acessar essa tabela ou escolha Criar e usar uma nova função de serviço.
-
Em Criptografia, escolha o segredo Criptografar com uma chave KMS personalizada para especificar sua própria chave KMS e informações relacionadas. Caso contrário, o Clean Rooms ML gerenciará a criptografia.
-
Escolha Criar canal de entrada de ML.
Levará alguns minutos para criar o canal de entrada de ML. Você pode ver uma lista de canais de entrada de ML na guia Modelos de ML.
nota
Depois que o canal de entrada de ML for criado, você não poderá editá-lo.
-
- API
-
Para criar um canal de entrada de ML (API)
Execute o código a seguir com seus parâmetros específicos:
import boto3 acr_client = boto3.client('cleanroomsml') acr_client.create_ml_input_channel( name="ml_input_channel_name", membershipIdentifier='membership_id', configuredModelAlgorithmAssociations=[configured_model_algorithm_association_arn], retentionInDays=1, inputChannel={ "dataSource": { "protectedQueryInputParameters": { "sqlParameters": { "queryString": "select * fromtable", "computeConfiguration": { "worker": { "type": "CR.1X", "number":16, "properties": { "spark": { "spark configuration key": "spark configuration value", } } } }, "resultFormat": "PARQUET" } } }, "roleArn": "arn:aws:iam::111122223333:role/role_name" } ) channel_arn = resp['ML Input Channel ARN']