PyTorch 내부 구조 19 - Extension Packaging, Testing, ABI 안정성
custom op는 로컬 실험에서 끝나지 않고 배포와 테스트, 버전 호환성까지 고려해야 비로소 실전 코드가 된다
왜 packaging이 중요한가
custom extension은 로컬에서 한 번 돌아간다고 끝이 아니다.
- PyTorch 버전 차이
- CUDA toolkit 차이
- build 환경 차이
- CI와 wheel 배포 문제
이 문제를 관리하지 못하면 좋은 operator도 팀 코드베이스에 오래 남기 어렵다.
테스트 관점
- forward correctness
- backward correctness
- dtype / device 조합
- contiguous / non-contiguous 입력
- AMP 환경
이 정도는 기본으로 봐야 한다.
다음 글에서는 시리즈를 마무리하며, PyTorch internals를 공부한 뒤 실제로 어떤 순서로 custom operator와 runtime 최적화를 확장해 나가면 좋은지 정리한다.