@@ -1085,48 +1085,47 @@ static void common_params_print_completion(common_params_context & ctx_arg) {
10851085    printf ("     esac\n " 
10861086    printf (" }\n\n " 
10871087
1088-     std::set<std::string> executables = {
1089-         " llama-batched" 
1090-         " llama-batched-bench" 
1091-         " llama-bench" 
1092-         " llama-cli" 
1093-         " llama-convert-llama2c-to-ggml" 
1094-         " llama-cvector-generator" 
1095-         " llama-embedding" 
1096-         " llama-eval-callback" 
1097-         " llama-export-lora" 
1098-         " llama-gen-docs" 
1099-         " llama-gguf" 
1100-         " llama-gguf-hash" 
1101-         " llama-gguf-split" 
1102-         " llama-gritlm" 
1103-         " llama-imatrix" 
1104-         " llama-infill" 
1105-         " llama-mtmd-cli" 
1106-         " llama-llava-clip-quantize-cli" 
1107-         " llama-lookahead" 
1108-         " llama-lookup" 
1109-         " llama-lookup-create" 
1110-         " llama-lookup-merge" 
1111-         " llama-lookup-stats" 
1112-         " llama-parallel" 
1113-         " llama-passkey" 
1114-         " llama-perplexity" 
1115-         " llama-q8dot" 
1116-         " llama-quantize" 
1117-         " llama-qwen2vl-cli" 
1118-         " llama-retrieval" 
1119-         " llama-run" 
1120-         " llama-save-load-state" 
1121-         " llama-server" 
1122-         " llama-simple" 
1123-         " llama-simple-chat" 
1124-         " llama-speculative" 
1125-         " llama-speculative-simple" 
1126-         " llama-tokenize" 
1127-         " llama-tts" 
1128-         " llama-vdot" 
1129-     };
1088+     std::set<std::string> executables = { " llama-batched" 
1089+                                           " llama-batched-bench" 
1090+                                           " llama-bench" 
1091+                                           " llama-cli" 
1092+                                           " llama-convert-llama2c-to-ggml" 
1093+                                           " llama-cvector-generator" 
1094+                                           " llama-embedding" 
1095+                                           " llama-eval-callback" 
1096+                                           " llama-export-lora" 
1097+                                           " llama-finetune" 
1098+                                           " llama-gen-docs" 
1099+                                           " llama-gguf" 
1100+                                           " llama-gguf-hash" 
1101+                                           " llama-gguf-split" 
1102+                                           " llama-gritlm" 
1103+                                           " llama-imatrix" 
1104+                                           " llama-infill" 
1105+                                           " llama-mtmd-cli" 
1106+                                           " llama-llava-clip-quantize-cli" 
1107+                                           " llama-lookahead" 
1108+                                           " llama-lookup" 
1109+                                           " llama-lookup-create" 
1110+                                           " llama-lookup-merge" 
1111+                                           " llama-lookup-stats" 
1112+                                           " llama-parallel" 
1113+                                           " llama-passkey" 
1114+                                           " llama-perplexity" 
1115+                                           " llama-q8dot" 
1116+                                           " llama-quantize" 
1117+                                           " llama-qwen2vl-cli" 
1118+                                           " llama-retrieval" 
1119+                                           " llama-run" 
1120+                                           " llama-save-load-state" 
1121+                                           " llama-server" 
1122+                                           " llama-simple" 
1123+                                           " llama-simple-chat" 
1124+                                           " llama-speculative" 
1125+                                           " llama-speculative-simple" 
1126+                                           " llama-tokenize" 
1127+                                           " llama-tts" 
1128+                                           " llama-vdot" 
11301129
11311130    for  (const  auto & exe : executables) {
11321131        printf (" complete -F _llama_completions %s\n " c_str ());
@@ -1238,6 +1237,8 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
12381237    }
12391238    sampler_type_names.pop_back ();
12401239
1240+     params.optimize              = ggml_opt_get_default_optimizer_params (NULL );
1241+     params.optimize .adamw .alpha  = 1e-8 ;  //  default 1e-3 is much too high for LLAMA_EXAMPLE_FINETUNE
12411242
12421243    /* *
12431244     * filter options by example 
@@ -2181,6 +2182,22 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
21812182            params.ppl_output_type  = value;
21822183        }
21832184    ).set_examples ({LLAMA_EXAMPLE_PERPLEXITY}));
2185+     add_opt (common_arg ({ " -lr" " --learning-rate" " ALPHA" 
2186+                        string_format (" adamw optimizer alpha (default: %.1f)" double ) params.optimize .adamw .alpha ),
2187+                        [](common_params & params, const  std::string & value) {
2188+                            params.optimize .adamw .alpha  = std::stof (value);
2189+                        })
2190+                 .set_examples ({ LLAMA_EXAMPLE_FINETUNE }));
2191+     add_opt (common_arg ({ " -opt" " --optimizer" " sgd|adamw" " adamw or //TODO:sgd" 
2192+                        [](common_params & params, const  std::string & name) {
2193+                            params.optimize .optimizer  = named_ggml_opt_optimizer (name.c_str ());
2194+                            if  (params.optimize .optimizer  == GGML_OPT_OPTIMIZER_COUNT) {
2195+                                throw  std::invalid_argument (" invalid --optimizer (try adamw)" 
2196+                            } else  if  (params.optimize .optimizer  == GGML_OPT_OPTIMIZER_SGD) {
2197+                                throw  std::invalid_argument (" TODO: implement SGD" 
2198+                            }
2199+                        })
2200+                 .set_examples ({ LLAMA_EXAMPLE_FINETUNE }));
21842201    add_opt (common_arg (
21852202        {" -dt" " --defrag-thold" " N" 
21862203        string_format (" KV cache defragmentation threshold (default: %.1f, < 0 - disabled)" double )params.defrag_thold ),
0 commit comments