C.W.K.
Stream
Lesson 02 of 05 · published

SavedModel 포맷 깊이 보기

~11 min · savedmodel, deployment, signatures

Level 0Level 0
0 XP0/78 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete

Production 서버가 사랑하는 포맷

SavedModel은 TensorFlow의 보편 배포 포맷. Export 시 TF가 @tf.function 데코된 코드를 trace해서 학습된 weight와 함께 구체적 TF graph 저장. 이게 inference에서 model을 language-agnostic하고 framework-독립적이게 만들어 — TF Serving, TFLite, TF.js, Vertex AI 다 SavedModel 소비.

디스크에서 SavedModel은 directory:

saved_model_dir/
├── saved_model.pb           # graph + signature def + metadata
├── fingerprint.pb           # 콘텐츠 fingerprint
├── variables/
│   ├── variables.index
│   └── variables.data-00000-of-00001  # 실제 weight
└── assets/                  # 외부 파일 (vocab 등)

TF Serving엔 directory 레이아웃에 버전 번호 필수: /models/my_classifier/1/saved_model.pb. 이렇게 해야 Serving이 새 버전 자동 감지하고 재시작 없이 hot-swap.

Code

Version-stamped SavedModel + signatures·python
import tensorflow as tf

# Save with version directory for TF Serving
tf.saved_model.save(model, '/models/my_classifier/1/')

# Inspect signatures (callable endpoints)
loaded = tf.saved_model.load('/models/my_classifier/1/')
print(list(loaded.signatures.keys()))    # ['serving_default']

# Run inference via signature
infer = loaded.signatures['serving_default']
result = infer(tf.constant(x_test[:5].astype('float32')))
print(result.keys())
CLI inspection — verify without writing code·bash
# Show all info about the SavedModel
saved_model_cli show --dir my_saved_model/ --all

# Show input/output specs for the serving signature
saved_model_cli show --dir my_saved_model/ \
    --tag_set serve --signature_def serving_default

# Run inference from the CLI
saved_model_cli run --dir my_saved_model/ \
    --tag_set serve --signature_def serving_default \
    --input_exprs 'keras_tensor=[[1.0, 2.0, 3.0]]' 

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.