| 138 | } |
| 139 | |
| 140 | static bool export_lora_params_parse(int argc, char ** argv, struct export_lora_params * params) { |
| 141 | bool invalid_param = false; |
| 142 | std::string arg; |
| 143 | struct export_lora_params default_params = get_default_export_lora_params(); |
| 144 | const std::string arg_prefix = "--"; |
| 145 | |
| 146 | for (int i = 1; i < argc; i++) { |
| 147 | arg = argv[i]; |
| 148 | if (arg.compare(0, arg_prefix.size(), arg_prefix) == 0) { |
| 149 | std::replace(arg.begin(), arg.end(), '_', '-'); |
| 150 | } |
| 151 | |
| 152 | if (arg == "-m" || arg == "--model-base") { |
| 153 | if (++i >= argc) { |
| 154 | invalid_param = true; |
| 155 | break; |
| 156 | } |
| 157 | params->fn_model_base = argv[i]; |
| 158 | } else if (arg == "-o" || arg == "--model-out") { |
| 159 | if (++i >= argc) { |
| 160 | invalid_param = true; |
| 161 | break; |
| 162 | } |
| 163 | params->fn_model_out = argv[i]; |
| 164 | } else if (arg == "-l" || arg == "--lora") { |
| 165 | if (++i >= argc) { |
| 166 | invalid_param = true; |
| 167 | break; |
| 168 | } |
| 169 | struct lora_info lora; |
| 170 | lora.filename = argv[i]; |
| 171 | lora.scale = 1.0f; |
| 172 | params->lora.push_back(lora); |
| 173 | } else if (arg == "-s" || arg == "--lora-scaled") { |
| 174 | if (++i >= argc) { |
| 175 | invalid_param = true; |
| 176 | break; |
| 177 | } |
| 178 | struct lora_info lora; |
| 179 | lora.filename = argv[i]; |
| 180 | if (++i >= argc) { |
| 181 | invalid_param = true; |
| 182 | break; |
| 183 | } |
| 184 | lora.scale = std::stof(argv[i]); |
| 185 | params->lora.push_back(lora); |
| 186 | } else if (arg == "-t" || arg == "--threads") { |
| 187 | if (++i >= argc) { |
| 188 | invalid_param = true; |
| 189 | break; |
| 190 | } |
| 191 | params->n_threads = std::stoi(argv[i]); |
| 192 | if (params->n_threads <= 0) { |
| 193 | params->n_threads = std::thread::hardware_concurrency(); |
| 194 | } |
| 195 | } else { |
| 196 | fprintf(stderr, "error: unknown argument: '%s'\n", arg.c_str()); |
| 197 | export_lora_print_usage(argc, argv, &default_params); |
no test coverage detected