stable-diffusion - annna - Annna the nice friendly bot. HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/ DIR Log DIR Files DIR Refs DIR Tags DIR README --- stable-diffusion (3090B) --- 1 #!/bin/sh 2 3 export PATH="$HOME/bin:$PATH" 4 5 if [ $# -lt 2 ]; 6 then 7 printf "usage: %s output.png some funny cat prompt ...\n" \ 8 "$(basename "${0}")" >&2 9 exit 1 10 fi 11 12 outputf="${1}" 13 shift 1 14 prompt="$@" 15 16 sdnegative='nipples, busty, nude, lowres, (worst quality, low quality, normal quality:2), cropped, infant, blur, haze, tiling, poorly drawn hands, poorly drawn feet, poorly drawn face, out of frame, extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, signature, cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face, blurry, draft, grainy, nsfw' 17 sdthreads=16 18 19 sdwidth=512 20 case "${prompt}" in 21 *width=*) 22 sdwidth="$(printf "${prompt}\n" \ 23 | sed 's, ,\n,g' \ 24 | grep "^width=" \ 25 | sed 's,.*=,,')" 26 prompt="$(printf "${prompt}\n" \ 27 | sed 's, ,\n,g' \ 28 | grep -v "^width=" \ 29 | paste -sd ' ')" 30 ;; 31 esac 32 33 sdheight=512 34 case "${prompt}" in 35 *height=*) 36 sdheight="$(printf "${prompt}\n" \ 37 | sed 's, ,\n,g' \ 38 | grep "^height=" \ 39 | sed 's,.*=,,')" 40 prompt="$(printf "${prompt}\n" \ 41 | sed 's, ,\n,g' \ 42 | grep -v "^height=" \ 43 | paste -sd ' ')" 44 ;; 45 esac 46 47 sdsteps=20 48 case "${prompt}" in 49 *steps=*) 50 sdsteps="$(printf "${prompt}\n" \ 51 | sed 's, ,\n,g' \ 52 | grep "^steps=" \ 53 | sed 's,.*=,,')" 54 prompt="$(printf "${prompt}\n" \ 55 | sed 's, ,\n,g' \ 56 | grep -v "^steps=" \ 57 | paste -sd ' ')" 58 ;; 59 esac 60 61 sdscale=8 62 case "${prompt}" in 63 *scale=*) 64 sdscale="$(printf "${prompt}\n" \ 65 | sed 's, ,\n,g' \ 66 | grep "^scale=" \ 67 | sed 's,.*=,,')" 68 prompt="$(printf "${prompt}\n" \ 69 | sed 's, ,\n,g' \ 70 | grep -v "^scale=" \ 71 | paste -sd ' ')" 72 ;; 73 esac 74 75 function local_sd() { 76 outputf="${1}" 77 prompt="${2}" 78 79 sdbase="/br/ai/stable-diffusion.cpp" 80 sdcmd="${sdbase}/build/bin/sd \ 81 -t ${sdthreads} \ 82 --steps ${sdsteps} \ 83 -s -1 \ 84 -H ${sdheight} \ 85 -W ${sdwidth} \ 86 --cfg-scale ${sdscale}" 87 sdmodel="${sdbase}/${SD_MODEL:-models/epicphotogasm_x.f16.gguf}" 88 89 if mountpoint -q /br/ai/tmp; 90 then 91 sdbasename="$(basename "${sdmodel}")" 92 sdtmppath="/br/ai/tmp/${sdbasename}" 93 [ ! -r "${sdtmppath}" ] && cp "${sdmodel}" /br/ai/tmp 94 [ -r "${sttmppath}" ] && sdmodel="${sdtmppath}" 95 fi 96 97 ${sdcmd} --type f16 -m ${sdmodel} -o "${outputf}" -p "${prompt}" -n "${sdnegative}" >/dev/null 2>&1 98 #${sdcmd} -m ${sdmodel} -o "${outputf}" -p "$@" -n "${sdnegative}" -v 99 } 100 101 function remote_sd() { 102 outputf="${1}" 103 ofilename="$(basename "${outputf}")" 104 prompt="${2}" 105 106 sdbase="/home/annna/scm/stable-diffusion.cpp" 107 sdcmd="${sdbase}/build/bin/sd \ 108 -t ${sdthreads} \ 109 --steps ${sdsteps} \ 110 -s -1 \ 111 -H ${sdheight} \ 112 -W ${sdwidth} \ 113 --cfg-scale ${sdscale}" 114 sdmodel="${sdbase}/${SD_MODEL:-models/epicphotogasm_x.f16.gguf}" 115 116 ollama-gpu \ 117 "$(printf '%q ' ${sdcmd} --type f16 -m ${sdmodel} -o "/tmp/${ofilename}" -p "${prompt}" -n "${sdnegative}")" \ 118 >/dev/null 2>&1 119 [ $? -gt 0 ] && return 120 scp -P 5680 "annna@gpu.r-36.net:/tmp/${ofilename}" "${outputf}" 121 ollama-gpu rm "/tmp/${ofilename}" 122 } 123 124 remote_sd "${outputf}" "${prompt}" 125 [ ! -s "${outputf}" ] && local_sd "${outputf}" "${prompt}" 126 [ ! -s "${outputf}" -a -f "${outputf}" ] && rm -f "${outputf}" 127