From 2cfae6d9a8ea26b2ca639e8195f75e5f79be65b0 Mon Sep 17 00:00:00 2001 From: ngxson Date: Fri, 1 Mar 2024 14:50:42 +0100 Subject: [PATCH] merge: try..catch --- examples/merge/merge.cpp | 59 ++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/examples/merge/merge.cpp b/examples/merge/merge.cpp index 024ae5692..07c2f3d84 100644 --- a/examples/merge/merge.cpp +++ b/examples/merge/merge.cpp @@ -122,34 +122,39 @@ int main(int argc, char ** argv) { } } - if (invalid_param) { - throw std::invalid_argument("error: invalid parameter for argument: " + arg); - } else if (config_path.empty()) { - throw std::invalid_argument("error: missing config path"); - } else if (model_paths.size() < 2) { - throw std::invalid_argument("error: require at least 2 models"); - } else if (output_path.empty()) { - throw std::invalid_argument("error: missing output path"); + try { + if (invalid_param) { + throw std::invalid_argument("error: invalid parameter for argument: " + arg); + } else if (config_path.empty()) { + throw std::invalid_argument("error: missing config path"); + } else if (model_paths.size() < 2) { + throw std::invalid_argument("error: require at least 2 models"); + } else if (output_path.empty()) { + throw std::invalid_argument("error: missing output path"); + } + + // buffers to hold allocated data + std::vector buf_srcs; + std::vector buf_scales; + + auto layers = parse_config(config_path, model_paths.size(), buf_srcs, buf_scales); + std::vector p_model_paths; + for (auto & m : model_paths) { + p_model_paths.push_back(m.data()); + } + const struct llama_merge_config config{ + p_model_paths.data(), + p_model_paths.size(), + layers.data(), + layers.size(), + output_path.data(), + }; + + llama_merge_models(&config); + } catch (const std::exception & ex) { + std::cerr << ex.what() << "\n\n"; + usage(argv[0], 1); } - // buffers to hold allocated data - std::vector buf_srcs; - std::vector buf_scales; - - auto layers = parse_config(config_path, model_paths.size(), buf_srcs, buf_scales); - std::vector p_model_paths; - for (auto & m : model_paths) { - p_model_paths.push_back(m.data()); - } - const struct llama_merge_config config{ - p_model_paths.data(), - p_model_paths.size(), - layers.data(), - layers.size(), - output_path.data(), - }; - - llama_merge_models(&config); - return 0; } \ No newline at end of file