AOTInductorSetUsePinnedAsyncConstantsCopy로 핀드 비동기 상수 복사를 켜면 로드 중 H2D가 다른 스트림과 겹칩니다 | DAKER 커뮤니티

한 줄 요약
PyTorch 2.14의 AOTInductorSetUsePinnedAsyncConstantsCopy(환경 변수 AOTI_COPY_USE_PINNED_ASYNC)는 AOTInductor 공유 객체 가중치를 페이지 가능 동기 호스트→디바이스 복사로 올릴 때 생기던 전역 동기화를, 핀드 스테이징 비동기 경로로 바꿉니다. 라이브 멀티 스트림 추론 중에 호스트 복사와 디바이스 전송을 겹칠 수 있습니다.
이미 올려 둔 “외부 상수로 가중치 공유” 글과는 별개입니다. 오늘은 컨테이너가 이미 떠 있는 상태에서 .so 가중치를 다시 올릴 때, 동기 복사가 다른 스트림을 멈추는지부터 보십시오. 참가자 노트에는 API 호출 시점(생성 전), 환경 변수, AOTI_LOG_LOADING 마커 유무를 남깁니다. “로드가 빨라졌다”보다 “생성 전에 켰는지·로그 마커가 남았는지”가 재현에 도움이 됩니다.
재현해 볼 실험 조건
- 라이브 멀티 스트림 추론이 돌아가는 환경에서 AOTInductor 공유 객체 가중치를 기본(페이지 가능 동기 H2D) 경로로 로드해, 다른 스트림이 기다리는지 관찰합니다.
- 모델·컨테이너 생성 전에
AOTInductorSetUsePinnedAsyncConstantsCopy또는AOTI_COPY_USE_PINNED_ASYNC로 핀드 비동기 경로를 켠 뒤, 같은 로드를 반복합니다. 호스트 복사와 디바이스 전송이 겹치는지 로그·프로파일로 비교합니다. - 선택적으로
AOTI_LOG_LOADING을 켜[AOTI_LOAD]마커와 복사 타이밍·핀드 풀 진단을 남깁니다. 버퍼 크기 설정용 동반 API가 있으면 스테이징 크기도 기록합니다.
기본값은 꺼져 있습니다. 생성 이후에 켜면 기대와 다르게 동작할 수 있으니, “생성 전 enable”을 체크리스트 첫 줄에 두십시오. 실험이 끝나면 사용한 PyTorch 버전·환경 변수·생성 전/후 여부를 한 줄로 고정해 두면, 다음 참가자가 같은 조건을 바로 따라올 수 있습니다.
실무에서 바로 볼 포인트
- 외부 상수(가중치 공유)와 핀드 비동기 복사(로드 경로)는 다른 문제입니다. 둘 다 AOTInductor 계열이어도 실험 조건을 섞지 마십시오.
- 학습 노트에 enable 시점, 환경 변수, 로그 마커 유무를 남깁니다.
- DAKER 학습 보드에서는 “생성 전에 켰다”는 사실과 “로드 중 다른 스트림이 멈췄는지”를 한 줄로 적어두면 재현이 쉽습니다.
관련 DAKER 학습
설명용 생성 이미지입니다. 복사 경로 동작은 로컬 AOTInductor 로드·로그 마커로 확인하십시오.