Load GLM vision weights on demand

This commit is contained in:
Georg Bauer
2026-09-01 20:08:36 +02:00
parent 46d6a976a5
commit ee515ee824
10 changed files with 293 additions and 26 deletions
+14
View File
@@ -40,6 +40,7 @@ pub(super) struct PreferenceDraft {
pub(super) warm_weights: bool,
pub(super) glm_mtp: bool,
pub(super) glm_mtp_timing: bool,
pub(super) keep_vision_loaded: bool,
pub(super) dspark_confidence_threshold: String,
pub(super) dspark_strict: bool,
pub(super) dspark_exact_sampling: bool,
@@ -104,6 +105,7 @@ impl PreferenceDraft {
warm_weights: execution.warm_weights,
glm_mtp: speculative.glm_mtp,
glm_mtp_timing: speculative.glm_mtp_timing,
keep_vision_loaded: speculative.keep_vision_loaded,
dspark_confidence_threshold: optional_string(speculative.dspark_confidence_threshold),
dspark_strict: speculative.dspark_strict,
dspark_exact_sampling: speculative.dspark_exact_sampling,
@@ -213,6 +215,7 @@ impl PreferenceDraft {
Ok(SpeculativePreferences {
glm_mtp: self.glm_mtp,
glm_mtp_timing: self.glm_mtp_timing,
keep_vision_loaded: self.keep_vision_loaded,
dspark_enabled: self.dspark_enabled,
dspark_confidence_threshold: parse_optional_f32(
"DSpark confidence",
@@ -256,6 +259,7 @@ impl PreferenceDraft {
self.dspark_enabled = speculative.dspark_enabled;
self.glm_mtp = speculative.glm_mtp;
self.glm_mtp_timing = speculative.glm_mtp_timing;
self.keep_vision_loaded = speculative.keep_vision_loaded;
self.dspark_confidence_threshold = optional_string(speculative.dspark_confidence_threshold);
self.dspark_strict = speculative.dspark_strict;
self.dspark_exact_sampling = speculative.dspark_exact_sampling;
@@ -870,6 +874,11 @@ impl App {
}
self.preference_error = None;
}
Message::PreferenceKeepVisionLoadedChanged(value) => {
self.preference_draft.keep_vision_loaded =
self.preference_draft.acceleration_model == ModelChoice::Glm53Flash && value;
self.preference_error = None;
}
Message::PreferenceDsparkConfidenceChanged(value) => {
self.preference_draft.dspark_confidence_threshold = value;
if self.preference_draft.acceleration_model.supports_dspark()
@@ -1013,10 +1022,15 @@ mod tests {
draft.select_acceleration(ModelChoice::Glm52).unwrap();
assert!(!draft.ssd_streaming);
draft.select_acceleration(ModelChoice::Glm53Flash).unwrap();
draft.keep_vision_loaded = true;
draft
.select_acceleration(ModelChoice::DeepSeekV4Flash0731)
.unwrap();
assert!(draft.ssd_streaming);
assert!(!draft.keep_vision_loaded);
draft.select_acceleration(ModelChoice::Glm53Flash).unwrap();
assert!(draft.keep_vision_loaded);
}
#[test]