[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
user:zeman:rizeni-pokusu-pomoci-makefilu [2009/03/20 18:32]
zeman Absolutní a relativní cesty.
user:zeman:rizeni-pokusu-pomoci-makefilu [2009/03/28 14:52]
zeman Full/gold eval vs. blind.
Line 1: Line 1:
 ====== Řízení pokusů pomocí Makefilů ====== ====== Řízení pokusů pomocí Makefilů ======
  
-**Danova úvodní poznámka:** V poslední době se mi několikrát stalo, že jsem potřeboval aplikovat stejnou řadu skriptů za několik různých datových souborů, případně stejný pokus zopakovat po delší době, takže bylo pracné si vzpomenout, jak přesně jsem co volal. Konkrétně šlo o vícejazyčné soutěže ve zpracování přirozených jazyků (CoNLL parsing, Morpho Challenge), a pak také o vyhodnocování úspěšnosti zápočtových úkolů. Nabízelo se řešení pomocí maku a Makefilů, kde lze posloupnost zpracování dat jednotlivými skripty dobře popsat. Současně jsem ale vždy znova zápasil s věcmi, které se mi v Makefilech řešily těžko. Tenhle dokument je tedy pokusem shrnout problémy a poznamenat si řešení, vlastně jakýsi makefile k Makefilům.+**Danova úvodní poznámka:** V poslední době se mi několikrát stalo, že jsem potřeboval aplikovat stejnou řadu skriptů za několik různých datových souborů, případně stejný pokus zopakovat po delší době, takže bylo pracné si vzpomenout, jak přesně jsem co volal. Konkrétně šlo o vícejazyčné soutěže ve zpracování přirozených jazyků (CoNLL parsing, Morpho Challenge), a pak také o vyhodnocování úspěšnosti zápočtových úkolů. Nabízelo se řešení pomocí [[http://www.gnu.org/software/make/manual/make.html|make]] a Makefilů, kde lze posloupnost zpracování dat jednotlivými skripty dobře popsat. Současně jsem ale vždy znova zápasil s věcmi, které se mi v Makefilech řešily těžko. Tenhle dokument je tedy pokusem shrnout problémy a poznamenat si řešení, vlastně jakýsi makefile k Makefilům.
  
 ===== Výchozí předpoklady ===== ===== Výchozí předpoklady =====
Line 22: Line 22:
  
 Zdá se tedy, že je ideální rozdělit zpracování dat na dvě části (a zřejmě dva různě koncipované Makefily). V té první se provedou jazykově závislé operace (pro každý jazyk jiné explicitní pravidlo) a data se zkopírují ze zdrojové složky do pracovní. Druhou část tvoří již uniformní posloupnost operací s daty popsaná šablonovými pravidly. Zdá se tedy, že je ideální rozdělit zpracování dat na dvě části (a zřejmě dva různě koncipované Makefily). V té první se provedou jazykově závislé operace (pro každý jazyk jiné explicitní pravidlo) a data se zkopírují ze zdrojové složky do pracovní. Druhou část tvoří již uniformní posloupnost operací s daty popsaná šablonovými pravidly.
 +
 +
  
 ===== Pomocné soubory a úklid ===== ===== Pomocné soubory a úklid =====
Line 28: Line 30:
  
 Je také dobré si nagenerovat cíle pro úklid zejména prázdných souborů, které vzniknou, když nějaký cíl volá příkaz, který píše na standardní výstup, standardní výstup je přesměrován do souboru a zpracování příkazu skončí nějakou chybou. Dá se také nastavit v Makefilu, aby dílčí cíle po chybě mazal. Jinak tam bude soubor, který nemá správný obsah, ale bude mít dost čerstvou časovou nálepku, takže ho make po odstranění chyby nebude chtít přepracovat. Pak je těžké v tom udržet pořádek. Je také dobré si nagenerovat cíle pro úklid zejména prázdných souborů, které vzniknou, když nějaký cíl volá příkaz, který píše na standardní výstup, standardní výstup je přesměrován do souboru a zpracování příkazu skončí nějakou chybou. Dá se také nastavit v Makefilu, aby dílčí cíle po chybě mazal. Jinak tam bude soubor, který nemá správný obsah, ale bude mít dost čerstvou časovou nálepku, takže ho make po odstranění chyby nebude chtít přepracovat. Pak je těžké v tom udržet pořádek.
 +
 +Pokud Makefile obsahuje zvláštní cíl ''**.SECONDARY**'' bez prerekvizit, znamená to, že make nemaže soubory, které považuje za přechodné.
 +
 +Pokud Makefile obsahuje zvláštní cíl ''**.DELETE_ON_ERROR**'' bez prerekvizit, make smaže cíle, které se změnily, ale některý příkaz v jejich pravidle skončil chybou. Je velmi vhodné tuto "volbu" zapnout. Většinu nástrojů volám tak, že píšou na ''STDOUT'', který mám přesměrovaný do souboru. Pokud nástroj skončí chybou, je většinou cílový soubor už vytvořen, byť má nulovou velikost. Má ale čerstvý údaj o čase vzniku, takže až chybu opravím a pustím make znova, make si bude myslet, že už tento soubor nemá předělávat.
  
 ===== Výpočty na clusteru ===== ===== Výpočty na clusteru =====
Line 40: Line 46:
  
 Pokud oddělíme kopírování dat ze vzdálených složek do samostatného Makefilu a pokud v rámci jednoho Makefilu omezíme případné přesuny mezi složkami na takové, které se dají vyjádřit relativní cestou (tj. typicky podstrom složky, ve které leží Makefile), pak si vystačíme s relativními cestami. Poznámka: I kopírování ze vzdálených složek lze pak vyřešit tím, že si na vzdálené složky vyrobíme ze složky s Makefilem symbolický odkaz. Pokud oddělíme kopírování dat ze vzdálených složek do samostatného Makefilu a pokud v rámci jednoho Makefilu omezíme případné přesuny mezi složkami na takové, které se dají vyjádřit relativní cestou (tj. typicky podstrom složky, ve které leží Makefile), pak si vystačíme s relativními cestami. Poznámka: I kopírování ze vzdálených složek lze pak vyřešit tím, že si na vzdálené složky vyrobíme ze složky s Makefilem symbolický odkaz.
 +
 +
 +===== Rozměry =====
 +
 +Soubory, které při zpracování vznikají, lze rozdělit podle následujících kritérií. Kritéria je vhodné zohlednit ve jménech souborů nebo složek, aby bylo možné zpracovávat skupinu souborů se stejným kritériem pomocí jednoho pravidla. Bohužel je často obtížné navrhnout optimální rozmístění kritérií v cestě k souboru, protože ''make'' umí v šablonových pravidlech pracovat pouze s jedním souvislým proměnným úsekem.
 +
 +  * Fáze zpracování (train, trained-model, test-input, parsed...). Někdy je vyjádřená příponou souboru, protože řadě fází odpovídá konkrétní datový formát. Ale např. trénovací a testovací data bývají ve stejném formátu a bývá zvykem je rozlišit spíše ve jméně souboru než v příponě. Taky sem patří rozlišení testovacích dat na úplná (zahrnující i zlatý standard) a slepá (taková mají typicky k dispozici soutěžící před uzavřením soutěže).
 +  * Jazyk
 +  * Datová sada (dev vs. eval, popř. nějaká další, třeba out-of-domain data)
 +  * Velikost trénovacích dat pro křivku učení
 +  * Různá nastavení parseru a dalších nástrojů, různá předzpracování dat (např. převedení morfologických značek do sady PDT)
  

[ Back to the navigation ] [ Back to the content ]