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)”
Comments are closed.