kimodo-mrp.ccc/scripts/convert_llm2vec_bundle.sh
2026-08-22 09:40:35 +01:00

39 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Build the serial native text bundle. Run this once inside `nix develop`;
# the Python converter itself has no network or framework dependency.
set -euo pipefail
if [[ $# -ne 2 && $# -ne 4 ]]; then
echo "usage: $0 BASE_MODEL_DIR OUTPUT_DIR [FIRST_LAYER LAST_LAYER]" >&2
exit 2
fi
base=$1
output=$2
root=$(cd "$(dirname "$0")/.." && pwd)
mkdir -p "$output"
first=0
last=31
if [[ $# -eq 2 ]]; then
python3 "$root/scripts/convert_llm2vec_tokenizer_to_gguf.py" \
--tokenizer "$base/tokenizer.json" --output "$output/tokenizer.gguf"
python3 "$root/scripts/convert_llm2vec_layer_to_gguf.py" \
--base "$base" --mntp-adapter "$root/models/llm2vec-mntp-adapter" \
--supervised-adapter "$root/models/llm2vec-adapter" --embedding \
--output "$output/embedding.gguf"
python3 "$root/scripts/convert_llm2vec_layer_to_gguf.py" \
--base "$base" --mntp-adapter "$root/models/llm2vec-mntp-adapter" \
--supervised-adapter "$root/models/llm2vec-adapter" --final-norm \
--output "$output/final-norm.gguf"
else
first=$3
last=$4
fi
for layer in $(seq "$first" "$last"); do
printf -v name 'layer-%02d.gguf' "$layer"
python3 "$root/scripts/convert_llm2vec_layer_to_gguf.py" \
--base "$base" --mntp-adapter "$root/models/llm2vec-mntp-adapter" \
--supervised-adapter "$root/models/llm2vec-adapter" --layer "$layer" \
--output "$output/$name"
done