TorchServe 배포 시 Java 및 CUDA 에러

김석·2022년 11월 9일
0

TorchServe

목록 보기
1/2

1. torchserve --start JAVA에러.

java.lang.NoSuchMethodError:
java.nio.file.Files.readString(Ljava/nio/file/Path;)Ljava/lang/String;
at org.pytorch.serve.util.ConfigManager.readFile(ConfigManager.java:235)
at org.pytorch.serve.util.ConfigManager.<init>(ConfigManager.java:139)
at org.pytorch.serve.util.ConfigManager.init(ConfigManager.java:285)
at org.pytorch.serve.ModelServer.main(ModelServer.java:83)

JAVA는 설치했지만 환경변수 설정이 문제로 TorchServe 입장에서 자바를 찾지 못 찾음. -> JAVA 환경변수문제를 해결하고 TorchServe를 실행.


2. 또 다른 별개의 문제 발생

  1. NVIDIA driver와 CUDA는 설치를 잘 했는데 torch.rand(10).to("cuda")가 실행되지 않는 문제 발생.
  2. conda 가상환경을 사용하고 있었는데, 해당 가상환경에서의 PyTorch 관련 dependency 문제로 판단함.
  3. 다시 제대로 된 걸 설치하려면 pip이 아니라 conda로 PyTorch를 설치해야 했다. pip으로 설치하면 dependency 관련 삽질할 가능성이 크다. conda로 설치하면 dependency 해결 가능함.

3. 해결 과정 삽질 + 결과를 이해할 수가 없음

  1. local python, conda 가상환경 python 두 환경에서 모두 torch.rand(10).to("cuda") 실행이 안 됨.
  2. conda 가상환경에 conda를 사용해서 알맞은 pytorch를 설치하니 해결.
  3. 그런데 local python에서도 문제가 해결됨. 두 python 환경은 독립적이여야 하는데 왜 local python에서도 문제가 해결되었는지 이해가 안 됨.

4. conda vs pip

pip으로 설치하기 어려운데 conda로 설치 되는 것들이 있어서 conda는 필요했다. pip은 local에도 존재하고 conda 가상환경 내부에도 존재함. 자동으로 가상환경 안에서의 pip은 가상환경 내부의 pip이 돌아가는 것 같은데, 확인이 필요하다.


5. TorchServe와 python 환경

conda 가상환경에서 TorchServe를 돌려도 python 경로와 패키지 설치 경로를 자기 맘대로 local python으로 넣는다. 처음엔 local python과 local 패키지 설치 경로로 하더니 이젠 conda 가상환경 python 경로와 local 패키지 경로를 읽어서 구동한다. 결과는 이해할 수 없었고 내 맘대로 되는게 없다.


6. 결론

파이썬 경로와 패키지는 어떻게 설치되는지 조금 더 정확하게 알아야 할 필요가 있다. 전역적으로 설치되는게 있을 수도 있나?

가장 이상적인 형태는 conda로 가상환경을 만들고, requirements를 설치하고, 그 가상환경 위에서 TorchServe를 구동하는 것. 어플리케이션 단계에서 의존성은 이렇게 해결하고, 해당 어플리케이션에서 지원하는 CUDA version에 맞게 NVIDIA device를 설정하기.

profile
handsome

0개의 댓글