ognibit-logo
Menu
  • Home
  • Chi Sono
  • Contatti
  • Servizi
  • Computer Science
  • Blog
  • Informativa sulla privacy
Menu

Tracciatura degli Esperimenti con Sumatra (run)

Posted on Marzo 18, 2019Agosto 4, 2022 by omar

L’introduzione di Sumatra nei nostri progetti di analisi ed elaborazione dati permette di tenere traccia degli esperimenti fatti e di standardizzare il processo. Nel primo articolo della serie abbiamo visto come inizializzare e configurare il progetto. Ora vedremo i comandi di tutti i giorni per eseguire e mantenere traccia degli esperimenti in modo ordinato

Esecuzione parametrizzata

In Sumatra tutte le esecuzioni sono parametrizzate e i parametri sono salvati su file (nel nostro caso in formato YAML). Nel mio template ho creato la classica directory conf nella quale inserire le macro configurazioni, che possono cambiare per ambiente di esecuzione, macchina, task, utente o casistiche particolari. Non serve modificare queste configurazioni di base ad ogni esecuzione perché con Sumatra i parametri possono essere modificati in fase di lancio.

smt run conf/default.yaml
Running training…
DONE
Record label for this run: '20190313-113826'
Data keys are [20190313-113826/config.yaml(60e0b21820a951c4fa9c5dcfff1c668fe6f97a16 [2019-03-13 11:38:28]), 20190313-113826/model.hdf5(83e68255317e116d82907e11311175c5b1c7e0aa [2019-03-13 11:38:28])]
smt run conf/default.yaml task=check
Running checks…
DONE
Record label for this run: '20190313-114127'
Data keys are [20190313-114127/config.yaml(8864bac675bf4a46fe44f408d0aa8d9e4a9a3e14 [2019-03-13 11:41:29]), 20190313-114127/check_report.txt(1a9080346b50c755af5483b4231cace425da1c90 [2019-03-13 11:41:29])]

Nell’esempio il valore del parametro task è stato sovrascritto e il software lo ha recepito. Al main viene infatti passato un nuovo file, creato direttamente da Sumatra, con la fusione del file in input e i parametri indicati. Per i file YAML, se si volessero sovrascrivere intere porzioni si può usare la seguente sintassi

smt run conf/default.yaml "training={model: ./Data/new_model.hdf5}"
Running training...
DONE
Record label for this run: '20190313-114839'
Data keys are
[20190313-114839/config.yaml(e4410200b5df05993efe1e4b043686fba06fb826
[2019-03-13 11:48:41]),
20190313-114839/new_model.hdf5(1c2bc0fd49480f2a5a4029af569b6127fc322f9a [2019-03-13 11:48:41])]

Tutte le prove vengono tracciate nel repository di Sumatra e sono consultabili in vario modo. In questo articolo vedremo la linea di comando e in particolare le basi del comando list.

smt list
20190313-114839
20190313-114809
20190313-114127
20190313-113826
20190311-115837

Senza parametri list ritorna le label degli esperimenti in ordine temporale crescente, mettendo i più recenti in alto. Per invertire l’ordine basta aggiungere l’opzione “-r” (reverse).

Si possono visualizzare i dettagli degli esperimenti usando l’opzione long, che formatta a video un report completo per ogni elemento della lista.

