728x90
    반응형

    아래 부분에서 에러 발생

     

     

    아래는 pytorch 모델 훈련 결과물이다.

    dummy_cls_heatmap.pth 로드할 때 문제가 생기는데

    dummy_cls_heatmap_jit.pth 파일을 로드해야 하나?

     

    dummy_cls_heatmap_jit.pth 이름을 dummy_cls_heatmap.pth 로 변경 후 정상 동작함.

    heatmap model 말고 일반 모델같은 경우에는 jit.pth 파일 아닌 원래 pth 파일 로드해도 정상 동작한다.

     

    torch::jit

    torch::jit::load는 PyTorch에서 JIT (Just-In-Time) 컴파일된 TorchScript 모델을 로드하는 함수입니다. PyTorch의 모델은 일반적으로 Python에서 작성되지만, C++에서도 PyTorch 모델을 사용할 수 있게 하기 위해 TorchScript로 변환하는 방법이 있습니다. torch::jit::load는 이 TorchScript로 변환된 모델을 C++에서 불러오기 위해 사용됩니다.

    주요 이유는 다음과 같습니다:

    1. C++로의 모델 배포: Python으로 개발한 모델을 C++로 배포할 때 TorchScript로 변환하여 torch::jit::load로 로드함으로써 Python에 의존하지 않고도 C++에서 모델을 실행할 수 있습니다.
    2. 성능 향상: TorchScript 모델은 JIT 컴파일을 통해 최적화될 수 있으며, 이는 특히 성능이 중요한 상황에서 유리합니다. C++로 모델을 실행할 때 JIT 컴파일을 이용하면 속도와 메모리 측면에서 이점이 있습니다.
    3. 멀티 플랫폼 사용: C++에서는 GPU(CUDA) 또는 CPU를 선택적으로 사용할 수 있으며, torch::jit::load를 통해 동일한 모델을 다양한 하드웨어에서 실행할 수 있습니다. 코드에서도 torch::cuda::is_available()로 GPU의 사용 여부를 확인하고, 이에 따라 GPU 또는 CPU에서 모델을 실행하도록 하고 있습니다.

    따라서 torch::jit::load는 PyTorch 모델을 Python 환경 외에서, 특히 성능과 배포를 고려한 C++ 애플리케이션에서 사용할 수 있게 해주는 중요한 함수입니다.

     

     

    결론

    jit 변환된 파일로 기존 pytorch 모델 transfer learning 되는지 확인해보자.

     

    * transfer learning 이

       -. 된다면

          -> jit 변환된 파일을 다른 이름으로 저장하지 말고, 그냥 원래 이름으로 덮어쓰기 해버리자. 해당 파일만 사용해도 무리 없기 때문

       -. 안된다면

          -> Inference Library 단에서 heatmap.pth 로드 대신 heatmap_jit.pth 파일을 로드하도록 변경할 필요가 있음.

     

    728x90
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기