129 строки
3.9 KiB
Plaintext
129 строки
3.9 KiB
Plaintext
== Author of the README ==
|
|
Wengong Jin,
|
|
Shanghai Jiao Tong University
|
|
email: acmgokun@gmail.com
|
|
|
|
Hakan Erdogan
|
|
MERL, Sabanci University
|
|
email: haerdogan@sabanciuniv.edu
|
|
|
|
Yu Zhang, Leo Liu
|
|
CSAIL, Massachusetts Institute of Technology
|
|
email: yzhang87@csail.mit.edu
|
|
email: leoliu_cu@sbcglobal.net
|
|
|
|
== Preeliminaries ==
|
|
To build the cpu version, you have to install intel MKL blas library or ACML library first. Note that ACML is free, where MKL may not be.
|
|
|
|
for MKL:
|
|
1. Download from https://software.intel.com/en-us/intel-mkl
|
|
2. You can modify variable MKL_PATH in makefile.cpu to change your mkl path.
|
|
Then add ${MKL_PATH}/mkl/lib/intel64, ${MKL_PATH}/mkl/lib/mic, ${MKL_PATH}/compiler/lib/intel64. ${MKL_PATH}/compiler/lib/mic to your ${LD_LIBRARY_PATH} to make sure the program links the library correctly.
|
|
|
|
for ACML:
|
|
1. Download from http://developer.amd.com/tools-and-sdks/cpu-development/amd-core-math-library-acml/
|
|
2. Modify ACML_PATH in the makefile.cpu and makefile.gpu to provide your ACML library path.
|
|
You need to add ${ACML_PATH}/lib to your ${LD_LIBRARY_PATH}.
|
|
|
|
To build the gpu version, you have to install NIVIDIA CUDA first
|
|
You can modify the path CUDA_PATH in makefile.cpu to change your cuda path
|
|
We use cuda-7.0 as default.
|
|
Then add ${CUDA_PATH}/lib, ${CUDA_PATH}/lib64 to your ${LD_LIBRARY_PATH} to make sure the program links to the library correctly.
|
|
|
|
... TODO: add documentation on nvml lib
|
|
|
|
== Build ==
|
|
To build the cpu version, run
|
|
make DEVICE=cpu
|
|
To build the gpu version, run
|
|
make
|
|
To clean the compile, just run
|
|
make DEVICE=cpu clean
|
|
or
|
|
make clean
|
|
|
|
For release version, just add BUILDTYPE=release to the make command line.
|
|
|
|
== Run ==
|
|
All executables are in bin/ directory:
|
|
cn.exe: The main executable for CNTK
|
|
*.so: shared library for corresponding reader, these readers will be linked and loaded dynamically at runtime.
|
|
|
|
To run the executable, make sure bin/ is in your ${LD_LIBRARY_PATH}, if not, running cn.exe will fail when cn.exe tries to link the corresponding reader. Once it's done, run in command line:
|
|
./cn.exe configFile=${your config file}
|
|
|
|
== Kaldi Reader ==
|
|
This is a HTKMLF reader and kaldi writer (for decode)
|
|
|
|
To build the cpu/gpu version, run
|
|
make -f Makefile_kaldi.cpu/gpu
|
|
|
|
The feature section is like:
|
|
|
|
writer=[
|
|
writerType=KaldiReader
|
|
readMethod=blockRandomize
|
|
frameMode=false
|
|
miniBatchMode=Partial
|
|
randomize=Auto
|
|
verbosity=1
|
|
ScaledLogLikelihood=[
|
|
dim=$labelDim$
|
|
Kaldicmd="ark:-" # will pipe to the Kaldi decoder latgen-faster-mapped
|
|
scpFile=$outputSCP$ # the file key of the features
|
|
]
|
|
]
|
|
|
|
== Kaldi2 Reader ==
|
|
This is a kaldi reader and kaldi writer (for decode)
|
|
|
|
To build the cpu/gpu version, run
|
|
make -f Makefile_kaldi2.cpu/gpu
|
|
|
|
|
|
The features section is different:
|
|
|
|
features=[
|
|
dim=
|
|
rx=
|
|
scpFile=
|
|
featureTransform=
|
|
]
|
|
|
|
rx is a text file which contains:
|
|
|
|
one Kaldi feature rxspecifier readable by RandomAccessBaseFloatMatrixReader.
|
|
'ark:' specifiers don't work; only 'scp:' specifiers work.
|
|
|
|
scpFile is a text file generated by running:
|
|
|
|
feat-to-len FEATURE_RXSPECIFIER_FROM_ABOVE ark,t:- > TEXT_FILE_NAME
|
|
|
|
scpFile should contain one line per utterance.
|
|
|
|
If you want to run with fewer utterances, just shorten this file.
|
|
(It will load the feature rxspecifier but ignore utterances not present in scpFile).
|
|
|
|
featureTransform is the name of a Kaldi feature transform file:
|
|
|
|
Kaldi feature transform files are used for stacking / applying transforms to features.
|
|
|
|
An empty string (if permitted by the config file reader?) or the special string: NO_FEATURE_TRANSFORM
|
|
says to ignore this option.
|
|
|
|
********** Labels **********
|
|
|
|
The labels section is also different.
|
|
|
|
labels=[
|
|
mlfFile=
|
|
labelDim=
|
|
labelMappingFile=
|
|
]
|
|
|
|
Only difference is mlfFile. mlfFile is a different format now. It is a text file which contains:
|
|
|
|
one Kaldi label rxspecifier readable by Kaldi's copy-post binary.
|
|
|
|
|