Spaces:
Runtime error
Runtime error
Create ollamafy.sh
Browse filesworking quant push code
- ollamafy.sh +78 -0
ollamafy.sh
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#!/bin/bash
|
2 |
+
|
3 |
+
QUANTIZATIONS=(
|
4 |
+
"q4_0"
|
5 |
+
"q4_1"
|
6 |
+
"q5_0"
|
7 |
+
"q5_1"
|
8 |
+
"q8_0"
|
9 |
+
"q3_K_S"
|
10 |
+
"q3_K_M"
|
11 |
+
"q3_K_L"
|
12 |
+
"q4_K_S"
|
13 |
+
"q4_K_M"
|
14 |
+
"q5_K_S"
|
15 |
+
"q5_K_M"
|
16 |
+
"q6_K"
|
17 |
+
"q2_K"
|
18 |
+
"fp16"
|
19 |
+
)
|
20 |
+
|
21 |
+
while [[ $# -gt 0 ]]; do
|
22 |
+
case $1 in
|
23 |
+
-q|--quant) QUANTIZATION="$2"; shift 2 ;;
|
24 |
+
-u|--username) USERNAME="$2"; shift 2 ;;
|
25 |
+
-m|--model) MODEL_NAME="$2"; shift 2 ;;
|
26 |
+
-v|--version) VERSION="$2"; shift 2 ;;
|
27 |
+
-p|--parameters) PARAMETERS="$2"; shift 2 ;;
|
28 |
+
-l|--latest) LATEST="$2"; shift 2 ;;
|
29 |
+
-f|--file) MODEL_FILE="$2"; shift 2 ;;
|
30 |
+
*) echo "Unknown flag: $1"; exit 1 ;;
|
31 |
+
esac
|
32 |
+
done
|
33 |
+
|
34 |
+
if [ -z "$USERNAME" ] || [ -z "$MODEL_NAME" ] || [ -z "$MODEL_FILE" ]; then
|
35 |
+
echo "Error: --username, --model, and --file are required"
|
36 |
+
exit 1
|
37 |
+
fi
|
38 |
+
|
39 |
+
USERNAME=$(echo "$USERNAME" | tr '[:upper:]' '[:lower:]')
|
40 |
+
MODEL_NAME=$(echo "$MODEL_NAME" | tr '[:upper:]' '[:lower:]')
|
41 |
+
VERSION=$(echo "$VERSION" | tr '[:upper:]' '[:lower:]')
|
42 |
+
PARAMETERS=$(echo "$PARAMETERS" | tr '[:upper:]' '[:lower:]')
|
43 |
+
LATEST=$(echo "$LATEST" | tr '[:upper:]' '[:lower:]')
|
44 |
+
|
45 |
+
if [ -n "$LATEST" ] && [[ ! " ${QUANTIZATIONS[@]} " =~ " $LATEST " ]]; then
|
46 |
+
echo "Error: LATEST must be one of the available quantizations"
|
47 |
+
exit 1
|
48 |
+
fi
|
49 |
+
|
50 |
+
if [ -n "$QUANTIZATION" ]; then
|
51 |
+
QUANTIZATIONS=("$QUANTIZATION")
|
52 |
+
fi
|
53 |
+
|
54 |
+
for QUANT in "${QUANTIZATIONS[@]}"; do
|
55 |
+
MODEL_TAG="$USERNAME/$MODEL_NAME:$QUANT"
|
56 |
+
|
57 |
+
[ -n "$PARAMETERS" ] && [ -n "$VERSION" ] && MODEL_TAG="$USERNAME/$MODEL_NAME:$PARAMETERS-$VERSION-$QUANT"
|
58 |
+
[ -n "$PARAMETERS" ] && MODEL_TAG="$USERNAME/$MODEL_NAME:$PARAMETERS-$QUANT"
|
59 |
+
[ -n "$VERSION" ] && MODEL_TAG="$USERNAME/$MODEL_NAME:$VERSION-$QUANT"
|
60 |
+
|
61 |
+
|
62 |
+
if [ "$QUANT" = "fp16" ]; then
|
63 |
+
ollama create -f "$MODEL_FILE" "$MODEL_TAG"
|
64 |
+
else
|
65 |
+
ollama create --quantize "$QUANT" -f "$MODEL_FILE" "$MODEL_TAG"
|
66 |
+
fi
|
67 |
+
|
68 |
+
ollama push "$MODEL_TAG"
|
69 |
+
|
70 |
+
if [ "$LATEST" = "$QUANT" ]; then
|
71 |
+
ollama cp "$MODEL_TAG" "$USERNAME/$MODEL_NAME:latest"
|
72 |
+
ollama push "$USERNAME/$MODEL_NAME:latest"
|
73 |
+
|
74 |
+
[ -n "$VERSION" ] && ( ollama cp "$MODEL_TAG" "$USERNAME/$MODEL_NAME:$VERSION"; ollama push "$USERNAME/$MODEL_NAME:$VERSION" )
|
75 |
+
fi
|
76 |
+
|
77 |
+
|
78 |
+
done
|