Dokumen ini berisi panduan cara menyimpan (export) dan memuat kembali (load) model Machine Learning dan Deep Learning menggunakan berbagai framework populer.
Untuk model tradisional seperti Linear Regression, Random Forest, SVM, dll.
joblib lebih efisien untuk objek yang membawa array numpy besar.
Install:
pip install joblibSave:
import joblib
# Anggap 'model' adalah model sklearn yang sudah dilatih
joblib.dump(model, 'model_filename.pkl')Load:
import joblib
model = joblib.load('model_filename.pkl')
result = model.predict(X_test)Save:
import pickle
with open('model.pkl', 'wb') as f:
pickle.dump(model, f)Load:
import pickle
with open('model.pkl', 'rb') as f:
model = pickle.load(f)Untuk model Deep Learning berbasis TensorFlow.
Ini adalah format modern yang direkomendasikan.
Save:
model.save('my_model.keras')Load:
from tensorflow.keras.models import load_model
model = load_model('my_model.keras')Format HDF5 yang lama.
Save:
model.save('my_model.h5')Menyimpan model sebagai direktori berisi protobuf dan variabel. Cocok untuk deployment production.
Save:
model.export('path/to/saved_model')
# Atau
tf.saved_model.save(model, 'path/to/saved_model')Untuk model Deep Learning berbasis PyTorch.
Hanya menyimpan parameter (bobot) model. Lebih fleksibel dan aman.
Save:
import torch
torch.save(model.state_dict(), 'model_weights.pth')Load: Anda harus mendefinisikan arsitektur model terlebih dahulu.
model = MyModelClass(*args, **kwargs)
model.load_state_dict(torch.load('model_weights.pth'))
model.eval() # Jangan lupa set ke mode evaluasi untuk inferensiMenyimpan struktur kelas dan bobot. Bisa bermasalah jika struktur direktori kode berubah.
Save:
torch.save(model, 'entire_model.pth')Load:
model = torch.load('entire_model.pth')
model.eval()Open Neural Network Exchange (ONNX) memungkinkan model dijalankan di berbagai framework dan hardware (misal: convert PyTorch ke ONNX untuk dijalankan di C++ atau Web).
Butuh library skl2onnx.
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType
initial_type = [('float_input', FloatTensorType([None, 4]))]
onx = convert_sklearn(model, initial_types=initial_type)
with open("model.onnx", "wb") as f:
f.write(onx.SerializeToString())dummy_input = torch.randn(1, 3, 224, 224) # Sesuaikan dengan input shape
torch.onnx.export(model, dummy_input, "model.onnx")- Versioning: Selalu beri versi pada nama file model atau folder (contoh:
model_v1.0.pklataumodels/2023-10-27/). - Metadata: Simpan metadata pelatihan (akurasi, parameter, tanggal training) dalam file JSON terpisah atau dictionary bersama model (jika menggunakan pickle/joblib).
- Environment: Catat versi library (
requirements.txt) saat training. Model yang dilatih di scikit-learn versi lama mungkin error jika di-load di versi baru.