MPS index_add·conv3d가 MPSGraph 대신 네이티브 Metal로 가 커널 기동 지연을 줄입니다 | DAKER 커뮤니티
한 줄 요약
PyTorch 2.14에서 MPS의 index_add, index_select, conv3d, argmin/argmax 등이 Apple MPSGraph 경로를 떠나 손으로 짠 Metal 커널로 옮겨갑니다. MPSGraph의 연산마다 붙던 컴파일 비용을 빼고, 스레드·메모리 접근을 직접 조율해 커널 기동 지연을 줄이는 것이 목표입니다.
Mac에서 학습·추론을 돌릴 때 같은 배치를 2.13과 2.14로 나눠 돌려 보십시오. 특히 인덱싱·3D 합성곱·축소가 많은 스텝에서 스텝 시간과 GPU 점유만 비교하면 오늘 확인할 수 있습니다. 참가자 노트에는 PyTorch 버전, 연산 목록, 스텝 시간 한 줄을 남깁니다.
재현해 볼 실험 조건
- 작은 텐서로
index_add/index_select/conv3d루프를 만들어 MPS에서 워밍업 후 기준 시간을 적습니다. - 같은 스크립트를 PyTorch 2.14(또는 동일 패치가 포함된 빌드)로 다시 돌립니다.
- 스텝 시간·예약 메모리를 비교하고, 변화가 없으면 연산 혼합 비율만 바꿔 한 번 더 측정합니다. 할당자 버킷 실험과 한 번에 섞지 마십시오.
이전에 다룬 MPS 할당 버킷·시퀀스 길이 1 디코드와는 다른 축입니다. 오늘은 Graph→Metal 이전으로 커널 기동이 얼마나 가벼워졌는지만 봅니다.
실무에서 바로 볼 포인트
- 인덱싱·축소·3D 합성이 많은 Apple Silicon 워크로드에서 버전만 올려 비교하십시오.
- 할당자·디코드 경로 실험과 변수를 섞지 말고, Metal 이전 효과만 분리합니다.
- API가 아직 불안정할 수 있으니, 재현 노트에 정확한 빌드 번호를 고정합니다.
관련 DAKER 학습
설명용 생성 이미지입니다. 동작은 로컬 MPS에서 버전 전후 스텝 시간 비교로 확인하십시오.