//
// Model utils
//
-
-std::tuple<struct llama_model *, struct llama_context *> llama_init_from_gpt_params(gpt_params & params) {
+struct llama_init_result llama_init_from_gpt_params(gpt_params & params) {
+ llama_init_result iparams;
auto mparams = llama_model_params_from_gpt_params(params);
llama_model * model = nullptr;
if (model == NULL) {
fprintf(stderr, "%s: error: failed to load model '%s'\n", __func__, params.model.c_str());
- return std::make_tuple(nullptr, nullptr);
+ return iparams;
}
auto cparams = llama_context_params_from_gpt_params(params);
if (lctx == NULL) {
fprintf(stderr, "%s: error: failed to create context with model '%s'\n", __func__, params.model.c_str());
llama_free_model(model);
- return std::make_tuple(nullptr, nullptr);
+ return iparams;
}
if (!params.control_vectors.empty()) {
if (cvec.n_embd == -1) {
llama_free(lctx);
llama_free_model(model);
- return std::make_tuple(nullptr, nullptr);
+ return iparams;
}
int err = llama_control_vector_apply(lctx,
if (err) {
llama_free(lctx);
llama_free_model(model);
- return std::make_tuple(nullptr, nullptr);
+ return iparams;
}
}
fprintf(stderr, "%s: error: failed to apply lora adapter\n", __func__);
llama_free(lctx);
llama_free_model(model);
- return std::make_tuple(nullptr, nullptr);
+ return iparams;
}
llama_lora_adapter_set(lctx, adapter, lora_scale);
}
llama_reset_timings(lctx);
}
- return std::make_tuple(model, lctx);
+ iparams.model = model;
+ iparams.context = lctx;
+ return iparams;
}
struct llama_model_params llama_model_params_from_gpt_params(const gpt_params & params) {
// Model utils
//
-// TODO: avoid tuplue, use struct
-std::tuple<struct llama_model *, struct llama_context *> llama_init_from_gpt_params(gpt_params & params);
+struct llama_init_result {
+ struct llama_model * model = nullptr;
+ struct llama_context * context = nullptr;
+};
+
+struct llama_init_result llama_init_from_gpt_params(gpt_params & params);
struct llama_model_params llama_model_params_from_gpt_params (const gpt_params & params);
struct llama_context_params llama_context_params_from_gpt_params(const gpt_params & params);
llama_numa_init(params.numa);
// load the model to get hparams
- llama_model * model;
- llama_context * ctx;
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
// int n_ctx = llama_n_ctx(ctx);
int n_layers = llama_n_layer(model);
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model;
- llama_context * ctx;
-
// load the model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
if (model == NULL) {
fprintf(stderr, "%s: error: unable to load model\n", __func__);
return 1;
params.warmup = false;
// init
- llama_model * model;
- llama_context * ctx;
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
if (model == nullptr || ctx == nullptr) {
fprintf(stderr, "%s : failed to init\n", __func__);
return 1;
params.warmup = false;
// init
- llama_model * model;
- llama_context * ctx;
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
if (model == nullptr || ctx == nullptr) {
fprintf(stderr, "%s : failed to init\n", __func__);
return 1;
// load the model and apply lora adapter, if any
LOG("%s: load the model and apply lora adapter, if any\n", __func__);
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ model = llama_init.model;
+ ctx = llama_init.context;
if (model == NULL) {
LOG_TEE("%s: error: unable to load model\n", __func__);
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model = NULL;
- llama_context * ctx = NULL;
-
// load the target model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
// Tokenize the prompt
std::vector<llama_token> inp;
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model = NULL;
- llama_context * ctx = NULL;
-
// load the model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
GGML_ASSERT(model != nullptr);
// tokenize the prompt
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model = NULL;
- llama_context * ctx = NULL;
-
// load the model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
// tokenize the prompt
std::vector<llama_token> inp;
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model = NULL;
- llama_context * ctx = NULL;
-
// load the model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
// tokenize the prompt
std::vector<llama_token> inp;
// load the model and apply lora adapter, if any
LOG("%s: load the model and apply lora adapter, if any\n", __func__);
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ model = llama_init.model;
+ ctx = llama_init.context;
if (sparams.cfg_scale > 1.f) {
struct llama_context_params lparams = llama_context_params_from_gpt_params(params);
ctx_guidance = llama_new_context_with_model(model, lparams);
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model = NULL;
- llama_context * ctx = NULL;
-
// load the target model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
// load the prompts from an external file if there are any
if (params.prompt.empty()) {
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model;
- llama_context * ctx;
-
// load the model and apply lora adapter, if any
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
if (model == NULL) {
fprintf(stderr, "%s: error: unable to load model\n", __func__);
return 1;
llama_backend_init();
llama_numa_init(params.numa);
- llama_model * model;
- llama_context * ctx;
-
// load the model
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
+
if (model == NULL) {
fprintf(stderr, "%s: error: unable to load model\n", __func__);
return 1;
std::string result2;
// init
- llama_model * model;
- llama_context * ctx;
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ llama_model * model = llama_init.model;
+ llama_context * ctx = llama_init.context;
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
if (model == nullptr || ctx == nullptr) {
fprintf(stderr, "%s : failed to init\n", __func__);
return 1;
// dedicate one sequence to the system prompt
params.n_parallel += 1;
- std::tie(model, ctx) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init = llama_init_from_gpt_params(params);
+
+ model = llama_init.model;
+ ctx = llama_init.context;
params.n_parallel -= 1; // but be sneaky about it
if (model == nullptr) {
LOG_ERROR("unable to load model", {{"model", params.model}});
llama_context * ctx_dft = NULL;
// load the target model
- std::tie(model_tgt, ctx_tgt) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init_tgt = llama_init_from_gpt_params(params);
+ model_tgt = llama_init_tgt.model;
+ ctx_tgt = llama_init_tgt.context;
// load the draft model
params.model = params.model_draft;
params.n_threads = params.n_threads_draft;
}
params.n_threads_batch = params.n_threads_batch_draft;
- std::tie(model_dft, ctx_dft) = llama_init_from_gpt_params(params);
+ llama_init_result llama_init_dft = llama_init_from_gpt_params(params);
+ model_dft = llama_init_dft.model;
+ ctx_dft = llama_init_dft.context;
const bool vocab_type_tgt = llama_vocab_type(model_tgt);
LOG("vocab_type tgt: %d\n", vocab_type_tgt);