NUMA 로컬리티는 CPU 스레드, 메모리 페이지, 장치가 가까운 경로를 공유할 때 호스트 전처리와 전송이 더 빨라지므로 가속기 데이터 공급 속도를 바꿉니다.
멀티 소켓 홈 워크스테이션에서는 모든 CPU 코어가 전체 RAM에 접근할 수 있지만 접근 비용은 균일하지 않습니다. GPU나 기타 가속기는 일반적으로 한 소켓의 PCIe 루트 컴플렉스에 연결됩니다. 다른 노드에서 전처리가 실행되고 버퍼도 해당 노드에 할당되면, 장치에 도달하기 전에 데이터가 소켓 간 인터커넥트를 통과할 수 있어 경합과 가변적인 지연 시간이 발생합니다.
NUMA는 호스트 메모리 거리를 가시화합니다
NUMA 시스템은 CPU와 메모리를 서로 다른 접근 거리를 가진 노드로 나눕니다. Linux는 일반적으로 페이지 폴트를 처음 발생시킨 CPU에 가까운 노드에 페이지를 할당합니다. 따라서 모델 로딩이나 입력 준비 중 스레드 배치는 대형 버퍼가 실제로 어느 위치에 저장될지를 결정할 수 있습니다.
Linux의 NUMA 메모리 정책 문서에서는 태스크, VMA, 공유, 바인드, 선호, 인터리브 정책을 설명합니다. 또한 정책은 주로 정책이 설치된 이후 할당되는 페이지에 영향을 준다고 설명하므로 초기화 순서가 중요합니다. 이러한 구분은 실제 가정용 운영 환경에서도 여전히 중요합니다.
로컬 추론에서는 토큰화, 이미지 디코딩, 텐서 준비, 페이지 고정 버퍼, 장치 전송이 핵심 경로에 포함될 수 있습니다. 가속기 자체에 사용하지 않은 연산 용량이 표시되더라도 원격 배치는 호스트 측 병목을 추가합니다. 이후 진단과 검토 과정에서도 중간 상태가 계속 확인 가능해야 합니다.
PCIe 토폴로지는 가속기를 특정 CPU 노드에 연결합니다
일반적으로 가장 짧은 호스트-장치 경로는 가속기를 담당하는 루트 컴플렉스가 있는 CPU 소켓을 통과합니다. 작업자의 CPU 스레드와 메모리 할당 정책을 해당 영역에 맞추면 대규모 입력이나 빈번한 전송으로 링크가 계속 사용될 때 대역폭을 높이고 변동성을 줄일 수 있습니다.
NVIDIA의 CUDA NUMA 지침에는 NUMA 권장 사항이 포함되어 있으며, 자동 균형 조정이 경우에 따라 GPU 애플리케이션 성능을 저하시킬 수 있다고 경고합니다. 또한 노드 번호를 임의로 가정하지 말고 토폴로지를 확인한 뒤 실제 노드에 맞게 정책을 조정할 것을 권장합니다.
배치는 노드 0이 가장 빠르다는 규칙이 아니라 그래프 문제입니다. 올바른 조합은 메인보드 배선, IOMMU 구성, 다른 장치, 그리고 여러 작업자가 동일한 메모리 채널이나 PCIe 링크를 공유하는지 여부에 따라 달라집니다.
작업이 둘 이상의 노드를 사용하면 바인딩이 오히려 해가 될 수 있습니다
메모리를 한 노드에 엄격하게 바인딩하면 해당 노드의 대역폭이나 용량이 고갈되는 동안 다른 노드는 유휴 상태로 남을 수 있습니다. 파이프라인이 한 소켓에 가까운 GPU를 사용하면서 다른 소켓에 가까운 캡처 카드, NVMe 장치 또는 두 번째 가속기도 사용할 수 있습니다. 하나의 배치는 전송을 최적화하는 대신 전처리나 스토리지 작업을 느리게 만들 수 있습니다.
NVIDIA의 GPU 어피니티 프로젝트는 GPU와 연결된 CPU 코어에 프로세스를 매핑하며, 올바른 어피니티가 성능을 안정화할 수 있다고 설명합니다. 이 프로젝트의 여러 모드는 고유 범위, 연속 범위, 소켓 범위, NUMA 범위가 서로 다른 멀티 프로세스 작업에 적합한 이유를 보여줍니다.
실패의 경계는 단일 장치 벤치마크를 서버 전체에 그대로 일반화하는 데 있습니다. 통합 메모리 시스템, 단일 노드 머신 또는 여러 장치에 걸친 파이프라인에서는 무작정 바인딩하지 마세요. 의도한 동시성 조건에서 종단 간 지연 시간, 대역폭, 경합을 측정해야 합니다.
가속기뿐 아니라 토폴로지를 벤치마크하세요
CPU 노드, 메모리 용량, PCIe 장치, 가속기 로컬리티를 매핑하세요. 동일한 추론 작업을 기본 배치, CPU만 바인딩, 메모리만 바인딩, CPU와 메모리를 일치시킨 바인딩 조건에서 실행하세요. 호스트-장치 대역폭, 페이지 배치, 초당 토큰 수, p95 지연 시간을 기록하세요.
네트워크 모델 스토리지에서 모델 샤드를 가져오는 경우처럼, 파일 읽기 시간과 페이지 배치 및 장치 전송을 분리하세요. 각 실행에서 동일한 데이터를 미리 워밍한 다음, 의도한 동시 작업자 수로 반복하여 메모리 채널 경합을 드러내세요.
일치하는 토폴로지가 다른 서비스를 고갈시키지 않으면서 반복 가능한 종단 간 결과를 개선할 때만 바인딩을 적용하세요. 워밍업 후 이점이 사라지거나 동시성 조건에서 결과가 반대로 나타난다면 배치를 유연하게 유지하거나 전송에 중요한 스레드와 버퍼만 격리하세요.
기술 및 AI 허브
더 읽어보기

비공개 검색 점수 보정: 원시 유사도가 활용 가능한 신뢰도 신호로 변환되는 과정
코사인 유사도가 신뢰도가 아닌 이유, 레이블이 지정된 쿼리로 점수를 보정하는 방법, 그리고 비공개 코퍼스가 변경될 때 임계값을 모니터링하는 방법을 알아보세요.

모델 파일 메모리 매핑: 공유 페이지로 중복 RAM 사용량 줄이기
매핑된 모델 페이지가 어떻게 페이지 폴트되고 공유되는지, RSS가 오해를 불러일으킬 수 있는 이유와 프로세스별로 여전히 RAM을 사용하는 캐시 및 버퍼가 무엇인지 알아보세요.

프라이빗 AI 감사 추적: 이벤트 로그로 에이전트의 의사 결정을 재구성하는 방법
에이전트 감사 추적 기록에 반드시 포함해야 할 내용, 일반 로그가 불완전한 이유, 원시 데이터를 노출하지 않고 비공개 워크플로를 재현하는 방법을 알아보세요.

