diff --git a/common/arg.cpp b/common/arg.cpp index 1e04852bfb..943d0766fb 100644 --- a/common/arg.cpp +++ b/common/arg.cpp @@ -3340,7 +3340,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex params.speculative.draft.cpuparams_batch.n_threads = std::thread::hardware_concurrency(); } } - ).set_examples({LLAMA_EXAMPLE_SPECULATIVE, LLAMA_EXAMPLE_SERVER, LLAMA_EXAMPLE_CLI})); + ).set_spec().set_examples({LLAMA_EXAMPLE_SPECULATIVE, LLAMA_EXAMPLE_SERVER, LLAMA_EXAMPLE_CLI})); add_opt(common_arg( {"--spec-draft-cpu-mask", "-Cd", "--cpu-mask-draft"}, "M", "Draft model CPU affinity mask. Complements cpu-range-draft (default: same as --cpu-mask)", diff --git a/tests/test-arg-parser.cpp b/tests/test-arg-parser.cpp index 07d25774b7..0dd8422e73 100644 --- a/tests/test-arg-parser.cpp +++ b/tests/test-arg-parser.cpp @@ -40,8 +40,12 @@ int main(void) { } } + // exclude spec args from this check + // ref: https://github.com/ggml-org/llama.cpp/pull/22397 + const bool skip = opt.is_spec; + // ensure shorter argument precedes longer argument - if (opt.args.size() > 1) { + if (!skip && opt.args.size() > 1) { const std::string first(opt.args.front()); const std::string last(opt.args.back()); @@ -124,7 +128,7 @@ int main(void) { assert(params.n_batch == 9090); // --draft cannot be used outside llama-speculative - argv = {"binary_name", "--draft", "123"}; + argv = {"binary_name", "--spec-draft-n-max", "123"}; assert(true == common_params_parse(argv.size(), list_str_to_char(argv).data(), params, LLAMA_EXAMPLE_SPECULATIVE)); assert(params.speculative.draft.n_max == 123);