Best practice per l'archiviazione di modelli di machine learning Python


24

Quali sono le migliori pratiche per salvare, archiviare e condividere modelli di apprendimento automatico?

In Python, generalmente archiviamo la rappresentazione binaria del modello, usando pickle o joblib. I modelli, nel mio caso, possono essere ~ 100Mo più grandi. Inoltre, joblib può salvare un modello su più file se non impostato compress=1( /programming/33497314/sklearn-dumping-model-using-joblib-dumps-multiple-files-which-one-is-the- corre ).

Ma poi, se vuoi controllare i diritti di accesso ai modelli ed essere in grado di utilizzare modelli di macchine diverse, qual è il modo migliore per archiviarli?

Ho alcune scelte:


Hai avuto un modo efficace per farlo?
iNet

Risposte:



2

Ho affrontato questo problema (e lo devo ancora affrontare oggi) per molti anni. Credo davvero che, se non fornisci requisiti dettagliati, non puoi aspettarti una risposta seria. Mi spiego con esempi del mio lavoro:

  • Provo regolarmente più varianti dello stesso modello per trovare quali parametri funzionano meglio. Occorrono diversi giorni per formare un singolo modello che produce un output che verrà successivamente utilizzato per la valutazione. Per fare ciò, realizzo un semplice dump NumPy del modello poiché è facile condividerlo tra server o colleghi. Dovresti evitare il pickle poiché memorizza molto di più (istanze di classe, librerie ...) rispetto ai soli parametri appresi dal tuo modello. L'importazione del modello su un altro computer potrebbe non funzionare se l'ambiente Python differisce leggermente.

  • Quando spingo un modello in produzione, ho bisogno di 1) una versione del modello che posso caricare velocemente in caso di guasto del server (in genere un formato binario, memorizzando solo ciò che è necessario come i pesi di una rete neurale) e 2) a modo per mantenere il modello in-RAM per gestire rapidamente le richieste API.

Per due scopi diversi, ho bisogno di tre diversi formati. Quindi, più in generale, la scelta del formato dipende dagli strumenti che usi. Ad esempio, se lavori con TensorFlow, potresti essere interessato al loro sistema di servizio TensorFlow


1

Vorrei suggerire altri 2 approcci.

  1. Memorizzali nella memoria dei documenti (ad es. MongoDB) : questo metodo è consigliato quando i file del modello sono inferiori a 16 Mb (o i frammenti di joblib), quindi è possibile memorizzare il modello come dati binari. inoltre, alcune librerie ML supportano l'esportazione e l'importazione dei modelli in json (ad es. LightGBM), che lo rende un candidato perfetto per l'archiviazione nell'archiviazione dei documenti. Vantaggi : facile monitoraggio della generazione del modello e facile accesso, Svantaggi : le cose diventeranno confuse se l'oggetto del modello è troppo grande.

  2. Archivia il tuo modello su un archivio oggetti (ad es. Amazon S3) : questo metodo è utile se i tuoi modelli sono molto grandi, in questo caso ottieni spazio illimitato e API abbastanza semplice, paghi di più, questo è certo. Vantaggi : spazio illimitato e possibilità di memorizzare formati di file arbitrari. Svantaggi : costo e il fatto che per farlo nel modo giusto dovrai sviluppare il tuo sistema di tracciamento.

in bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.