mirror of
https://github.com/mudler/LocalAI.git
synced 2026-10-05 12:34:43 -04:00
The environment fallback was applied whenever n_parallel was still 1 after option parsing. An explicit `parallel: 1` in the model YAML is indistinguishable from the default that way, so it was replaced by LLAMACPP_PARALLEL. The docs say options in the YAML take precedence over environment variables; a single model could not be forced to one slot while the global variable was set. Track whether the options set the slot count and resolve it in a small helper (parallel_params.h): option first, then LLAMACPP_PARALLEL, then 1. The helper gets a standalone unit test picked up by `make test-backend-cpp`. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Stefan Walcz <stefan.walcz@walcz.de>
30 lines
1.0 KiB
C++
30 lines
1.0 KiB
C++
#include "parallel_params.h"
|
|
|
|
#include <cstdio>
|
|
|
|
int main() {
|
|
// parallel:1 in the model options must not be replaced by the environment.
|
|
if (llama_grpc::resolve_n_parallel(1, "4") != 1) {
|
|
std::fprintf(stderr, "explicit parallel:1 was overwritten by LLAMACPP_PARALLEL\n");
|
|
return 1;
|
|
}
|
|
if (llama_grpc::resolve_n_parallel(8, "4") != 8) {
|
|
std::fprintf(stderr, "explicit parallel was overwritten by LLAMACPP_PARALLEL\n");
|
|
return 1;
|
|
}
|
|
// Without an option the environment applies, otherwise the default.
|
|
if (llama_grpc::resolve_n_parallel(std::nullopt, "4") != 4) {
|
|
std::fprintf(stderr, "LLAMACPP_PARALLEL was not used as fallback\n");
|
|
return 1;
|
|
}
|
|
if (llama_grpc::resolve_n_parallel(std::nullopt, nullptr) != 1) {
|
|
std::fprintf(stderr, "default slot count is not 1\n");
|
|
return 1;
|
|
}
|
|
if (llama_grpc::resolve_n_parallel(std::nullopt, "many") != 1) {
|
|
std::fprintf(stderr, "unparsable LLAMACPP_PARALLEL was not ignored\n");
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|