O Que É GPU CI? Executar Pipelines em Runners com GPU Explicado
GPU CI é executar jobs de integração contínua em runners equipados com GPU, para que treinamento de machine learning, testes de inferência e builds CUDA possam rodar no pipeline.
A maior parte do CI roda em CPU, o que é adequado para construir e testar software comum. Machine learning é diferente: treinamento e muitos testes de modelo são drasticamente mais rápidos em uma GPU. O GPU CI dá ao seu pipeline acesso a esse hardware para que o trabalho de ML possa rodar automaticamente, e não apenas no laptop de alguém.
O que é GPU CI
GPU CI significa provisionar runners de CI que têm uma ou mais GPUs acopladas, para que jobs possam usar frameworks como PyTorch ou TensorFlow com aceleração de hardware. É o que permite que treinamento, testes de inferência em GPU e builds dependentes de CUDA aconteçam dentro de um pipeline automatizado.
Por que o ML precisa disso
O treinamento de deep learning em CPU pode ser dezenas a centenas de vezes mais lento do que em GPU. Rodar esses jobs sem uma GPU costuma ser inviável. O GPU CI também importa para testar se os caminhos de código de GPU realmente funcionam, já que testes só em CPU não conseguem exercitar kernels CUDA.
O ângulo do custo
Runners com GPU são caros por minuto, então o objetivo é usá-los apenas onde ajudam. Um bom padrão direciona o job pesado de treinamento ou inferência para um runner com GPU enquanto todo o resto - linting, validação de dados, testes de CPU - permanece em runners de CPU baratos.
GPU CI na prática
Selecione um runner com GPU apenas para o job que precisa dele, mantendo o resto do pipeline em CPU.
jobs:
lint: { runs-on: small } # cheap CPU
train:
runs-on: gpu-large # GPU only here
steps:
- run: nvidia-smi
- run: python train.pyNota da Latchkey
Na Latchkey, runners com GPU e grandes estão disponíveis sob demanda, então você paga por minutos de GPU apenas nos jobs que precisam deles. Fazer cache de grandes conjuntos de dados, pesos de modelo e dependências pesadas de CUDA entre execuções mantém os jobs caros de GPU curtos, e o auto-retry impede que uma busca transitória de dados desperdice uma execução dispendiosa de GPU.
Principais conclusões
- GPU CI executa jobs do pipeline em runners equipados com GPU para que treinamento de ML, testes de inferência e builds CUDA possam rodar.
- Deep learning é muito mais rápido em GPU, e alguns caminhos de código só podem ser testados com uma GPU real.
- Direcione apenas o job pesado para um runner com GPU e faça cache de grandes ativos para reduzir os minutos caros de GPU.