mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-31 08:51:55 +00:00 
			
		
		
		
	Deprecation warning to assist with migration to new binary names (#8283)
* Adding a simple program to provide a deprecation warning that can exist to help people notice the binary name change from #7809 and migrate to the new filenames. * Build legacy replacement binaries only if they already exist. Check for their existence every time so that they are not ignored.
This commit is contained in:
		
							
								
								
									
										78
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								Makefile
									
									
									
									
									
								
							| @@ -64,10 +64,14 @@ TEST_TARGETS = \ | |||||||
| 	tests/test-tokenizer-1-spm | 	tests/test-tokenizer-1-spm | ||||||
|  |  | ||||||
| # Legacy build targets that were renamed in #7809, but should still be removed when the project is cleaned | # Legacy build targets that were renamed in #7809, but should still be removed when the project is cleaned | ||||||
| LEGACY_TARGETS = main quantize quantize-stats perplexity imatrix embedding vdot q8dot train-text-from-scratch convert-llama2c-to-ggml \ | LEGACY_TARGETS_CLEAN = main quantize quantize-stats perplexity imatrix embedding vdot q8dot train-text-from-scratch convert-llama2c-to-ggml \ | ||||||
| 	simple batched batched-bench save-load-state server gguf gguf-split eval-callback llama-bench libllava.a llava-cli baby-llama \ | 	simple batched batched-bench save-load-state server gguf gguf-split eval-callback llama-bench libllava.a llava-cli baby-llama \ | ||||||
| 	retrieval speculative infill tokenize benchmark-matmult parallel finetune export-lora lookahead lookup passkey gritlm | 	retrieval speculative infill tokenize benchmark-matmult parallel finetune export-lora lookahead lookup passkey gritlm | ||||||
|  |  | ||||||
|  | # Legacy build targets that were renamed in #7809, but we want to build binaries that for them that output a deprecation warning if people try to use them. | ||||||
|  | #  We don't want to clutter things too much, so we only build replacements for the most commonly used binaries. | ||||||
|  | LEGACY_TARGETS_BUILD = main quantize perplexity embedding server finetune | ||||||
|  |  | ||||||
| # Deprecation aliases | # Deprecation aliases | ||||||
| ifdef LLAMA_CUBLAS | ifdef LLAMA_CUBLAS | ||||||
| $(error LLAMA_CUBLAS is removed. Use GGML_CUDA instead.) | $(error LLAMA_CUBLAS is removed. Use GGML_CUDA instead.) | ||||||
| @@ -193,7 +197,7 @@ ifdef GGML_RPC | |||||||
| 	BUILD_TARGETS += rpc-server | 	BUILD_TARGETS += rpc-server | ||||||
| endif | endif | ||||||
|  |  | ||||||
| default: $(BUILD_TARGETS) | default: $(BUILD_TARGETS) $(LEGACY_TARGETS_BUILD) | ||||||
|  |  | ||||||
| test: $(TEST_TARGETS) | test: $(TEST_TARGETS) | ||||||
| 	@failures=0; \ | 	@failures=0; \ | ||||||
| @@ -228,7 +232,7 @@ test: $(TEST_TARGETS) | |||||||
| 	fi | 	fi | ||||||
| 	@echo 'All tests passed.' | 	@echo 'All tests passed.' | ||||||
|  |  | ||||||
| all: $(BUILD_TARGETS) $(TEST_TARGETS) | all: $(BUILD_TARGETS) $(TEST_TARGETS) $(LEGACY_TARGETS_BUILD) | ||||||
|  |  | ||||||
| ifdef RISCV_CROSS_COMPILE | ifdef RISCV_CROSS_COMPILE | ||||||
| CC	:= riscv64-unknown-linux-gnu-gcc | CC	:= riscv64-unknown-linux-gnu-gcc | ||||||
| @@ -1098,7 +1102,7 @@ clean: | |||||||
| 	rm -vrf ggml/src/ggml-cuda/template-instances/*.o | 	rm -vrf ggml/src/ggml-cuda/template-instances/*.o | ||||||
| 	rm -rvf $(BUILD_TARGETS) | 	rm -rvf $(BUILD_TARGETS) | ||||||
| 	rm -rvf $(TEST_TARGETS) | 	rm -rvf $(TEST_TARGETS) | ||||||
| 	rm -rvf $(LEGACY_TARGETS) | 	rm -rvf $(LEGACY_TARGETS_CLEAN) | ||||||
| 	find examples pocs -type f -name "*.o" -delete | 	find examples pocs -type f -name "*.o" -delete | ||||||
|  |  | ||||||
| # | # | ||||||
| @@ -1494,3 +1498,69 @@ llama-q8dot: pocs/vdot/q8dot.cpp ggml/src/ggml.o \ | |||||||
| 	$(OBJ_GGML) | 	$(OBJ_GGML) | ||||||
| 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
| 	$(CXX) $(CXXFLAGS) $(filter-out $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | 	$(CXX) $(CXXFLAGS) $(filter-out $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  |  | ||||||
|  | # | ||||||
|  | # Deprecated binaries that we want to keep around long enough for people to migrate to the new filenames, then these can be removed. | ||||||
|  | # | ||||||
|  | # Mark legacy binary targets as .PHONY so that they are always checked. | ||||||
|  | .PHONY: main quantize perplexity embedding server finetune | ||||||
|  |  | ||||||
|  | main: examples/deprecation-warning/deprecation-warning.cpp | ||||||
|  | ifneq (,$(wildcard main)) | ||||||
|  | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
|  | 	$(CXX) $(CXXFLAGS) $(filter-out $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  | 	@echo "#########" | ||||||
|  | 	@echo "WARNING: The 'main' binary is deprecated. Please use 'llama-cli' instead." | ||||||
|  | 	@echo "  Remove the 'main' binary to remove this warning." | ||||||
|  | 	@echo "#########" | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | quantize: examples/deprecation-warning/deprecation-warning.cpp | ||||||
|  | ifneq (,$(wildcard quantize)) | ||||||
|  | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
|  | 	$(CXX) $(CXXFLAGS) $(filter-out %.h $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  | 	@echo "#########" | ||||||
|  | 	@echo "WARNING: The 'quantize' binary is deprecated. Please use 'llama-quantize' instead." | ||||||
|  | 	@echo "  Remove the 'quantize' binary to remove this warning." | ||||||
|  | 	@echo "#########" | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | perplexity: examples/deprecation-warning/deprecation-warning.cpp | ||||||
|  | ifneq (,$(wildcard perplexity)) | ||||||
|  | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
|  | 	$(CXX) $(CXXFLAGS) $(filter-out %.h $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  | 	@echo "#########" | ||||||
|  | 	@echo "WARNING: The 'perplexity' binary is deprecated. Please use 'llama-perplexity' instead." | ||||||
|  | 	@echo "  Remove the 'perplexity' binary to remove this warning." | ||||||
|  | 	@echo "#########" | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | embedding: examples/deprecation-warning/deprecation-warning.cpp | ||||||
|  | ifneq (,$(wildcard embedding)) | ||||||
|  | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
|  | 	$(CXX) $(CXXFLAGS) $(filter-out %.h $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  | 	@echo "#########" | ||||||
|  | 	@echo "WARNING: The 'embedding' binary is deprecated. Please use 'llama-embedding' instead." | ||||||
|  | 	@echo "  Remove the 'embedding' binary to remove this warning." | ||||||
|  | 	@echo "#########" | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | server: examples/deprecation-warning/deprecation-warning.cpp | ||||||
|  | ifneq (,$(wildcard server)) | ||||||
|  | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
|  | 	$(CXX) $(CXXFLAGS) $(filter-out %.h $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  | 	@echo "#########" | ||||||
|  | 	@echo "WARNING: The 'server' binary is deprecated. Please use 'llama-server' instead." | ||||||
|  | 	@echo "  Remove the 'server' binary to remove this warning." | ||||||
|  | 	@echo "#########" | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | finetune: examples/deprecation-warning/deprecation-warning.cpp | ||||||
|  | ifneq (,$(wildcard finetune)) | ||||||
|  | 	$(CXX) $(CXXFLAGS) -c $< -o $(call GET_OBJ_FILE, $<) | ||||||
|  | 	$(CXX) $(CXXFLAGS) $(filter-out %.h $<,$^) $(call GET_OBJ_FILE, $<) -o $@ $(LDFLAGS) | ||||||
|  | 	@echo "#########" | ||||||
|  | 	@echo "WARNING: The 'finetune' binary is deprecated. Please use 'llama-finetune' instead." | ||||||
|  | 	@echo "  Remove the 'finetune' binary to remove this warning." | ||||||
|  | 	@echo "#########" | ||||||
|  | endif | ||||||
|   | |||||||
							
								
								
									
										51
									
								
								examples/deprecation-warning/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								examples/deprecation-warning/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | # Migration notice for binary filenames | ||||||
|  |  | ||||||
|  | > [!IMPORTANT] | ||||||
|  | [2024 Jun 12] Binaries have been renamed w/ a `llama-` prefix. `main` is now `llama-cli`, `server` is `llama-server`, etc (https://github.com/ggerganov/llama.cpp/pull/7809) | ||||||
|  |  | ||||||
|  | This migration was important, but it is a breaking change that may not always be immediately obvious to users. | ||||||
|  |  | ||||||
|  | Please update all scripts and workflows to use the new binary names. | ||||||
|  |  | ||||||
|  | | Old Filename | New Filename | | ||||||
|  | | ---- | ---- | | ||||||
|  | | main | llama-cli | | ||||||
|  | | server | llama-server | | ||||||
|  | | llama-bench | llama-bench | | ||||||
|  | | embedding | llama-embedding | | ||||||
|  | | finetune | llama-finetune | | ||||||
|  | | quantize | llama-quantize | | ||||||
|  | | tokenize | llama-tokenize | | ||||||
|  | | export-lora | llama-export-lora | | ||||||
|  | | libllava.a | libllava.a | | ||||||
|  | | baby-llama | llama-baby-llama | | ||||||
|  | | batched | llama-batched | | ||||||
|  | | batched-bench | llama-batched-bench | | ||||||
|  | | benchmark-matmult | llama-benchmark-matmult | | ||||||
|  | | convert-llama2c-to-ggml | llama-convert-llama2c-to-ggml | | ||||||
|  | | eval-callback | llama-eval-callback | | ||||||
|  | | gbnf-validator | llama-gbnf-validator | | ||||||
|  | | gguf | llama-gguf | | ||||||
|  | | gguf-split | llama-gguf-split | | ||||||
|  | | gritlm | llama-gritlm | | ||||||
|  | | imatrix | llama-imatrix | | ||||||
|  | | infill | llama-infill | | ||||||
|  | | llava-cli | llama-llava-cli | | ||||||
|  | | lookahead | llama-lookahead | | ||||||
|  | | lookup | llama-lookup | | ||||||
|  | | lookup-create | llama-lookup-create | | ||||||
|  | | lookup-merge | llama-lookup-merge | | ||||||
|  | | lookup-stats | llama-lookup-stats | | ||||||
|  | | parallel | llama-parallel | | ||||||
|  | | passkey | llama-passkey | | ||||||
|  | | perplexity | llama-perplexity | | ||||||
|  | | q8dot | llama-q8dot | | ||||||
|  | | quantize-stats | llama-quantize-stats | | ||||||
|  | | retrieval | llama-retrieval | | ||||||
|  | | save-load-state | llama-save-load-state | | ||||||
|  | | simple | llama-simple | | ||||||
|  | | speculative | llama-speculative | | ||||||
|  | | train-text-from-scratch | llama-train-text-from-scratch | | ||||||
|  | | vdot | llama-vdot | | ||||||
|  | | tests/test-c.o | tests/test-c.o | | ||||||
|  |  | ||||||
							
								
								
									
										35
									
								
								examples/deprecation-warning/deprecation-warning.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								examples/deprecation-warning/deprecation-warning.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | // Warns users that this filename was deprecated, and provides a link for more information. | ||||||
|  |  | ||||||
|  | #include <cstdio> | ||||||
|  | #include <string> | ||||||
|  | #include <unordered_map> | ||||||
|  |  | ||||||
|  | // Main | ||||||
|  | int main(int argc, char** argv) { | ||||||
|  |     std::string filename = "main"; | ||||||
|  |     if (argc >= 1) { | ||||||
|  |         filename = argv[0]; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // Get only the program name from the full path | ||||||
|  |     auto pos = filename.find_last_of('/'); | ||||||
|  |     if (pos != std::string::npos) { | ||||||
|  |         filename = filename.substr(pos+1); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // Append "llama-" to the beginning of filename to get the replacemnt filename | ||||||
|  |     auto replacement_filename = "llama-" + filename; | ||||||
|  |  | ||||||
|  |     // The exception is if the filename is "main", then our replacement filename is "llama-cli" | ||||||
|  |     if (filename == "main") { | ||||||
|  |         replacement_filename = "llama-cli"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     fprintf(stdout, "\n"); | ||||||
|  |     fprintf(stdout, "WARNING: The binary '%s' is deprecated.\n", filename.c_str()); | ||||||
|  |     fprintf(stdout, " Please use '%s' instead.\n", replacement_filename.c_str()); | ||||||
|  |     fprintf(stdout, " See https://github.com/ggerganov/llama.cpp/tree/master/examples/deprecation-warning/README.md for more information.\n"); | ||||||
|  |     fprintf(stdout, "\n"); | ||||||
|  |  | ||||||
|  |     return EXIT_FAILURE; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user
	 Clint Herron
					Clint Herron