×

Cara Menyimpan Model Machine Learning ke File dengan joblib

Laptop menampilkan kode Python untuk menyimpan model machine learning dengan joblib

Cara Menyimpan Model Machine Learning ke File dengan joblib

Setiap kali menjalankan skrip pelatihan, kamu menunggu beberapa menit hingga model selesai dilatih. Padahal model yang sama bisa dipakai berulang kali untuk prediksi tanpa perlu dilatih ulang. Menyimpan model ke file adalah solusinya, dan joblib adalah pilihan yang sering dipakai di ekosistem Python.

Joblib bekerja cepat untuk objek NumPy yang banyak dipakai di machine learning. Ukuran file hasilnya juga lebih kecil dibanding pickle biasa untuk array besar. Berikut langkah menyimpan dan memuat kembali model dengan joblib.

Mengapa menyimpan model itu penting

Setelah model selesai dilatih dan dievaluasi, kamu tidak perlu mengulang proses pelatihan setiap kali ingin memakainya. Simpan model ke disk, lalu muat kembali saat dibutuhkan. Cara ini menghemat waktu, terutama jika data latih besar atau algoritma yang dipakai lambat.

Menyimpan model juga memudahkan deployment. Kamu bisa melatih model di laptop, menyimpannya, lalu memuatnya di server tanpa membawa seluruh data latih. Proses ini menjaga konsistensi prediksi karena model yang dipakai persis sama dengan yang sudah dievaluasi.

Instalasi joblib dan persiapan model

Joblib biasanya sudah terpasang jika kamu memakai scikit-learn. Jika belum, pasang lewat pip:

pip install joblib

Buat model sederhana untuk latihan. Di contoh ini kita pakai dataset iris yang sudah tersedia di scikit-learn.

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

iris = load_iris()
X, y = iris.data, iris.target

model = RandomForestClassifier(random_state=42)
model.fit(X, y)

Model sudah terlatih. Langkah berikutnya adalah menyimpannya ke file.

Langkah 1: Simpan model dengan joblib.dump

Fungsi joblib.dump menulis objek Python ke file. Cukup berikan model dan nama file tujuan.

import joblib

joblib.dump(model, 'model_iris.joblib')

File model_iris.joblib akan muncul di direktori kerja. Ekstensi .joblib tidak wajib, tapi membantu menandai jenis file. Kamu juga bisa memakai .pkl jika ingin konsisten dengan pickle.

Joblib mendukung kompresi untuk menghemat ruang. Tambahkan parameter compress:

joblib.dump(model, 'model_iris_compressed.joblib', compress=3)

Nilai kompresi berkisar 0 sampai 9. Semakin tinggi, file semakin kecil tetapi proses simpan dan muat sedikit lebih lambat. Untuk model berukuran sedang, kompresi level 3 sudah cukup.

Langkah 2: Muat kembali model dengan joblib.load

Untuk memakai model yang sudah disimpan, muat dengan joblib.load.

model_baru = joblib.load('model_iris.joblib')

prediksi = model_baru.predict([[5.1, 3.5, 1.4, 0.2]])
print(prediksi)

Model yang dimuat kembali siap dipakai untuk prediksi. Kamu tidak perlu melatih ulang. Pastikan bentuk data input sama dengan saat pelatihan, termasuk jumlah fitur dan urutan kolom.

Langkah 3: Simpan pipeline lengkap

Model jarang berdiri sendiri. Biasanya ada tahap praproses seperti scaling atau encoding. Simpan seluruh pipeline agar transformasi yang sama diterapkan saat prediksi.

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('model', RandomForestClassifier(random_state=42))
])
pipeline.fit(X, y)

joblib.dump(pipeline, 'pipeline_iris.joblib')

Saat memuat kembali, pipeline akan menjalankan scaler dan model secara berurutan. Ini mengurangi risiko lupa menerapkan praproses yang sama.

Jika ingin mempelajari cara membangun pipeline dari data mentah, baca 7 Langkah Membangun Pipeline Machine Learning dari Data Mentah.

Kesalahan umum dan cara menghindarinya

Beberapa masalah sering muncul saat menyimpan model dengan joblib. Berikut daftar yang perlu diperhatikan:

  • Versi library berbeda: Model yang disimpan dengan scikit-learn versi lama mungkin tidak bisa dimuat di versi baru. Catat versi library di lingkungan tempat model dilatih.
  • Path file salah: Pastikan direktori tujuan ada. Joblib tidak membuat folder otomatis.
  • Objek tidak picklable: Beberapa objek seperti koneksi database atau lambda tidak bisa disimpan. Simpan hanya model dan transformer.
  • Lupa menyimpan preprocessing: Jika hanya menyimpan model tanpa scaler, prediksi bisa meleset. Simpan pipeline lengkap.

Menjaga konsistensi versi library penting untuk deployment. Cara termudah adalah mencatat dependensi di file requirements.txt dan memakai lingkungan virtual.

Kapan memakai joblib dan kapan tidak

Joblib cocok untuk model scikit-learn dan objek NumPy berukuran besar. Untuk model deep learning, format khusus seperti SavedModel atau ONNX lebih disarankan karena menyimpan arsitektur dan bobot secara terpisah.

Joblib juga kurang ideal untuk bertukar model antar bahasa pemrograman. Jika model perlu dipakai di Java atau JavaScript, pertimbangkan format portabel seperti ONNX. Untuk kebutuhan sehari-hari di Python, joblib sudah memadai.

Jika kamu baru mulai belajar machine learning, mulailah dari menyimpan model sederhana seperti contoh di atas. Setelah terbiasa, lanjutkan dengan menyimpan pipeline dan metadata lain. Untuk tips menyiapkan proyek pertama, lihat Tips Praktis Menyiapkan Dataset untuk Proyek Machine Learning Pertama.

Menyimpan model dengan joblib hanya satu bagian dari alur kerja yang lebih besar. Jika ingin memahami evaluasi model yang lebih stabil, baca Panduan Lengkap Cross-Validation untuk Model Machine Learning. Untuk pengembangan web, kamu mungkin juga perlu menyegarkan keterampilan JavaScript; lihat Tips jQuery untuk Pemula: Mulai dari Selector Hingga Event.

Ringkasan

Menyimpan model dengan joblib terdiri dari tiga langkah: latih model, simpan dengan joblib.dump, lalu muat dengan joblib.load. Sertakan pipeline agar praproses tetap konsisten. Perhatikan versi library dan path file untuk menghindari error saat memuat kembali.

Pertanyaan yang Sering Diajukan

Apakah joblib bisa menyimpan model TensorFlow atau PyTorch?

Joblib dirancang untuk objek Python yang picklable. Model TensorFlow dan PyTorch memiliki format penyimpanan khusus yang lebih disarankan, seperti SavedModel atau torch.save. Menggunakan joblib untuk model deep learning bisa berisiko karena arsitektur dan bobot mungkin tidak tersimpan dengan benar.

Berapa ukuran file model yang disimpan dengan joblib?

Ukuran tergantung kompleksitas model dan jumlah parameter. Model pohon keputusan biasanya lebih kecil daripada model ensemble besar. Kompresi dapat memperkecil ukuran, tetapi menambah waktu muat. Untuk model yang sangat besar, pertimbangkan menyimpan parameter secara terpisah.

Apakah model yang disimpan di laptop bisa dipakai di server?

Bisa, selama versi library dan dependensi di server sama atau kompatibel. Perbedaan versi scikit-learn atau NumPy dapat menyebabkan error saat memuat. Selalu catat versi library di lingkungan pengembangan dan terapkan versi yang sama di server.

You May Have Missed