로컬 AI 런타임은 요청이 끝난 후 메모리를 예약해 두므로, 이후 텐서가 장치 블록을 재사용하고 반복적인 할당 및 동기화 비용을 줄일 수 있습니다.
겉으로는 메모리 누수처럼 보일 수 있습니다. GPU 연산은 0으로 떨어지고 응답도 완료되었지만, 프로세스는 여전히 가속기 메모리 대부분을 점유합니다. 이 메모리 중 일부는 현재 사용 중인 모델 가중치나 KV 상태일 수 있으며, 나머지는 캐싱 할당자, 실행 컨텍스트, 그래프 캡처, 라이브러리 작업 공간 또는 모델 상시 유지 정책에 속할 수 있습니다. 아래 섹션에서는 활성 할당과 재사용 가능한 예약 메모리를 구분하고, 메모리 유지가 정상인지, 비효율적인지, 실제 누수의 증거인지 확인하는 방법을 설명합니다.
장치 메모리 할당은 캐시할 만큼 비용이 큽니다
요청 시 생성되는 텐서는 반복해서 생성되고 해제됩니다. 모든 블록을 드라이버에 반환하면 동기화가 발생하고, 다음 요청에서 동일한 메모리 레이아웃을 다시 구성해야 할 수 있습니다.
PyTorch의 CUDA 할당자는 캐시된 할당자 블록과 현재 활성 상태로 할당된 텐서를 구분합니다.
프로세스 내부에 여유 블록을 유지하면 반복 요청의 지연 시간이 줄어들지만, 할당자가 해당 블록을 드라이버에 반환하기 전까지는 다른 AI 서비스가 그 메모리를 사용할 수 없습니다.
할당 메모리, 예약 메모리, 장치 여유 메모리는 서로 다른 지표입니다
할당 메모리는 현재 존재하는 텐서가 사용하는 메모리입니다. 예약 메모리는 런타임 할당자가 관리하며, 활성 할당과 현재 사용되지 않는 재사용 가능 블록을 모두 포함할 수 있습니다.
따라서 임시 텐서를 삭제한 후에도 런타임에 예약 메모리 차이가 표시될 수 있습니다.
nvidia-smi 같은 장치 도구는 프레임워크 내부에서 논리적으로 비어 있는 블록이 무엇인지가 아니라, 프로세스가 드라이버에 표시하는 메모리 점유량을 보고합니다.
모델과 런타임 상태는 의도적으로 준비된 상태로 유지될 수 있습니다
프로세스는 모델 가중치, 토크나이저 상태, 커널, 실행 그래프 및 가속기 컨텍스트를 준비된 상태로 유지할 수 있습니다. 이를 해제하면 다음 요청이 콜드 스타트로 처리되기 때문입니다.
ZimaSpace의 모델 상주 설명은 현재 사용자가 토큰을 생성하고 있지 않을 때에도 준비된 서비스가 메모리를 사용하는 이유를 보여줍니다.
이는 용량과 지연 시간 사이의 의도적인 절충입니다. 연산 관점에서는 유휴 상태인 메모리지만, 즉시 사용할 수 있는 상태라는 점에서 여전히 가치가 있습니다.
단편화로 인해 예약 블록의 재사용성이 떨어질 수 있습니다
메모리 풀 전체에는 사용되지 않는 바이트가 충분하더라도, 블록 크기가 다음 요청과 맞지 않을 수 있습니다. 프롬프트 길이, 이미지 크기, 배치 및 모델 전환이 다양하면 예약 메모리가 단편화될 수 있습니다.
GMLake는 불규칙한 할당 크기로 인해 발생하는 할당자 단편화를 연구합니다.
이 경우 유지된 메모리는 현재 적극적으로 사용되지도 않고 다른 프로세스가 사용할 수도 없습니다. 프로세스를 재시작하면 일시적으로 더 정리된 메모리 레이아웃을 복원할 수 있습니다.
메모리 점유량이 안정화되는지 증가하는지 측정하세요
동일한 고정 요청을 반복해서 실행하고, 각 요청이 완료된 후 할당 메모리, 예약 메모리, KV 캐시, 모델 가중치 및 장치 여유 메모리를 기록하세요.
높은 수치에서 안정적인 최고점에 도달한다면 정상적인 캐싱 또는 상시 유지 동작일 가능성이 높습니다. 반대로 동일한 요청을 실행할 때마다 점유량이 증가하고 이전 블록이 재사용되지 않는다면 누수, 무제한 캐시, 유지된 세션 또는 작업 부하의 변동을 의심할 수 있습니다.
어떤 상태가 제거되는지 확인한 후에만 캐시 해제 기능을 사용하세요. 사용하지 않는 할당자 블록을 비워도 현재 사용 중인 모델 가중치가 해제되는 것은 아니며, 모델을 언로드하면 응답 시간이 악화될 수 있습니다.
여러 서비스를 운영하는 홈 서버에서는 런타임별로 메모리 예산과 유휴 정책을 정하세요. 그래야 한 서비스의 예약 메모리가 다른 서비스의 시작을 조용히 막는 일을 방지할 수 있습니다.
기술 및 AI 허브
더 읽어보기

계절에 따른 생활 패턴 변화 후 스마트 홈 예측이 부정확해지는 이유는 무엇인가요?
계절에 따른 생활 패턴의 변화는 시간, 센서, 재실 여부, 원하는 동작 간의 관계를 바꾸어, 과거 습관을 기반으로 학습한 모델을 낡게 만듭니다.

객체 추적을 활성화하면 가정용 NVR이 짧은 이벤트를 놓치는 이유는 무엇인가요?
추적을 시작하고 궤적을 확인하려면 충분한 감지가 필요하므로, 짧게 나타난 객체는 NVR이 유효한 이벤트를 생성하기 전에 사라질 수 있습니다.

모델 업그레이드 후 AI 사진 라벨이 바뀌는 이유는 무엇인가요?
모델 업그레이드는 레이블을 할당하는 데 사용되는 표현과 순위를 변경하므로, 동일한 사진도 서로 다른 의미적 또는 신뢰도 경계를 넘을 수 있습니다.

