대규모 언어 모델을 불러오는 과정은 SSD에서 가속기 메모리로 이어지는 한 번의 순차 복사가 아닙니다. 서빙 프레임워크는 가중치 파일을 열고, 메타데이터를 해석하고, 텐서를 여러 작업자에게 나눈 뒤, 커널 페이지 캐시를 통해 떨어진 파일 구간을 읽고 NUMA 토폴로지를 가로질러 가속기로 보냅니다. 프레임워크가 CPU 작업을 하는 동안 SSD는 쉬고, 커널이 예측하지 못한 데이터에 작업자가 도달하면 다시 I/O가 임계 경로가 됩니다. Huawei가 FAST 2026에서 발표한 연구는 이 불일치를 모델 형식이나 추론 런타임의 문제가 아니라 캐시 정책의 문제로 판단했습니다[1].
논문은 두 계층을 제안합니다. Programmable Page Cache(PPC)는 애플리케이션이 기존 POSIX 파일 접근을 유지한 상태에서 사용자 공간 정책이 미리 읽기와 페이지 회수를 결정하게 합니다. Model-Accelerated I/O(MAIO)는 동일한 추론 서비스 구성에서 반복되는 I/O 순서를 기록하는 PPC 정책입니다. 이후 시작부터는 현재 위치 뒤의 데이터를 미리 읽고, 해당 데이터를 사용할 가속기에 가까운 메모리에 페이지를 배치하고, 마지막 전송이 끝난 호스트 페이지를 회수합니다.
저자들이 다섯 모델로 수행한 평가에서 MAIO는 호스트 메모리가 충분할 때 모델 로딩 지연을 최대 79%, 페이지 캐시를 64 GB로 제한했을 때 최대 74% 줄였습니다. 별도의 고객 배포에서는 Ascend NPU 16개에 DeepSeek-R1-671B를 불러오는 시간이 649초에서 452초로 감소했습니다. 특정 조건에서 얻은 최댓값이므로 모든 프레임워크나 GPU에 적용되는 보장은 아닙니다. 더 중요한 결과는 애플리케이션별 지식을 교체 가능한 정책으로 표현하면 투명한 파일시스템 경로도 그 지식을 사용할 수 있다는 점입니다.
기본 미리 읽기는 파일을 보지만 추론 서비스는 보지 못합니다
Linux 페이지 캐시는 최근 파일 접근을 바탕으로 다음 읽기를 예측합니다. 일반적인 순차 읽기에는 적합하지만 모델 로딩은 메타데이터 해석, 텐서 생성, 여러 파일, 여러 가속기 작업자의 읽기가 섞입니다. Qwen2.5-72B와 Llama-70B를 측정한 결과, 모델 로딩 중 평균 SSD 대역폭은 관측한 최대 대역폭의 약 17%에 그쳤습니다. 드라이브 자체가 느린 것이 아니라, 프레임워크 초기화와 텐서 처리에 I/O를 겹칠 만큼 정확한 요청을 일찍 충분히 만들지 못한 결과입니다.
NUMA 배치도 비용을 만듭니다. 커널의 미리 읽기 작업자는 자신이 실행되는 CPU와 가까운 메모리에 페이지를 할당하지만, 실제 소비자는 다른 CPU 소켓에 연결된 가속기일 수 있습니다. 저자들은 각 가속기가 자신의 NUMA 노드에 연결된 tmpfs에서 모델을 읽도록 통제했을 때, 한 NUMA 노드에 모델을 둔 조건보다 로딩 지연이 약 20% 감소했다고 보고했습니다. 기본 미리 읽기에는 작업자와 가속기의 대응 관계가 없으므로 이 판단을 할 수 없습니다.
메모리 압력은 세 번째 불일치를 만듭니다. 가중치 페이지가 가속기 HBM에 도착하면 해당 서비스가 끝날 때까지 호스트 복사본을 다시 쓰지 않는 경우가 많습니다. 그러나 LRU 계열 정책은 일반적인 최근 접근 기록만 봅니다. Qwen2.5-72B 모델 크기의 약 45%만 페이지 캐시에 제공하면 메모리가 충분한 조건보다 기본 경로의 로딩 시간이 38% 늘었습니다. 곧 읽을 페이지가 전송을 끝내고 쓸모가 사라진 페이지와 공간을 두고 경쟁합니다.
세 문제에는 공통으로 빠진 정보가 있습니다. 커널은 어떤 바이트가 요청됐는지는 알지만, 서비스 전체의 읽기 순서, 목적지 가속기, 호스트 페이지가 더 이상 필요하지 않은 시점은 알지 못합니다.

