mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	server : add more env vars, improve gen-docs (#9635)
* server : add more env vars, improve gen-docs * update server docs * LLAMA_ARG_NO_CONTEXT_SHIFT
This commit is contained in:
		| @@ -691,7 +691,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params) { | ||||
|             params.ctx_shift = false; | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_SERVER})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_NO_CONTEXT_SHIFT")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--chunks"}, "N", | ||||
|         format("max number of chunks to process (default: %d, -1 = all)", params.n_chunks), | ||||
| @@ -1102,7 +1102,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|             else if (value == "last") { params.pooling_type = LLAMA_POOLING_TYPE_LAST; } | ||||
|             else { throw std::invalid_argument("invalid value"); } | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_EMBEDDING})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_EMBEDDING, LLAMA_EXAMPLE_RETRIEVAL, LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_POOLING")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--attention"}, "{causal,non,causal}", | ||||
|         "attention type for embeddings, use model default if unspecified", | ||||
| @@ -1121,77 +1121,77 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|             else if (value == "yarn") { params.rope_scaling_type = LLAMA_ROPE_SCALING_TYPE_YARN; } | ||||
|             else { throw std::invalid_argument("invalid value"); } | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_ROPE_SCALING_TYPE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--rope-scale"}, "N", | ||||
|         "RoPE context scaling factor, expands context by a factor of N", | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.rope_freq_scale = 1.0f / std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_ROPE_SCALE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--rope-freq-base"}, "N", | ||||
|         "RoPE base frequency, used by NTK-aware scaling (default: loaded from model)", | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.rope_freq_base = std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_ROPE_FREQ_BASE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--rope-freq-scale"}, "N", | ||||
|         "RoPE frequency scaling factor, expands context by a factor of 1/N", | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.rope_freq_scale = std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_ROPE_FREQ_SCALE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--yarn-orig-ctx"}, "N", | ||||
|         format("YaRN: original context size of model (default: %d = model training context size)", params.yarn_orig_ctx), | ||||
|         [](gpt_params & params, int value) { | ||||
|             params.yarn_orig_ctx = value; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_YARN_ORIG_CTX")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--yarn-ext-factor"}, "N", | ||||
|         format("YaRN: extrapolation mix factor (default: %.1f, 0.0 = full interpolation)", (double)params.yarn_ext_factor), | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.yarn_ext_factor = std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_YARN_EXT_FACTOR")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--yarn-attn-factor"}, "N", | ||||
|         format("YaRN: scale sqrt(t) or attention magnitude (default: %.1f)", (double)params.yarn_attn_factor), | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.yarn_attn_factor = std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_YARN_ATTN_FACTOR")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--yarn-beta-slow"}, "N", | ||||
|         format("YaRN: high correction dim or alpha (default: %.1f)", (double)params.yarn_beta_slow), | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.yarn_beta_slow = std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_YARN_BETA_SLOW")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--yarn-beta-fast"}, "N", | ||||
|         format("YaRN: low correction dim or beta (default: %.1f)", (double)params.yarn_beta_fast), | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.yarn_beta_fast = std::stof(value); | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_YARN_BETA_FAST")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-gan", "--grp-attn-n"}, "N", | ||||
|         format("group-attention factor (default: %d)", params.grp_attn_n), | ||||
|         [](gpt_params & params, int value) { | ||||
|             params.grp_attn_n = value; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_GRP_ATTN_N")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-gaw", "--grp-attn-w"}, "N", | ||||
|         format("group-attention width (default: %.1f)", (double)params.grp_attn_w), | ||||
|         [](gpt_params & params, int value) { | ||||
|             params.grp_attn_w = value; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_GRP_ATTN_W")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-dkvc", "--dump-kv-cache"}, | ||||
|         "verbose print of the KV cache", | ||||
| @@ -1205,7 +1205,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params) { | ||||
|             params.no_kv_offload = true; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_NO_KV_OFFLOAD")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-ctk", "--cache-type-k"}, "TYPE", | ||||
|         format("KV cache data type for K (default: %s)", params.cache_type_k.c_str()), | ||||
| @@ -1213,7 +1213,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|             // TODO: get the type right here | ||||
|             params.cache_type_k = value; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_CACHE_TYPE_K")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-ctv", "--cache-type-v"}, "TYPE", | ||||
|         format("KV cache data type for V (default: %s)", params.cache_type_v.c_str()), | ||||
| @@ -1221,7 +1221,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|             // TODO: get the type right here | ||||
|             params.cache_type_v = value; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_CACHE_TYPE_V")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--perplexity", "--all-logits"}, | ||||
|         format("return logits for all tokens in the batch (default: %s)", params.logits_all ? "true" : "false"), | ||||
| @@ -1355,7 +1355,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.rpc_servers = value; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_RPC")); | ||||
| #endif | ||||
|     add_opt(llama_arg( | ||||
|         {"--mlock"}, | ||||
| @@ -1363,14 +1363,14 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params) { | ||||
|             params.use_mlock = true; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_MLOCK")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--no-mmap"}, | ||||
|         "do not memory-map model (slower load but may reduce pageouts if not using mlock)", | ||||
|         [](gpt_params & params) { | ||||
|             params.use_mmap = false; | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_NO_MMAP")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--numa"}, "TYPE", | ||||
|         "attempt optimizations that help on some NUMA systems\n" | ||||
| @@ -1385,7 +1385,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|             else if (value == "numactl") { params.numa = GGML_NUMA_STRATEGY_NUMACTL; } | ||||
|             else { throw std::invalid_argument("invalid value"); } | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_NUMA")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-ngl", "--gpu-layers", "--n-gpu-layers"}, "N", | ||||
|         "number of layers to store in VRAM", | ||||
| @@ -1433,7 +1433,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|                 fprintf(stderr, "warning: llama.cpp was compiled without support for GPU offload. Setting the split mode has no effect.\n"); | ||||
|             } | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_SPLIT_MODE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-ts", "--tensor-split"}, "N0,N1,N2,...", | ||||
|         "fraction of the model to offload to each GPU, comma-separated list of proportions, e.g. 3,1", | ||||
| @@ -1460,7 +1460,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|                 fprintf(stderr, "warning: llama.cpp was compiled without support for GPU offload. Setting a tensor split has no effect.\n"); | ||||
|             } | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_TENSOR_SPLIT")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-mg", "--main-gpu"}, "INDEX", | ||||
|         format("the GPU to use for the model (with split-mode = none), or for intermediate results and KV (with split-mode = row) (default: %d)", params.main_gpu), | ||||
| @@ -1470,7 +1470,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|                 fprintf(stderr, "warning: llama.cpp was compiled without support for GPU offload. Setting the main GPU has no effect.\n"); | ||||
|             } | ||||
|         } | ||||
|     )); | ||||
|     ).set_env("LLAMA_ARG_MAIN_GPU")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--check-tensors"}, | ||||
|         format("check model tensor data for invalid values (default: %s)", params.check_tensors ? "true" : "false"), | ||||
| @@ -1533,7 +1533,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.model_alias = value; | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_ALIAS")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-m", "--model"}, "FNAME", | ||||
|         ex == LLAMA_EXAMPLE_EXPORT_LORA | ||||
| @@ -1741,7 +1741,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.public_path = value; | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_STATIC_PATH")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--embedding", "--embeddings"}, | ||||
|         format("restrict to only support embedding use case; use only with dedicated embedding models (default: %s)", params.embedding ? "enabled" : "disabled"), | ||||
| @@ -1779,14 +1779,14 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.ssl_file_key = value; | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_SSL_KEY_FILE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--ssl-cert-file"}, "FNAME", | ||||
|         "path to file a PEM-encoded SSL certificate", | ||||
|         [](gpt_params & params, const std::string & value) { | ||||
|             params.ssl_file_cert = value; | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_SSL_CERT_FILE")); | ||||
|     add_opt(llama_arg( | ||||
|         {"-to", "--timeout"}, "N", | ||||
|         format("server read/write timeout in seconds (default: %d)", params.timeout_read), | ||||
| @@ -1794,7 +1794,7 @@ gpt_params_context gpt_params_parser_init(gpt_params & params, llama_example ex, | ||||
|             params.timeout_read  = value; | ||||
|             params.timeout_write = value; | ||||
|         } | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER})); | ||||
|     ).set_examples({LLAMA_EXAMPLE_SERVER}).set_env("LLAMA_ARG_TIMEOUT")); | ||||
|     add_opt(llama_arg( | ||||
|         {"--threads-http"}, "N", | ||||
|         format("number of threads used to process HTTP requests (default: %d)", params.n_threads_http), | ||||
|   | ||||
| @@ -6,42 +6,73 @@ | ||||
|  | ||||
| // Export usage message (-h) to markdown format | ||||
|  | ||||
| static void write_table_header(std::ofstream & file) { | ||||
|     file << "| Argument | Explanation |\n"; | ||||
|     file << "| -------- | ----------- |\n"; | ||||
| } | ||||
|  | ||||
| static void write_table_entry(std::ofstream & file, const llama_arg & opt) { | ||||
|     file << "| `"; | ||||
|     // args | ||||
|     for (const auto & arg : opt.args) { | ||||
|     if (arg == opt.args.front()) { | ||||
|             file << arg; | ||||
|             if (opt.args.size() > 1) file << ", "; | ||||
|         } else { | ||||
|             file << arg << (arg != opt.args.back() ? ", " : ""); | ||||
|         } | ||||
|     } | ||||
|     // value hint | ||||
|     if (opt.value_hint) { | ||||
|         std::string md_value_hint(opt.value_hint); | ||||
|         string_replace_all(md_value_hint, "|", "\\|"); | ||||
|         file << " " << md_value_hint; | ||||
|     } | ||||
|     if (opt.value_hint_2) { | ||||
|         std::string md_value_hint_2(opt.value_hint_2); | ||||
|         string_replace_all(md_value_hint_2, "|", "\\|"); | ||||
|         file << " " << md_value_hint_2; | ||||
|     } | ||||
|     // help text | ||||
|     std::string md_help(opt.help); | ||||
|     string_replace_all(md_help, "\n", "<br/>"); | ||||
|     string_replace_all(md_help, "|", "\\|"); | ||||
|     file << "` | " << md_help << " |\n"; | ||||
| } | ||||
|  | ||||
| static void write_table(std::ofstream & file, std::vector<llama_arg *> & opts) { | ||||
|     write_table_header(file); | ||||
|     for (const auto & opt : opts) { | ||||
|         write_table_entry(file, *opt); | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void export_md(std::string fname, llama_example ex) { | ||||
|     std::ofstream file(fname, std::ofstream::out | std::ofstream::trunc); | ||||
|  | ||||
|     gpt_params params; | ||||
|     auto ctx_arg = gpt_params_parser_init(params, ex); | ||||
|  | ||||
|     file << "| Argument | Explanation |\n"; | ||||
|     file << "| -------- | ----------- |\n"; | ||||
|     std::vector<llama_arg *> common_options; | ||||
|     std::vector<llama_arg *> sparam_options; | ||||
|     std::vector<llama_arg *> specific_options; | ||||
|     for (auto & opt : ctx_arg.options) { | ||||
|         file << "| `"; | ||||
|         // args | ||||
|         for (const auto & arg : opt.args) { | ||||
|         if (arg == opt.args.front()) { | ||||
|                 file << arg; | ||||
|                 if (opt.args.size() > 1) file << ", "; | ||||
|             } else { | ||||
|                 file << arg << (arg != opt.args.back() ? ", " : ""); | ||||
|             } | ||||
|         // in case multiple LLAMA_EXAMPLE_* are set, we prioritize the LLAMA_EXAMPLE_* matching current example | ||||
|         if (opt.is_sparam) { | ||||
|             sparam_options.push_back(&opt); | ||||
|         } else if (opt.in_example(ctx_arg.ex)) { | ||||
|             specific_options.push_back(&opt); | ||||
|         } else { | ||||
|             common_options.push_back(&opt); | ||||
|         } | ||||
|         // value hint | ||||
|         if (opt.value_hint) { | ||||
|             std::string md_value_hint(opt.value_hint); | ||||
|             string_replace_all(md_value_hint, "|", "\\|"); | ||||
|             file << " " << md_value_hint; | ||||
|         } | ||||
|         if (opt.value_hint_2) { | ||||
|             std::string md_value_hint_2(opt.value_hint_2); | ||||
|             string_replace_all(md_value_hint_2, "|", "\\|"); | ||||
|             file << " " << md_value_hint_2; | ||||
|         } | ||||
|         // help text | ||||
|         std::string md_help(opt.help); | ||||
|         string_replace_all(md_help, "\n", "<br/>"); | ||||
|         string_replace_all(md_help, "|", "\\|"); | ||||
|         file << "` | " << md_help << " |\n"; | ||||
|     } | ||||
|  | ||||
|     file << "**Common params**\n\n"; | ||||
|     write_table(file, common_options); | ||||
|     file << "\n\n**Sampling params**\n\n"; | ||||
|     write_table(file, sparam_options); | ||||
|     file << "\n\n**Example-specific params**\n\n"; | ||||
|     write_table(file, specific_options); | ||||
| } | ||||
|  | ||||
| int main(int, char **) { | ||||
|   | ||||
| @@ -17,6 +17,8 @@ The project is under active development, and we are [looking for feedback and co | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| **Common params** | ||||
|  | ||||
| | Argument | Explanation | | ||||
| | -------- | ----------- | | ||||
| | `-h, --help, --usage` | print usage and exit | | ||||
| @@ -38,7 +40,6 @@ The project is under active development, and we are [looking for feedback and co | ||||
| | `-b, --batch-size N` | logical maximum batch size (default: 2048)<br/>(env: LLAMA_ARG_BATCH) | | ||||
| | `-ub, --ubatch-size N` | physical maximum batch size (default: 512)<br/>(env: LLAMA_ARG_UBATCH) | | ||||
| | `--keep N` | number of tokens to keep from the initial prompt (default: 0, -1 = all) | | ||||
| | `--no-context-shift` | disables context shift on inifinite text generation (default: disabled) | | ||||
| | `-fa, --flash-attn` | enable Flash Attention (default: disabled)<br/>(env: LLAMA_ARG_FLASH_ATTN) | | ||||
| | `-p, --prompt PROMPT` | prompt to start generation with | | ||||
| | `--no-perf` | disable internal libllama performance timings (default: false)<br/>(env: LLAMA_ARG_NO_PERF) | | ||||
| @@ -46,8 +47,56 @@ The project is under active development, and we are [looking for feedback and co | ||||
| | `-bf, --binary-file FNAME` | binary file containing the prompt (default: none) | | ||||
| | `-e, --escape` | process escapes sequences (\n, \r, \t, \', \", \\) (default: true) | | ||||
| | `--no-escape` | do not process escape sequences | | ||||
| | `-sp, --special` | special tokens output enabled (default: false) | | ||||
| | `--spm-infill` | use Suffix/Prefix/Middle pattern for infill (instead of Prefix/Suffix/Middle) as some models prefer this. (default: disabled) | | ||||
| | `--rope-scaling {none,linear,yarn}` | RoPE frequency scaling method, defaults to linear unless specified by the model<br/>(env: LLAMA_ARG_ROPE_SCALING_TYPE) | | ||||
| | `--rope-scale N` | RoPE context scaling factor, expands context by a factor of N<br/>(env: LLAMA_ARG_ROPE_SCALE) | | ||||
| | `--rope-freq-base N` | RoPE base frequency, used by NTK-aware scaling (default: loaded from model)<br/>(env: LLAMA_ARG_ROPE_FREQ_BASE) | | ||||
| | `--rope-freq-scale N` | RoPE frequency scaling factor, expands context by a factor of 1/N<br/>(env: LLAMA_ARG_ROPE_FREQ_SCALE) | | ||||
| | `--yarn-orig-ctx N` | YaRN: original context size of model (default: 0 = model training context size)<br/>(env: LLAMA_ARG_YARN_ORIG_CTX) | | ||||
| | `--yarn-ext-factor N` | YaRN: extrapolation mix factor (default: -1.0, 0.0 = full interpolation)<br/>(env: LLAMA_ARG_YARN_EXT_FACTOR) | | ||||
| | `--yarn-attn-factor N` | YaRN: scale sqrt(t) or attention magnitude (default: 1.0)<br/>(env: LLAMA_ARG_YARN_ATTN_FACTOR) | | ||||
| | `--yarn-beta-slow N` | YaRN: high correction dim or alpha (default: 1.0)<br/>(env: LLAMA_ARG_YARN_BETA_SLOW) | | ||||
| | `--yarn-beta-fast N` | YaRN: low correction dim or beta (default: 32.0)<br/>(env: LLAMA_ARG_YARN_BETA_FAST) | | ||||
| | `-gan, --grp-attn-n N` | group-attention factor (default: 1)<br/>(env: LLAMA_ARG_GRP_ATTN_N) | | ||||
| | `-gaw, --grp-attn-w N` | group-attention width (default: 512.0)<br/>(env: LLAMA_ARG_GRP_ATTN_W) | | ||||
| | `-dkvc, --dump-kv-cache` | verbose print of the KV cache | | ||||
| | `-nkvo, --no-kv-offload` | disable KV offload<br/>(env: LLAMA_ARG_NO_KV_OFFLOAD) | | ||||
| | `-ctk, --cache-type-k TYPE` | KV cache data type for K (default: f16)<br/>(env: LLAMA_ARG_CACHE_TYPE_K) | | ||||
| | `-ctv, --cache-type-v TYPE` | KV cache data type for V (default: f16)<br/>(env: LLAMA_ARG_CACHE_TYPE_V) | | ||||
| | `-dt, --defrag-thold N` | KV cache defragmentation threshold (default: -1.0, < 0 - disabled)<br/>(env: LLAMA_ARG_DEFRAG_THOLD) | | ||||
| | `-np, --parallel N` | number of parallel sequences to decode (default: 1)<br/>(env: LLAMA_ARG_N_PARALLEL) | | ||||
| | `--mlock` | force system to keep model in RAM rather than swapping or compressing<br/>(env: LLAMA_ARG_MLOCK) | | ||||
| | `--no-mmap` | do not memory-map model (slower load but may reduce pageouts if not using mlock)<br/>(env: LLAMA_ARG_NO_MMAP) | | ||||
| | `--numa TYPE` | attempt optimizations that help on some NUMA systems<br/>- distribute: spread execution evenly over all nodes<br/>- isolate: only spawn threads on CPUs on the node that execution started on<br/>- numactl: use the CPU map provided by numactl<br/>if run without this previously, it is recommended to drop the system page cache before using this<br/>see https://github.com/ggerganov/llama.cpp/issues/1437<br/>(env: LLAMA_ARG_NUMA) | | ||||
| | `-ngl, --gpu-layers, --n-gpu-layers N` | number of layers to store in VRAM<br/>(env: LLAMA_ARG_N_GPU_LAYERS) | | ||||
| | `-sm, --split-mode {none,layer,row}` | how to split the model across multiple GPUs, one of:<br/>- none: use one GPU only<br/>- layer (default): split layers and KV across GPUs<br/>- row: split rows across GPUs<br/>(env: LLAMA_ARG_SPLIT_MODE) | | ||||
| | `-ts, --tensor-split N0,N1,N2,...` | fraction of the model to offload to each GPU, comma-separated list of proportions, e.g. 3,1<br/>(env: LLAMA_ARG_TENSOR_SPLIT) | | ||||
| | `-mg, --main-gpu INDEX` | the GPU to use for the model (with split-mode = none), or for intermediate results and KV (with split-mode = row) (default: 0)<br/>(env: LLAMA_ARG_MAIN_GPU) | | ||||
| | `--check-tensors` | check model tensor data for invalid values (default: false) | | ||||
| | `--override-kv KEY=TYPE:VALUE` | advanced option to override model metadata by key. may be specified multiple times.<br/>types: int, float, bool, str. example: --override-kv tokenizer.ggml.add_bos_token=bool:false | | ||||
| | `--lora FNAME` | path to LoRA adapter (can be repeated to use multiple adapters) | | ||||
| | `--lora-scaled FNAME SCALE` | path to LoRA adapter with user defined scaling (can be repeated to use multiple adapters) | | ||||
| | `--control-vector FNAME` | add a control vector<br/>note: this argument can be repeated to add multiple control vectors | | ||||
| | `--control-vector-scaled FNAME SCALE` | add a control vector with user defined scaling SCALE<br/>note: this argument can be repeated to add multiple scaled control vectors | | ||||
| | `--control-vector-layer-range START END` | layer range to apply the control vector(s) to, start and end inclusive | | ||||
| | `-m, --model FNAME` | model path (default: `models/$filename` with filename from `--hf-file` or `--model-url` if set, otherwise models/7B/ggml-model-f16.gguf)<br/>(env: LLAMA_ARG_MODEL) | | ||||
| | `-mu, --model-url MODEL_URL` | model download url (default: unused)<br/>(env: LLAMA_ARG_MODEL_URL) | | ||||
| | `-hfr, --hf-repo REPO` | Hugging Face model repository (default: unused)<br/>(env: LLAMA_ARG_HF_REPO) | | ||||
| | `-hff, --hf-file FILE` | Hugging Face model file (default: unused)<br/>(env: LLAMA_ARG_HF_FILE) | | ||||
| | `-hft, --hf-token TOKEN` | Hugging Face access token (default: value from HF_TOKEN environment variable)<br/>(env: HF_TOKEN) | | ||||
| | `-ld, --logdir LOGDIR` | path under which to save YAML logs (no logging if unset) | | ||||
| | `--log-disable` | Log disable | | ||||
| | `--log-file FNAME` | Log to file | | ||||
| | `--log-colors` | Enable colored logging<br/>(env: LLAMA_LOG_COLORS) | | ||||
| | `-v, --verbose, --log-verbose` | Set verbosity level to infinity (i.e. log all messages, useful for debugging) | | ||||
| | `-lv, --verbosity, --log-verbosity N` | Set the verbosity threshold. Messages with a higher verbosity will be ignored.<br/>(env: LLAMA_LOG_VERBOSITY) | | ||||
| | `--log-prefix` | Enable prefx in log messages<br/>(env: LLAMA_LOG_PREFIX) | | ||||
| | `--log-timestamps` | Enable timestamps in log messages<br/>(env: LLAMA_LOG_TIMESTAMPS) | | ||||
|  | ||||
|  | ||||
| **Sampling params** | ||||
|  | ||||
| | Argument | Explanation | | ||||
| | -------- | ----------- | | ||||
| | `--samplers SAMPLERS` | samplers that will be used for generation in the order, separated by ';'<br/>(default: top_k;tfs_z;typ_p;top_p;min_p;temperature) | | ||||
| | `-s, --seed SEED` | RNG seed (default: 4294967295, use random seed for 4294967295) | | ||||
| | `--sampling-seq SEQUENCE` | simplified sequence for samplers that will be used (default: kfypmt) | | ||||
| @@ -72,54 +121,28 @@ The project is under active development, and we are [looking for feedback and co | ||||
| | `--grammar GRAMMAR` | BNF-like grammar to constrain generations (see samples in grammars/ dir) (default: '') | | ||||
| | `--grammar-file FNAME` | file to read grammar from | | ||||
| | `-j, --json-schema SCHEMA` | JSON schema to constrain generations (https://json-schema.org/), e.g. `{}` for any JSON object<br/>For schemas w/ external $refs, use --grammar + example/json_schema_to_grammar.py instead | | ||||
| | `--rope-scaling {none,linear,yarn}` | RoPE frequency scaling method, defaults to linear unless specified by the model | | ||||
| | `--rope-scale N` | RoPE context scaling factor, expands context by a factor of N | | ||||
| | `--rope-freq-base N` | RoPE base frequency, used by NTK-aware scaling (default: loaded from model) | | ||||
| | `--rope-freq-scale N` | RoPE frequency scaling factor, expands context by a factor of 1/N | | ||||
| | `--yarn-orig-ctx N` | YaRN: original context size of model (default: 0 = model training context size) | | ||||
| | `--yarn-ext-factor N` | YaRN: extrapolation mix factor (default: -1.0, 0.0 = full interpolation) | | ||||
| | `--yarn-attn-factor N` | YaRN: scale sqrt(t) or attention magnitude (default: 1.0) | | ||||
| | `--yarn-beta-slow N` | YaRN: high correction dim or alpha (default: 1.0) | | ||||
| | `--yarn-beta-fast N` | YaRN: low correction dim or beta (default: 32.0) | | ||||
| | `-gan, --grp-attn-n N` | group-attention factor (default: 1) | | ||||
| | `-gaw, --grp-attn-w N` | group-attention width (default: 512.0) | | ||||
| | `-dkvc, --dump-kv-cache` | verbose print of the KV cache | | ||||
| | `-nkvo, --no-kv-offload` | disable KV offload | | ||||
| | `-ctk, --cache-type-k TYPE` | KV cache data type for K (default: f16) | | ||||
| | `-ctv, --cache-type-v TYPE` | KV cache data type for V (default: f16) | | ||||
| | `-dt, --defrag-thold N` | KV cache defragmentation threshold (default: -1.0, < 0 - disabled)<br/>(env: LLAMA_ARG_DEFRAG_THOLD) | | ||||
| | `-np, --parallel N` | number of parallel sequences to decode (default: 1)<br/>(env: LLAMA_ARG_N_PARALLEL) | | ||||
|  | ||||
|  | ||||
| **Example-specific params** | ||||
|  | ||||
| | Argument | Explanation | | ||||
| | -------- | ----------- | | ||||
| | `--no-context-shift` | disables context shift on inifinite text generation (default: disabled)<br/>(env: LLAMA_ARG_NO_CONTEXT_SHIFT) | | ||||
| | `-sp, --special` | special tokens output enabled (default: false) | | ||||
| | `--spm-infill` | use Suffix/Prefix/Middle pattern for infill (instead of Prefix/Suffix/Middle) as some models prefer this. (default: disabled) | | ||||
| | `--pooling {none,mean,cls,last}` | pooling type for embeddings, use model default if unspecified<br/>(env: LLAMA_ARG_POOLING) | | ||||
| | `-cb, --cont-batching` | enable continuous batching (a.k.a dynamic batching) (default: enabled)<br/>(env: LLAMA_ARG_CONT_BATCHING) | | ||||
| | `-nocb, --no-cont-batching` | disable continuous batching<br/>(env: LLAMA_ARG_NO_CONT_BATCHING) | | ||||
| | `--mlock` | force system to keep model in RAM rather than swapping or compressing | | ||||
| | `--no-mmap` | do not memory-map model (slower load but may reduce pageouts if not using mlock) | | ||||
| | `--numa TYPE` | attempt optimizations that help on some NUMA systems<br/>- distribute: spread execution evenly over all nodes<br/>- isolate: only spawn threads on CPUs on the node that execution started on<br/>- numactl: use the CPU map provided by numactl<br/>if run without this previously, it is recommended to drop the system page cache before using this<br/>see https://github.com/ggerganov/llama.cpp/issues/1437 | | ||||
| | `-ngl, --gpu-layers, --n-gpu-layers N` | number of layers to store in VRAM<br/>(env: LLAMA_ARG_N_GPU_LAYERS) | | ||||
| | `-sm, --split-mode {none,layer,row}` | how to split the model across multiple GPUs, one of:<br/>- none: use one GPU only<br/>- layer (default): split layers and KV across GPUs<br/>- row: split rows across GPUs | | ||||
| | `-ts, --tensor-split N0,N1,N2,...` | fraction of the model to offload to each GPU, comma-separated list of proportions, e.g. 3,1 | | ||||
| | `-mg, --main-gpu INDEX` | the GPU to use for the model (with split-mode = none), or for intermediate results and KV (with split-mode = row) (default: 0) | | ||||
| | `--check-tensors` | check model tensor data for invalid values (default: false) | | ||||
| | `--override-kv KEY=TYPE:VALUE` | advanced option to override model metadata by key. may be specified multiple times.<br/>types: int, float, bool, str. example: --override-kv tokenizer.ggml.add_bos_token=bool:false | | ||||
| | `--lora FNAME` | path to LoRA adapter (can be repeated to use multiple adapters) | | ||||
| | `--lora-scaled FNAME SCALE` | path to LoRA adapter with user defined scaling (can be repeated to use multiple adapters) | | ||||
| | `--control-vector FNAME` | add a control vector<br/>note: this argument can be repeated to add multiple control vectors | | ||||
| | `--control-vector-scaled FNAME SCALE` | add a control vector with user defined scaling SCALE<br/>note: this argument can be repeated to add multiple scaled control vectors | | ||||
| | `--control-vector-layer-range START END` | layer range to apply the control vector(s) to, start and end inclusive | | ||||
| | `-a, --alias STRING` | set alias for model name (to be used by REST API) | | ||||
| | `-m, --model FNAME` | model path (default: `models/$filename` with filename from `--hf-file` or `--model-url` if set, otherwise models/7B/ggml-model-f16.gguf)<br/>(env: LLAMA_ARG_MODEL) | | ||||
| | `-mu, --model-url MODEL_URL` | model download url (default: unused)<br/>(env: LLAMA_ARG_MODEL_URL) | | ||||
| | `-hfr, --hf-repo REPO` | Hugging Face model repository (default: unused)<br/>(env: LLAMA_ARG_HF_REPO) | | ||||
| | `-hff, --hf-file FILE` | Hugging Face model file (default: unused)<br/>(env: LLAMA_ARG_HF_FILE) | | ||||
| | `-hft, --hf-token TOKEN` | Hugging Face access token (default: value from HF_TOKEN environment variable)<br/>(env: HF_TOKEN) | | ||||
| | `-a, --alias STRING` | set alias for model name (to be used by REST API)<br/>(env: LLAMA_ARG_ALIAS) | | ||||
| | `--host HOST` | ip address to listen (default: 127.0.0.1)<br/>(env: LLAMA_ARG_HOST) | | ||||
| | `--port PORT` | port to listen (default: 8080)<br/>(env: LLAMA_ARG_PORT) | | ||||
| | `--path PATH` | path to serve static files from (default: ) | | ||||
| | `--path PATH` | path to serve static files from (default: )<br/>(env: LLAMA_ARG_STATIC_PATH) | | ||||
| | `--embedding, --embeddings` | restrict to only support embedding use case; use only with dedicated embedding models (default: disabled)<br/>(env: LLAMA_ARG_EMBEDDINGS) | | ||||
| | `--api-key KEY` | API key to use for authentication (default: none)<br/>(env: LLAMA_API_KEY) | | ||||
| | `--api-key-file FNAME` | path to file containing API keys (default: none) | | ||||
| | `--ssl-key-file FNAME` | path to file a PEM-encoded SSL private key | | ||||
| | `--ssl-cert-file FNAME` | path to file a PEM-encoded SSL certificate | | ||||
| | `-to, --timeout N` | server read/write timeout in seconds (default: 600) | | ||||
| | `--ssl-key-file FNAME` | path to file a PEM-encoded SSL private key<br/>(env: LLAMA_ARG_SSL_KEY_FILE) | | ||||
| | `--ssl-cert-file FNAME` | path to file a PEM-encoded SSL certificate<br/>(env: LLAMA_ARG_SSL_CERT_FILE) | | ||||
| | `-to, --timeout N` | server read/write timeout in seconds (default: 600)<br/>(env: LLAMA_ARG_TIMEOUT) | | ||||
| | `--threads-http N` | number of threads used to process HTTP requests (default: -1)<br/>(env: LLAMA_ARG_THREADS_HTTP) | | ||||
| | `-spf, --system-prompt-file FNAME` | set a file to load a system prompt (initial prompt of all slots), this is useful for chat applications | | ||||
| | `--metrics` | enable prometheus compatible metrics endpoint (default: disabled)<br/>(env: LLAMA_ARG_ENDPOINT_METRICS) | | ||||
| @@ -128,14 +151,6 @@ The project is under active development, and we are [looking for feedback and co | ||||
| | `--chat-template JINJA_TEMPLATE` | set custom jinja chat template (default: template taken from model's metadata)<br/>if suffix/prefix are specified, template will be disabled<br/>only commonly used templates are accepted:<br/>https://github.com/ggerganov/llama.cpp/wiki/Templates-supported-by-llama_chat_apply_template<br/>(env: LLAMA_ARG_CHAT_TEMPLATE) | | ||||
| | `-sps, --slot-prompt-similarity SIMILARITY` | how much the prompt of a request must match the prompt of a slot in order to use that slot (default: 0.50, 0.0 = disabled)<br/> | | ||||
| | `--lora-init-without-apply` | load LoRA adapters without applying them (apply later via POST /lora-adapters) (default: disabled) | | ||||
| | `-ld, --logdir LOGDIR` | path under which to save YAML logs (no logging if unset) | | ||||
| | `--log-disable` | Log disable | | ||||
| | `--log-file FNAME` | Log to file | | ||||
| | `--log-colors` | Enable colored logging<br/>(env: LLAMA_LOG_COLORS) | | ||||
| | `-v, --verbose, --log-verbose` | Set verbosity level to infinity (i.e. log all messages, useful for debugging) | | ||||
| | `-lv, --verbosity, --log-verbosity N` | Set the verbosity threshold. Messages with a higher verbosity will be ignored.<br/>(env: LLAMA_LOG_VERBOSITY) | | ||||
| | `--log-prefix` | Enable prefx in log messages<br/>(env: LLAMA_LOG_PREFIX) | | ||||
| | `--log-timestamps` | Enable timestamps in log messages<br/>(env: LLAMA_LOG_TIMESTAMPS) | | ||||
|  | ||||
| Note: If both command line argument and environment variable are both set for the same param, the argument will take precedence over env var. | ||||
|  | ||||
|   | ||||
| @@ -2356,6 +2356,10 @@ int main(int argc, char ** argv) { | ||||
|         svr.reset(new httplib::Server()); | ||||
|     } | ||||
| #else | ||||
|     if (params.ssl_file_key != "" && params.ssl_file_cert != "") { | ||||
|         LOG_ERR("Server is built without SSL support\n"); | ||||
|         return 1; | ||||
|     } | ||||
|     svr.reset(new httplib::Server()); | ||||
| #endif | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Xuan Son Nguyen
					Xuan Son Nguyen