Ina-v11.1-gguf / split_big_quants.sh
ehartford's picture
Add files using upload-large-folder tool
793fac3 verified
#!/bin/bash
# Path to llama-gguf-split
SPLIT_TOOL=~/git/llama.cpp/build/bin/llama-gguf-split
# Define the 40GB limit in bytes
LIMIT_BYTES=42949672960 # 40GB (1024^3 * 40)
echo "Starting GGUF splitting for files > 40GB..."
echo "----------------------------------------"
# Find all .gguf files in the current directory
find . -maxdepth 1 -name "*.gguf" -print0 | while IFS= read -r -d $'\0' FILE;
do
# Remove leading ./ for cleaner filename display
FILE_NAME=${FILE#./}
# Skip Ina-v11.1-F16.gguf (original F16 file)
if [[ "$FILE_NAME" == "Ina-v11.1-F16.gguf" ]]; then
echo "Skipping original F16 file: $FILE_NAME"
continue
fi
# Get file size
FILE_SIZE=$(stat -f%z "$FILE_NAME")
if [ "$FILE_SIZE" -gt "$LIMIT_BYTES" ]; then
echo "Processing: $FILE_NAME (Size: $(numfmt --to=iec-i --suffix=B "$FILE_SIZE"))"
# Create directory name (remove .gguf extension)
DIR_NAME="${FILE_NAME%.gguf}"
mkdir -p "$DIR_NAME"
echo " Created directory: $DIR_NAME"
echo " Splitting '$FILE_NAME' into '$DIR_NAME/'..."
# Change to the new directory to run the split command
pushd "$DIR_NAME" > /dev/null
# Run split command: GGUF_IN is relative path, GGUF_OUT is basename as prefix
"$SPLIT_TOOL" --split-max-size 40G "../$FILE_NAME" "$(basename "$FILE_NAME" .gguf)"
SPLIT_EXIT=$?
# Change back to original directory
popd > /dev/null
if [ $SPLIT_EXIT -eq 0 ]; then
echo "✅ Split successful. Removing original large file: $FILE_NAME"
rm "$FILE_NAME"
else
echo "❌ Splitting failed for $FILE_NAME (Error code: $SPLIT_EXIT). Keeping original file."
fi
else
echo "Skipping $FILE_NAME (Size: $(numfmt --to=iec-i --suffix=B "$FILE_SIZE")) - smaller than 40GB."
fi
echo "----------------------------------------"
done
echo "GGUF splitting complete."