CPU 오프로딩은 모델의 가중치 일부를 시스템 RAM에 저장하여 전체 모델을 가속기 메모리에 유지하지 않고도 큰 모델을 실행할 수 있게 합니다.
홈 AI 서버에서는 GPU 하나에 로드되지 않는 모델을 사용 가능한 로컬 서비스로 전환할 수 있습니다. 그 대가는 분명합니다. VRAM 부담은 줄어들지만 CPU 메모리, PCIe 또는 인터커넥트 트래픽, 때로는 CPU 실행이 추론 경로에 포함됩니다. 오프로딩은 우선적으로 용량을 확보하는 기술이며, 메모리 계층이 충분히 빠를 때에만 성능 향상 기술이 됩니다.
빠른 장치가 필요한 상태를 담지 못하면 대형 모델은 실패합니다
로컬 모델에는 가중치뿐 아니라 KV 캐시, 활성화 값, 임시 버퍼, 런타임 예약 공간을 위한 메모리도 필요합니다. 가속기가 필요한 상주 상태를 모두 담지 못하면 유용한 추론이 시작되기도 전에 로드가 실패할 수 있습니다.
Hugging Face Accelerate는 대규모 모델 추론을 사용 가능한 메모리 계층에 모델 가중치를 분산하는 문제로 다룹니다. CPU 오프로딩은 시스템 RAM을 모델 상태를 저장하는 더 느린 계층으로 추가합니다.
가속기에 물리적 메모리가 늘어난 것이 아니라, 같은 순간 VRAM에 남아 있어야 하는 모델의 양이 줄어들기 때문에 모델을 실행할 수 있게 됩니다.
오프로딩된 가중치는 해당 레이어가 필요할 때까지 시스템 RAM에 머뭅니다
런타임은 현재 레이어 또는 레이어 그룹이 GPU에서 활성화되는 동안 일부 파라미터 텐서를 CPU에 유지할 수 있습니다. 실행이 진행되면 필요한 가중치가 가속기로 전송되고, 이전 가중치는 다시 이동되거나 장치 메모리에서 제거될 수 있습니다.
DeepSpeed ZeRO-Inference는 CPU 또는 NVMe 메모리에 모델 가중치를 저장한 뒤 레이어별로 GPU에 스트리밍할 수 있습니다. 이를 통해 가속기에 상주하는 메모리의 최대 사용량은 줄어들지만, 가중치 전송이 실행 과정에 포함됩니다.
레이어 배치는 정적으로 구성할 수도 있습니다. 일부 레이어는 CPU에 남아 그곳에서 실행하고, 나머지는 GPU에 유지하는 방식입니다. 두 전략 모두 장치 메모리 부담을 줄이는 대신 더 느린 메모리와 전송 경로를 사용합니다.
PCIe 또는 통합 메모리 경로가 모든 토큰 처리의 일부가 됩니다
순방향 실행 중 가중치가 PCIe를 통과해야 한다면 전송 지연 시간과 대역폭이 추론의 핵심 경로에 직접 영향을 줍니다. VRAM에 완전히 들어가는 모델은 장치 대역폭으로 상주 가중치를 재사용할 수 있지만, 오프로딩된 모델은 대규모 텐서를 반복적으로 가져와야 할 수 있습니다.
PyTorch는 고정된 호스트 메모리와 CPU에서 GPU로 전송되는 동작을 문서화하고 있으며, 이를 통해 호스트와 장치 간 데이터 이동이 GPU 연산과는 별개의 성능 영역인 이유를 보여줍니다.
이 때문에 CPU 오프로딩은 메모리 부족 오류를 작동하지만 느린 모델로 바꿀 수 있습니다. 먼저 용량 문제를 해결하지만, 처리량은 크게 떨어질 수 있습니다.
시스템 RAM을 늘리면 용량은 확대되지만 속도가 보장되지는 않습니다
오프로딩된 부분과 운영 체제, 페이지 캐시, 컨테이너, 데이터베이스 및 기타 홈 서버 서비스를 수용하려면 충분한 RAM이 필요합니다. 모델이 스왑으로 넘어가면 느린 구성은 실용성이 크게 떨어질 수 있습니다.
Linux는 메모리 회수와 스왑을 시스템 메모리 계층의 일부로 설명합니다. 오프로딩된 모델은 다른 모든 프로세스와 동일한 RAM 예산을 두고 경쟁합니다.
NAS, 사진 인덱서, 미디어 데이터베이스도 함께 실행하는 홈 서버라면 모델 파일 크기만 기준으로 RAM을 정하지 말고 충분한 여유 공간을 남겨야 합니다.
양자화와 오프로딩은 메모리 적합성 문제의 서로 다른 부분을 해결합니다
양자화는 가중치에 사용되는 바이트 수를 줄여 GPU와 CPU의 상주 메모리 사용량을 모두 줄이고 전송량도 감소시킬 수 있습니다. 오프로딩은 실행 중 해당 바이트가 어디에 위치하는지를 변경합니다.
NVIDIA NeMo는 더 적은 모델 메모리를 사용하는 FP8, INT8 및 INT4 양자화를 문서화하고 있습니다. 양자화된 모델은 GPU에 완전히 들어가 오프로딩이 필요하지 않을 수 있지만, 더 큰 모델은 두 기법을 모두 사용해야 할 수 있습니다.
적절한 순서는 먼저 허용 가능한 정밀도와 모델 품질을 결정한 다음 배치를 선택하는 것입니다. 불필요하게 큰 표현을 오프로딩하면 대역폭을 낭비할 수 있습니다.
최대 처리량보다 모델 실행 자체가 중요할 때 CPU 오프로딩을 사용하세요
가장 적합한 경우는 VRAM을 초과하지만 상태 일부를 RAM에 두어도 허용 가능한 지연 시간으로 실행할 수 있는 가끔 사용하는 로컬 모델입니다. 모든 토큰이 느린 연결을 통해 반복적으로 이동해야 하는 대화형 다중 사용자 서비스에는 덜 적합합니다.
ZimaSpace의 AI NAS 메모리 및 가속기 용량 계획 가이드는 계획 수립의 기준을 제공합니다. 오프로딩은 전체 홈 서버 워크로드 안에서 용량을 확보하는 대안으로 다뤄야 합니다.
VRAM 사용량, RAM 사용량, 호스트와 장치 사이의 전송 바이트 수, 첫 토큰까지 걸리는 시간, 초당 출력 토큰 수, 다른 셀프 호스팅 서비스에 미치는 영향을 측정하세요. 기술적으로는 로드되지만 스왑을 유발하거나 NAS를 멈추게 하는 구성은 적합한 구성이 아닙니다.
ZimaSpace의 모델 상주 및 제거에 관한 설명은 관련된 절충점도 다룹니다. 가속기 메모리를 비우면 다른 작업을 위한 용량은 늘어나지만, 다음 요청에서 다시 로드하거나 전송해야 할 수 있습니다.
FAQ
CPU 오프로딩은 RAM과 VRAM을 하나의 빠른 메모리 풀로 결합하나요?
아니요. 런타임이 두 계층에 모델 상태를 배치할 수 있게 할 뿐이며, CPU RAM과 GPU VRAM은 대역폭과 지연 시간이 서로 다릅니다. 둘 사이의 전송이 추론의 주요 병목이 될 수 있습니다.
RAM을 더 추가하면 오프로딩된 모델이 더 빨라지나요?
현재 시스템의 RAM이 부족하거나 페이징이 발생하거나, 의도한 오프로딩 상태를 메모리에 상주시키지 못하는 경우에만 그렇습니다. 사용하지 않는 추가 RAM은 PCIe 전송이나 CPU 실행 비용을 없애지 못합니다.
SSD 오프로딩은 CPU 오프로딩과 같은 것인가요?
아니요. SSD 오프로딩은 RAM이 부족할 때 훨씬 더 느린 저장 계층을 추가합니다. 용량을 더 확장할 수 있지만, 모델 페이지는 가속기에서 실행되기 전에 저장 장치와 일반적으로 시스템 메모리를 거쳐야 합니다.
기술 및 AI 허브
더 읽어보기

로컬 AI 게이트웨이는 GPU 할당 전에 엄격한 컨텍스트 한도를 적용할 수 있나요?
하드 컨텍스트 게이트의 메커니즘 중심 설명, 공유 리소스의 트레이드오프, 쿼리 팬아웃에 대한 세 가지 FAQ, 그리고 실용적인 검증 프로토콜.

홈 AI 서버가 2.5GbE를 통해 원격 NAS의 모델 가중치를 메모리 매핑할 수 있나요?
원격 NAS 모델의 메모리 매핑에 대한 메커니즘 중심 설명, 공유 리소스의 상충 관계, 쿼리 팬아웃 관련 자주 묻는 질문 3가지, 그리고 실용적인 검증 프로토콜.

여러 컨테이너가 작업을 노출하지 않고 하나의 통합 GPU를 공유할 수 있을까요?
공유 iGPU 컨테이너 격리의 메커니즘 중심 설명, 공유 리소스의 트레이드오프, 쿼리 팬아웃 관련 자주 묻는 질문 3가지, 그리고 실용적인 검증 프로토콜.

