1
0

compare-embeddings-logits.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. set -e
  3. MODEL_PATH="${1:-"$MODEL_PATH"}"
  4. MODEL_NAME="${2:-$(basename "$MODEL_PATH")}"
  5. if [ -t 0 ]; then
  6. CPP_EMBEDDINGS="data/llamacpp-${MODEL_NAME}-embeddings.bin"
  7. else
  8. # Process piped JSON data and convert to binary (matching logits.cpp format)
  9. TEMP_FILE=$(mktemp /tmp/tmp.XXXXXX.binn)
  10. python3 -c "
  11. import json
  12. import sys
  13. import struct
  14. data = json.load(sys.stdin)
  15. # Flatten all embeddings completely
  16. flattened = []
  17. for item in data:
  18. embedding = item['embedding']
  19. for token_embedding in embedding:
  20. flattened.extend(token_embedding)
  21. print(f'Total embedding values: {len(flattened)}', file=sys.stderr)
  22. # Write as binary floats - matches logitc.cpp fwrite format
  23. with open('$TEMP_FILE', 'wb') as f:
  24. for value in flattened:
  25. f.write(struct.pack('f', value))
  26. "
  27. CPP_EMBEDDINGS="$TEMP_FILE"
  28. trap "rm -f $TEMP_FILE" EXIT
  29. fi
  30. python scripts/utils/semantic_check.py --model-path $MODEL_PATH \
  31. --python-embeddings data/pytorch-${MODEL_NAME}-embeddings.bin \
  32. --cpp-embeddings $CPP_EMBEDDINGS \
  33. --prompt "Hello world today" \
  34. --causal