Set n_gpu_layers automatically (#2209)

This commit is contained in:
Kawrakow 2026-07-30 18:39:24 +03:00 committed by GitHub
parent f987c4186d
commit b2d0b7c8c7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 32 additions and 4 deletions

View File

@ -1952,7 +1952,9 @@ std::string LLM_TN::operator()(llm_tensor tensor, const std::string & suffix, in
}
void llama_model::set_tensor_overrides(const llama_model_params& params) {
tensor_overrides = params.tensor_buft_overrides && params.tensor_buft_overrides[0].pattern;
if (params.n_gpu_layers > 0) {
tensor_overrides = params.tensor_buft_overrides && params.tensor_buft_overrides[0].pattern;
}
}
std::string llama_model_ftype_name(llama_ftype ftype) {

View File

@ -452,6 +452,23 @@ static size_t llama_get_device_count(const llama_model & model) {
GGML_UNUSED(model);
}
static size_t llama_get_device_count_no_cpu() {
size_t count = 0;
#if defined(GGML_USE_CUDA)
count = ggml_backend_cuda_get_device_count();
#elif defined(GGML_USE_SYCL)
count = ggml_backend_sycl_get_device_count();
#elif defined(GGML_USE_VULKAN)
count = ggml_backend_vk_get_device_count();
#elif defined(GGML_USE_CANN)
return ggml_backend_cann_get_device_count();
#endif
#if defined(GGML_USE_RPC)
count += model.rpc_servers.size();
#endif
return count;
}
static ggml_backend_buffer_type_t llama_default_buffer_type_offload(const llama_model & model, int gpu) {
ggml_backend_buffer_type_t buft = nullptr;
@ -4740,8 +4757,6 @@ static int llama_model_load(const std::string & fname, llama_model & model, llam
return 0;
}
if (!llm_load_tensors(
ml, model, params.n_gpu_layers, params.mla, params.split_mode, params.main_gpu, params.max_gpu, params.tensor_split,
params.type_k, params.type_v, params.idx_type_k, params.extra_output_type,
@ -7198,7 +7213,7 @@ void llama_lora_adapter_free(struct llama_lora_adapter * adapter) {
struct llama_model_params llama_model_default_params() {
struct llama_model_params result = {
/*.devices =*/ nullptr,
/*.n_gpu_layers =*/ 0,
/*.n_gpu_layers =*/ -1,
/*.mla =*/ 0,
/*.split_mode =*/ LLAMA_SPLIT_MODE_LAYER,
/*.main_gpu =*/ 0,
@ -7433,6 +7448,17 @@ struct llama_model * llama_model_load_from_file(
struct llama_model_params params) {
ggml_time_init();
auto n_gpu = llama_get_device_count_no_cpu();
if (params.n_gpu_layers < 0) {
params.n_gpu_layers = n_gpu > 0 ? 999 : 0;
} else if (n_gpu == 0) {
params.n_gpu_layers = 0;
}
if (params.n_gpu_layers == 0) {
params.tensor_buft_overrides = nullptr;
params.ncmoe = 0;
}
llama_model * model = new llama_model;
unsigned cur_percentage = 0;