torchserve 개요 - HephaestusProject/template GitHub Wiki

TorchServe


  1. Pre-Requistites

    1.1. Torch Model Archiver(mar)

    Discussion.

    • torch.jit.trace 사용할 경우 TorchServe에 어떠한 장점이 있는가?

      (Models could be a script_module (JIT saved models) or eager_mode_models)

    • onnx나 TensorRT와 달리 Network compression, Network optimization, computation을 최적화해주는 기능은 없다

  2. Config (https://github.com/pytorch/serve)

예)

    #Saving snapshot
    #Tue Jul 28 05:55:26 GMT 2020
    python=/home/venv/bin/python3
    model_snapshot={\n  "name"\: "bert.cfg",\n  "modelCount"\: 1,\n  "created"\: 1595915726520,\n  "models"\: {\n    "bert"\: {\n      "1.0"\: {\n        "defaultVersion"\: true,\n        "marName"\: "bert.mar",\n        "minWorkers"\: 8,\n        "maxWorkers"\: 8,\n        "batchSize"\: 1,\n        "maxBatchDelay"\: 100,\n        "responseTimeout"\: 120\n      }\n    }\n  }\n}
    version=0.1.1
    load_models=bert\=bert.mar
    snapshot_store=FS
    NUM_WORKERS=8
    model_store=model_store
    number_of_gpu=0

Discussion.

  • NUM_WORKERS, minWorkers, maxWorkers의 관계는?
  • snapshot_store?
  • model_store는 local 폴더외에 지원가능한가?

https://user-images.githubusercontent.com/880376/83180095-c44cc600-a0d7-11ea-97c1-23abb4cdbe4d.jpg

  1. Serving with Docker
  • container 제공 해서 config만 잘 설정하면 serving 자체는 쉬움
    • But. MAR 파일 변경 전에 handler 동작하는 지 반드시 테스트 해야함

    • 서빙 이후 디버깅 로그가 나오지만 변경이 쉽지 않음?

      Discussion. 서빙 이후 코드 변경하여 MAR 다시 만들어야하는지? 핸들러만 찾아서 python script 고치면 되는지?

    • 다중 서빙을 위해 static resources 위치를 고려하여 코딩해야함 (즉, 경로가 꼬일 수 있음)

      • 예) config 파일로 resources 위치 관리 등
      • 아니면 handler에 각종 utils.py를 다 넣어야할듯?
  1. Server ↔ Client
  • Health Check 가능
  • HTTP (REST) 가능
  • gRPC 제공여부 모름
  • streaming을 효율적으로 처리할 방법에 대한 논의 필요
  1. 테스트
  • GPU 다중 접속 테스트 필요
  • 다중 접속 시 tps 등 측정 필요
  1. 총평
  • 사용하기 쉽다
  • gunicorn + flask 조합 등 보다 신경써야할 부분이 적은 것으로 보이나 (아직 경험이 필요하다)
  • tf-server, onnx server, TensorRT 보다 모형 최적화는 잘 되어 있지 않지만 벡엔드는 잘 되어있을 것으로 기대됨

How to Use)

  1. https://github.com/soeque1/bert_torchserve
  2. https://github.com/pytorch/serve/tree/master/examples/Huggingface_Transformers

문제사항: toerchserve의 dockerfile을 그대로사용하면 transformer 등 별도 패키지를 재설치해야할 수 있음 (https://github.com/pytorch/serve/blob/master/docker/Dockerfile)