Save Machine Learning Model into Redis
Machine learning tools yang kami gunakan adalah scikit-learn, scikit-learn ini memiliki satu fitur untuk menyimpan model yang kita buat untuk ditaruh di persistence menggunakan joblib basically fungsi dari joblib ini sama dengan fungsi pickle untuk melakukan serialisasi object dan bisa kita simpan ke dalam file. Akan tetapi keterbatasan dari joblib adalah sewaktu kita mendump model, output yang dituju hanyal sebuah file. Dan kita akan ada problem, jika kita menggunakan version control dan ketika model yang dibuat akan automatic learn, maka akan ditimpa dengan yang baru. Kita dapat melakukan beberapa teknik untuk mengakalinya seperti mempush hasil model dari automatic learn ke version control server kita. Atau dengan menaruh file pkl di system kita, untuk solusi ini kita akan bermasalah karena di AWS (kita menggunakan aws) dan kita menyalakan auto scalling. Solusi lain adalah dengan menggunakan S3. Solusi ini cukup baik, akan tetapi ada kelemahan dari solusi ini yaitu kita harus mendownload hasil dump binary ke instance baru kita load ke memory. Setelah berdiskusi, kami menemukan satu cara yaitu menggunakan redis, jadi byte hasil dump model kami akan dimasukkan ke redis dengan menggunakan key tertentu.
Cara nya tidak terlalu susah, yang penting redis telah diinstall di server atau komputer anda. Untuk panduan menginstall redis bisa membaca halaman tutorial install redis.
Untuk performance, tidak berbeda jauh dengan pickle dan menurut dokumentasi dari joblib, joblib akan lebih perform jika kita memiliki numpy arrays yang banyak dikarenakan joblib. Jika kami menggunakan joblib dan file lokal menghabiskan waktu rata2 0.12s untuk prediksi sedangkan menggunakan redis menghabiskan waktu rata2 0.15s.
Maybe in the future, I hope they can put joblib into bytes object although numpy arrays can’t put the string. Not that hard right.