Pular para o conteúdo
Skillpedia
Deploy e nuvem (DevOps)41 mil · #4853

spark-memory-thermal-ops

Ajuda seu agente a gerenciar memória e temperatura em tarefas de ML longas. É útil para planejar recursos ou quando tarefas falham por falta de memória ou superaquecimento.

O que ela faz

Esta ferramenta ajuda a gerenciar a memória e a temperatura em computadores potentes (DGX Spark) durante tarefas longas de aprendizado de máquina. Ela garante que você tenha memória suficiente e que o computador não superaqueça.

Quando usar

  • ✓Antes de iniciar uma tarefa longa, para saber quanta memória você vai precisar.
  • ✓Se a sua tarefa falhar por falta de memória.
  • ✓Para monitorar a temperatura e o consumo de energia durante tarefas longas.

Exemplo do que pedir para a IA

“Como posso saber quanta memória minha tarefa de aprendizado de máquina vai usar antes de começar?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/wshobson/agents/blob/main/plugins/dgx-spark-ops/skills/spark-memory-thermal-ops/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/dgx-spark-ops/skills/spark-memory-thermal-ops/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela verifica a memória total disponível no sistema, não apenas a memória da placa de vídeo. Ela também monitora a temperatura e a energia para evitar que o computador diminua a velocidade ou pare de funcionar.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add wshobson/agents --skill spark-memory-thermal-ops

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/dgx-spark-ops/skills/spark-memory-thermal-ops/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Spark Memory & Thermal Ops

O chip GB10 do DGX Spark possui um pool de memória unificada (UMA) de 128GB compartilhado por CPU e GPU, e um limite de energia sustentado bem abaixo de seu valor nominal. Ambos quebram as suposições de GPUs discretas: o espaço livre não é o que nvidia-smi relata, e uma execução que começa rápido desacelerará no meio do trabalho sem nada mal configurado. Esta habilidade cobre o planejamento do espaço livre de memória, o trabalho com um OOM real e a observação das temperaturas em um trabalho longo. Para modos de falha no momento do lançamento (incompatibilidades de ABI, flash-attn, quebra de playbook), veja spark-training-gotchas — esta habilidade assume que o trabalho começa.

Referência Rápida de Problemas Comuns

Situação Faça isso
Planejando espaço livre antes do lançamento Orce contra free -g, não nvidia-smi — veja Modelo de Memória UMA
Trabalho OOMs na memória unificada Trabalhe a Escada OOM em ordem: flush, depois batch/pack, depois downgrade de método
Throughput cai no meio da execução Verifique o log de energia/temperatura antes de assumir um bug de configuração — veja Monitoramento Térmico
Treinador + servidor de inferência ambos desejados Execute um de cada vez — veja Cargas de Trabalho Concorrentes

Quando Usar Esta Habilidade

  • Dimensionar uma execução de treinamento contra o pool de 128GB antes do lançamento — se este modelo, método e combinação de batch/pack caberão.
  • Uma execução OOMs no meio do carregamento ou no meio do passo e a ordem de remediação importa — o que tentar primeiro, segundo, terceiro.
  • Observar a temperatura e a energia durante um trabalho de várias horas, decidindo se uma desaceleração é limitação térmica ou algo mais.
  • Planejar executar um treinador ao lado de um servidor de inferência (vLLM, Ollama) na mesma máquina.

Modelo de Memória UMA

Spark não tem VRAM de GPU separada — a GPU e a CPU compartilham um pool de 128GB. Duas consequências:

  • nvidia-smi e cudaMemGetInfo subestimam a pressão — ou não relatam nada. Ambos relatam memória visível pelo alocador CUDA, não o estado real do pool — uma máquina pode mostrar espaço livre em nvidia-smi e ainda assim OOM, porque o cache de página e as páginas mmap'd que o alocador não vê consomem o mesmo pool. Em alguns drivers/configurações, a consulta de memória retorna [N/A], [N/A] diretamente em vez de um número — um script que busca um valor numérico lá não obtém nada, não uma subcontagem enganosa (veja a pegadinha G3 de spark-training-gotchas).

  • O carregamento do modelo é um pico transitório, não o estado estável. Carregar pesos safetensors mmap'a o arquivo, depois copia para tensores CUDA — por uma janela durante o carregamento, tanto as páginas mmap'd quanto a cópia CUDA contam contra o pool ao mesmo tempo. Um modelo que cabe durante o treinamento ainda pode OOM durante o carregamento se o espaço livre foi dimensionado para a pegada pós-carregamento em vez desta duplicação transitória.

