피드로 돌아가기
Hugging Face BlogAI/ML
원문 읽기
Hugging Face가 TensorFlow Vision 모델을 TF Serving으로 배포할 때 전처리/후처리를 SavedModel에 내장하여 개발자의 인지 부하와 학습-서빙 스큐 감소
Deploying TensorFlow Vision Models in Hugging Face with TF Serving
AI 요약
Context
TensorFlow Vision 모델을 프로덕션에 배포할 때 REST 또는 gRPC 엔드포인트로 노출해야 하며, 이미지 전처리(정규화, 리사이징), 후처리(ImageNet-1k 클래스 매핑) 등 여러 단계를 관리해야 한다. 개발 환경과 서빙 환경 간의 전처리 로직 불일치로 인한 스큐가 발생할 수 있다.
Technical Solution
- Vision Transformer 모델을 SavedModel 형식으로 직렬화:
save_pretrained(saved_model=True)메서드를 사용해 모델 가중치와 계산 그래프를 저장 - Base64 인코딩된 이미지 문자열을 입력으로 받도록 전처리 함수 작성:
tf.io.decode_base64(),tf.io.decode_jpeg()활용해 JPEG 이미지 디코딩 - 이미지 정규화를 TensorFlow 연산으로 구현: 픽셀값을 [0, 1] 범위로 스케일링한 후 [-1, 1] 범위로 정규화하여 SavedModel에 임베드
- 이미지 리사이징과 채널 차원 전치를 그래프에 통합:
tf.image.resize()로 (224, 224) 해상도로 변경하고 (2, 0, 1) 축 순서로 전치 - 후처리 로직(로짓을 ImageNet-1k 클래스로 매핑)을 SavedModel 시그니처에 포함
- TF Serving에서 REST 엔드포인트 또는 gRPC 채널(localhost:8500)로 모델 제공
- gRPC 요청 시
predict_pb2.PredictRequest()객체 구성해 모델명, 시그니처명, Base64 인코딩된 이미지 전달
Key Takeaway
전처리와 후처리를 SavedModel 계산 그래프에 내장하면 개발자가 클라이언트에서 복잡한 전처리 로직을 직접 구현할 필요가 없으며, 학습-서빙 간 로직 불일치를 근본적으로 제거할 수 있다.
실천 포인트
TensorFlow 비전 모델을 프로덕션에 배포하는 팀에서 모든 전처리(정규화, 리사이징)와 후처리(클래스 매핑) 연산을 SavedModel에 포함시키면, 클라이언트 코드를 단순화하고 모델 업데이트 시에도 서빙 로직을 수정할 필요가 없어진다.