Tensorflow 모델 배포 서버 및 인터페이스 호출 사용

프로젝트는 예측을 위해 생산 환경에 훈련된 모델을 배포하고 관련 정보를 확인하여 전체 건설 프로세스 및 응용 프로그램을 정렬해야 합니다.

먼저 Tensorflow에서 공식적으로 제공하는 Tensorflow Serving을 배포함과 동시에 환경 설정 등의 번거로운 작업을 피하기 위해 docker 컨테이너를 사용할 수 있습니다.

1. 도커 설치

2. Docker를 통해 TensorFlow Serving 이미지 가져오기

  • 자신의 버전에 따라 수정하십시오(저는 2.2.0을 사용합니다).
docker pull tensorflow/serving:2.2.0
  • 풀이 성공했는지 확인
docker images

여기에 이미지 설명 삽입

3. TensorFlow 모델을 PD 형식 파일로 압축

  • 패키지 기능
tf.saved_model.save(model, './model/')
  • 결과를 패킹하고 그림과 같이 배치합니다. [1은 버전 번호]여기에 이미지 설명 삽입

4. 전체 모델 파일을 서버에 업로드하고 모델을 배포합니다.

  • 컨테이너 실행 [소스는 모델이 서버에 업로드 된 위치로 변경됨]
docker run -p 8501:8501 --mount type=bind,source=/home/hl/model,target=/models/hadoop -t tensorflow/serving:2.2.0 -e MODEL_NAME=hadoop --model_base_path=/models/hadoop
  • 성공적인 작업의 스크린샷
    여기에 이미지 설명 삽입
  • 테스트 포트

http://192.168.152.111:8501/v1/models/model
여기에 이미지 설명 삽입

지금까지 모델이 성공적으로 배포되었습니다!

5. HTTP를 통해 모델 서비스를 호출하는 간단한 프로그램 작성

  • 암호
import requests
import json
import numpy as np

# json序列化问题解决
class NpEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return super(NpEncoder, self).default(obj)


if __name__ == '__main__':
    list = [0.012133333333, 0.983450847726511, 0.738351259436398, 690, 59, 2.3292634]
    list = np.array(list).reshape(1,6)
    data = json.dumps({
    
    "instances":list},cls=NpEncoder)
    # headers = {"content-type":"applicaiton/json"}
    response = requests.post("http://192.168.152.111:8501/v1/models/model:predict",data=data)
    print(response.text)
    embeddings = json.loads(response.text)['predictions']
    print(embeddings[0][0])
  • 프로그램을 실행
    여기에 이미지 설명 삽입

모델의 예측 결과를 성공적으로 얻었습니다!

Supongo que te gusta

Origin blog.csdn.net/lafsca5/article/details/126596340
Recomendado
Clasificación