프로젝트는 예측을 위해 생산 환경에 훈련된 모델을 배포하고 관련 정보를 확인하여 전체 건설 프로세스 및 응용 프로그램을 정렬해야 합니다.
먼저 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])
- 프로그램을 실행