[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

This is an old revision of the document!


Table of Contents

Parsery

Závislostní parsery

Danovo parsing repository

Verzovaná složka, která zatím obsahuje stanfordský parser, Charniakův parser, Johnsonův reranker a řadu drobných nástrojů pro manipulaci s treebanky. Pokud chcete s uvedenými parsery či nástroji pracovat, musíte si nejprve z repozitáře vytáhnout svou vlastní pracovní kopii nástrojů (návod následuje). V případě potřeby můžete opravovat chyby nebo přidávat vlastní nástroje a změny odesílat zpátky do repozitáře. V takovém případě se ale nejdřív důkladně seznamte se správou verzí, abyste se uměli vyhnout konfliktům; nezapomeňte také ke každému svn commit popsat, v čem změna spočívá!

Nikdy se nehrabte přímo (tj. bez prostřednictví příkazů svn) v úložišti repozitáře!

Jak získat svou vlastní pracovní kopii

Do proměnné PARSINGROOT níže nastavte cestu ke složce, ve které chcete svou pracovní kopii mít, nejlépe asi do /net/work/people/$USER nebo někam na místní disk. (Složka parsing zatím neexistuje, ale nadřazené složky pochopitelně existovat musí.) Ve všech návodech souvisejících s parsingem budeme na vaši pracovní kopii odkazovat jako na $PARSINGROOT.

setenv PARSINGROOT /net/work/people/$USER/parsing
svn checkout -q file:///net/work/public/SVN/parsing/trunk $PARSINGROOT
cd $PARSINGROOT
make

Než zavoláte make, budete možná chtít otevřít $PARSINGROOT/brown-reranking-parser/Makefile a zkontrolovat nastavení proměnné GCCFLAGS. Některé části Brown reranking parseru jsou výpočetně velmi náročné a stojí za to je přeložit s optimalizacemi pro procesor, na kterém je budete pouštět. (Pokud chcete trénovat Johnsonův reranker na Penn Treebanku nebo srovnatelných datech, měli byste podle údajů z README mít také aspoň 8 GB paměti, což rovnou diskvalifikuje většinu neclusterovaných počítačů.) Buďte opatrní, protože maximální optimalizace získáte jen za cenu toho, že parser nepoběží na slabších nebo jiných architekturách. Máte tyto možnosti:

Dáváte-li přednost kompatibilitě s ostatními architekturami za cenu slabší optimalizace, použijte -mcpu místo -march, popř. nechte GCCFLAGS úplně prázdné.

Knihovny Boost C++, PETSc a TAO

Céčkové / Cplusplusové knihovny Boost C++, PETSc a TAO jsou potřeba pro trénování rerankeru Marka Johnsona (reranker zřejmě přímo využívá jen TAO, ale PETSc potřebujeme taky, protože TAO je nadstavba PETSc). Tyto knihovny nejsou součástí parsing repository. Zde shrnujeme poznámky o jejich instalaci.

Boost C++ údajně “bývá součástí moderních distribucí Linuxu.”

PETSc je knihovna pro vědecké výpočty založené na parciálních diferenciálních rovnicích. Domovská stránka projektu je http://www-unix.mcs.anl.gov/petsc/petsc-2/. My máme verzi 2.3.2, vybalenou v /net/work/public/lib/petsc-2.3.2-p7. Před instalací, jakož i později při používání knihovny, je potřeba mít cestu ke knihovně uloženou v systémové proměnné PETSC_DIR. Pak je třeba uvnitř složky s knihovnou zavolat config/configure.py. Pozor! Návod na instalaci na stránkách PETSc uvádí trochu jiné parametry pro configure, než jaké doporučují stránky TAO! Pokud nenakonfigurujete PETSc tak, jak požaduje TAO, nepodaří se vám později nainstalovat TAO. My jsme použili tyto parametry:

setenv PETSC_DIR /net/work/public/lib/petsc-2.3.2-p7
cd $PETSC_DIR
./config/configure.py --with-clanguage=C++ --with-cc=gcc --with-fc=gfortran \
    --download-f-blas-lapack=1 --with-mpi=0 --with-x=0 --with-shared=0

Stránky PETSc a TAO v příkladech uvádějí –with-fc=g77; tento překladač Fortranu u nás nemáme, místo něj máme gfortran. Konfigurační procedura sama stáhne a nainstaluje další knihovny (napsané ve Fortranu), které nejsou běžným příslušenstvím Linuxu, ale PETSc je potřebuje: BLAS (Basic Linear Algebra Subprograms) a LAPACK (Linear Algebra Package).

Na konci úspěšné konfigurace se dozvíme, jak máme mít nastavenou (při volání make, ale i při pozdějším linkování knihoven ke svým programům) proměnnou PETSC_ARCH. Hodnota použitá v následujícím příkladu platila na počítači zen; nejsem si jist, zda na 64bitových procesorech na clusteru nebude jiná. (Po přeložení knihovny proměnná PETSC_ARCH pravděpodobně slouží jen jako odkaz na správnou podsložku knihovny. Otázkou ale zůstává, zda pro 64bitové Opterony nebude nutné knihovnu přeložit znova do jiné podsložky.)

setenv PETSC_ARCH linux-gnu-cxx-debug
make all test

Kromě PETSC_ARCH si na konci hlášení o konfiguraci všimněte ještě několikařádkové informace o BLAS/LAPACK. Jsou to údaje, které by měl dostat linker vašeho (resp. Johnsonova) programu, který bude používat TAO, potažmo PETSc, LAPACK a BLAS. Dost možná budete potřebovat podle této řádky upravit makefile klíčové části rerankeru Marka Johnsona (brown-reranking-parser/second-stage/programs/wlle/Makefile). Původní Markův Makefile obsahoval prostě odkazy -llapack -lblas, které fungovaly, protože BLAS a LAPACK byly na jeho systému nainstalovány ve standardních cestách nezávisle na PETSc. Podobně jsme to měli v Marylandu, proto jsem na potíže narazil až tady na ÚFALu: BLAS a LAPACK ve standardní výbavě nemáme, musíme tedy nalinkovat ten, který se nám stáhne jako “external package” do podstromu knihovny PETSc. Všimněte si také -lgfortran na konci, to tam Mark taky neměl, ale bez toho se -lflapack u nás nechytá.

BLAS_LAPACK_LIBS = -Wl,-rpath,${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} \
    -L${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} -lflapack \
    -Wl,-rpath,${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} \
    -L${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} -lfblas \
    -lgfortran
TAO_PETSC_LIBS = -Wl,-rpath,${TAO_DIR}/lib/${PETSC_ARCH} \
    -L${TAO_DIR}/lib/${PETSC_ARCH} -ltaopetsc -ltao \
    -Wl,-rpath,${PETSC_DIR}/lib/${PETSC_ARCH} \
    -L${PETSC_DIR}/lib/${PETSC_ARCH} \
    -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc \
    -lmpiuni ${BLAS_LAPACK_LIBS} -lm -lstdc++ -lgcc_s

TAO je zkratka za Toolkit for Advanced Optimization. Domovská stránka projektu je http://www-unix.mcs.anl.gov/tao/. My máme verzi 1.8.2, vybalenou v /net/work/public/lib/tao-1.8.2. Před instalací, jakož i později při používání knihovny, je potřeba mít cestu ke knihovně uloženou v systémové proměnné TAO_DIR.

setenv TAO_DIR /net/work/public/lib/tao-1.8.2
cd $TAO_DIR
make all

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