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á.
Configuração avançada de recursos
Com a omicsResourceFallbackOrder diretiva, você pode declarar uma lista ordenada de perfis de recursos (por exemplo, acelerador e CPU) para uma tarefa em seu fluxo de trabalho. Você especifica essa diretiva no nível da tarefa. HealthOmics pesquisa cada perfil na ordem especificada para disponibilidade de reserva. Se a capacidade não estiver disponível dentro do tempo limite de espera, HealthOmics passa para o próximo perfil de recurso na lista.
Isso é útil quando sua capacidade de acelerador preferida (por exemplo, G6e comnvidia-l40s) não está disponível e você prefere recorrer a um tipo de acelerador diferente ou a uma CPU em vez de falhar na execução.
Como funciona
-
Você define uma lista ordenada de perfis de recursos na omicsResourceFallbackOrder diretiva.
-
Em tempo de execução, HealthOmics tenta reservar capacidade para o primeiro perfil na lista.
-
Se a capacidade não estiver disponível dentro do período de tempo limite de espera, HealthOmics passa para o próximo perfil.
-
A tarefa é executada em qualquer perfil que seja bem-sucedido primeiro.
-
Se todos os perfis na lista falharem, a tarefa falhará com razão
ALL_PROFILES_INSTANCE_RESERVATION_FAILED. Nenhuma nova tentativa de mecanismo será aplicada quando todos os perfis estiverem indisponíveis.
nota
omicsResourceFallbackOrdersubstitui os omicsResourceWaitTimeoutInMin campos usuaisacceleratorType,, acceleratorCount cpumemory, e da tarefa. Estes não devem ser definidos no nível superior quando a diretiva estiver presente.
Casos de uso
| Cenário | Description |
|---|---|
| Substituta de GPU para GPU | Liste os tipos de acelerador (ou GPU) em ordem de prioridade. Por exemplo, tente nvidia-l40s primeiro e depois volte paranvidia-l4. Nenhuma alteração de comando é necessária se a carga de trabalho for a mesma em todos os tipos de aceleradores. |
| Substituta de GPU para CPU | Adicione um perfil final que omita como acceleratorType CPU-only alternativa. Use a variável de AWS_HEALTHOMICS_RESOURCE_TYPE ambiente para ramificar o comando por tipo de recurso. |
Task-level campos de tempo de execução
Ao usaromicsResourceFallbackOrder, os campos de tempo de execução em nível de tarefa são divididos em dois conjuntos:
-
Per-profile campos (acceleratorType,acceleratorCount,, cpumemory,omicsResourceWaitTimeoutInMin) — configuráveis de forma independente para cada perfil na lista.
-
Campos compartilhados (todos os outros campos de tempo de execuçãodocker, como,maxRetries) — definidos uma vez no nível superior e aplicados da mesma forma a todos os perfis.
Exemplo de WDL
A tarefa WDL a seguir procura nvidia-l40s primeiro (aguardando até 45 minutos pela capacidade), depois nvidia-l4 (janela de espera padrão) e, em seguida, retorna para um CPU-only perfil (32 vCPUs, 128 GiB) se nenhum tipo de acelerador estiver disponível.
task align { command <<< # Branch based on which resource type was allocated if [ "$AWS_HEALTHOMICS_RESOURCE_TYPE" = "cpu" ]; then sentieon bwa mem -t 32 ~{reference} ~{fastq} else pbrun fq2bam --ref ~{reference} --in-fq ~{fastq} fi >>> runtime { docker: "my-registry/align-multi-arch:latest" maxRetries: 2 omicsResourceFallbackOrder: [ {"acceleratorType": "nvidia-l40s", "acceleratorCount": 1, "cpu": 8, "memory": "32 GiB", "omicsResourceWaitTimeoutInMin": 45}, {"acceleratorType": "nvidia-l4", "acceleratorCount": 1, "cpu": 8, "memory": "32 GiB"}, {"cpu": 32, "memory": "128 GiB"} ] } }
Neste exemplo, AWS_HEALTHOMICS_RESOURCE_TYPE informa ao comando qual caminho de recurso foi selecionado (por exemplo, "nvidia-l40s" ou"cpu").
nota
A imagem do Docker deve oferecer suporte aos caminhos do acelerador e do código da CPU se sua ordem alternativa contiver um perfil de CPU. Certifique-se de que seu contêiner inclua as ferramentas necessárias para todos os perfis de recursos na lista.
Per-profile referência de campo
Cada entrada na omicsResourceFallbackOrder lista é um mapa que descreve um perfil de recurso. Todos os campos são opcionais; um perfil pode ser uma especificação parcial. Cada perfil deve usar chaves entre aspas (string).
| Campo | Tipo | Padrão quando omitido | Observações |
|---|---|---|---|
acceleratorType |
String | Quando não especificado, o perfil é considerado como CPU | Deve ser um dos 7 tipos de aceleradores suportados. Consulte Aceleradores de tarefas em uma definição de HealthOmics fluxo de trabalho. Omita esse campo para especificar um CPU-only perfil. Para o perfil de CPU, não o defina como"". |
acceleratorCount |
Inteiro | Campo ausente quando também acceleratorType está ausente |
Deve ser especificado junto comacceleratorType. Um perfil não pode ter um sem o outro. |
cpu |
Integer ou Float | 1 vCPU ou tipo de instância de GPU padrão se um perfil de GPU a omitir | Arredondado para a vCPU inteira mais próxima (mínimo 1). Mesmo suporte fracionário da diretiva de nível superiorruntime.cpu. |
memory |
Cadeia de caracteres (por exemplo,"32 GiB") |
1 GiB ou um tipo de instância de GPU padrão se um perfil de GPU o omitir | Mesmo formato da runtime.memory diretiva de nível superior. |
omicsResourceWaitTimeoutInMin |
Inteiro | 20 minutos para pacotes de aceleradores de GPU única e 30 minutos para pacotes de aceleradores de várias GPUs. Esses também são valores mínimos recomendados. | Não há limite máximo. Controla por quanto tempo HealthOmics pesquisa um perfil antes de passar para o próximo perfil. Consulte Comportamento do tempo limite. |
nota
Os campos omitidos assumem o valor padrão, não os valores herdados de um perfil anterior na lista. Um campo deixado de fora de um perfil assume seu padrão documentado (conforme fornecido na tabela acima), não um valor copiado de um perfil anterior na lista.
Comportamento do tempo limite
omicsResourceWaitTimeoutInMincontrola quanto tempo HealthOmics espera pela capacidade do acelerador em um determinado perfil antes de avançar para o próximo.
-
Per-profile, não global. Cada perfil de acelerador pode especificar seu próprio tempo limite. Configure uma espera mais longa para um acelerador de última geração preferido e uma espera mais curta para um tipo de fallback.
-
Mínimo recomendado de 20 minutos. Valores abaixo de 20 minutos (30 para pacotes de várias GPUs) são aceitos, mas geram um aviso de validação.
-
O tempo limite avança, não falha. Quando o tempo limite termina, HealthOmics passa para o próximo perfil — a tarefa não falha. A falha ocorre somente após o esgotamento de todos os perfis.
-
Não aplicável aos CPU-only perfis. Um perfil de CPU não tem limitações de capacidade. Omitir omicsResourceWaitTimeoutInMin no perfil final da CPU.
-
As novas tentativas recebem uma nova janela de tempo limite. Cada nova tentativa de OOM ou erro de serviço inicia sua própria omicsResourceWaitTimeoutInMin janela completa no mesmo perfil, em vez de herdar o tempo já gasto em uma tentativa anterior.
Variáveis de ambiente
HealthOmics define a seguinte variável de ambiente no contêiner de tarefas para que seu comando possa se ramificar com base no perfil de recurso alocado:
| Variável | Valor | Exemplos de valores |
|---|---|---|
AWS_HEALTHOMICS_RESOURCE_TYPE |
O acceleratorType do perfil ativo ou "cpu" de um CPU-only perfil. |
"nvidia-l40s", "nvidia-l4", "cpu" |
Critérios de validade
HealthOmics valida o seguinte no momento da criação do fluxo de trabalho e verifica novamente no tempo de execução da tarefa. Todas as regras rejeitam o fluxo de trabalho ou a tarefa, a menos que indicado de outra forma.
-
Não pode ser misturado com diretivas de recursos individuais. Se omicsResourceFallbackOrder for especificado, o nível superioracceleratorType,acceleratorCount, cpumemory, e não omicsResourceWaitTimeoutInMin deve ser especificado na mesma tarefa.
-
Deve ser uma lista. omicsResourceFallbackOrderdeve ser escrito como uma matriz de perfis.
-
Não pode estar vazio. A lista deve conter pelo menos um perfil.
-
Chaves entre aspas são necessárias. Cada nome de campo deve ser uma string entre aspas, por exemplo
{"acceleratorType": "nvidia-l4", "acceleratorCount": 1}. As chaves de palavras simples falham na validação. -
Non-empty perfis. Um perfil vazio (
{}) não é permitido. -
acceleratorTypee acceleratorCount vão juntos. Um perfil que define um deve definir o outro. Um perfil de CPU deve omitir ambos.
-
Somente tipos de aceleradores compatíveis. acceleratorTypedeve ser um tipo de acelerador compatível ou omitido (perfil de CPU). Uma string vazia não
""é aceita. -
Tempo limite mínimo de espera. omicsResourceWaitTimeoutInMino valor recomendado é ≥ 20 minutos (≥ 30 para pacotes de várias GPUs).
-
Perfis duplicados (somente aviso). Perfis duplicados são permitidos, mas produzem um aviso. omicsResourceWaitTimeoutInMinEm vez disso, considere aumentar o perfil anterior.
-
Campos não reconhecidos rejeitados. Somente os cinco campos por perfil listados acima são permitidos.
-
Tipos corretos. Por exemplo, cpu deve ser um número, não uma string.
-
No máximo um perfil de CPU. Somente um perfil omitido acceleratorType é permitido.
-
Máximo de 10 perfis por tarefa.
Interação com novas tentativas
Para erros Out-of-Memory (OOM) e de serviço (excluindo 5xxALL_PROFILES_INSTANCE_RESERVATION_FAILED), HealthOmics repita a tarefa da seguinte forma:
-
As novas tentativas ocorrem dentro do perfil atualmente ativo que foi reservado anteriormente com sucesso.
-
As novas tentativas nunca avançam para o próximo perfil na ordem alternativa.
-
Uma nova tentativa que esgota maxRetries falha na tarefa.
Para obter mais informações sobre novas tentativas de tarefas HealthOmics, consulteTentativas de tarefas.
nota
Se todos os perfis forem esgotados na primeira tentativa de mecanismo sem reserva de instância, o mecanismo falhará na tarefa e, posteriormente, na execução com statusALL_PROFILES_INSTANCE_RESERVATION_FAILED. Mesmo que você tenha configurado novas tentativas, HealthOmics não tente novamente para esse código de erro. Recomendamos que você ajuste o seu de omicsResourceWaitTimeoutInMin forma adequada.
Práticas recomendadas
-
Evite tipos de pacotes de várias GPUs em ordem alternativa. Tipos de aceleradores que abrangem várias famílias de instâncias (por exemplo,
nvidia-t4-a10g-l4) não são recomendados internamenteomicsResourceFallbackOrder. Em vez disso, use tipos unifamiliares. Para obter detalhes sobre os tipos de aceleradores disponíveis, consulteAceleradores de tarefas em uma definição de HealthOmics fluxo de trabalho. -
Defina os tempos limite de espera apropriados. Para perfis de aceleradores de alta prioridade, aumente omicsResourceWaitTimeoutInMin para ter HealthOmics mais tempo para encontrar capacidade.
-
Coloque os perfis de CPU por último. Se você incluir um CPU-only substituto, ele deverá ser a última entrada para que os aceleradores sejam preferidos quando disponíveis.
-
Use imagens de contêiner de várias arquiteturas. Ao usar o fallback de GPU para CPU, certifique-se de que sua imagem do Docker ofereça suporte a ambos GPU-accelerated e CPU-only a caminhos de código.
Limitações
-
omicsResourceFallbackOrdernão é suportado em scatter blocos. Ele está disponível somente no nível da tarefa.
-
Somente o WDL é suportado a partir da data de lançamento do GA. O suporte ao Nextflow e ao CWL está planejado.
-
Instance-type nomes (por exemplo,
omics.g6e.4xlarge) não são aceitos como valores de recursos. Você deve usar a sintaxe de campo por perfil descrita nesta página.