MPS index_add·conv3d가 MPSGraph 대신 네이티브 Metal로 가 커널 기동 지연을 줄입니다 | DAKER 커뮤니티

MPS 네이티브 Metal
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14에서 MPS의 index_add, index_select, conv3d, argmin/argmax 등이 Apple MPSGraph 경로를 떠나 손으로 짠 Metal 커널로 옮겨갑니다. MPSGraph의 연산마다 붙던 컴파일 비용을 빼고, 스레드·메모리 접근을 직접 조율해 커널 기동 지연을 줄이는 것이 목표입니다.

Mac에서 학습·추론을 돌릴 때 같은 배치를 2.13과 2.14로 나눠 돌려 보십시오. 특히 인덱싱·3D 합성곱·축소가 많은 스텝에서 스텝 시간과 GPU 점유만 비교하면 오늘 확인할 수 있습니다. 참가자 노트에는 PyTorch 버전, 연산 목록, 스텝 시간 한 줄을 남깁니다.

재현해 볼 실험 조건

  1. 작은 텐서로 index_add / index_select / conv3d 루프를 만들어 MPS에서 워밍업 후 기준 시간을 적습니다.
  2. 같은 스크립트를 PyTorch 2.14(또는 동일 패치가 포함된 빌드)로 다시 돌립니다.
  3. 스텝 시간·예약 메모리를 비교하고, 변화가 없으면 연산 혼합 비율만 바꿔 한 번 더 측정합니다. 할당자 버킷 실험과 한 번에 섞지 마십시오.

이전에 다룬 MPS 할당 버킷·시퀀스 길이 1 디코드와는 다른 축입니다. 오늘은 Graph→Metal 이전으로 커널 기동이 얼마나 가벼워졌는지만 봅니다.

실무에서 바로 볼 포인트

관련 DAKER 학습

설명용 생성 이미지입니다. 동작은 로컬 MPS에서 버전 전후 스텝 시간 비교로 확인하십시오.