Localidade NUMA da IA local: por que a colocação da memória altera a taxa de alimentação do acelerador

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

A localidade NUMA altera a taxa de alimentação do acelerador, porque o pré-processamento no anfitrião e as transferências são mais rápidas quando os threads da CPU, as páginas de memória e o dispositivo partilham um caminho próximo.

Numa estação de trabalho doméstica com vários sockets, cada núcleo da CPU pode endereçar toda a RAM, mas o custo de acesso não é uniforme. Uma GPU ou outro acelerador está normalmente ligado através do complexo raiz PCIe de um dos sockets. Se o pré-processamento for executado noutro nó e os buffers forem alocados aí, os dados poderão atravessar a interligação entre sockets antes de chegarem ao dispositivo, acrescentando contenção e latência variável.

A NUMA torna observável a distância até à memória do anfitrião

Um sistema NUMA divide as CPUs e a memória em nós com diferentes distâncias de acesso. O Linux aloca normalmente uma página no nó local à CPU que a acede pela primeira vez. A colocação dos threads durante o carregamento do modelo ou a preparação dos dados de entrada pode, portanto, determinar onde os buffers de grandes dimensões ficam fisicamente armazenados.

A documentação sobre políticas de memória NUMA do Linux descreve políticas de tarefa, VMA, partilhadas, de ligação, preferenciais e de interleaving. Também salienta que as políticas afetam principalmente as páginas alocadas depois de a política ser instalada, o que torna importante a ordem de inicialização. Esta distinção continua a ser importante em condições domésticas realistas de funcionamento.

Na inferência local, o caminho crítico pode incluir tokenização, descodificação de imagens, preparação de tensores, buffers fixados e transferências para o dispositivo. A colocação remota acrescenta um estrangulamento no anfitrião, mesmo quando o próprio acelerador indica capacidade de computação não utilizada. O estado intermédio deve continuar visível durante o diagnóstico e a revisão posteriores.

A topologia PCIe liga um acelerador a determinados nós da CPU

O caminho mais curto entre o anfitrião e o dispositivo passa normalmente pelo socket da CPU cujo complexo raiz controla o acelerador. Associar os threads da CPU do processo de trabalho e a política de alocação a essa zona pode melhorar a largura de banda e reduzir a variabilidade, sobretudo quando entradas grandes ou transferências frequentes mantêm a ligação ocupada.

As orientações NUMA da CUDA da NVIDIA incluem recomendações sobre NUMA e alertam para o facto de o balanceamento automático poder degradar aplicações GPU em alguns casos. Recomendam inspecionar a topologia e ajustar a política ao nó real, em vez de assumir que determinados números de nó são os melhores.

A colocação é um problema de grafos, não uma regra segundo a qual o nó zero é o mais rápido. A associação correta depende da cablagem da placa-mãe, da configuração do IOMMU, de outros dispositivos e de saber se vários processos de trabalho competem pelos mesmos canais de memória ou ligações PCIe.

A associação pode prejudicar o desempenho quando a carga de trabalho utiliza mais do que um nó

Associar estritamente a memória a um único nó pode esgotar a respetiva largura de banda ou capacidade, enquanto os outros nós permanecem inativos. Um pipeline pode utilizar uma GPU próxima de um socket, mas também uma placa de captura, um dispositivo NVMe ou um segundo acelerador próximo de outro. Uma colocação pode otimizar as transferências e, ao mesmo tempo, tornar o pré-processamento ou o armazenamento mais lentos.

O projeto GPU affinity da NVIDIA associa processos aos núcleos da CPU relacionados com as GPUs e salienta que a afinidade correta pode estabilizar o desempenho. Os seus vários modos ilustram por que motivo os âmbitos exclusivo, contíguo, de socket e NUMA se adequam a diferentes cargas de trabalho multiprocessos.

O limite da falha está em generalizar um teste comparativo de um único dispositivo para todo o servidor. Não associe processos cegamente em sistemas de memória integrada, máquinas com um único nó ou pipelines que abrangem vários dispositivos; meça a latência de ponta a ponta, a largura de banda e a contenção com o nível de concorrência pretendido.

Faça uma avaliação comparativa da topologia, não apenas do acelerador

Mapeie os nós da CPU, a capacidade de memória, os dispositivos PCIe e a localidade dos aceleradores. Execute a mesma carga de trabalho de inferência com a colocação predefinida, associação apenas à CPU, associação apenas à memória e associação correspondente entre CPU e memória. Registe a largura de banda entre o anfitrião e o dispositivo, a colocação das páginas, os tokens por segundo e a latência p95.

Se os fragmentos do modelo vierem de armazenamento de rede, como em armazenamento de modelos em rede, separe o tempo de leitura dos ficheiros da colocação das páginas e da transferência para o dispositivo. Aqueça os mesmos dados em cada execução e repita depois com os processos de trabalho concorrentes previstos, para revelar a contenção dos canais de memória.

Adote a associação apenas se a topologia correspondente melhorar de forma repetível os resultados de ponta a ponta sem privar outro serviço de recursos. Se os ganhos desaparecerem após o aquecimento ou se inverterem com a concorrência, deixe a colocação flexível ou isole apenas os threads e buffers críticos para as transferências.

Centro de Tecnologia e IA

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.