add comments

This commit is contained in:
Xuan Son Nguyen 2024-09-06 13:42:20 +02:00
parent 79ce128d2a
commit 961bd19da1
2 changed files with 45 additions and 29 deletions

View file

@ -456,6 +456,11 @@ bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params, std::vecto
params.kv_overrides.back().key[0] = 0;
}
if (params.seed == LLAMA_DEFAULT_SEED) {
params.seed = time(NULL);
sparams.seed = params.seed;
}
return true;
}
@ -468,7 +473,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params, std::vector<l
return false;
}
if (params.usage) {
gpt_params_print_usage(options);
gpt_params_print_usage(params, options);
if (params.print_usage) {
params.print_usage(argc, argv);
}
@ -612,7 +617,7 @@ std::string llama_arg::to_string() {
return ss.str();
}
void gpt_params_print_usage(std::vector<llama_arg> & options) {
void gpt_params_print_usage(gpt_params & params, std::vector<llama_arg> & options) {
auto print_options = [](std::vector<llama_arg *> & options) {
for (llama_arg * opt : options) {
printf("%s", opt->to_string().c_str());
@ -622,14 +627,16 @@ void gpt_params_print_usage(std::vector<llama_arg> & options) {
std::vector<llama_arg *> common_options;
std::vector<llama_arg *> specific_options;
for (auto & opt : options) {
if (opt.in_example(LLAMA_EXAMPLE_COMMON)) {
common_options.push_back(&opt);
} else {
// in case multiple LLAMA_EXAMPLE_* are set, we prioritize the LLAMA_EXAMPLE_* matching current example
if (opt.in_example(params.curr_ex)) {
specific_options.push_back(&opt);
} else {
common_options.push_back(&opt);
}
}
printf("----- common options -----\n\n");
print_options(common_options);
// TODO: maybe convert enum llama_example to string
printf("\n\n----- example-specific options -----\n\n");
print_options(specific_options);
}
@ -641,6 +648,7 @@ std::vector<llama_arg> gpt_params_parser_init(gpt_params & params, llama_example
std::vector<llama_arg> gpt_params_parser_init(gpt_params & params, llama_example ex, std::function<void(int, char **)> print_usage) {
std::vector<llama_arg> options;
params.print_usage = print_usage;
params.curr_ex = ex;
llama_sampling_params & sparams = params.sparams;
std::string sampler_type_chars;
@ -1772,14 +1780,14 @@ std::vector<llama_arg> gpt_params_parser_init(gpt_params & params, llama_example
[&params](std::string value) {
params.lora_adapters.push_back({ std::string(value), 1.0 });
}
));
).set_examples({LLAMA_EXAMPLE_COMMON, LLAMA_EXAMPLE_EXPORT_LORA}));
add_opt(llama_arg(
{"--lora-scaled"}, "FNAME", "SCALE",
"path to LoRA adapter with user defined scaling (can be repeated to use multiple adapters)",
[&params](std::string fname, std::string scale) {
params.lora_adapters.push_back({ fname, std::stof(scale) });
}
));
).set_examples({LLAMA_EXAMPLE_COMMON, LLAMA_EXAMPLE_EXPORT_LORA}));
add_opt(llama_arg(
{"--control-vector"}, "FNAME",
"add a control vector\nnote: this argument can be repeated to add multiple control vectors",

View file

@ -63,6 +63,24 @@ int32_t cpu_get_num_math();
// CLI argument parsing
//
enum llama_example {
LLAMA_EXAMPLE_COMMON,
LLAMA_EXAMPLE_SPECULATIVE,
LLAMA_EXAMPLE_MAIN,
LLAMA_EXAMPLE_INFILL,
LLAMA_EXAMPLE_EMBEDDING,
LLAMA_EXAMPLE_PERPLEXITY,
LLAMA_EXAMPLE_RETRIEVAL,
LLAMA_EXAMPLE_PASSKEY,
LLAMA_EXAMPLE_IMATRIX,
LLAMA_EXAMPLE_BENCH,
LLAMA_EXAMPLE_SERVER,
LLAMA_EXAMPLE_CVECTOR_GENERATOR,
LLAMA_EXAMPLE_EXPORT_LORA,
LLAMA_EXAMPLE_COUNT,
};
// dimensionality reduction methods, used by cvector-generator
enum dimre_method {
DIMRE_METHOD_PCA,
@ -79,6 +97,7 @@ struct cpu_params {
};
struct gpt_params {
enum llama_example curr_ex = LLAMA_EXAMPLE_COMMON;
uint32_t seed = LLAMA_DEFAULT_SEED; // RNG seed
int32_t n_predict = -1; // new tokens to predict
@ -125,7 +144,7 @@ struct gpt_params {
// // sampling parameters
struct llama_sampling_params sparams;
std::string model = "model.gguf"; // model path
std::string model = ""; // model path
std::string model_draft = ""; // draft model for speculative decoding
std::string model_alias = "unknown"; // model alias
std::string model_url = ""; // model url to download
@ -280,24 +299,6 @@ struct gpt_params {
std::string lora_outfile = "ggml-lora-merged-f16.gguf";
};
enum llama_example {
LLAMA_EXAMPLE_COMMON,
LLAMA_EXAMPLE_SPECULATIVE,
LLAMA_EXAMPLE_MAIN,
LLAMA_EXAMPLE_INFILL,
LLAMA_EXAMPLE_EMBEDDING,
LLAMA_EXAMPLE_PERPLEXITY,
LLAMA_EXAMPLE_RETRIEVAL,
LLAMA_EXAMPLE_PASSKEY,
LLAMA_EXAMPLE_IMATRIX,
LLAMA_EXAMPLE_BENCH,
LLAMA_EXAMPLE_SERVER,
LLAMA_EXAMPLE_CVECTOR_GENERATOR,
LLAMA_EXAMPLE_EXPORT_LORA,
LLAMA_EXAMPLE_COUNT,
};
struct llama_arg {
std::set<enum llama_example> examples = {LLAMA_EXAMPLE_COMMON};
std::vector<std::string> args;
@ -352,11 +353,18 @@ struct llama_arg {
std::string to_string();
};
// initialize list of options (arguments) that can be used by the current example
std::vector<llama_arg> gpt_params_parser_init(gpt_params & params, llama_example ex);
// optionally, we can provide "print_usage" to print example usage
std::vector<llama_arg> gpt_params_parser_init(gpt_params & params, llama_example ex, std::function<void(int, char **)> print_usage);
// parse input arguments from CLI
// if one argument has invalid value, it will automatically display usage of the specific argument (and not the full usage message)
bool gpt_params_parse (int argc, char ** argv, gpt_params & params, std::vector<llama_arg> & options);
bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params, std::vector<llama_arg> & options);
void gpt_params_print_usage(std::vector<llama_arg> & options);
// print full usage message; it will be called internally by gpt_params_parse() if "-h" is set
void gpt_params_print_usage(gpt_params & params, std::vector<llama_arg> & options);
void gpt_params_handle_model_default(gpt_params & params);