• 카테고리

    질문 & 답변
  • 세부 분야

    컴퓨터 비전

  • 해결 여부

    미해결

MMDectectio으로 학습된 pth 모델을 상시 띄울 수 있는 방법문의

22.12.23 11:09 작성 22.12.23 11:18 수정 조회수 189

0

안녕하세요 선생님,

 

MMdetection으로 24회 수행후 epoch_24.pth을 만들었습니다.

이 epoch_24.pth를 저장하였고,

새로운 .py에서 epoch_24.pth를 최초 로딩하는데 시간이 약 8초 정도 소요됩니다.

checkpoint_file = 'user/exps/epoch_24.pth'

model_ckpt = init_detector(cfg, checkpoint_file, device='cpu')

 

epoch_24.pth을 상시 띄울수 있는 방법이 혹시 있는지요?

(표현이 맞는지 모르겟습니다만, 데몬처럼요)

 

항상 감사드립니다.

답변 1

답변을 작성해보세요.

0

안녕하십니까,

최초 로딩에 8초면 적절한 것으로 보입니다만,

상시 띄운다는 의미를 제가 잘 이해하지 못했습니다.

한번 띄우고, 죽이지 않고 해당 모델을 이행해서 inference 서비스를 이용한다는 의미이면, 그대로 계속 메모리에 유지하면 되는데, 말씀하신 의미가 이와는 다른 건지요?

원하시는 답변이 아니시면 다시 글 부탁드립니다.

감사합니다.

아 네네.

제가 하고 싶은것은,

앱 --> 웹 (여기서 예측API 호출) --> 학습모듈로딩해서 예측후 결과 리턴

입니다.

웹은 아직 안 만들었습니다만,

테스트 삼아, 웹대신 파이선1을 만들고,

파이선1에서 파이선2(학습모듈 로딩 & 예측)를 호출하는데요,

파이선1에서 파이선2를 호출때 마다 pth가 로딩(8초)이 되는데, 이 시간을 줄이려고 합니다.

pth가 메모리든 어딘가에 이미 로딩되어 있다면, 파이선2에는 이미 로딩된 모델을 사용하면 되므로 매번 로딩하애 하는 시간을 줄일 수 있을 거라 생각해서 입니다.

shapred memory도 해 보긴 했는데, 제가 잘 모르기도 하고, 잘못해서 그런지 안되더라구요.

감사합니다^^

웹 서비스로 구현하시려면 호출시마다 학습 모델 로딩을 하시면 안되고, 이미 로딩이 되어 있는 학습 모델을 호출하셔야 합니다.

예를 들어 Python FastAPI에서 모델을 inference한다고 하면 FastAPI가 기동 될 때 같이 학습 모델도 로딩이 되어서 메모리로 올라가야 합니다.

만약 파이썬 1에서 파이썬 2를 호출한다고 하면

파이썬 1과 파이썬 2는 서로 다른 python 파일로 만들어서 파이썬 2가 생성될 때, 예를 들어 파이썬 2의 생성자에서 학습 모델을 로딩한 뒤 파이썬 1이 파이썬 2의 다른 함수에서 해당 학습 모델의 inference 를 수행하도록 해야 합니다.

 

답변 감사합니다.

 

하나만 더 문의드립니다.

"웹 서비스로 구현하시려면 호출시마다 학습 모델 로딩을 하시면 안되고, 이미 로딩이 되어 있는 학습 모델을 호출하셔야 합니다." 여기서

"이미 로딩이 되어 있는 학습 모델"을 어떻게 호출하는지 말씀해 주실 수 있는지요?

파이썬1,파이썬2를 예시로 말씀 주신 것과 비슷한 방식인지요?

 

감사합니다.

네 맞습니다