Makefile 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. # Validation functions
  2. define validate_model_path
  3. @if [ -z "$(MODEL_PATH)" ]; then \
  4. echo "Error: MODEL_PATH must be provided either as:"; \
  5. echo " 1. Environment variable: export MODEL_PATH=/path/to/model"; \
  6. echo " 2. Command line argument: make $(1) MODEL_PATH=/path/to/model"; \
  7. exit 1; \
  8. fi
  9. endef
  10. define validate_embedding_model_path
  11. @if [ -z "$(EMBEDDING_MODEL_PATH)" ]; then \
  12. echo "Error: EMBEDDING_MODEL_PATH must be provided either as:"; \
  13. echo " 1. Environment variable: export EMBEDDING_MODEL_PATH=/path/to/model"; \
  14. echo " 2. Command line argument: make $(1) EMBEDDING_MODEL_PATH=/path/to/model"; \
  15. exit 1; \
  16. fi
  17. endef
  18. ###
  19. ### Casual Model targets/recipes
  20. ###
  21. causal-convert-model-bf16: OUTTYPE=bf16
  22. causal-convert-model-bf16: causal-convert-model
  23. causal-convert-model:
  24. $(call validate_model_path,causal-convert-model)
  25. @MODEL_NAME="$(MODEL_NAME)" OUTTYPE="$(OUTTYPE)" MODEL_PATH="$(MODEL_PATH)" \
  26. METADATA_OVERRIDE="$(METADATA_OVERRIDE)" \
  27. ./scripts/causal/convert-model.sh
  28. causal-run-original-model:
  29. $(call validate_model_path,causal-run-original-model)
  30. @MODEL_PATH="$(MODEL_PATH)" ./scripts/causal/run-org-model.py
  31. causal-run-converted-model:
  32. @CONVERTED_MODEL="$(CONVERTED_MODEL)" ./scripts/causal/run-converted-model.sh
  33. causal-verify-logits: causal-run-original-model causal-run-converted-model
  34. @./scripts/causal/compare-logits.py
  35. @MODEL_PATH="$(MODEL_PATH)" ./scripts/utils/check-nmse.py -m ${MODEL_PATH}
  36. causal-run-original-embeddings:
  37. @./scripts/causal/run-casual-gen-embeddings-org.sh
  38. causal-run-converted-embeddings:
  39. @./scripts/causal/run-converted-model-embeddings-logits.sh
  40. causal-verify-embeddings: causal-run-original-embeddings causal-run-converted-embeddings
  41. @./scripts/causal/compare-embeddings-logits.sh
  42. causal-inspect-original-model:
  43. @./scripts/utils/inspect-org-model.py
  44. causal-inspect-converted-model:
  45. @./scripts/utils/inspect-converted-model.sh
  46. causal-start-embedding-server:
  47. @./scripts/utils/run-embedding-server.sh ${CONVERTED_MODEL}
  48. causal-curl-embedding-endpoint: causal-run-original-embeddings
  49. @./scripts/utils/curl-embedding-server.sh | ./scripts/causal/compare-embeddings-logits.sh
  50. causal-quantize-Q8_0: QUANTIZED_TYPE = Q8_0
  51. causal-quantize-Q8_0: causal-quantize-model
  52. causal-quantize-Q4_0: QUANTIZED_TYPE = Q4_0
  53. causal-quantize-Q4_0: causal-quantize-model
  54. causal-quantize-model:
  55. @CONVERTED_MODEL="$(CONVERTED_MODEL)" QUANTIZED_TYPE="$(QUANTIZED_TYPE)" ./scripts/utils/quantize.sh ${CONVERTED_MODEL} ${QUANTIZED_TYPE}
  56. @echo "Export the quantized model path to QUANTIZED_MODEL variable in your environment"
  57. causal-run-quantized-model:
  58. @QUANTIZED_MODEL="$(QUANTIZED_MODEL)" ./scripts/causal/run-converted-model.sh ${QUANTIZED_MODEL}
  59. ###
  60. ### Embedding Model targets/recipes
  61. ###
  62. embedding-convert-model-bf16: OUTTYPE=bf16
  63. embedding-convert-model-bf16: embedding-convert-model
  64. embedding-convert-model:
  65. $(call validate_embedding_model_path,embedding-convert-model)
  66. @MODEL_NAME="$(MODEL_NAME)" OUTTYPE="$(OUTTYPE)" MODEL_PATH="$(EMBEDDING_MODEL_PATH)" \
  67. METADATA_OVERRIDE="$(METADATA_OVERRIDE)" \
  68. ./scripts/embedding/convert-model.sh
  69. embedding-run-original-model:
  70. $(call validate_embedding_model_path,embedding-run-original-model)
  71. @EMBEDDING_MODEL_PATH="$(EMBEDDING_MODEL_PATH)" ./scripts/embedding/run-original-model.py
  72. embedding-run-converted-model:
  73. @CONVERTED_EMBEDDING_MODEL="$(CONVERTED_EMBEDDING_MODEL)" ./scripts/embedding/run-converted-model.sh ${CONVERTED_EMBEDDING_MODEL}
  74. embedding-verify-logits: embedding-run-original-model embedding-run-converted-model
  75. @./scripts/embedding/compare-embeddings-logits.sh
  76. embedding-inspect-original-model:
  77. $(call validate_embedding_model_path,embedding-inspect-original-model)
  78. @EMBEDDING_MODEL_PATH="$(EMBEDDING_MODEL_PATH)" ./scripts/utils/inspect-org-model.py -m ${EMBEDDING_MODEL_PATH}
  79. embedding-inspect-converted-model:
  80. @CONVERTED_EMBEDDING_MODEL="$(CONVERTED_EMBEDDING_MODEL)" ./scripts/utils/inspect-converted-model.sh ${CONVERTED_EMBEDDING_MODEL}
  81. embedding-start-embedding-server:
  82. @./scripts/utils/run-embedding-server.sh ${CONVERTED_EMBEDDING_MODEL}
  83. embedding-curl-embedding-endpoint:
  84. @./scripts/utils/curl-embedding-server.sh | ./scripts/embedding/compare-embeddings-logits.sh
  85. embedding-quantize-Q8_0: QUANTIZED_TYPE = Q8_0
  86. embedding-quantize-Q8_0: embedding-quantize-model
  87. embedding-quantize-Q4_0: QUANTIZED_TYPE = Q4_0
  88. embedding-quantize-Q4_0: embedding-quantize-model
  89. embedding-quantize-model:
  90. @./scripts/utils/quantize.sh ${CONVERTED_EMBEDDING_MODEL} ${QUANTIZED_TYPE}
  91. @echo "Export the quantized model path to QUANTIZED_EMBEDDING_MODEL variable in your environment"
  92. embedding-run-quantized-model:
  93. @./scripts/embedding/run-converted-model.sh ${QUANTIZED_EMBEDDING_MODEL}
  94. ###
  95. ### Perplexity targets/recipes
  96. ###
  97. perplexity-data-gen:
  98. CONVERTED_MODEL="$(CONVERTED_MODEL)" ./scripts/utils/perplexity-gen.sh
  99. perplexity-run-full:
  100. QUANTIZED_MODEL="$(QUANTIZED_MODEL)" LOOGITS_FILE="$(LOGITS_FILE)" \
  101. ./scripts/utils/perplexity-run.sh
  102. perplexity-run:
  103. QUANTIZED_MODEL="$(QUANTIZED_MODEL)" ./scripts/utils/perplexity-run-simple.sh
  104. ###
  105. ### HuggingFace targets/recipes
  106. ###
  107. hf-create-model:
  108. @./scripts/utils/hf-create-model.py -m "${MODEL_NAME}" -ns "${NAMESPACE}" -b "${ORIGINAL_BASE_MODEL}"
  109. hf-create-model-private:
  110. @./scripts/utils/hf-create-model.py -m "${MODEL_NAME}" -ns "${NAMESPACE}" -b "${ORIGINAL_BASE_MODEL}" -p
  111. hf-upload-gguf-to-model:
  112. @./scripts/utils/hf-upload-gguf-model.py -m "${MODEL_PATH}" -r "${REPO_ID}" -o "${NAME_IN_REPO}"
  113. hf-create-collection:
  114. @./scripts/utils/hf-create-collection.py -n "${NAME}" -d "${DESCRIPTION}" -ns "${NAMESPACE}"
  115. hf-add-model-to-collection:
  116. @./scripts/utils/hf-add-model-to-collection.py -c "${COLLECTION}" -m "${MODEL}"
  117. .PHONY: clean
  118. clean:
  119. @${RM} -rf data .converted_embedding_model.txt .converted_model.txt .embedding_model_name.txt .model_name.txt