Planeje e diagnostique com free -g, não nvidia-smi:

free -g | awk 'NR==2 {print "free:", $4, "GB"}'

Regra geral: pegue esse valor livre, subtraia alguns GB para sobrecarga do sistema operacional/driver e orce contra o resultado — não o número da especificação de 128GB. A planilha em references/uma-accounting.md aceita contagem de parâmetros, dtype e método como entrada, e retorna uma estimativa de memória para comparar com âncoras conhecidas.

Sequência de Planejamento

Antes do lançamento, trabalhe nestes em ordem:

  1. Leia free -g; subtraia a sobrecarga do sistema operacional/driver para o orçamento.
  2. Estime pesos + otimizador + gradientes + ativações de references/uma-accounting.md.
  3. Compare com a âncora mais próxima (70B QLoRA, 27B LoRA, 9B FT completo), não apenas a estimativa.
  4. Se a estimativa estiver próxima do orçamento, comece com um packing mais curto ou um batch menor — mais barato do que atingir a Escada OOM no meio da execução.

Exemplo: Dimensionando uma Execução QLoRA de 70B

Uma verificação de sanidade da fórmula da planilha contra a âncora de ≈40GB:

params = 70e9
weights_gb = params * 0.5 / 1e9      # NF4, step 1
adapter_gb = 0.5                     # step 5, negligible
total_gb = weights_gb + adapter_gb   # + activations
print(f"{total_gb:.0f}GB before activations")

Apenas os pesos ficam perto da âncora de ≈40GB — um plano que estima muito acima disso para a mesma classe de modelo é um sinal para verificar novamente o dtype e o método.

A Escada OOM

Quando um trabalho OOMs na memória unificada, trabalhe nesta escada em ordem. Cada passo é mais disruptivo que o anterior — não pule etapas: reduzir o tamanho do batch nunca é o passo 1.

  1. Limpe o cache do buffer. O cache de página de uma execução anterior ou a leitura de um grande conjunto de dados geralmente responde por GB do espaço livre "faltando". Isso não custa nada além de uma nova execução e não mexe na configuração do trabalho:

    sync; echo 3 > /proc/sys/vm/drop_caches
    

    Precisa de root; um reset entre execuções, não um

Perguntas frequentes

Por que `nvidia-smi` não mostra a memória correta?

O `nvidia-smi` só mostra a memória que o programa pode usar diretamente. No DGX Spark, a CPU e a GPU compartilham a mesma memória, e outras partes do sistema também usam essa memória, o que o `nvidia-smi` não mostra.

Minha tarefa falhou com 'OOM'. O que eu faço?

Primeiro, tente liberar a memória cache. Se não funcionar, reduza o tamanho do lote (batch size) ou o comprimento da sequência. Se ainda assim falhar, considere usar um método de treinamento mais simples.

Por que meu computador fica mais lento durante tarefas longas?

Isso pode ser por causa do superaquecimento ou porque o computador está atingindo seu limite de energia. Esta ferramenta ajuda a monitorar isso para que você saiba se é um problema de temperatura ou outra coisa.

Detalhes

Descrição original do autor

Manage unified memory and thermals during long-running ML jobs on NVIDIA DGX Spark. Use when planning memory headroom for a training run on GB10, when a job OOMs on unified memory, or when monitoring temperature and power during multi-hour training.

repo: wshobson/agents

Popularidade

Estrelas no GitHub
41 mil
Posição no ranking
#4853
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas