comparemodels.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #! /usr/bin/env bash
  2. # Compare multiple models by running them with the same questions
  3. NUMBEROFCHOICES=4
  4. SELECTIONS=()
  5. declare -a SUMS=()
  6. # Get the list of models
  7. CHOICES=$(ollama list | awk '{print $1}')
  8. # Select which models to run as a comparison
  9. echo "Select $NUMBEROFCHOICES models to compare:"
  10. select ITEM in $CHOICES; do
  11. if [[ -n $ITEM ]]; then
  12. echo "You have selected $ITEM"
  13. SELECTIONS+=("$ITEM")
  14. ((COUNT++))
  15. if [[ $COUNT -eq $NUMBEROFCHOICES ]]; then
  16. break
  17. fi
  18. else
  19. echo "Invalid selection"
  20. fi
  21. done
  22. # Loop through each of the selected models
  23. for ITEM in "${SELECTIONS[@]}"; do
  24. echo "--------------------------------------------------------------"
  25. echo "Loading the model $ITEM into memory"
  26. ollama run "$ITEM" ""
  27. echo "--------------------------------------------------------------"
  28. echo "Running the questions through the model $ITEM"
  29. COMMAND_OUTPUT=$(ollama run "$ITEM" --verbose < sourcequestions.txt 2>&1| tee /dev/stderr)
  30. # eval duration is sometimes listed in seconds and sometimes in milliseconds.
  31. # Add up the values for each model
  32. SUM=$(echo "$COMMAND_OUTPUT" | awk '
  33. /eval duration:/ {
  34. value = $3
  35. if (index(value, "ms") > 0) {
  36. gsub("ms", "", value)
  37. value /= 1000
  38. } else {
  39. gsub("s", "", value)
  40. }
  41. sum += value
  42. }
  43. END { print sum }')
  44. SUMS+=("All questions for $ITEM completed in $SUM seconds")
  45. done
  46. echo ""
  47. echo "--------------------------------------------------------------"
  48. echo -e "Sums of eval durations for each run:"
  49. for val in "${SUMS[@]}"; do
  50. echo "$val"
  51. done
  52. echo "--------------------------------------------------------------"
  53. echo "Comparison complete. Now you can decide"
  54. echo "which model is best."
  55. echo "--------------------------------------------------------------"