GPU REST Engine 설정 및 동작 확인

12245 단어 NVIDIAGRECUDAAWSGPU
Chrome에서 보면 이미지의 색조가 이상하므로 Safari나 Firefox에서 보세요.

전체 흐름



  • GPU REST Engine 설치

  • GPU REST Engine 동작 확인

  • 0. 전제 조건


  • g2.2xlarge의 인스턴스에 로그인했습니다. 지역은 어디서나 OK
  • K520용 NVIDIA Driver 및 CUDA가 설치되어 있어야 합니다.
  • nvidia docker가 설치되어 있음

  • 1. Download GRE (GPU REST Engine)



    Download
    git clone https://github.com/NVIDIA/gpu-rest-engine ${HOME}
    

    2. 추론 서버 구축/시작



    2.1 추론 서버 구축



    build에 15분 정도 필요합니다.

    다운로드한 디렉토리로 이동
    cd ${HOME}/gpu-rest-engine
    

    추론 서버 구축
    sudo docker build -t inference_server -f Dockerfile.inference_server .
    

    2.2 추론 서버 시작



    추론 서버 시작
    sudo nvidia-docker run --name=server --net=host --rm inference_server
    

    result-example
    2016/05/06 04:30:51 Initializing Caffe classifiers
    2016/05/06 04:30:54 Adding REST endpoint /api/classify
    2016/05/06 04:30:54 Starting server listening on :8000
    

    3. 동작 확인



    여기서의 동작 확인은 추론 서버와 같은 머신으로부터, 이미지를 업로드해, 그 이미지에 찍혀 있다
    동물을 추측합니다.

    샘플 이미지 images/1.jpg의 동물 추론





    이미지 이미지의 PATH 결정
    IMAGE="${HOME}/gpu-rest-engine/images/1.jpg"
    

    endpoint 지정
    ENDPOINT="http://127.0.0.1:8000/api/classify"
    

    변수 확인
    cat << ETX
    
    IMAGE_NAME : ${IMAGE} 
    END_POINT : ${ENDPOINT}
    
    ETX
    

    추론 서버 API를 킥
    curl -XPOST --data-binary @${IMAGE} ${ENDPOINT} | jq .
    

    결과
    [
      {
        "label": "n02328150 Angora, Angora rabbit",
        "confidence": 0.9998
      },
      {
        "label": "n02325366 wood rabbit, cottontail, cottontail rabbit",
        "confidence": 0.0001
      },
      {
        "label": "n02326432 hare",
        "confidence": 0.0001
      },
      {
        "label": "n02085936 Maltese dog, Maltese terrier, Maltese",
        "confidence": 0
      },
      {
        "label": "n02342885 hamster",
        "confidence": 0
      }
    ]
    

    인터넷상의 이미지를 추론



    うさぎ

    이미지 다운로드
    wget http://sozaing.com/wp-content/uploads/IMG_29451-540x360.jpg -P ${HOME}/gpu-rest-engine/images
    

    이미지 이미지의 PATH 결정
    IMAGE="${HOME}/gpu-rest-engine/images/IMG_29451-540x360.jpg"
    

    변수 확인
    cat << ETX
    
    IMAGE_NAME : ${IMAGE} 
    END_POINT : ${ENDPOINT}
    
    ETX
    

    추론 서버 API를 킥
    curl -XPOST --data-binary @${IMAGE} ${ENDPOINT} | jq .
    

    결과
    [
      {
        "label": "n02325366 wood rabbit, cottontail, cottontail rabbit",
        "confidence": 0.6424
      },
      {
        "label": "n02326432 hare",
        "confidence": 0.1461
      },
      {
        "label": "n02095889 Sealyham terrier, Sealyham",
        "confidence": 0.0929
      },
      {
        "label": "n02437616 llama",
        "confidence": 0.0161
      },
      {
        "label": "n02328150 Angora, Angora rabbit",
        "confidence": 0.0149
      }
    ]
    

    4. Benchmarking



    4.1 테스트용 docker container 구축



    다운로드한 디렉토리로 이동
    cd ${HOME}/gpu-rest-engine
    

    command
    sudo docker build -t inference_client -f Dockerfile.inference_client .
    

    4.2 테스트 실행



    benchmark-test
    sudo docker run -e CONCURRENCY=8 -e REQUESTS=20000 --net=host inference_client
    

    result-example
    Summary:
      Total:    153.6530 secs
      Slowest:  0.0992 secs
      Fastest:  0.0198 secs
      Average:  0.0614 secs
      Requests/sec: 130.1634
      Total data:   6880000 bytes
      Size/request: 344 bytes
    
    Status code distribution:
      [200] 20000 responses
    
    Response time histogram:
      0.020 [1]     |
      0.028 [0]     |
      0.036 [2]     |
      0.044 [5]     |
      0.052 [2]     |
      0.060 [548]   |∎
      0.067 [19139] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
      0.075 [297]   |
      0.083 [3]     |
      0.091 [2]     |
      0.099 [1]     |
    
    Latency distribution:
      10% in 0.0610 secs
      25% in 0.0612 secs
      50% in 0.0614 secs
      75% in 0.0616 secs
      90% in 0.0619 secs
      95% in 0.0623 secs
      99% in 0.0691 secs
    


    이 Qiita의 정보는, 어이가 프라이빗으로 만들고 있는 것으로, NVIDIA와는 무관합니다. 개인 책임으로 시도하십시오. 인스턴스 등의 지우는 것을 잊는 등 주의해 주십시오.

    좋은 웹페이지 즐겨찾기