Depois de obter seu primeiro resultado, é fácil querer experimentar modelos maiores. Você pode mudar de 0.5B para 7B, mas o equipamento original pode não ser mais suficiente.
Ao selecionar recursos, primeiro distinga algumas coisas. CPU e GPU lidam com cálculo, memória e memória de vídeo armazenam dados durante a execução, e disco salva arquivos de modelo. Um modelo que é baixado com sucesso só significa que o disco tem espaço suficiente — para que possa funcionar suavemente, também depende de memória, memória de vídeo e poder de processamento. O mesmo modelo, dependendo da precisão com que é carregado, do comprimento da entrada e de quantas solicitações são processadas simultaneamente, afetará o uso de recursos. Inferência e treinamento também têm requisitos diferentes.
Vamos primeiro olhar para o que CPU e GPU são cada um adequados, depois estimar quanto espaço os parámetros do modelo ocuparão, para preparar a escolha de um laptop ou instância na nuvem.
CPU e GPU diferem significativamente em suas abordagens de computação.
CPU é projetado para computação de propósito geral, com cada núcleo tendo capacidades relativamente completas de controle e computação. Pode tomar decisões, pular e agendar tarefas com base no processo de execução do programa, lidando flexivelmente com diferentes tipos de tarefas de computação.
GPU usa uma arquitetura de computação paralela, contendo um grande número de unidades de computação que podem executar um grande número de tarefas de computação simultaneamente. É adequado para lidar com tarefas com grandes escalas de dados e alta repetitividade de cálculo.
A velocidade de processamento de CPU e GPU depende do tipo de tarefa e da escala de computação.
Para cenários envolvendo grande quantidade de julgamento lógico, controle de programa e agendamento de tarefas, CPU tem maior eficiência de execução. Tarefas como operação de sistema e consultas de banco de dados são adequadas para CPU.
Para tarefas de computação paralela em larga escala, GPU pode fornecer maior throughput de computação. Multiplicação de matriz e operações de convolução em aprendizado profundo podem ser divididas em múltiplas subtarefas paralelas, executadas simultaneamente pelas unidades de computação de GPU, melhorando a eficiência geral de computação.
No entanto, as vantagens de GPU só se tornam significativas quando a escala das tarefas de computação é grande. Quando o volume de dados é pequeno, os recursos de computação de GPU não podem ser totalmente aproveitados, e a transferência de dados e agendamento de tarefas entre CPU e GPU também trazem custos adicionais. Nesse caso, usar CPU pode ser mais eficiente.
Entrar participar da discussão
Os custos de CPU e GPU não incluem apenas os preços de compra de hardware, mas também o consumo de energia durante a operação, bem como os custos subsequentes de uso e manutenção.
Em termos de aquisição de hardware, CPU é padrão — servidores comuns e computadores pessoais todos precisam de configuração de CPU. GPUs de alto desempenho usadas para treinamento e inferência de IA geralmente são caras. Além do próprio GPU, você também precisa considerar os custos de servidores, memória de vídeo, armazenamento e outros hardware de suporte.
Durante a operação, GPU tem alto consumo de energia ao realizar cálculos em larga escala. Quanto mais GPUs em um servidor, maior a pressão sobre alimentação e resfriamento, e os custos de eletricidade e resfriamento dos centros de dados aumentarão significativamente.
Em termos de uso e manutenção, o ecossistema de CPU é relativamente maduro, e a manutenção rotineira de servidores é relativamente simples. GPU requer consideração da compatibilidade de drivers, frameworks de computação e ambiente de hardware. Conflitos entre diferentes versões podem impedir que os modelos funcionem normalmente. Ambientes multi-GPU também envolvem comunicação de dados entre dispositivos, o que tem certos requisitos para conexões de hardware e configuração de software.
Treinamento e inferência têm diferentes requisitos de recursos, e modelos de diferentes escalas e tipos também têm diferenças significativas em recursos de computação. A seleção de hardware precisa considerar de forma abrangente a escala do modelo, o volume de dados, os requisitos de desempenho e as necessidades de recursos em ambos os cenários de treinamento e inferência.
Na fase de treinamento do modelo, quando a escala de dados é pequena, CPU pode atender às necessidades de treinamento da maioria dos modelos tradicionais de aprendizado de máquina, como regressão linear, regressão logística e florestas aleatórias. Algumas redes neurais leves também podem usar CPU para treinamento, mas à medida que o volume de dados e a complexidade da estrutura do modelo aumentam, o tempo de treinamento aumentará significativamente. Se você precisa ajustar frequentemente modelos, usar GPU pode reduzir o tempo de treinamento.
O treinamento de redes neurais em larga escala e grandes modelos de linguagem requer computação matricial extensa, com altos requisitos de poder de computação e capacidade de memória de vídeo. Grandes modelos de linguagem com bilhões de parâmetros, como Qwen, precisam depender de dispositivos de aceleração de alto desempenho como GPU para treinamento.
Os requisitos do modelo durante a inferência diferem dos do treinamento. Para cenários com escalas de parâmetros menores e volumes de acesso mais baixos, CPU pode atender às necessidades de inferência, e o uso de recursos também pode ser reduzido por métodos como quantização. Para modelos grandes, serviços de alta concorrência e cenários que requerem resposta rápida, GPU pode fornecer maior eficiência de inferência.
CPU e GPU cada um tem cenários aplicáveis, e você precisa considerar de forma abrangente a escala do modelo, o volume de dados, as solicitações concorrentes, os requisitos de desempenho e os custos de implantação.
A avaliação dos requisitos de recursos de um modelo depende principalmente de dois indicadores: escala de parâmetros e precisão de dados.
A escala de parâmetros do modelo é geralmente expressa em B, onde 1B representa 1 bilhão de parâmetros. Parâmetros são os valores numéricos que o modelo aprende durante o treinamento. Durante a inferência, esses parâmetros precisam ser carregados na memória (CPU) ou memória de vídeo (GPU). Quanto maior a contagem de parâmetros, mais recursos são ocupados.
A precisão de dados refere-se ao formato numérico que os parâmetros do modelo usam para armazenamento e cálculo. Formatos comuns incluem FP32, FP16, BF16 e formatos de quantização como INT8 e INT4. Para a mesma contagem de parâmetros, maior precisão de dados significa mais recursos ocupados.
O espaço de armazenamento estimado para 1B parâmetros em diferentes precisões é o seguinte:
| Precisão | Espaço por 1B Parâmetros (aprox.) | Usos Comuns |
| FP32 (Precisão Simples) | 4GB | Treinamento, inferência de alta precisão |
| FP16 (Meia Precisão) | 2GB | Treinamento, inferência |
| BF16 | 2GB | Treinamento, inferência |
| INT8 | 1GB | Inferência quantizada |
| INT4 | 0.5GB | Inferência quantizada de baixa precisão |
Pesos do modelo = Contagem de parâmetros × Espaço de armazenamento por 1B parâmetros nessa precisão. Para um modelo 7B com inferência em precisão FP16, a ocupação dos pesos do modelo é aproximadamente: 7 × 2GB ≈ 14GB.
Durante a inferência do modelo, além de carregar os pesos do modelo, recursos adicionais são necessários para KV Cache, framework de execução e cálculo temporário.
KV Cache é usado para armazenar informações relacionadas a Tokens que já foram calculadas durante o processo de geração, evitando cálculos redundantes. Seu uso depende da estrutura do modelo, comprimento do contexto e número de solicitações simultâneas. Quanto mais longo o contexto, mais informações precisam ser armazenadas; quantas mais solicitações processadas simultaneamente, mais aumentará o uso de KV Cache.
Fórmula de estimativa de uso de recursos de inferência:
Memória necessária para inferência CPU ≈ Pesos do modelo + Overhead do framework e temporário.
Memória de vídeo necessária para inferência GPU ≈ Pesos do modelo + KV Cache + Overhead do framework e temporário.
Dentre esses, os pesos são estáticos, o overhead do framework é basicamente constante, e a variável está inteiramente no KV Cache. Em cenários de sequências longas, o espaço do KV Cache precisa ser reservado.
Os requisitos de recursos da fase de treinamento do modelo são superiores aos da fase de inferência. Além de armazenar os pesos do modelo, gradientes, estados do otimizador e resultados intermediários durante o treinamento também precisam ser armazenados, exigindo mais recursos. Os requisitos de recursos de treinamento dependem do tipo de otimizador e da estratégia de treinamento.
(1) Treinamento completo do modelo
Para treinamento completo do modelo, pesos do modelo, gradientes, estados do otimizador e ativações precisam ser armazenados simultaneamente. Tomando como exemplo o treinamento completo com otimizador Adam e precisão FP16, cada 1B parâmetro requer aproximadamente:
| Componente | Por 1B Parâmetros |
| Pesos do modelo (FP16) | 2 GB |
| Gradientes (FP16) | 2 GB |
| Estados do otimizador | 8 GB |
| Cópia FP32 dos pesos | 4 GB |
| Subtotal (sem ativações) | 16 GB |
Observação: O otimizador Adam precisa salvar duas cópias de estados em precisão FP32 (momentum e variância), portanto os estados do otimizador ocupam 8GB; a cópia FP32 dos pesos é usada para atualização de parâmetros do otimizador.
A fórmula de estimativa preliminar para treinamento completo é:
Memória de vídeo necessária para treinamento GPU ≈ Contagem de parâmetros × 16 Byte + Overhead de ativação
Memória necessária para treinamento CPU ≈ Contagem de parâmetros × 16 Byte + Overhead de ativação
O treinamento GPU é limitado pela capacidade de memória de vídeo, enquanto o treinamento CPU é limitado pela velocidade de cálculo. Por exemplo, um modelo 7B com treinamento completo em FP16 no GPU requer pelo menos 7B × 16 Byte ≈ 112GB de memória de vídeo, e o requisito real será maior após adicionar ativações.
(2) Ajuste eficiente de parámetros (como LoRA)
Para ajuste de modelos grandes, métodos de ajuste eficiente de parâmetros como LoRA (Low-Rank Adaptation) são mais comumente usados na prática. LoRA não atualiza todos os parâmetros originais do modelo durante o treinamento; em vez disso, congela os pesos do modelo original e apenas treina os parâmetros de adaptação de baixo rank recém-adicionados, reduzindo significativamente os requisitos de memória de vídeo.
Memória de vídeo para treinamento LoRA ≈ Pesos do modelo base + Parâmetros LoRA + Gradientes e estados do otimizador de parâmetros LoRA + Ativações.
Dentre esses, os pesos do modelo base apenas precisam ser carregados e não participam de atualizações; os parâmetros adicionados por LoRA representam apenas 0,1%~1% do modelo original, e seus gradientes e overhead do otimizador são quase negligenciáveis. A memória de vídeo real depende principalmente dos pesos do modelo, comprimento do contexto, tamanho do lote e métodos de otimização do framework de treinamento. O ajuste LoRA pode reduzir significativamente os requisitos de memória de vídeo em comparação com o treinamento completo.
Por exemplo, ao carregar um modelo 7B com FP16, os pesos do modelo ocupam 4GB. Em uma única GPU com 24GB de memória de vídeo, o ajuste LoRA geralmente pode funcionar (com ajustes apropriados do tamanho do lote e comprimento do contexto). Usar QLoRA (quantizar o modelo base para INT4) pode reduzir ainda mais o uso de memória de vídeo, permitindo ajuste em hardware mais limitado.