smt list -l
--------------------------------------------------------------------------------
Label            : 20190313-114839
Timestamp        : 2019-03-13 11:48:39.131108
Reason           : 
Outcome          : 
Duration         : 0.08293509483337402
Repository       : GitRepository at /home/omar/Documents/github/SumatraTemplate (upstream:
                 : https://github.com/ognibit/SumatraTemplate.git)
Main_File        : main.py
Version          : ee3b1b0393917fde91856db9609e6009aba50cee
Script_Arguments : <parameters>
Executable       : Python (version: 3.6.7) at /home/omar/.virtualenvs/cv/bin/python
Parameters       : check: {report: ./Data/check_report.txt}
                 : task: training
                 : training: {model: ./Data/new_model.hdf5}
                 : 
Input_Data       : []
Launch_Mode      : serial
Output_Data      : [20190313-114839/config.yaml(e4410200b5df05993efe1e4b043686fba06fb826
                 : [2019-03-13 11:48:41]),
                 : 20190313-114839/new_model.hdf5(1c2bc0fd49480f2a5a4029af569b6127fc322f9a
                 : [2019-03-13 11:48:41])]
User             : 
Tags             : 
Repeats          : None
--------------------------------------------------------------------------------

Gestione degli Esperimenti

Vedremo in questo capitolo come organizzare e gestire gli esperimenti in modo più completo. Ogni prova dovrebbe avere una motivazione iniziale e un esito; in Sumatra si traducono in “reason” e “comment“. Ecco come fare:

smt run --reason "Smallest learning rate at 0.001" conf/default.yaml "training={alpha: 0.001, model: model.hdf5}"

smt comment "Underfitting"

smt list -l -r
 Label            : 20190314-110210
 Timestamp        : 2019-03-14 11:02:10.107423
 Reason           : Smallest learning rate at 0.001
 Outcome          : Underfitting

Sumatra applica automaticamente una label ad ogni esperimento che di default ne rappresenta la data. Possiamo però assegnare una label arbitraria al momento dell’esecuzione, in modo da distinguere un esperimento da un altro. Inoltre è possibile raggruppare gli esperimenti in categorie utilizzando i tag, in modo da poter in seguito usare list solo su di essi.

smt run --tag alpha --label "alpha_01" --reason "Highest learning rate at 0.1" conf/default.yaml "training={alpha: 0.1, model: model.hdf5}"
Running training...
DONE
Record label for this run: 'alpha_01'
Data keys are [20190314-111548/config.yaml(e2b66dbbd18f76f794394eb4781eb67b067e220e [2019-03-14 11:15:50])]

smt list -l alpha
Label            : alpha_01
Timestamp        : 2019-03-14 11:15:48.052683
Reason           : Highest learning rate at 0.1
Outcome          : 
Duration         : 0.11724233627319336

Sfruttando le label è possbile eseguire una delle funzionalità più interessanti di Sumatra, la riesecuzione di un esperimento. Per farlo è sufficiente ricordare la label e dare il comando:

smt repeat --label alpha_01r alpha_01
Running training...
DONE
Record label for this run: 'alpha_01r'
Data keys are [20190316-114511/config.yaml(e2b66dbbd18f76f794394eb4781eb67b067e220e [2019-03-16 11:45:13])]
The new record exactly matches the original.

smt tag alpha alpha_01r
smt list alpha
alpha_01r
alpha_01

Il comando repeat non permette (alla versione 0.7.4) di assegnare o ereditare il tag dell’esperimento in riesecuzione, però si può aggiungere il tag a mano in modo che rientri comunque in quella categoria, in base alle vostre preferenze

L’ultimo comando che vedremo serve a fare un po’ di pulizia, utile per togliere esperimenti non significativi o ridondanti, che potrebbero generare confusione. Stiamo parlando del comando delete

smt delete --tag alpha 
2 records deleted.

Nel prossimo articolo vedremo come confrontare gli esperimenti e qualche altro comando di gestione.

2 thoughts on “Tracciatura degli Esperimenti con Sumatra (run)”

  1. Pingback: Guida a Sumatra diff, migrate, export | OgniBit
  2. Pingback: Guida alla Web Interface di Sumatra | OgniBit

Comments are closed.

Articoli recenti

  • Python Multilingua con GetText
  • PyData Venice #0 @ ESC
  • Python CLI con Fire
  • Bumpversion – Come gestire le versioni del software
  • PyConX 2019 – Python a Firenze

Categorie

  • Artificial Intelligence
  • Conferenze
  • Data Scientist Tool
  • progetti
  • python
© 2023 Omar Rampado | Powered by Minimalist Blog WordPress Theme