PPC는 캐시 미스 지점에 정책 경로를 넣습니다
PPC는 EXT4나 XFS 같은 기존 파일시스템 위에 읽기 전용 라우팅 파일시스템(RFS)을 쌓습니다. 마운트한 이름 공간은 원래 파일을 그대로 비추므로 서빙 컨테이너는 PPC 경로에서 같은 모델을 읽습니다. RFS는 기존 페이지 캐시를 먼저 확인합니다. 캐시 히트면 하위 파일시스템 경로를 그대로 사용하고, 캐시 미스면 원래 읽기가 끝나기 전에 파일 핸들, 오프셋, 길이, 프로세스 식별자를 사용자 공간 호출 큐로 보냅니다.
이벤트 전달은 비차단 방식이고 코어별 큐를 사용합니다. 사용자 공간의 캐시 정책 런타임(CPRT)은 이벤트를 등록된 정책 호출로 바꿉니다. 정책은 커널 자료구조를 직접 수정하지 않고 미리 읽거나 회수할 파일 구간 목록을 반환합니다. PPC는 코어에 고정한 스레드 풀로 데이터를 읽고 표준 커널 인터페이스로 깨끗한 페이지의 선제 회수를 요청합니다. 정책에 문제가 생겨도 애플리케이션 호출 스택이나 하위 파일시스템 안에서 임의 코드가 실행되지 않습니다.
이 경계가 호환성 주장의 핵심입니다. PPC는 VFS 패치나 추론 프레임워크 포크가 아니라 독립 커널 모듈입니다. 디렉터리마다 정책을 다르게 연결할 수 있고 모델 코드를 바꾸지 않은 채 정책을 교체할 수 있습니다. 다만 현재 구현은 읽기 전용입니다. 가중치 로딩에는 맞지만 쓰기 경로까지 검증한 결과는 아닙니다. 더티 페이지 순서, 쓰기 실패, 내구성까지 포함하려면 별도의 설계와 평가가 필요합니다.
빈 PPC 정책은 정책 경로 자체의 비용을 보여 줍니다. 1 MB memcpy-after-mmap 시험에서 EXT4는 최대 3.7%, XFS는 최대 6.4%의 오버헤드를 보였습니다. 비교한 RFUSE 경로는 각각 최대 14%와 15%였습니다. PPC 프로세스 메모리는 약 30 MB이고, 이벤트 수신에 쓰는 CPU 오버헤드는 동시성에 따라 약 1%~11%였습니다. MAIO의 유용한 미리 읽기 효과를 계산하기 전에 제어 경로가 지불하는 비용입니다.
MAIO는 배포 명세를 I/O 템플릿으로 바꿉니다
서비스형 모델 플랫폼은 모델 이름, 텐서 병렬도, 프리필·디코드 분리 구성 등으로 배포 단위를 이미 구분합니다. MAIO는 이 명세를 해시해 서비스 식별자로 사용합니다. 첫 실행에서는 가속기 작업자별 캐시 미스를 관찰해 파일 경로, 오프셋, 길이의 순서를 기록합니다. 같은 식별자를 가진 이후 인스턴스는 시작 전에 이 템플릿을 불러옵니다.
통계 예측이나 모든 모델에 적용되는 공통 프로파일은 아닙니다. 같은 서비스 명세가 같은 가중치 읽기 순서를 만든다는 가정입니다. 모델 파일, 병렬 전략, 작업자 배치가 바뀌면 새 템플릿을 만들어야 합니다. I/O 증거의 수명은 물리 서버가 아니라 배포 명세와 함께 관리해야 합니다.
연속 읽기를 합치므로 메타데이터는 작습니다. 15 GB Qwen2.5-7B는 11 KB, 132 GB Llama-70B는 118 KB의 템플릿을 사용했습니다. 노드 두 개에서 662 GB DeepSeek-R1-671B를 실행한 경우도 545 KB였습니다. 저장 용량보다 정확한 무효화가 중요합니다. 오래된 템플릿은 틀린 구간을 먼저 읽어 대역폭을 쓰고, 정책이 만들려던 지역성을 오히려 해칠 수 있습니다.
세 메커니즘이 템플릿을 서로 다른 자원에 사용합니다
중단 가능한 미리 읽기는 현재 캐시 미스 지점부터 해당 작업자 템플릿의 남은 I/O를 요청할 수 있습니다. 공격적으로 보이지만 PPC 로더가 범위를 제한합니다. 새 전면 I/O가 템플릿의 더 뒤에서 미스를 내면 커서를 옮기고 이전 미리 읽기를 중단합니다. 메모리가 부족하거나 로더 스레드가 모두 사용 중일 때도 멈출 수 있습니다. 이전 요청을 끝까지 수행하는 것보다 SSD의 빈 시간을 우선 사용합니다.
XPU 친화적 배치는 템플릿의 논리 작업자를 실제 인스턴스에 할당된 가속기에 대응시키고, 그 가속기와 가까운 NUMA 노드에 미리 읽은 페이지를 놓습니다. PCIe 전송이 사라지는 것은 아닙니다. 불필요한 소켓 간 이동을 없애고, 모델 프레임워크가 정한 작업자와 장치의 관계를 POSIX 인터페이스 아래까지 전달합니다.
읽은 뒤 회수하는 BAR(Burn-after-Reading) 정책은 반대 방향의 커서를 사용합니다. 현재 읽기 위치보다 앞선 가중치는 이미 HBM에 도착했을 가능성이 높으므로 호스트 캐시에서 제거할 수 있습니다. MAIO는 전면 위치 뒤에 기본 1 GB 간격을 남겨 호스트에서 읽었지만 장치 전송이 끝나지 않은 페이지를 회수하지 않도록 합니다. 경험적으로 정한 값이므로 비동기 단계가 더 깊거나 호스트 재접근이 있는 프레임워크는 다른 안전 거리를 써야 합니다.
요소별 평가는 각 기능이 언제 필요한지 보여 줍니다. 메모리가 충분하면 중단 가능한 미리 읽기가 Qwen2.5-72B와 Llama-70B의 로딩 지연을 65% 넘게 줄였고, XPU 친화성이 그 결과에서 8.5% 넘게 추가로 줄였습니다. BAR은 거의 영향을 주지 않았습니다. 64 GB 조건에서는 Qwen2.5-72B에서 세 기능이 차례로 47%, 6%, 19% 넘는 개선을 더했고, Llama-70B에서는 44%, 4%, 23% 넘게 더했습니다. 잘못 남긴 페이지가 미래 데이터를 밀어내는 조건에서만 회수가 핵심 성능 기능이 됩니다.
평가는 SSD 속도뿐 아니라 작업 중첩의 가치를 측정합니다
주 시험 노드는 48코어 Kunpeng 920 프로세서 네 개, Ascend 910B2 NPU 여덟 개, DRAM 1 TB, SSD 3.75 TB로 구성했습니다. Linux 5.10, PyTorch 2.5.1, vLLM-Ascend 0.9.2를 사용했습니다. 대부분의 시험은 NPU 네 개와 7B~72B 범위의 Qwen2.5·Llama 모델 다섯 개를 사용했고, 메모리 제약 조건에서는 cgroup으로 로딩에 쓸 수 있는 용량을 64 GB로 제한했습니다.
기본 페이지 캐시, 모델 전체를 한 번에 읽는 정책, DRAM 전체 캐시, NPU용으로 옮긴 ServerlessLLM과 비교했습니다. 마지막 비교는 범위가 좁습니다. 해당 포팅은 vLLM이 아니라 Transformers에서 동작하며 모델 크기 이상의 빈 고정 호스트 메모리가 필요합니다. 대형 모델에서 MAIO가 최대 17% 짧았다는 결과는 모든 GPU 구현보다 우수하다는 뜻이 아닙니다. 프레임워크의 명시적 모델 로딩 단계보다 일찍 I/O를 시작하면 초기화 작업과 더 많이 겹칠 수 있음을 보여 줍니다.
전체 서비스 시작 지연은 기본 경로보다 메모리가 충분할 때 최대 38%, 제약 조건에서 최대 51% 줄었습니다. 모델 로딩만 본 수치보다 작은 이유는 컨테이너 초기화와 서비스 준비 시간이 남기 때문입니다. 짧게 실행하고 교체하는 탄력 서비스 순서에서는 기본 경로보다 토큰 처리량이 충분한 메모리에서 최대 13%, 제한된 메모리에서 최대 28% 늘었습니다. 서비스 실행 시간이 길어질수록 전체 시간에서 시작 비용의 비중이 줄어 차이도 작아졌습니다.
고객 시스템 평가는 별도의 운영 근거입니다. Ascend 910B3 NPU 여덟 개씩을 가진 노드 두 대가 로컬 SSD에서 DeepSeek-R1-671B를 읽습니다. MAIO는 로딩 시간을 649초에서 452초로 줄였고, 논문이 보고한 DRAM 전체 캐시 경로의 561초보다도 짧았습니다. 저자들은 더 이른 I/O 중첩과 NUMA 친화적 전송을 원인으로 설명합니다. SSD 자체가 DRAM보다 빠르다는 뜻이 아니라, 비교한 시작 파이프라인이 CPU 해석, 파일 접근, 장치 복사를 서로 다른 순서로 배치한 결과입니다.
반복 가능성은 성능의 원천이면서 적용 범위입니다
MAIO는 모델 가중치가 바뀌지 않고 서비스 명세가 버전으로 관리되며, 같은 구성을 반복 실행해 첫 프로파일 비용을 나눌 수 있을 때 가장 적합합니다. 텐서 배치가 동적으로 바뀌거나, 조건에 따라 다른 가중치를 읽거나, 요청마다 어댑터를 조합하거나, 여러 서비스가 한 SSD를 다투면 효과를 별도로 확인해야 합니다. 논문은 플랫폼의 cgroup으로 경합을 관리하는 방안을 제시하지만 다중 테넌트 QoS 평가는 향후 과제로 남겼습니다.
운영자는 템플릿 정확도를 인프라 지표로 관리해야 합니다. 회수 전에 실제 사용한 미리 읽기 바이트, 중단한 I/O, NUMA 간 트래픽, 회수 뒤 다시 읽은 페이지, 동시 시작 조건의 꼬리 지연을 함께 측정할 수 있습니다. 캐시 히트율이 높아도 너무 일찍 메모리를 채워 다른 서비스의 필수 읽기를 막으면 효율적인 정책이 아닙니다.
실패 동작도 확인해야 합니다. CPRT가 멈추면 PPC는 커널 정책으로 돌아갈 수 있지만 서빙 플랫폼은 이 전환을 관찰해야 합니다. 잘못된 템플릿은 정합성을 깨뜨리기보다 성능을 떨어뜨려야 합니다. 실제 읽기의 정답은 기존 파일시스템이 계속 책임지기 때문입니다. 투명한 폴백과 최적화 성공을 모니터링에서 구분한다는 조건에서 유용한 분리입니다.
이 구조의 교훈은 LLM 가중치에만 국한되지 않습니다. 애플리케이션 계약과 기존 파일시스템 사이에서 페이지 캐시 정책을 교체하면 양쪽을 수정하지 않고 작업별 최적화를 적용할 수 있습니다. 정책은 미리 읽기와 깨끗한 페이지 회수를 제안하고 커널은 올바른 읽기를 계속 보장하기 때문에 경계가 유지됩니다. PPC와 MAIO는 이 위치에서 얻을 수 있는 성능을 보여 줍니다. 실제 운영 가치는 템플릿 수명 관리, 경합 제어, 과거 I/O 순서가 현재 서비스를 더 이상 설명하지 못하는 시점을 얼마나 정확히 찾는지에 따라 결정됩니다.
출처와 저작권 안내
이 글은 Huawei Technologies의 Yubo Liu, Hongbo Li, Xiaojia Huang, Yongfeng Wang, Hanjun Guo, Hui Chen, Yuxin Ren, Ning Jia가 FAST 2026에 발표한 논문을 Silicon & Systems가 독립적으로 분석한 편집 글입니다. 원문은 USENIX 발표 페이지에서 공개되어 있습니다. 메커니즘과 측정 결과는 우리 표현으로 다시 썼고 도판은 이 글을 위해 새로 만들었습니다. 원문의 문장, 표, 도판을 복제하지 않았습니다. Copyright (c) 2026 the paper authors.