NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty() instead of torch.nn.Module.to() when moving module from meta to a different device.
·
Error Note
[문제 상황] python 멀티 스레드 실행시, model을 .to('cpu') 또는 .to('cuda')등 모델을 cpu나 gpu에 올릴때 발생하는 에러입니다. (멀티스레드로 실행하지 않으면 에러 발생하지 않음) [문제 원인] 메타로 만들어진 모듈을 아직 실제 텐서로 채우기 전에 .to()를 호출하는 코드 경로가 스레드에서만 발생하기 때문이에요. 보통 아래 패턴들 때문에 스레드 경로에서만 메타가 남습니다. - 왜 스레드에서만 메타 텐서가 남을까? 모델 생성/로드 순서가 스레드와 메인에서 다름메인 스레드: from_pretrained(..., low_cpu_mem_usage=False) 처럼 바로 실제 텐서로 초기화 → .to() 가능워커 스레드: from_pretrained(..., low_cpu_m..