pickle λͺ¨λμ νμ΄μ¬ κ°μ²΄ ꡬ쑰μ μ§λ ¬νμ μ μ§λ ¬νλ₯Ό μν λ°μ΄λ리 νλ‘ν μ½μ ꡬνν©λλ€. βνΌν΄λ§(pickling)βμ νμ΄μ¬ κ°μ²΄ κ³μΈ΅ κ΅¬μ‘°κ° λ°μ΄νΈ μ€νΈλ¦ΌμΌλ‘ λ³νλλ μ μ°¨μ΄λ©°, βμ νΌν΄λ§(unpickling)βμ λ°λ μ°μ°μΌλ‘, (λ°μ΄λ리 νμΌ μ΄λ λ°μ΄νΈμ΄λ₯ κ°μ²΄λ‘ λΆν°μ) λ°μ΄νΈ μ€νΈλ¦Όμ κ°μ²΄ κ³μΈ΅ κ΅¬μ‘°λ‘ λ³΅μν©λλ€.
import pickle
: νΌν΄ λͺ¨λλ‘ μ μ₯νκΈ° β κ°μ²΄ objλ₯Ό μ§λ ¬ννμ¬ νμΌ fileμ μ μ₯ν©λλ€.
β
νμΌ μ€νν λ with ν¨μλ₯Ό μ¬μ©νλ©΄ λͺ
μμ μΌλ‘ νμΌμ λ«μ§ μμλ λ©λλ€. with λΈλ‘μ λ λλ μμ μ λ«λ λμμ΄ μνλκΈ° λλ¬Έμ μμΈ λλ μ€λ¨μμλ νμΌμ΄ λ«νκ² λ©λλ€.
β
wb λ write binaryλ₯Ό μλ―Έν©λλ€. μ μ₯ν λ°μ΄ν°λ₯Ό μμ±ν νμΌμ μ λ κ²μ μλ―Έν©λλ€.
μ λ saved_model.pkl μ΄λΌλ νμΌ μ΄λ¦μΌλ‘ μ μ₯νμμ΅λλ€.
def save():
# νμΌλ‘ μ μ₯
with open('saved_model.pkl', 'wb') as f:
pickle.dump(model, f)
return {"Saved": "OK"}
: νΌν΄ λͺ¨λλ‘ λΆλ¬μ€κΈ° β νμΌμμ μ§λ ¬νλ κ°μ²΄λ₯Ό μ½μ΄ μμ§λ ¬ν(볡μ)ν©λλ€.
β
wb λ read binaryλ₯Ό μλ―Έν©λλ€.
β
νμΌμμ μ§λ ¬νλ νμ΄μ¬ κ°μ²΄λ₯Ό μ½μ΄μ΅λλ€.
def load():
global model # β
FastAPI μ±μ κΈλ‘λ² model λ³μ μ¬μ©
with open('saved_model.pkl', 'rb') as f:
model = pickle.load(f)
return {"Loaded": "OK"}
: κ°μ²΄ objλ₯Ό μ§λ ¬ννμ¬ λ°μ΄λ리 λ¬Έμμ΄(bytes) λ‘ λ°νν©λλ€.λ©λͺ¨λ¦¬ λ΄ λ°μ΄ν°λ₯Ό λ³ννλ λ°©μ
νμΌμ μ μ₯νμ§ μκ³ λ©λͺ¨λ¦¬ μμμ μ§λ ¬νλ λ°μ΄ν°λ₯Ό λ€λ£° λ μ μ©ν©λλ€.
binary_data = pickle.dumps(data)
print(binary_data) # b'\x80\x04\x95...'
: pickle.dumps() λ‘ μ§λ ¬νλ λ°μ΄λ리 λ°μ΄ν°λ₯Ό 볡μν©λλ€.λ©λͺ¨λ¦¬ λ΄ λ°μ΄ν°λ₯Ό λ³ννλ λ°©μ
dumps() λ‘ λ³νλ λ°μ΄ν°λ₯Ό λ€μ μλμ κ°μ²΄λ‘ λ³νν©λλ€.
original_data = pickle.loads(binary_data)
print(original_data) # {'name': 'Alice', 'age': 25, 'city': 'Seoul'}
보μ μν
pickle.load()λ₯Ό μ¬μ©ν λ μ λ’°ν μ μλ μμ€μμ λ°μ νμΌμ λ‘λνλ©΄ μ
μμ μΈ μ½λκ° μ€νλ μνμ΄ μμ΅λλ€.
β λμ: μμ ν λ°μ΄ν° μ μ₯μ΄ νμν κ²½μ° JSON(json λͺ¨λ) μ¬μ© κ³ λ €
λ²μ λ¬Έμ
νμ΄μ¬ λ²μ μ΄ λ€λ₯΄λ©΄ pickle μ§λ ¬νλ λ°μ΄ν°λ₯Ό 볡μν λ λ¬Έμ κ° λ°μν μ μμ.
νΈνλμ§ μλ κ°μ²΄
λͺ¨λ κ°μ²΄κ° pickleλ‘ μ§λ ¬ν κ°λ₯ν κ²μ μλλλ€.
νμΌ νΈλ€, μμΌ, μ€λ λ, λλ€ ν¨μ λ±μ pickleλ‘ μ μ₯ν μ μμ΅λλ€.

보μμ΄ μ€μν κ²½μ°λ jsonμ μ¬μ©νλ κ²μ΄ λ μμ νλ€.
μ§λ ¬ν(serialization)λ ?
κ°μ²΄λ₯Ό μΌλ ¨μ λ°μ΄νΈ(byte)μ€νΈλ¦ΌμΌλ‘ λ³ννλ κ³Όμ μ μλ―Έν©λλ€. μ΄ κ³Όμ μ ν΅ν΄ κ°μ²΄λ₯Ό νμΌμ μ μ₯νκ±°λ λ€νΈμν¬λ₯Ό ν΅ν΄ μ μ‘ν μ μμ΅λλ€.μ§λ ¬νλΒ λ°μ΄νΈΒ μ€νΈλ¦ΌμΒ λ€μΒ κ°μ²΄λ‘Β λ³ννλΒ κ²μΒ μμ§λ ¬ν(deserialization)λΌκ³ Β ν©λλ€.
μ°Έκ³
Python pickle