Spaces:
Runtime error
Runtime error
QUANTIZATIONS=( | |
"q4_0" | |
"q4_1" | |
"q5_0" | |
"q5_1" | |
"q8_0" | |
"q3_K_S" | |
"q3_K_M" | |
"q3_K_L" | |
"q4_K_S" | |
"q4_K_M" | |
"q5_K_S" | |
"q5_K_M" | |
"q6_K" | |
"q2_K" | |
"fp16" | |
) | |
while [[ $# -gt 0 ]]; do | |
case $1 in | |
-q|--quant) QUANTIZATION="$2"; shift 2 ;; | |
-u|--username) USERNAME="$2"; shift 2 ;; | |
-m|--model) MODEL_NAME="$2"; shift 2 ;; | |
-v|--version) VERSION="$2"; shift 2 ;; | |
-p|--parameters) PARAMETERS="$2"; shift 2 ;; | |
-l|--latest) LATEST="$2"; shift 2 ;; | |
-f|--file) MODEL_FILE="$2"; shift 2 ;; | |
*) echo "Unknown flag: $1"; exit 1 ;; | |
esac | |
done | |
if [ -z "$USERNAME" ] || [ -z "$MODEL_NAME" ] || [ -z "$MODEL_FILE" ]; then | |
echo "Error: --username, --model, and --file are required" | |
exit 1 | |
fi | |
USERNAME=$(echo "$USERNAME" | tr '[:upper:]' '[:lower:]') | |
MODEL_NAME=$(echo "$MODEL_NAME" | tr '[:upper:]' '[:lower:]') | |
VERSION=$(echo "$VERSION" | tr '[:upper:]' '[:lower:]') | |
PARAMETERS=$(echo "$PARAMETERS" | tr '[:upper:]' '[:lower:]') | |
LATEST=$(echo "$LATEST" | tr '[:upper:]' '[:lower:]') | |
if [ -n "$LATEST" ] && [[ ! " ${QUANTIZATIONS[@]} " =~ " $LATEST " ]]; then | |
echo "Error: LATEST must be one of the available quantizations" | |
exit 1 | |
fi | |
if [ -n "$QUANTIZATION" ]; then | |
QUANTIZATIONS=("$QUANTIZATION") | |
fi | |
for QUANT in "${QUANTIZATIONS[@]}"; do | |
MODEL_TAG="$USERNAME/$MODEL_NAME:$QUANT" | |
[ -n "$PARAMETERS" ] && [ -n "$VERSION" ] && MODEL_TAG="$USERNAME/$MODEL_NAME:$PARAMETERS-$VERSION-$QUANT" | |
[ -n "$PARAMETERS" ] && MODEL_TAG="$USERNAME/$MODEL_NAME:$PARAMETERS-$QUANT" | |
[ -n "$VERSION" ] && MODEL_TAG="$USERNAME/$MODEL_NAME:$VERSION-$QUANT" | |
if [ "$QUANT" = "fp16" ]; then | |
ollama create -f "$MODEL_FILE" "$MODEL_TAG" | |
else | |
ollama create --quantize "$QUANT" -f "$MODEL_FILE" "$MODEL_TAG" | |
fi | |
ollama push "$MODEL_TAG" | |
if [ "$LATEST" = "$QUANT" ]; then | |
ollama cp "$MODEL_TAG" "$USERNAME/$MODEL_NAME:latest" | |
ollama push "$USERNAME/$MODEL_NAME:latest" | |
[ -n "$VERSION" ] && ( ollama cp "$MODEL_TAG" "$USERNAME/$MODEL_NAME:$VERSION"; ollama push "$USERNAME/$MODEL_NAME:$VERSION" ) | |
fi | |
done |