Skip to content

Commit 6c1e004

Browse files
committed
docker updates
- Adding user inside docker. - Updating installation for openfst and sentencepiece - Installing custom NCCL. Installing from apt is still failing.
1 parent fba3d67 commit 6c1e004

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

docker/espnet.devel

+26-7
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ ARG FROM_IMAGE
44
FROM ${FROM_IMAGE}
55

66
ARG WITH_PROXY
7-
ENV HTTP_PROXY ${WITH_PROXY}
8-
ENV HTTPS_PROXY ${WITH_PROXY}
7+
ARG THIS_USER
8+
ARG THIS_UID
9+
ENV http_proxy ${WITH_PROXY}
10+
ENV https_proxy ${WITH_PROXY}
911
ENV CUDA_HOME /usr/local/cuda
12+
ENV CUDA_PATH ${CUDA_HOME}
1013
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y install --no-install-recommends \
1114
automake \
1215
autoconf \
@@ -24,13 +27,16 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y install --no-ins
2427
libfreetype6-dev \
2528
libperl-dev \
2629
libpng12-dev \
30+
libprotobuf-dev \
31+
libprotobuf9v5 \
2732
libsndfile1 \
2833
libsndfile-dev \
2934
libtool \
3035
libzmq3-dev \
31-
perl \
3236
pciutils \
37+
perl \
3338
pkg-config \
39+
protobuf-compiler \
3440
python-dev \
3541
python-tk \
3642
python-numpy-dev \
@@ -48,7 +54,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y install --no-ins
4854
libgcc-5-dev \
4955
libstdc++-5-dev \
5056
&& \
51-
apt-get -y install --reinstall \
57+
apt-get -y remove \
5258
libnccl-dev \
5359
libnccl2 \
5460
&& \
@@ -60,6 +66,18 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y install --no-ins
6066
apt-get clean && \
6167
rm -rf /var/lib/apt/lists/*
6268

69+
# Install NCCL
70+
ENV NCCL_HOME /usr/local/nccl
71+
RUN git clone https://github.com/NVIDIA/nccl.git && \
72+
cd nccl && make PREFIX=${NCCL_HOME} install && \
73+
cp ${NCCL_HOME}/include/* ${CUDA_HOME}/include && \
74+
cp ${NCCL_HOME}/lib/* ${CUDA_HOME}/lib64
75+
76+
# Add user to container
77+
RUN if [ ! -z "${THIS_UID}" ];then \
78+
useradd -m -r -u ${THIS_UID} -g root ${THIS_USER}; \
79+
fi
80+
6381
# Install pip
6482
RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \
6583
python get-pip.py && \
@@ -72,13 +90,14 @@ COPY ./tools /espnet/tools
7290

7391
WORKDIR /espnet/tools
7492
RUN make kaldi USE_VENV=OFF && \
75-
rm -r ./kaldi/tools/openfst-1.6.5/src && \
93+
rm -r ./kaldi/tools/openfst-*/src && \
7694
find ./kaldi/src -name "*.o" -exec rm -f {} \; && \
7795
find ./kaldi/src -name "*.o" -exec rm -f {} \; && \
7896
cd kaldi/tools && ./extras/install_beamformit.sh
7997

8098
RUN make nkf USE_VENV=OFF && make kaldi-io-for-python USE_VENV=OFF
8199
RUN make venv/lib/python2.7/site-packages/torch USE_VENV=OFF && make warp-ctc USE_VENV=OFF
82-
RUN make chainer_ctc USE_VENV=OFF && make subword-nmt USE_VENV=OFF
83-
WORKDIR /
100+
RUN make chainer_ctc USE_VENV=OFF && make sentencepiece USE_VENV=OFF
84101

102+
USER ${THIS_USER}
103+
WORKDIR /

docker/run.sh

+19-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ docker_egs=
55
docker_folders=
66
docker_cuda=9.0
77
docker_cudnn=7
8+
docker_user=0
89

910
while test $# -gt 0
1011
do
@@ -80,11 +81,18 @@ if ! [[ -n ${docker_image} ]]; then
8081
if [ ! -z "${HTTP_PROXY}" ]; then
8182
echo "Building with proxy ${HTTP_PROXY}"
8283
build_args="${build_args} --build-arg WITH_PROXY=${HTTP_PROXY}"
83-
fi
84+
fi
85+
if [ ${docker_user} -gt 0 ]; then
86+
build_args="${build_args} --build-arg THIS_USER=${HOME##*/}"
87+
build_args="${build_args} --build-arg THIS_UID=${UID}"
88+
else
89+
build_args="${build_args} --build-arg THIS_USER=root"
90+
fi
91+
echo "Now running docker build ${build_args} -f docker/espnet.devel -t ${image_label} ."
8492
(docker build ${build_args} -f docker/espnet.devel -t ${image_label} .) || exit 1
8593
fi
8694

87-
vols="-v $PWD/egs:/espnet/egs -v $PWD/src:/espnet/src -v $PWD/test:/espnet/test"
95+
vols="-v ${PWD}/egs:/espnet/egs -v ${PWD}/src:/espnet/src -v ${PWD}/test:/espnet/test"
8896
if [ ! -z "${docker_folders}" ]; then
8997
docker_folders=$(echo ${docker_folders} | tr "," "\n")
9098
for i in ${docker_folders[@]}
@@ -93,9 +101,17 @@ if [ ! -z "${docker_folders}" ]; then
93101
done
94102
fi
95103

104+
# Test if link to kaldi_io.py has been created
105+
if ! [[ -L ./src/utils/kaldi_io_py.py ]]; then
106+
my_dir=${PWD}
107+
cd ./src/utils
108+
ln -s ../../tools/kaldi-io-for-python/kaldi_io.py kaldi_io_py.py
109+
cd ${my_dir}
110+
fi
111+
96112
cmd1="cd /espnet/egs/${docker_egs}"
97113
cmd2="./run.sh $@"
98-
#Required to access to the folder once the training if finished
114+
# Required to access to the folder once the training if finished
99115
cmd3="chmod -R 777 /espnet/egs/${docker_egs}"
100116

101117
cmd="${cmd1}; ${cmd2}; ${cmd3}"

0 commit comments

Comments
 (0)