TensorFlow 서비스 - AWS Deep Learning AMIs

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

TensorFlow 서비스

TensorFlow Serving은 기계 학습 모델을 위한 유연한 고성능 서비스 시스템입니다.

tensorflow-serving-api 는 Conda를 사용한 딥 러닝AMI에 사전 설치되어 있습니다! 에서 MNIST 모델을 훈련, 내보내기 및 서비스할 예제 스크립트를 찾을 수 있습니다~/examples/tensorflow-serving/.

이러한 예제를 실행하려면 먼저 CondaAMI를 사용하여 딥 러닝에 연결하고 TensorFlow 환경을 활성화합니다.

$ source activate tensorflow2_p310

이제 서비스할 예제 스크립트가 있는 폴더로 이동합니다.

$ cd ~/examples/tensorflow-serving/

Pretrained Inception Model 제공

다음은 Inception과 같은 다른 모델을 제공하기 위해 시도할 수 있는 예제입니다. 일반적으로 에 이미 다운로드하려면 사용 가능한 모델과 클라이언트 스크립트가 필요합니다DLAMI.

Inception 모델을 사용하여 추론 제공 및 테스트
  1. 이 모델을 다운로드합니다.

    $ curl -O https://s3-us-west-2.amazonaws.com/tf-test-models/INCEPTION.zip
  2. 이 모델의 압축을 해제합니다.

    $ unzip INCEPTION.zip
  3. 허스키 그림을 다운로드합니다.

    $ curl -O https://upload.wikimedia.org/wikipedia/commons/b/b5/Siberian_Husky_bi-eyed_Flickr.jpg
  4. 서버를 시작합니다. Amazon Linux의 경우 model_base_path에 사용되는 디렉터리를 /home/ubuntu에서 /home/ec2-user로 변경해야 합니다.

    $ tensorflow_model_server --model_name=INCEPTION --model_base_path=/home/ubuntu/examples/tensorflow-serving/INCEPTION/INCEPTION --port=9000
  5. 서버가 포그라운드에서 실행 중일 때 계속하려면 다른 터미널 세션을 시작해야 합니다. 새 터미널을 열고 TensorFlow 로 활성화합니다source activate tensorflow2_p310. 그런 다음 원하는 텍스트 편집기를 사용하여 다음 내용이 들어 있는 스크립트를 생성합니다. 이름을 inception_client.py로 지정합니다. 이 스크립트는 이미지 파일 이름을 파라미터로 받아서 사전 교육 모델에서 예측 결과를 가져옵니다.

    from __future__ import print_function import grpc import tensorflow as tf import argparse from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_service_pb2_grpc parser = argparse.ArgumentParser( description='TF Serving Test', formatter_class=argparse.ArgumentDefaultsHelpFormatter ) parser.add_argument('--server_address', default='localhost:9000', help='Tenforflow Model Server Address') parser.add_argument('--image', default='Siberian_Husky_bi-eyed_Flickr.jpg', help='Path to the image') args = parser.parse_args() def main(): channel = grpc.insecure_channel(args.server_address) stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) # Send request with open(args.image, 'rb') as f: # See prediction_service.proto for gRPC request/response details. request = predict_pb2.PredictRequest() request.model_spec.name = 'INCEPTION' request.model_spec.signature_name = 'predict_images' input_name = 'images' input_shape = [1] input_data = f.read() request.inputs[input_name].CopyFrom( tf.make_tensor_proto(input_data, shape=input_shape)) result = stub.Predict(request, 10.0) # 10 secs timeout print(result) print("Inception Client Passed") if __name__ == '__main__': main()
  6. 이제 서버 위치, 포트 및 허스키 사진의 파일 이름을 파라미터로 전달하는 스크립트를 실행합니다.

    $ python3 inception_client.py --server=localhost:9000 --image Siberian_Husky_bi-eyed_Flickr.jpg

MNIST 모델 훈련 및 서비스 제공

이 자습서에서는 모델을 하나 내보낸 다음 tensorflow_model_server 애플리케이션으로 서비스해 보겠습니다. 마지막으로, 예제 클라이언트 스크립트로 모델 서버를 테스트할 수 있습니다.

MNIST 모델을 훈련하고 내보낼 스크립트를 실행합니다. 이 스크립트의 유일한 인수인 폴더 위치를 입력해야 모델이 저장됩니다. 여기서는 그냥 mnist_model이라고 입력하겠습니다. 그러면 스크립트가 폴더를 만들어 줍니다.

$ python mnist_saved_model.py /tmp/mnist_model

이 스크립트에서 결과가 출력되려면 시간이 걸리므로 인내심을 가지고 기다리십시오. 학습이 완료되어 모델을 최종적으로 내보내면 다음과 같은 결과를 보게 됩니다.

Done training! Exporting trained model to mnist_model/1 Done exporting!

다음 단계는 tensorflow_model_server를 실행하여 내보낸 모델에 서비스를 제공하는 것입니다.

$ tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/tmp/mnist_model

서버를 테스트하기 위한 클라이언트 스크립트가 준비되어 있습니다.

테스트해 보려면 새 터미널 창을 열어야 합니다.

$ python mnist_client.py --num_tests=1000 --server=localhost:9000

더 많은 기능과 예제

TensorFlow Serving에 대해 자세히 알아보려면 TensorFlow 웹 사이트를 참조하세요.

Amazon Elastic Inference 에서 TensorFlow 서비스를 사용할 수도 있습니다. 자세한 내용은 Elastic Inference with TensorFlow Serving을 사용하는 방법에 대한 가이드를 참조하세요.