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á.
Execute a otimização para um HealthOmics fluxo de trabalho privado
Você pode otimizar as execuções de acordo com o custo total, o tempo total de execução ou uma combinação de ambos. HealthOmics fornece dados e ferramentas para ajudá-lo a tomar decisões de otimização. A otimização de execução não se aplica aos fluxos de trabalho do Ready2Run, porque você não tem controle sobre como o serviço gerencia o provisionamento de recursos para esses fluxos de trabalho.
A primeira etapa é entender o uso atual dos recursos da tarefa e o custo das tarefas em execução e, em seguida, aplicar métodos para otimizar o custo e o desempenho da execução.
Tópicos
Execute o Analyzer
HealthOmics fornece uma ferramenta de código aberto chamada Run Analyzer
nota
O Run Analyzer estima os custos das tarefas e as possíveis economias de custo com base nos preços AWS sugeridos no momento em que você executa a ferramenta. Avalie as recomendações de otimização e implemente aquelas que façam sentido para seus casos de uso. Teste as otimizações que você adota para garantir que elas funcionem para sua corrida.
O Run Analyzer executa as seguintes tarefas:
-
Avalia gargalos de memória e computação.
-
Identifica tarefas que estão superprovisionadas para memória ou CPU e recomenda novos tamanhos de instância que podem reduzir custos.
-
Calcula estimativas de custo para tarefas individuais e calcula a possível economia de custos se você aplicar as recomendações.
-
Oferece uma visualização do cronograma das tarefas para que você possa verificar as dependências das tarefas e a sequência de processamento. A linha do tempo também ajuda você a identificar tarefas de longa duração.
-
Fornece recomendações sobre o tamanho do sistema de arquivos para o armazenamento em execução.
-
Mostra os tempos de provisionamento de tarefas para que você possa identificar áreas em que grandes cargas de contêineres podem estar diminuindo o tempo de provisionamento.
-
A ferramenta inclui um parâmetro de entrada (espaço livre) que você pode usar para controlar a agressividade das recomendações de otimização.
As seções a seguir incluem sugestões específicas para usar o Run Analyzer para otimizar as execuções.
Determine os custos de operação
Você pode usar os seguintes métodos e diretrizes para determinar os custos de operação:
-
Para ver os custos totais de execução de um período de cobrança, siga estas etapas:
-
Abra o console Billing and Cost
Management e escolha Bills. Em Cobranças por serviço, expanda Omics.
Expanda a região e, em seguida, visualize o custo de todas as suas execuções discriminadas por tipo de instância omics, tipo de armazenamento de execução e fluxo de trabalho Ready2Run.
-
-
Para gerar um relatório de custo que inclua informações para cada execução, siga estas etapas:
-
Abra o console Billing and Cost
Management e escolha Exportações de dados. -
Escolha Criar para criar uma nova exportação de dados.
-
Insira um nome de exportação para a exportação de dados. Mantenha os outros campos em seus valores padrão para criar um relatório CUR (custo e uso).
-
Em Granularidade de tempo, selecione por hora ou diariamente.
-
Em Configurações de armazenamento de exportação de dados, execute estas etapas de configuração:
-
Configure um bucket do Amazon S3 para a exportação de dados.
-
Em Controle de versão de arquivo, selecione se deseja sobrescrever o arquivo de exportação existente ou criar um novo arquivo a cada vez.
O sistema gera o primeiro relatório nas próximas 24 horas e gera os relatórios subsequentes uma vez por dia.
-
Para obter mais informações sobre como criar a exportação de dados, consulte Criação de exportações de dados no Guia do usuário de exportação de AWS dados.
-
-
Você pode marcar suas execuções para monitorar e otimizar os custos por categoria, como por equipe ou por projeto. Se você usa tags, siga estas etapas para ver os custos de execução por categoria de tag:
-
Abra o console Billing and Cost
Management e escolha Cost Explorer. Em Parâmetros do relatório > Agrupar por, escolha Tag como dimensão e selecione o nome do Tag desejado.
-
-
Para ver o uso de recursos para tarefas, veja os logins do manifesto de execução CloudWatch. Para obter mais informações, consulte Monitoramento HealthOmics com CloudWatch registros.
-
Use a Execute o Analyzer ferramenta para extrair informações de uso dos recursos da tarefa para uma execução.
Determine o uso do tempo de execução
Você pode usar os métodos a seguir para ajudá-lo a investigar o uso do tempo de execução:
-
Na página Execuções do console, você pode ver o tempo total de execução de uma execução.
-
Na página de detalhes da execução, você pode visualizar os seguintes itens:
-
Veja o tempo total de execução de uma corrida.
-
Visualize o tempo de execução de cada tarefa na execução.
-
Escolha um dos links para visualizar os registros no Amazon S3 ou para visualizar os registros de execução ou os registros de execução do manifesto. CloudWatch
-
-
Na lista Executar tarefas, escolha o link Exibir registros de uma tarefa para ver os registros da tarefa CloudWatch.
-
A resposta à operação da
listRuns
API inclui a hora de início e a hora de parada da execução, para que você possa calcular o tempo total de execução. -
A Execute o Analyzer ferramenta mostra as durações das tarefas em uma visualização da linha do tempo. Essa ferramenta fornece uma representação visual da sequência de processamento da tarefa, que você pode combinar com a ordem esperada.
Métodos para otimizar as execuções
HealthOmics provisiona, gerencia e otimiza automaticamente os recursos que realizam a preparação de dados (como importações e exportações de dados). HealthOmics também inicia e executa o mecanismo de fluxo de trabalho do seu fluxo de trabalho. No entanto, você pode influenciar os horários de início da execução, os horários de início da tarefa e o tempo geral de execução da tarefa definindo várias configurações de execução. Sua abordagem geral para a definição e o design do fluxo de trabalho também afeta o tempo de execução da tarefa. A lista a seguir descreve os fatores que podem afetar o desempenho da execução e da tarefa:
- Execute o tipo de armazenamento
-
O tipo de armazenamento de execução tem um impacto no desempenho da execução e no tempo de provisionamento da execução. O armazenamento de execução dinâmica é provisionado com mais rapidez e nunca fica sem memória, pois ele é dimensionado dinamicamente de acordo com suas necessidades de armazenamento de execução. O armazenamento de execução dinâmica também é uma boa opção para fluxos de trabalho em desenvolvimento, nos quais você geralmente pode iniciar e interromper um fluxo de trabalho para solucionar problemas.
O armazenamento estático de execução exige tempos maiores de provisionamento do sistema de arquivos, mas pode concluir algumas execuções mais rapidamente, normalmente se as execuções tiverem alta simultaneidade de tarefas ou exigirem mais de 9,6 TiB de capacidade do sistema de arquivos. O armazenamento de execução estática é adequado para fluxos de trabalho de longa duração com altos I/O requisitos.
Para ajudá-lo a avaliar o custo versus o desempenho de cada tipo de armazenamento executado para uma determinada execução, você pode experimentar o teste A/B para ver qual tipo de armazenamento de execução oferece melhor desempenho. Além disso, considere usar o armazenamento de execução dinâmico para seus ciclos de desenvolvimento e, em seguida, use o armazenamento de execução estático para execuções de produção em grande escala.
Para obter mais informações sobre como executar tipos de armazenamento Execute tipos de armazenamento em HealthOmics fluxos de trabalho
- Provisionar em excesso o armazenamento estático executado
-
Se o cálculo da tarefa do fluxo de trabalho estiver limitado por I/O, consider over-provisioning the static run storage. Storage cost increases with its size, but maximum throughput of the file system also increases. If an expensive compute task is experiencing I/O gargalos, aumentar o tamanho do sistema de arquivos para reduzir o tempo de execução da tarefa pode reduzir o custo geral.
- Reduza o tamanho das imagens do contêiner
-
Quando cada tarefa é iniciada, HealthOmics carrega o contêiner que você especificou para a tarefa. Contêineres maiores demoram mais para serem carregados. Otimize seus contêineres para serem tão pequenos quanto possível para melhorar a eficiência do lançamento de novas tarefas. Se você adicionar grandes conjuntos de dados aos seus contêineres, considere armazená-los no S3 e fazer com que seu fluxo de trabalho importe os dados do S3. Para obter os tamanhos máximos de HealthOmics contêineres que suportam, consulteHealthOmics cotas de tamanho fixo do fluxo de trabalho.
- Tamanho da tarefa
-
Você pode combinar tarefas pequenas e sequenciais em uma única tarefa para economizar tempo de provisionamento de tarefas. Além disso, HealthOmics tem uma taxa mínima de duração de tarefa de um minuto, portanto, a combinação de tarefas pode reduzir os custos. Dentro da tarefa combinada, você poderá usar pipes Unix para evitar o I/O custo de serializar e desserializar arquivos.
- Compressão de arquivos
-
Evite compactar excessivamente os arquivos intermediários do fluxo de trabalho. A maioria dos formatos genômicos usa compressão “gzip” ou “block gzip”. Descompactar o arquivo de entrada da tarefa e recomprimir o arquivo de saída da tarefa pode consumir uma grande porcentagem do uso geral da CPU da tarefa. Alguns aplicativos de genômica permitem que você defina o nível de compressão ao serializar as saídas. Ao reduzir o nível de compactação, você pode reduzir o tempo de CPU, embora arquivos maiores aumentem o tempo gasto gravando no disco. Dependendo da tarefa e do aplicativo, você pode encontrar o nível de compactação ideal para arquivos intermediários que resultam no menor tempo de execução. Recomendamos que você comece segmentando as tarefas com os maiores arquivos de saída. Um nível de compressão de 2 funciona bem em vários cenários. Você pode começar com esse nível para seu caso de uso e comparar os resultados experimentando outros níveis de compressão.
- Contagem de tópicos
-
Se você especificar segmentos em sua definição de tarefa, defina o número de segmentos com o mesmo valor do número de v solicitadosCPUs.
- Especifique computação e memória
-
Se você não especificar recursos de memória ou computação em sua tarefa, HealthOmics atribua o menor tipo de instância (
omics.c.large
) como padrão. Declare explicitamente seus requisitos de memória e computação se quiser HealthOmics atribuir um tipo de instância maior.HealthOmics aloca o número de recursos vCPUs, memória e GPU que você solicita. Por exemplo, se você solicitar 15v CPUs e 33GiB, HealthOmics aloca uma instância omics.m.4xl (16v, 64GB) para sua tarefaCPUs, mas sua tarefa pode usar somente 15 v e 33GiB. CPUs Portanto, recomendamos que você solicite v CPUs e recursos de memória que correspondam a uma instância omics.
- Batch várias amostras em uma única execução
-
Como o provisionamento do sistema de arquivos leva tempo no início da execução, você pode economizar tempo de provisionamento agrupando várias amostras na mesma execução. Considere os seguintes fatores antes de decidir sobre essa abordagem:
-
Uma única amostra incorreta pode fazer com que um fluxo de trabalho falhe, portanto, o agrupamento de amostras em lote pode aumentar o número de fluxos de trabalho com falha. Se você não tem certeza de que seu fluxo de trabalho será bem-sucedido na maioria das vezes, uma execução por amostra pode ser uma abordagem melhor.
-
HealthOmics aloca um sistema de arquivos de armazenamento executado para todo o fluxo de trabalho. Para um lote de amostras, certifique-se de especificar uma quantidade grande o suficiente de armazenamento em execução para processar todas as amostras.
-
Há uma quantidade máxima de armazenamento de execução por fluxo de trabalho, o que pode restringir o número de amostras que você pode adicionar ao lote.
-
O tamanho mínimo de armazenamento de execução é de 1,2 TiB, portanto, o agrupamento em lotes pode reduzir os custos se o fluxo de trabalho usar muito menos armazenamento do que o mínimo para cada amostra.
-
O armazenamento de execução pode lidar com várias conexões simultâneas, portanto, ter várias tarefas usando o mesmo armazenamento de execução não deve causar I/O gargalos.
-
Cada execução tem seu próprio conjunto de tags. Se você marcar fluxos de trabalho com informações para orçamento ou acompanhamento, talvez seja melhor usar execuções separadas.
-
As funções do IAM se aplicam a toda a execução. Cada usuário tem acesso a todos os dados de um lote de amostras. Ter fluxos de trabalho separados permite que você use permissões mais refinadas.
-
HealthOmics define cotas em nível de conta para o número máximo de fluxos de trabalho simultâneos e o número máximo de tarefas simultâneas em um fluxo de trabalho. Para obter informações sobre como solicitar um aumento para essas cotas, consulteHealthOmics cotas de serviço.
-
- Use parâmetros para imagens de contêiner
-
Parametrize suas imagens de contêiner em vez de incorporá-las ao fluxo de trabalho URIs . Quando são parâmetros de execução, HealthOmics valida se a execução tem acesso aos seus contêineres antes do início da execução. Caso contrário, a tarefa falhará durante a execução, quando você tiver incorrido em cobranças por qualquer tarefa concluída. Além disso, como essas são entradas parametrizadas, HealthOmics gera uma soma de verificação no manifesto de execução, o que melhora a proveniência da execução.
- Use um linter
-
Use um linter para encontrar erros comuns do fluxo de trabalho antes de executar um novo fluxo de trabalho. Para obter mais informações, consulte Impressoras de fluxo de trabalho em HealthOmics.
- Use EventBridge para sinalizar problemas
-
Use alertas EventBridge personalizados para capturar anomalias específicas da sua lógica de negócios.
- Use armazenamentos de sequências
-
Considere usar um armazenamento de sequências para seus dados de origem para economizar nos custos de armazenamento. Para obter mais informações, consulte Armazenar dados ômicos de maneira econômica em qualquer escala com
a postagem do HealthOmics blog.
Impacto da variação do tamanho do arquivo entre as execuções
Os usuários geralmente projetam e testam execuções usando um pequeno conjunto de dados de teste e, em seguida, encontram uma grande variedade de dados com variação significativa no tamanho do arquivo nas execuções de produção. Certifique-se de considerar essa variação ao otimizar a execução.
A lista a seguir descreve recomendações para otimização quando há uma variação significativa nos tamanhos dos arquivos:
- Varie os tamanhos dos arquivos em seus dados de teste
-
Tente usar dados de teste durante o desenvolvimento que tenham uma quantidade representativa de variação.
- Use o Run Analyzer
-
Use a ferramenta Run Analyzer em uma variedade de amostras para considerar a variação nos tamanhos dos dados.
Você pode usar o analisador de execução para entender a variação entre as execuções em suas amostras de dados de produção. Use o
--batch
modo no Run Analyzer para gerar estatísticas para um lote de execuções e analisar o máximo de recursos computacionais necessários para lidar com valores discrepantes em seus conjuntos de dados.Por exemplo, você pode fornecer ao Run Analyzer uma célula de fluxo completo de dados no modo batch para entender o pico de utilização da vCPU e da memória para a célula de fluxo completa.
- Reduza a variação de tamanho dos conjuntos de dados de entrada
-
Se você observar uma grande variação nos tamanhos das amostras, poderá bifurcar as amostras antes HealthOmics e selecionar diferentes tamanhos de sistema de arquivos para cada lote, a fim de economizar nos custos de armazenamento em execução.
Na WDL, use a
size
função para bifurcar a alocação de recursos para tarefas individuais para amostras grandes e pequenas. Aplique essa estratégia às suas tarefas mais caras para ter o maior impacto.No Nextflow, use recursos condicionais para hierarquizar a alocação de recursos com base no tamanho ou nome do arquivo. Para obter mais informações, consulte Recursos de processos condicionais
no site Nextflow GitHub . - Não otimize muito cedo
-
Finalize o código e a lógica do seu fluxo de trabalho antes de investir em esforços significativos de ajuste de desempenho. Alterar seu código pode ter impactos significativos nos recursos necessários. Se você otimizar uma execução muito cedo no processo de desenvolvimento, poderá otimizar demais ou talvez precise otimizar novamente se a definição do fluxo de trabalho mudar posteriormente.
- Execute novamente a ferramenta Run Analyzer periodicamente
-
Se você fizer alterações na definição do fluxo de trabalho ao longo do tempo ou se a variação da amostra mudar, execute periodicamente a ferramenta Run Analyzer para ajudá-lo a fazer otimizações adicionais.
Métodos para otimizar a simultaneidade de recursos
HealthOmics fornece os seguintes recursos para ajudá-lo a controlar e gerenciar custos quando o processamento é executado em grande escala:
-
Use grupos de execução para controlar seus custos e o uso de recursos. Você pode definir valores máximos no grupo de execução para o número de execuções simultâneas CPUs GPUs, v e tempo total de execução por tarefa. Se equipes ou grupos diferentes usarem a mesma conta, você poderá criar um grupo de corrida separado para cada equipe. Você pode controlar o uso de recursos e os custos por equipe e configurar os valores máximos do grupo de execução. Para obter mais informações, consulte Criação de grupos de HealthOmics corrida.
-
Durante o desenvolvimento, você pode configurar um grupo de execução separado com valores máximos mais baixos para capturar tarefas descontroladas.
-
As Cotas de Serviço também ajudam a proteger sua conta contra solicitações excessivas de recursos. Para obter informações sobre Cotas de Serviço, incluindo como solicitar aumentos no valor da cota, consulte HealthOmics cotas de serviço