PyTorch 2.14 CUDA 텐서 사후 주석: _annotate_tensor가 메모리 히스토리에 남기는 것 | DAKER 커뮤니티

할당 후 주석

한 줄 답: PyTorch 2.14에서는 이미 만든 CUDA 텐서에도 torch.cuda.memory._annotate_tensor로 사후 주석을 남길 수 있습니다. _record_memory_history가 켜져 있으면 주석이 타임스탬프 이벤트로 누적되며, 할당 시점 메타데이터를 덮어쓰지 않습니다. 네이티브 CUDA 캐싱 allocator 경로에서 스냅샷과 함께 확인하세요.

DAKER PyTorch 학습 독자를 위한 점검 노트입니다. 구체 누수·피크 숫자는 워크로드마다 다르므로, 이 글은 재현 항목만 고정합니다.

무엇이 달라졌다고 보나

생성 직후에만 설명을 붙이는 것이 아니라, 재사용·리사이즈·그래프 고정 직전에도 레이블을 남길 수 있습니다. 메모리 히스토리를 켠 상태에서는 주석이 타임스탬프 이벤트로 쌓여 스냅샷에서 같은 할당 옆에 보입니다.

사후 주석은 교체가 아니라 누적입니다. 히스토리 off면 스냅샷에 안 보일 수 있습니다.

재현해 볼 실험 조건

  1. _record_memory_history를 켠 뒤 CUDA 텐서를 만듭니다.
  2. _annotate_tensor로 짧은 레이블을 붙입니다.
  3. 같은 텐서에 주석을 한 번 더 남기고 스냅샷을 저장합니다.
  4. 히스토리 off/on, 네이티브 캐싱 allocator 여부를 비교해 주석 가시성을 기록합니다.

실무에서 바로 볼 포인트

모든 텐서에 긴 설명을 붙이지 말고, 누수·피크 후보에만 짧은 레이블을 남깁니다. 생성·재사용·캡처 직전처럼 시점 단어를 통일하세요. 웹 UI에 필드가 없어도 raw 스냅샷 JSON 이벤트 목록부터 확인합니다.

측정표 템플릿

오늘 바로 할 측정

스테이징 버퍼 하나만 골라 주석 2회 → 스냅샷 1회를 남깁니다. “평균 이득” 숫자를 만들지 말고 가시성만 기록하세요.

마치며

_annotate_tensor는 할당을 더 빠르게 만드는 API가 아니라, 스냅샷 해석을 돕는 라벨 도구입니다. 공식 릴리스 노트·PR과 함께 환경을 고정해 재현하세요.

관련 DAKER 글과 주제를 나누는 법

핀드 호스트 메모리 스냅샷·컴파일 구간 use_mem_pool은 인접 주제지만 축이 다릅니다. annotate 노트에는 주석 문자열·히스토리 on/off·스냅샷 필드만 남깁니다.

실패를 문서로 남기는 이유

히스토리를 켰는데도 주석이 안 보이면 allocator·빌드·호출 순서를 한 줄로 남기세요. “안 됨”도 다음 사람의 실험 비용을 줄입니다.

히스토리 없이 호출하면

_annotate_tensor만 호출하고 _record_memory_history를 켜지 않으면, 스냅샷에 주석 이벤트가 비어 보일 수 있습니다. “API가 죽었다”로 단정하기 전에 히스토리 on/off를 한 쌍으로 남겨 두세요. 네이티브 CUDA 캐싱 allocator가 아닌 경로도 같은 표에 표시합니다.

할당 메타데이터와 섞지 않기

할당 시점 메타데이터는 덮어쓰지 않고 사후 주석이 누적됩니다. 노트에는 “alloc meta”와 “post annotate”를 다른 열로 적습니다. 같은 문자열을 두 번 남긴 경우에도 타임스탬프가 둘인지 확인합니다.

출처