cudagraph_trees_generation_cloning을 user_visible로 켜면 세대 넘김에도 사용자 출력이 살아 있습니다 | DAKER 커뮤니티
한 줄 요약
Inductor CUDA Graph Trees에서 세대가 바뀌면, 이전 세대에 살아 있던 사용자 출력 텐서가 끊길 수 있습니다. PyTorch 2.14의 선택 설정 torch._inductor.config.triton.cudagraph_trees_generation_cloning = "user_visible"을 켜면 사용자에게 보이는 출력을 세대 넘김에도 복제·유지합니다. 긴 디코드·스트리밍처럼 그래프 트리를 여러 세대에 걸쳐 쓰는 경로에서 오늘 확인할 수 있습니다.
짧은 컴파일 모델을 reduce-overhead 또는 CUDA Graph Trees가 켜지는 모드로 올린 뒤, 세대를 넘기는 입력을 연속 실행하십시오. 기본값과 user_visible을 같은 시퀀스로 비교해, 이전 출력 참조가 유효한지·스텝 시간이 얼마나 바뀌는지 봅니다.
재현해 볼 실험 조건
- CUDA Graph Trees가 동작하는 설정으로 작은 모델을 컴파일하고, 세대를 넘기는 입력 시퀀스를 준비합니다.
- 기본 설정으로 N스텝을 돌리며, 이전 스텝 출력 텐서를 다음 스텝 입력·로깅에 다시 참조합니다.
- 같은 시퀀스에
cudagraph_trees_generation_cloning="user_visible"을 켠 뒤, 출력 유효성·복사 비용·스텝 시간을 비교합니다.
이전에 다룬 CUDA 그래프 while_loop 캡처·지역성 재배치와는 다른 축입니다. 오늘은 그래프 트리 세대와 사용자 출력 수명만 봅니다.
실무에서 바로 볼 포인트
- 스트리밍 추론에서 과거 출력 버퍼를 붙잡아 두는 코드가 있다면, 세대 전환 직후 참조가 깨지는지 먼저 확인합니다.
- 복제는 안전 비용을 치르므로, 출력을 바로 소비하고 버리는 경로에는 기본값이 더 맞을 수 있습니다.
- 재현 노트에 Inductor 설정 키와 CUDA 드라이버·빌드 번호를 함께 적습니다.
관련 DAKER 학습
설명용 생성 이미지입니다. 동작은 로컬에서 세대 넘김 시퀀스를 기본값과 user_visible로 비교해 확인하십시오.