72 lines
1.6 KiB
Bash
Executable File
72 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
cd $SCRIPT_DIR
|
|
|
|
. ${SCRIPT_DIR=}/../variables.sh
|
|
|
|
DOCKER_TAG=latest
|
|
DOCKER_REPOSITORY=erew123
|
|
ALLTALK_DIR=/home/alltalk
|
|
|
|
# Parse arguments
|
|
while [ "$#" -gt 0 ]; do
|
|
case "$1" in
|
|
--python-version)
|
|
PYTHON_VERSION="$2"
|
|
shift
|
|
;;
|
|
--deepspeed-version)
|
|
DEEPSPEED_VERSION="$2"
|
|
shift
|
|
;;
|
|
--tag)
|
|
DOCKER_TAG="$2"
|
|
shift
|
|
;;
|
|
--docker-repository)
|
|
if [ -n "$2" ] && ! [[ $2 =~ ^--.* ]]; then
|
|
DOCKER_REPOSITORY="$2"
|
|
shift
|
|
else
|
|
DOCKER_REPOSITORY=""
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Unknown argument '$1'"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Append slash if missing:
|
|
DOCKER_REPOSITORY=$(echo "$DOCKER_REPOSITORY" | sed 's![^/]$!&/!')
|
|
|
|
PYTHON_SHORT_VERSION=${PYTHON_VERSION%.*}
|
|
PYTHON_VERSION_NO_DOT=${PYTHON_SHORT_VERSION//./}
|
|
if [[ -n $(find build -name "deepspeed-${DEEPSPEED_VERSION}*-cp${PYTHON_VERSION_NO_DOT}-cp${PYTHON_VERSION_NO_DOT}-*.whl") ]]
|
|
then
|
|
echo "DeepSpeed was already built - skipping..."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Building DeepSpeed $DEEPSPEED_VERSION using python ${PYTHON_VERSION}"
|
|
|
|
rm -rf build # make sure to properly clean up
|
|
mkdir -p build
|
|
|
|
docker buildx \
|
|
build \
|
|
--build-arg DOCKER_REPOSITORY=$DOCKER_REPOSITORY \
|
|
--build-arg DEEPSPEED_VERSION=$DEEPSPEED_VERSION \
|
|
-t ${DOCKER_REPOSITORY}alltalk_deepspeed:${DOCKER_TAG} \
|
|
.
|
|
|
|
docker run \
|
|
--rm \
|
|
-it \
|
|
--gpus=all \
|
|
--name deepspeed \
|
|
-v $SCRIPT_DIR/build:${ALLTALK_DIR}/build \
|
|
${DOCKER_REPOSITORY}alltalk_deepspeed:${DOCKER_TAG} |