URI: 
       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