Improve docker files and use a non-root user
This commit is contained in:
1 parent
2bd1a5b43b
commit
4041defb8d
7 files changed
+40
-35
No files matched your search
+9
-15
@@ -9,8 +9,6 @@ ENV TTS_MODEL=$TTS_MODEL
|
|||||||
ARG DEEPSPEED_VERSION=0.16.2
|
ARG DEEPSPEED_VERSION=0.16.2
|
||||||
ENV DEEPSPEED_VERSION=$DEEPSPEED_VERSION
|
ENV DEEPSPEED_VERSION=$DEEPSPEED_VERSION
|
||||||
|
|
||||||
ARG ALLTALK_DIR=/opt/alltalk
|
|
||||||
|
|
||||||
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
ENV GRADIO_SERVER_NAME="0.0.0.0"
|
||||||
|
|
||||||
# Switch for using the multi engine manager:
|
# Switch for using the multi engine manager:
|
||||||
@@ -59,10 +57,7 @@ EOR
|
|||||||
# Download all RVC models:
|
# Download all RVC models:
|
||||||
##############################################################################
|
##############################################################################
|
||||||
COPY system/tts_engines/rvc_files.json system/tts_engines/
|
COPY system/tts_engines/rvc_files.json system/tts_engines/
|
||||||
RUN <<EOR
|
RUN jq -r '.[]' system/tts_engines/rvc_files.json | xargs -n 1 curl --create-dirs --output-dir models/rvc_base -LO
|
||||||
rvc_files=$( jq -r '.[]' system/tts_engines/rvc_files.json )
|
|
||||||
echo "$rvc_files" | xargs -n 1 curl --create-dirs --output-dir models/rvc_base -LO
|
|
||||||
EOR
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Install python dependencies (cannot use --no-deps because requirements are not complete)
|
# Install python dependencies (cannot use --no-deps because requirements are not complete)
|
||||||
@@ -74,7 +69,7 @@ ENV PIP_CACHE_DIR=${ALLTALK_DIR}/pip_cache
|
|||||||
RUN <<EOR
|
RUN <<EOR
|
||||||
conda activate alltalk
|
conda activate alltalk
|
||||||
|
|
||||||
mkdir ${ALLTALK_DIR}/pip_cache
|
mkdir -p ${ALLTALK_DIR}/pip_cache
|
||||||
pip install --no-cache-dir --cache-dir=${ALLTALK_DIR}/pip_cache -r system/requirements/requirements_standalone.txt
|
pip install --no-cache-dir --cache-dir=${ALLTALK_DIR}/pip_cache -r system/requirements/requirements_standalone.txt
|
||||||
pip install --no-cache-dir --cache-dir=${ALLTALK_DIR}/pip_cache --upgrade gradio==4.32.2
|
pip install --no-cache-dir --cache-dir=${ALLTALK_DIR}/pip_cache --upgrade gradio==4.32.2
|
||||||
|
|
||||||
@@ -144,7 +139,7 @@ merge_json_files() {
|
|||||||
replace_env_vars docker_default_confignew.json
|
replace_env_vars docker_default_confignew.json
|
||||||
merge_json_files confignew.json
|
merge_json_files confignew.json
|
||||||
|
|
||||||
conda activate alltalk
|
source ${ALLTALK_DIR}/conda_env.sh
|
||||||
|
|
||||||
if [ "\$ALLTALK_ENABLE_MULTI_ENGINE_MANAGER" = true ] ; then
|
if [ "\$ALLTALK_ENABLE_MULTI_ENGINE_MANAGER" = true ] ; then
|
||||||
echo "Starting alltalk using multi engine manager"
|
echo "Starting alltalk using multi engine manager"
|
||||||
@@ -160,13 +155,13 @@ EOF
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source ~/.bashrc
|
source ~/.bashrc
|
||||||
export TRAINER_TELEMETRY=0
|
export TRAINER_TELEMETRY=0
|
||||||
conda activate alltalk
|
source ${ALLTALK_DIR}/conda_env.sh
|
||||||
python finetune.py
|
python finetune.py
|
||||||
EOF
|
EOF
|
||||||
cat << EOF > start_diagnostics.sh
|
cat << EOF > start_diagnostics.sh
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source ~/.bashrc
|
source ~/.bashrc
|
||||||
conda activate alltalk
|
source ${ALLTALK_DIR}/conda_env.sh
|
||||||
python diagnostics.py
|
python diagnostics.py
|
||||||
EOF
|
EOF
|
||||||
chmod +x start_alltalk.sh
|
chmod +x start_alltalk.sh
|
||||||
@@ -174,21 +169,20 @@ EOF
|
|||||||
chmod +x start_diagnostics.sh
|
chmod +x start_diagnostics.sh
|
||||||
EOR
|
EOR
|
||||||
|
|
||||||
COPY . .
|
COPY --chown=alltalk:alltalk . .
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Create script to execute firstrun.py and run it:
|
# Create script to execute firstrun.py and run it:
|
||||||
##############################################################################
|
##############################################################################
|
||||||
RUN echo $'#!/usr/bin/env bash \n\
|
RUN echo $'#!/usr/bin/env bash \n\
|
||||||
source ~/.bashrc \n\
|
source ~/.bashrc \n\
|
||||||
conda activate alltalk \n\
|
source ${ALLTALK_DIR}/conda_env.sh \n\
|
||||||
python ./system/config/firstrun.py $@' > ./start_firstrun.sh
|
python ./system/config/firstrun.py $@' > ./start_firstrun.sh
|
||||||
|
|
||||||
RUN chmod +x start_firstrun.sh
|
RUN chmod +x start_firstrun.sh
|
||||||
RUN ./start_firstrun.sh --tts_model $TTS_MODEL
|
RUN ./start_firstrun.sh --tts_model $TTS_MODEL
|
||||||
|
|
||||||
RUN mkdir -p ${ALLTALK_DIR}/outputs
|
RUN mkdir -p ${ALLTALK_DIR}/outputs ${ALLTALK_DIR}/.triton/autotune
|
||||||
RUN mkdir -p /root/.triton/autotune
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Enable deepspeed for all models:
|
# Enable deepspeed for all models:
|
||||||
@@ -198,4 +192,4 @@ RUN find . -name model_settings.json -exec sed -i -e 's/"deepspeed_enabled": fal
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
# Start alltalk:
|
# Start alltalk:
|
||||||
##############################################################################
|
##############################################################################
|
||||||
ENTRYPOINT ["sh", "-c", "./start_alltalk.sh"]
|
ENTRYPOINT ["sh", "-c", "./start_alltalk.sh"]
|
||||||
@@ -102,7 +102,6 @@ docker buildx \
|
|||||||
build \
|
build \
|
||||||
--progress=plain \
|
--progress=plain \
|
||||||
--build-arg TTS_MODEL=$TTS_MODEL \
|
--build-arg TTS_MODEL=$TTS_MODEL \
|
||||||
--build-arg ALLTALK_DIR=$ALLTALK_DIR \
|
|
||||||
--build-arg DEEPSPEED_VERSION=$DEEPSPEED_VERSION \
|
--build-arg DEEPSPEED_VERSION=$DEEPSPEED_VERSION \
|
||||||
--build-arg DOCKER_TAG=$DOCKER_TAG \
|
--build-arg DOCKER_TAG=$DOCKER_TAG \
|
||||||
--build-arg DOCKER_REPOSITORY=$DOCKER_REPOSITORY \
|
--build-arg DOCKER_REPOSITORY=$DOCKER_REPOSITORY \
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ ALLTALK_ENABLE_MULTI_ENGINE_MANAGER=false
|
|||||||
MULTI_ENGINE_MANAGER_CONFIG=
|
MULTI_ENGINE_MANAGER_CONFIG=
|
||||||
DOCKER_TAG=latest-xtts
|
DOCKER_TAG=latest-xtts
|
||||||
DOCKER_REPOSITORY=erew123
|
DOCKER_REPOSITORY=erew123
|
||||||
|
ALLTALK_DIR=/home/alltalk
|
||||||
declare -a ADDITIONAL_ARGS=()
|
declare -a ADDITIONAL_ARGS=()
|
||||||
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
|
|||||||
+18
-1
@@ -14,7 +14,7 @@ ENV CUDA_DOCKER_ARCH=all
|
|||||||
ENV NVIDIA_VISIBLE_DEVICES=all
|
ENV NVIDIA_VISIBLE_DEVICES=all
|
||||||
ENV CONDA_AUTO_UPDATE_CONDA="false"
|
ENV CONDA_AUTO_UPDATE_CONDA="false"
|
||||||
|
|
||||||
ENV ALLTALK_DIR=/opt/alltalk
|
ENV ALLTALK_DIR=/home/alltalk
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Installation/Basic Utilities
|
# Installation/Basic Utilities
|
||||||
@@ -32,6 +32,10 @@ RUN <<EOR
|
|||||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
EOR
|
EOR
|
||||||
|
|
||||||
|
# Create a non-root user and switch to it for security
|
||||||
|
RUN useradd -ms /bin/bash alltalk
|
||||||
|
USER alltalk
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Create a conda environment and install dependencies:
|
# Create a conda environment and install dependencies:
|
||||||
##############################################################################
|
##############################################################################
|
||||||
@@ -77,4 +81,17 @@ RUN <<EOR
|
|||||||
echo "Failed to install pip dependencies: $RESULT"
|
echo "Failed to install pip dependencies: $RESULT"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
EOR
|
||||||
|
|
||||||
|
RUN <<EOR
|
||||||
|
# See https://gist.github.com/xkortex/5ae49d7e6e969405bd2c3152a949c1f1
|
||||||
|
cat << EOF > ${ALLTALK_DIR}/conda_env.sh
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
source ~/.bashrc
|
||||||
|
__conda_setup="\$('/opt/conda/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
|
||||||
|
eval "\$__conda_setup"
|
||||||
|
unset __conda_setup
|
||||||
|
|
||||||
|
conda activate alltalk
|
||||||
|
EOF
|
||||||
EOR
|
EOR
|
||||||
+10
-15
@@ -5,11 +5,7 @@ FROM ${DOCKER_REPOSITORY}alltalk_tts_environment:${DOCKER_TAG}
|
|||||||
ARG DEEPSPEED_VERSION=0.16.3
|
ARG DEEPSPEED_VERSION=0.16.3
|
||||||
ENV DEEPSPEED_VERSION=$DEEPSPEED_VERSION
|
ENV DEEPSPEED_VERSION=$DEEPSPEED_VERSION
|
||||||
|
|
||||||
##############################################################################
|
WORKDIR ${ALLTALK_DIR}
|
||||||
# Directories:
|
|
||||||
##############################################################################
|
|
||||||
ENV STAGE_DIR=/tmp
|
|
||||||
RUN mkdir -p ${STAGE_DIR}
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Install python dependencies
|
# Install python dependencies
|
||||||
@@ -27,8 +23,8 @@ EOR
|
|||||||
# Clone DeepSpeed sources
|
# Clone DeepSpeed sources
|
||||||
##############################################################################
|
##############################################################################
|
||||||
RUN <<EOR
|
RUN <<EOR
|
||||||
git clone https://github.com/microsoft/DeepSpeed.git ${STAGE_DIR}/DeepSpeed
|
git clone https://github.com/microsoft/DeepSpeed.git ${ALLTALK_DIR}/DeepSpeed
|
||||||
cd ${STAGE_DIR}/DeepSpeed
|
cd ${ALLTALK_DIR}/DeepSpeed
|
||||||
git checkout .
|
git checkout .
|
||||||
git checkout "tags/v${DEEPSPEED_VERSION}" -b "v${DEEPSPEED_VERSION}"
|
git checkout "tags/v${DEEPSPEED_VERSION}" -b "v${DEEPSPEED_VERSION}"
|
||||||
|
|
||||||
@@ -46,21 +42,20 @@ EOR
|
|||||||
# Create DeepSpeed build file
|
# Create DeepSpeed build file
|
||||||
##############################################################################
|
##############################################################################
|
||||||
RUN <<EOR
|
RUN <<EOR
|
||||||
cat << EOF > build_deepspeed.sh
|
cat << EOF > ${ALLTALK_DIR}/build_deepspeed.sh
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source ~/.bashrc
|
source ${ALLTALK_DIR}/conda_env.sh
|
||||||
mkdir -p /deepspeed
|
mkdir -p ${ALLTALK_DIR}/build
|
||||||
|
|
||||||
conda activate alltalk
|
cd ${ALLTALK_DIR}/DeepSpeed
|
||||||
cd ${STAGE_DIR}/DeepSpeed
|
|
||||||
DS_BUILD_OPS=1 python setup.py build_ext -j8 bdist_wheel
|
DS_BUILD_OPS=1 python setup.py build_ext -j8 bdist_wheel
|
||||||
mv ${STAGE_DIR}/DeepSpeed/dist/*.whl /deepspeed/
|
mv ${ALLTALK_DIR}/DeepSpeed/dist/*.whl ${ALLTALK_DIR}/build
|
||||||
EOF
|
EOF
|
||||||
EOR
|
EOR
|
||||||
|
|
||||||
RUN chmod +x /build_deepspeed.sh
|
RUN chmod +x ${ALLTALK_DIR}/build_deepspeed.sh
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Build DeepSpeed:
|
# Build DeepSpeed:
|
||||||
##############################################################################
|
##############################################################################
|
||||||
ENTRYPOINT ["/build_deepspeed.sh"]
|
ENTRYPOINT ["bash", "-c", "-l", "$ALLTALK_DIR/build_deepspeed.sh"]
|
||||||
@@ -7,6 +7,7 @@ cd $SCRIPT_DIR
|
|||||||
|
|
||||||
DOCKER_TAG=latest
|
DOCKER_TAG=latest
|
||||||
DOCKER_REPOSITORY=erew123
|
DOCKER_REPOSITORY=erew123
|
||||||
|
ALLTALK_DIR=/home/alltalk
|
||||||
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
while [ "$#" -gt 0 ]; do
|
while [ "$#" -gt 0 ]; do
|
||||||
@@ -67,6 +68,5 @@ docker run \
|
|||||||
-it \
|
-it \
|
||||||
--gpus=all \
|
--gpus=all \
|
||||||
--name deepspeed \
|
--name deepspeed \
|
||||||
--build-arg DOCKER_TAG=$DOCKER_TAG \
|
-v $SCRIPT_DIR/build:${ALLTALK_DIR}/build \
|
||||||
-v $SCRIPT_DIR/build:/deepspeed \
|
|
||||||
${DOCKER_REPOSITORY}alltalk_deepspeed:${DOCKER_TAG}
|
${DOCKER_REPOSITORY}alltalk_deepspeed:${DOCKER_TAG}
|
||||||
@@ -4,7 +4,6 @@ declare -A ALLTALK_VARS
|
|||||||
ALLTALK_VARS["CUDA_VERSION"]=12.6.0
|
ALLTALK_VARS["CUDA_VERSION"]=12.6.0
|
||||||
ALLTALK_VARS["PYTHON_VERSION"]=3.11.11
|
ALLTALK_VARS["PYTHON_VERSION"]=3.11.11
|
||||||
ALLTALK_VARS["DEEPSPEED_VERSION"]=0.16.2
|
ALLTALK_VARS["DEEPSPEED_VERSION"]=0.16.2
|
||||||
ALLTALK_VARS["ALLTALK_DIR"]=/opt/alltalk
|
|
||||||
|
|
||||||
# Export single variables (needed by Docker locally)
|
# Export single variables (needed by Docker locally)
|
||||||
for key in "${!ALLTALK_VARS[@]}"
|
for key in "${!ALLTALK_VARS[@]}"
|
||||||
|
|||||||
Reference in new issue
Block a user