[ 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:joshua [2009/06/01 21:13]
zeman JOSHUA_HOME
user:zeman:joshua [2009/06/01 21:42]
zeman Nekompatibilita clusteru.
Line 6: Line 6:
   * Soubory ''INSTALL'' a ''README'' přímo v balíčku s Joshuou.   * Soubory ''INSTALL'' a ''README'' přímo v balíčku s Joshuou.
  
-===== Instalace SRILM =====+===== Instalace =====
  
-SRILM je nástroj pro jazykové modelováníse kterým pracují mnohé ekladače včetně Mosese a Joshuy. Je napsaný v céčkuZpůsob, jak ho získat a přeložit, je popsaný tutoriálu k Mosesovi(Ten není na webu normálně vidětale jeden odkaz na něj vede např. z Trac wiki Gaurav.Stručně zde opakuji:+Prerekvizity: 
 +  * Ant: kompilátor a make Javy. Máme ho v ''/usr/bin/ant'' 
 +  * Swig: nástroj na propojení kódu napsaného v různých jazycíchv tomto ípadě Joshuy (Java) na SRILM (céčko)Máme ho v ''/usr/bin/swig'' 
 +  * [[SRILM]]: nástroj Andrease Stolckeho na trénování používání jazykových modelů, běžně používaný se strojovými ekladačijako je Pharaoh, Hiero, Moses, Joshua. Máme nainstalováno nejspíš mnohokrát, podstatě si každý instaluje svou kopiiPodrobnosti o instalaci viz odkaz na začátku tohoto bodu. Pozoraby instalace fungovala na stroji (architektuře), na kterém chceme překládat (podrobnosti viz tamtéž).
  
-Získat balík se SRILM lze zde: http://www.speech.sri.com/projects/srilm/download.html+Nastavit důležité proměnné (to by se hodilo přidat do ''.cshrc'' nebo nějakého podobného konfiguračního souboru).
  
-Stažený balík srilm.tgz má asi 49 MB<nowiki>!</nowikiPozor, rozbaluje se do aktuální složky, takže před rozbalováním vytvořit složku srilm a vlézt do ní.+<code>setenv JAVA_HOME /opt/jdk1.6 
 +setenv SRILM /home/zeman/nastroje/srilm 
 +setenv JOSHUA_HOME /net/work/people/zeman/joshua</code>
  
-<code>mkdir srilm +Stáhnout aktuální verzi Joshuy:
-cd srilm +
-unzip.pl ../srilm.tgz</code>+
  
-nebo+<code>cd $JOSHUA_HOME 
 +svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code>
  
-<code>tar -xzvf ../srilm.tgz</code>+Přeložit Joshuu:
  
-Přečíst si soubor README, je tam mnoho tipů. Upravit Makefile, aby obsahoval cestu do mé složky.+<code>cd $JOSHUA_HOME 
 +ant compile</code>
  
-<code>chmod +w Makefile +Kdyby bylo potřeba v budoucnosti překompilovat Joshuu načisto, již zkompilované moduly se dají odstranit pomocí
-vi Makefile</code>+
  
-diff:+<code>ant clean</code>
  
-<code>7c7 +Otestujeme, že je Joshua funkční:
-< # SRILM = /home/speech/stolcke/project/srilm/devel +
---- +
-> SRILM = /home/zeman/nastroje/srilm</code>+
  
-Není tam popsaný akorát tento zádrhel: z neznámých důvodů SRILM očekává grafickou knihovnu TCLPokud tato knihovna není k dispozici, musíme mu říct, že se na ni má vykašlatK tomu je potřeba ve složce SRILM vlézt do common, najít dílčí Makefile pro naši architekturu (lze zjistit pomocí ''$SRILM/sbin/machine-type''), otevřít ho v nějakém editoru a upravit 3 řádky: zakomentovat 2 začínající na TCL a zajistit, že je tam ten třetí (NO_TCL):+<code>ant test 
 +./example/decode_example_javalm.sh 
 +./example/decode_example_srilm.sh</code>
  
-<code># Tcl support (standard in Linux) +Joshuu jsem překládal na zenu. Teď je ještě potřeba otestovat, že funguje i na clusteru, třeba na počítači sol1. A ejhle, na 64 bitech přestala fungovat spolupráce se SRILM.
-# TCL_INCLUDE = +
-# TCL_LIBRARY = -ltcl +
-NO_TCL = x</code>+
  
-Nyní jsme připraveni přeložit SRILMPokud nejsme v kořenové složce ''srilm''vrátíme se do ní spustíme:+<code>21:35 sol1:/ha/work/people/zeman/joshua> ./example/decode_example_srilm.sh 
 +Jun 12009 9:35:43 PM joshua.decoder.JoshuaConfiguration readConfigFile 
 +INFO: you use LM feature function, so make sure you have a LM grammar 
 +Exception in thread "main" java.lang.UnsatisfiedLinkError: /ha/work/people/zeman/joshua/lib/libsrilm.so: /ha/work/people/zeman/joshua/lib/libsrilm.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch) 
 +        at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
 +        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767) 
 +        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1692) 
 +        at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
 +        at java.lang.System.loadLibrary(System.java:1047) 
 +        at joshua.corpus.vocab.SrilmSymbol.<init>(SrilmSymbol.java:46) 
 +        at joshua.decoder.JoshuaDecoder.initializeSymbolTable(JoshuaDecoder.java:322) 
 +        at joshua.decoder.JoshuaDecoder.initialize(JoshuaDecoder.java:259) 
 +        at joshua.decoder.JoshuaDecoder.<init>(JoshuaDecoder.java:108) 
 +        at joshua.decoder.JoshuaDecoder.main(JoshuaDecoder.java:684)</code>
  
