MPS 캐싱 할당자가 큰 할당을 버킷으로 묶어 긴 디코드에서 예약 메모리를 잡고 복사 경로를 줄입니다 | DAKER 커뮤니티
한 줄 요약
PyTorch 2.14에서 MPS 캐싱 할당자가 큰 할당을 버킷으로 묶어 예약 메모리 증가를 막고, 배치 힙으로 단편화를 줄입니다. 긴 디코드처럼 할당·해제가 반복되는 워크로드에서 예약 풋프린트가 필요 이상으로 커지던 경로를 다듬었고, CPU↔MPS 복사도 핀드 버퍼 블릿·연속 동일 dtype 커널 경로로 짧아졌습니다.
Apple Silicon에서 긴 생성·디코드를 돌릴 때 예약 메모리가 한쪽 mid로만 커졌다면, 오늘은 같은 프롬프트 길이·배치로 2.14 전후(또는 할당자 관련 변경 전후)를 비교해 보십시오. “얼마나 줄었는지”보다 “긴 디코드 구간에서 예약 메모리가 안정적인지”를 한 줄로 남기면 다음 참가자가 따라오기 쉽습니다.
재현해 볼 실험 조건
- MPS에서 짧은 디코드와 긴 디코드를 같은 모델로 각각 돌리고, 예약 메모리·할당 추이를 기록합니다.
- 가능하면 연속 동일 dtype 복사·핀드 호스트 버퍼 경로가 쓰이는지 프로파일 한 줄로 확인합니다.
- 같은 입력을 반복해 예약 메모리가 한없이 커지지 않는지 보고, 커지면 shape·버전·재현 스텝을 남깁니다.
MPS 선형 디코드 커널이나 CTC 손실 지원과는 다른 축입니다. 이번 글은 할당자·복사 경로입니다. 실험이 끝나면 기기·버전·시퀀스 길이·예약 메모리 관찰을 고정해 두십시오.
실무에서 바로 볼 포인트
- 긴 MPS 디코드에서는 피크뿐 아니라 예약 메모리 추이도 함께 봅니다.
- 학습 노트에 시퀀스 길이와 예약 메모리 안정 여부를 남깁니다.
- 선형 디코드 커널 실험과 한 번에 섞지 말고, 이번엔 할당·복사만 확인하십시오.
관련 DAKER 학습
설명용 생성 이미지입니다. 동작은 로컬 MPS에서 긴 디코드 예약 메모리 추이로 확인하십시오.