diff --git a/build_scripts/inference/serve b/build_scripts/inference/serve index da1ddb2b..46e9ae73 100755 Binary files a/build_scripts/inference/serve and b/build_scripts/inference/serve differ diff --git a/build_scripts/inference/start.sh b/build_scripts/inference/start.sh index 0af65e8c..18444347 100644 --- a/build_scripts/inference/start.sh +++ b/build_scripts/inference/start.sh @@ -32,6 +32,8 @@ export CACHE_PUBLIC_COMFY="aws-gcr-solutions-$AWS_REGION/stable-diffusion-aws-ex export ENDPOINT_INSTANCE_ID=$(date +"%m%d%H%M%S") +export COMMON_FILES_PREFIX="aws-gcr-solutions-$AWS_REGION/stable-diffusion-aws-extension-github-mainline" + cores=$(lscpu | grep "^Core(s) per socket:" | awk '{print $4}') sockets=$(lscpu | grep "^Socket(s):" | awk '{print $2}') export CUP_CORE_NUMS=$((cores * sockets)) @@ -60,7 +62,11 @@ echo "-------------------------------------------------------------------------- set_conda(){ echo "set conda environment..." - export LD_LIBRARY_PATH=/home/ubuntu/conda/lib:$LD_LIBRARY_PATH + if [ -z "${LD_LIBRARY_PATH+x}" ]; then + export LD_LIBRARY_PATH=/home/ubuntu/conda/lib + else + export LD_LIBRARY_PATH=/home/ubuntu/conda/lib:$LD_LIBRARY_PATH + fi } # -------------------- sd functions -------------------- @@ -322,11 +328,42 @@ comfy_launch_from_public_s3(){ comfy_launch } +download_conda_and_models(){ + echo "---------------------------------------------------------------------------------" + + rm -rf /tmp/s5cmd.txt + + if [ ! -f "/home/ubuntu/conda/lib/libcufft.so.10" ]; then + echo "cp s3://$COMMON_FILES_PREFIX/so/libcufft.so.10 /home/ubuntu/conda/lib/" >> /tmp/s5cmd.txt + fi + + if [ ! -f "/home/ubuntu/conda/lib/libcurand.so.10" ]; then + echo "cp s3://$COMMON_FILES_PREFIX/so/libcurand.so.10 /home/ubuntu/conda/lib/" >> /tmp/s5cmd.txt + fi + + if [ ! -f "/home/ubuntu/ComfyUI/models/vae/vae-ft-mse-840000-ema-pruned.safetensors" ]; then + echo "cp s3://$COMMON_FILES_PREFIX/models/vae-ft-mse-840000-ema-pruned.safetensors /home/ubuntu/ComfyUI/models/vae/" >> /tmp/s5cmd.txt + fi + + if [ ! -f "/home/ubuntu/ComfyUI/models/animatediff_models/mm_sd_v15_v2.ckpt" ]; then + echo "cp s3://$COMMON_FILES_PREFIX/models/mm_sd_v15_v2.ckpt /home/ubuntu/ComfyUI/models/animatediff_models/" >> /tmp/s5cmd.txt + fi + + if [ -f "/tmp/s5cmd.txt" ]; then + s5cmd run /tmp/s5cmd.txt + fi + + set_conda + +} + +# ----------------------------- On EC2 ----------------------------- if [ -n "$ON_EC2" ]; then set -euxo pipefail export WORKFLOW_NAME=$(cat "$WORKFLOW_NAME_FILE") export WORKFLOW_DIR="/container/workflows/$WORKFLOW_NAME" + export CONTAINER_PATH="/container" rm -rf /container/sync_lock rm -rf /container/s5cmd_lock @@ -335,7 +372,27 @@ if [ -n "$ON_EC2" ]; then mkdir -p "$WORKFLOW_DIR" if [ "$WORKFLOW_NAME" = "default" ]; then echo "default workflow init must be in create EC2" - exit 1 + tar_file="$CONTAINER_PATH/default.tar" + if [ ! -f "$tar_file" ]; then + mkdir -p "$CONTAINER_PATH/workflows" + start_at=$(date +%s) + s5cmd cp "s3://$COMMON_FILES_PREFIX/$ESD_VERSION/comfy.tar" "$tar_file" + end_at=$(date +%s) + export DOWNLOAD_FILE_SECONDS=$((end_at-start_at)) + fi + start_at=$(date +%s) + rm -rf "$CONTAINER_PATH/workflows/default" + mkdir -p "$CONTAINER_PATH/workflows/default" + tar --overwrite -xf "$tar_file" -C "$CONTAINER_PATH/workflows/default/" + end_at=$(date +%s) + export DECOMPRESS_SECONDS=$((end_at-start_at)) + cd "$CONTAINER_PATH/workflows/default/ComfyUI" + + echo "cp s3://$COMMON_FILES_PREFIX/models/vae-ft-mse-840000-ema-pruned.safetensors models/vae/" > /tmp/models.txt + echo "cp s3://$COMMON_FILES_PREFIX/models/majicmixRealistic_v7.safetensors models/checkpoints/" >> /tmp/models.txt + echo "cp s3://$COMMON_FILES_PREFIX/models/v1-5-pruned-emaonly.ckpt models/checkpoints/" >> /tmp/models.txt + echo "cp s3://$COMMON_FILES_PREFIX/models/mm_sd_v15_v2.ckpt models/animatediff_models/" >> /tmp/models.txt + s5cmd run /tmp/models.txt else start_at=$(date +%s) echo "$WORKFLOW_NAME" > /container/s5cmd_lock @@ -352,7 +409,8 @@ if [ -n "$ON_EC2" ]; then ln -s "$WORKFLOW_DIR/ComfyUI" /home/ubuntu/ComfyUI - cd /home/ubuntu/ComfyUI || exit 1 + cd "/home/ubuntu/ComfyUI" || exit 1 + download_conda_and_models if [ -f "/comfy_proxy.py" ]; then cp -f /comfy_proxy.py /home/ubuntu/ComfyUI/custom_nodes/ @@ -376,13 +434,15 @@ if [ -n "$ON_EC2" ]; then exit 1 fi +# ----------------------------- On SageMaker ----------------------------- if [ -n "$WORKFLOW_NAME" ]; then cd /home/ubuntu || exit 1 if [ -d "/home/ubuntu/ComfyUI/venv" ]; then if [ -n "$ON_EC2" ]; then set -euxo pipefail - cd /home/ubuntu/ComfyUI || exit 1 + cd "/home/ubuntu/ComfyUI" || exit 1 + download_conda_and_models rm -rf web/extensions/ComfyLiterals chmod -R +x venv source venv/bin/activate @@ -399,6 +459,7 @@ if [ -n "$WORKFLOW_NAME" ]; then echo "download file: $DOWNLOAD_FILE_SECONDS seconds" cd "/home/ubuntu/ComfyUI" || exit 1 + download_conda_and_models rm -rf web/extensions/ComfyLiterals diff --git a/build_scripts/install_comfy.sh b/build_scripts/install_comfy.sh index 6036fd88..55d50f41 100755 --- a/build_scripts/install_comfy.sh +++ b/build_scripts/install_comfy.sh @@ -1,9 +1,11 @@ #!/bin/bash +# todo: deprecated + echo "---------------------------------------------------------------------------------" echo "install comfy..." -export INITIAL_COMFY_COMMIT_ROOT=0fecfd2b1a2794b77277c7e256c84de54a63d860 +export INITIAL_COMFY_COMMIT_ROOT=605e64f6d3da44235498bf9103d7aab1c95ef211 rm -rf ComfyUI rm -rf stable-diffusion-aws-extension diff --git a/build_scripts/install_sd.sh b/build_scripts/install_sd.sh index c0b0aa7e..d1c6df3a 100755 --- a/build_scripts/install_sd.sh +++ b/build_scripts/install_sd.sh @@ -1,5 +1,7 @@ #!/bin/bash +# todo: deprecated + echo "---------------------------------------------------------------------------------" echo "install esd..." diff --git a/docker_start.sh b/docker_start.sh index fcef581e..2c67a9a2 100755 --- a/docker_start.sh +++ b/docker_start.sh @@ -9,6 +9,7 @@ fi export SERVICE_TYPE="comfy" export CONTAINER_NAME="esd_container" export AWS_REGION=$(aws configure get region) +export COMMON_FILES_PREFIX="aws-gcr-solutions-$AWS_REGION/stable-diffusion-aws-extension-github-mainline" CUR_PATH=$(realpath ./) CONTAINER_PATH=$(realpath ./container) @@ -144,27 +145,28 @@ docker run -v $(realpath ~/.aws):/root/.aws \\ echo "---------------------------------------------------------------------------------" # init default workflow for all users if [ ! -d "$CONTAINER_PATH/workflows/default/ComfyUI/venv" ]; then - if [ ! -f "$CONTAINER_PATH/default.tar" ]; then + tar_file="$CONTAINER_PATH/default.tar" + + if [ ! -f "$tar_file" ]; then mkdir -p "$CONTAINER_PATH/workflows" start_at=$(date +%s) - s5cmd cp "s3://aws-gcr-solutions-$AWS_REGION/stable-diffusion-aws-extension-github-mainline/$ESD_VERSION/comfy.tar" "$CONTAINER_PATH/default.tar" + s5cmd cp "s3://$COMMON_FILES_PREFIX/$ESD_VERSION/comfy.tar" "$tar_file" end_at=$(date +%s) export DOWNLOAD_FILE_SECONDS=$((end_at-start_at)) fi start_at=$(date +%s) rm -rf "$CONTAINER_PATH/workflows/default" mkdir -p "$CONTAINER_PATH/workflows/default" - tar --overwrite -xf "$CONTAINER_PATH/default.tar" -C "$CONTAINER_PATH/workflows/default/" + tar --overwrite -xf "$tar_file" -C "$CONTAINER_PATH/workflows/default/" end_at=$(date +%s) export DECOMPRESS_SECONDS=$((end_at-start_at)) cd "$CONTAINER_PATH/workflows/default/ComfyUI" - mkdir -p models/vae/ - wget --quiet -O models/vae/vae-ft-mse-840000-ema-pruned.safetensors "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors" - mkdir -p models/checkpoints/ - wget --quiet -O models/checkpoints/majicmixRealistic_v7.safetensors "https://huggingface.co/GreenGrape/231209/resolve/045ebfc504c47ba8ccc424f1869c65a223d1f5cc/majicmixRealistic_v7.safetensors" - mkdir -p models/animatediff_models/ - wget --quiet -O models/animatediff_models/mm_sd_v15_v2.ckpt "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt" - wget --quiet -O models/checkpoints/v1-5-pruned-emaonly.ckpt "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt" + + echo "cp s3://$COMMON_FILES_PREFIX/models/vae-ft-mse-840000-ema-pruned.safetensors models/vae/" > /tmp/models.txt + echo "cp s3://$COMMON_FILES_PREFIX/models/majicmixRealistic_v7.safetensors models/checkpoints/" >> /tmp/models.txt + echo "cp s3://$COMMON_FILES_PREFIX/models/v1-5-pruned-emaonly.ckpt models/checkpoints/" >> /tmp/models.txt + echo "cp s3://$COMMON_FILES_PREFIX/models/mm_sd_v15_v2.ckpt models/animatediff_models/" >> /tmp/models.txt + s5cmd run /tmp/models.txt fi SUPERVISOR_CONF="[supervisord] diff --git a/workshop/ec2.yaml b/workshop/ec2.yaml index 71aa3f68..833781eb 100644 --- a/workshop/ec2.yaml +++ b/workshop/ec2.yaml @@ -152,9 +152,18 @@ Resources: tar xzvf s5cmd_2.2.2_Linux-64bit.tar.gz cp s5cmd /usr/local/bin/ - export AWS_REGION=us-east-1 - wget https://raw.githubusercontent.com/awslabs/stable-diffusion-aws-extension/dev/workshop/sd_models.txt - s5cmd run sd_models.txt + bucket="aws-gcr-solutions-$AWS_REGION" + prefix="stable-diffusion-aws-extension-github-mainline/models" + echo "cp s3://$bucket/$prefix/sd_xl_base_1.0.safetensors /home/ubuntu/stable-diffusion-webui/models/Stable-diffusion/" > /tmp/models.txt + echo "cp s3://$bucket/$prefix/v1-5-pruned-emaonly.safetensors /home/ubuntu/stable-diffusion-webui/models/Stable-diffusion/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/LahCuteCartoonSDXL_alpha.safetensors /home/ubuntu/stable-diffusion-webui/models/Stable-diffusion/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/majicmixRealistic_v7.safetensors /home/ubuntu/stable-diffusion-webui/models/Stable-diffusion/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/control_v11p_sd15_canny.pth /home/ubuntu/stable-diffusion-webui/models/ControlNet/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/control_v11p_sd15_openpose.pth /home/ubuntu/stable-diffusion-webui/models/ControlNet/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/lcm_lora_xl.safetensors /home/ubuntu/stable-diffusion-webui/models/Lora/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/lcm_lora_1_5.safetensors /home/ubuntu/stable-diffusion-webui/models/Lora/" >> /tmp/models.txt + echo "cp s3://$bucket/$prefix/nendoroid_xl_v7.safetensors /home/ubuntu/stable-diffusion-webui/models/Lora/" >> /tmp/models.txt + s5cmd run /tmp/models.txt sudo chown -R ubuntu:ubuntu /home/ubuntu/stable-diffusion-webui