-<code>make World</code> +Přestože SRILM, který nebyl přeložen na 64 bitechběží jak na 32, tak na 64 bitech, s Joshuou na 64 bitech spolupracovat neumí (na 32 ano). Nepomůže ani když překlad Joshuy pustím až na 64 bitech (při spolupráci s 32bitovým SRILM).
- +
-Nyní bychom měli otestovat, že SRILM je přeložen a běží správně. K tomu ho musíme přidat do své cesty (i když pro použití s Mosesem a Joshuou to zřejmě není potřeba). Musíme do cesty přidat jednak bin, jednak jeho podsložku pro naši architekturu. +
- +
-<code>setenv PATH /home/zeman/nastroje/srilm/bin/i686:/home/zeman/nastroje/srilm/bin:${PATH} +
-cd test +
-make all</code> +
- +
-Josh Schroeder: "Prohlédneme si výstupbudeme hledat zprávy IDENTICAL a DIFFERS. Občas se může stát, že není vše identické, ale přesto lze poznat, jestli nástroj funguje, nebo padá." Dan: Úplně všechny testy mi hlásily DIFFERS, ale zdá se mi, že problém je spíš v pojmenování souborů (mnou vygenerované výstupy mají ve jménu navíc ".unknown"; namátkou jsem zkusil jeden z nich porovnat se vzorem a byl identický). +
- +
-==== Kompatibilita architektur ==== +
- +
-Předpokládal bych, že když něco přeložím pro 32bitový počítač, poběží to i na 64bitovémale není to tak. Přeložil jsem SRILM na zenu a úspěšně jsem ho otestoval. Potom jsem se pokusil tentýž test zopakovat na luciferovi (lucifer.ufal.hide). Hlásilo to následující chybu: +
- +
-<code>ngram: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ngram)</code> +
- +
-Jako kdyby na luciferovi byla jiná verze céčka (a standardních knihovennež na zenu. +
- +
-**zen:** +
- +
-<code>17:38 zen:/ha/home/zeman/nastroje/srilm/test> gcc -v +
-Using built-in specs. +
-Target: i486-linux-gnu +
-Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-targets=all --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu +
-Thread model: posix +
-gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)</code> +
- +
-**lucifer:** +
- +
-<code>17:37 lucifer:/ha/home/zeman/nastroje/srilm/test> gcc -v +
-Using built-in specs. +
-Target: x86_64-redhat-linux +
-Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-cpu=generic --host=x86_64-redhat-linux +
-Thread model: posix +
-gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)</code> +
- +
-Možná je problém v tom, že na luciferovi ještě není Ubuntu, ale Red Hat. Zkusíme to tedy přímo na clusteru, např. **sol1:** +
- +
-<code>17:42 sol1:/ha/work/people/zeman/zeh/zeman/tectomt/devel/external_code_compilation> gcc -v +
-Using built-in specs. +
-Target: x86_64-linux-gnu +
-Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +
-Thread model: posix +
-gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu3)</code> +
- +
-Tentokrát test běží bez chyb! +
- +
- +
-===== Instalace ===== +
- +
-Pozor, aby to běželo na clusteru LRC, je potřeba to ekládat pro 64bitovou architekturu. V nejhorším případě přímo na clusteru samém. +
- +
-Stáhnout aktuální verzi Joshuy+
- +
-<code>setenv JOSHUA_HOME /net/work/people/zeman/joshua +
-cd $JOSHUA_HOME +
-svn co https://joshua.svn.sourceforge.net/svnroot/joshua/trunk joshua</code> +
- +
-Nastavit důležité proměnné (to by se hodilo idat do ''.cshrc'' nebo nějakého podobného konfiguračního souboru) a zkontrolovat, že máme nainstalované prerekvizity. Ant je překladač nebo spíš make pro Javu. Swig je nástroj, který umí propojovat kód napsaný v různých jazycích, v tomto případě jde o napojení céčkového SRILM (jazykové modelovánína zbytek Joshuy, který je v Javě. +
- +
-<code>setenv JAVA_HOME /opt/jdk1.6 +
-which ant # /usr/bin/ant +
-which swig # /usr/bin/swig +
-setenv SRILM /home/zeman/nastroje/srilm</code>+

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