Apa praktik terbaik untuk menyimpan, menyimpan, dan berbagi model pembelajaran mesin?
Dalam Python, kita biasanya menyimpan representasi biner dari model, menggunakan acar atau joblib. Model, dalam kasus saya, bisa ~ 100Mo besar. Selain itu, joblib dapat menyimpan satu model ke banyak file kecuali Anda menyetel compress=1
( /programming/33497314/sklearn-dumping-model-using-joblib-dumps-multiple-files-which-one-is-the- corre ).
Tetapi kemudian, jika Anda ingin mengontrol hak akses ke model, dan dapat menggunakan model dari mesin yang berbeda, apa cara terbaik untuk menyimpannya?
Saya punya beberapa pilihan:
- Simpan sebagai file, lalu masukkan ke dalam repositori menggunakan Git LFS
- Simpan di database SQL sebagai file biner:
- Misalnya di Postgresql https://wiki.postgresql.org/wiki/BinaryFilesInDB
- Ini juga metode yang direkomendasikan oleh tim SQL Server:
- https://docs.microsoft.com/en-us/sql/advanced-analytics/tutorials/walkthrough-build-and-save-the-model
- https://microsoft.github.io/sql-ml-tutorials/python/rentalprediction/step/3.html
- https://blogs.technet.microsoft.com/dataplatforminsider/2016/10/17/sql-server-as-a-machine-learning-model-management-system
- HDFS
Jawaban:
Anda mungkin telah melihat perhubungan atau dvc atau datmo .
Baru-baru ini ada presentasi di pada pertemuan di berlin, pertemuan teknik data AI zalandos .
sumber
Saya menghadapi masalah ini (dan masih menghadapinya hari ini) selama bertahun-tahun. Saya sungguh yakin bahwa, jika Anda tidak memberikan persyaratan terperinci, Anda tidak dapat mengharapkan jawaban yang serius. Saya menjelaskan diri saya dengan contoh-contoh pekerjaan saya:
Saya secara teratur mencoba beberapa variasi dari model yang sama untuk menemukan parameter apa yang paling berhasil. Diperlukan beberapa hari untuk melatih satu model tunggal yang menghasilkan beberapa keluaran yang kemudian digunakan untuk evaluasi. Untuk melakukannya, saya membuat dump NumPy sederhana dari model karena mudah untuk membaginya antar server, atau kolega. Anda harus menghindari acar karena menyimpan lebih banyak (contoh kelas, perpustakaan ...) daripada hanya parameter yang dipelajari oleh model Anda. Mengimpor model di komputer lain mungkin tidak berfungsi jika lingkungan python sedikit berbeda.
Saat mendorong model dalam produksi, saya perlu 1) versi model yang dapat saya muat dengan cepat jika server rusak (biasanya format biner, hanya menyimpan apa yang diperlukan seperti bobot jaringan saraf) dan 2) a cara untuk menjaga model di-RAM untuk dengan cepat menangani permintaan API.
Untuk dua tujuan berbeda, saya perlu tiga format berbeda. Kemudian, secara umum, pilihan format tergantung pada alat yang Anda gunakan. Misalnya, jika Anda bekerja dengan TensorFlow, Anda mungkin tertarik dengan sistem Melayani TensorFlow mereka
sumber
Saya ingin menyarankan 2 pendekatan lagi.
Simpan di penyimpanan dokumen (mis. MongoDB) - metode ini direkomendasikan ketika file model Anda kurang dari 16MB (atau pecahan joblib), maka Anda dapat menyimpan model sebagai data biner. selain itu, beberapa perpustakaan ML mendukung model ekspor dan impor di json (mis. LightGBM), yang menjadikannya kandidat yang sempurna untuk penyimpanan dalam penyimpanan dokumen. Keuntungan : pelacakan mudah pembuatan model dan akses mudah, Kerugian : hal-hal akan menjadi berantakan jika objek model terlalu besar.
Simpan model Anda di penyimpanan objek (mis. Amazon S3) - metode ini bagus jika model Anda sangat besar, dalam hal ini Anda mendapatkan penyimpanan tanpa batas dan API yang cukup mudah, Anda membayar lebih, itu pasti. Keuntungan : Ruang tanpa batas dan kemampuan untuk menyimpan format file yang sewenang-wenang. Kekurangan : biaya, dan fakta bahwa untuk melakukannya dengan benar, Anda perlu mengembangkan sistem pelacakan Anda sendiri.
semoga berhasil!
sumber