From fff3a68b29b267c402c5c6968bb5ef59d607502c Mon Sep 17 00:00:00 2001 From: jeffser Date: Mon, 3 Jun 2024 16:31:03 -0600 Subject: [PATCH] Added overrides system to Ollama instance --- src/alpaca.gresource.xml | 1 + src/icons/brain-augemnted-symbolic.svg | 2 ++ src/local_instance.py | 8 ++++-- src/window.py | 14 +++++++++- src/window.ui | 38 ++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 src/icons/brain-augemnted-symbolic.svg diff --git a/src/alpaca.gresource.xml b/src/alpaca.gresource.xml index 70ec228..22da8a3 100644 --- a/src/alpaca.gresource.xml +++ b/src/alpaca.gresource.xml @@ -21,6 +21,7 @@ icons/view-more-symbolic.svg icons/document-open-symbolic.svg icons/list-add-symbolic.svg + icons/brain-augemnted-symbolic.svg window.ui gtk/help-overlay.ui diff --git a/src/icons/brain-augemnted-symbolic.svg b/src/icons/brain-augemnted-symbolic.svg new file mode 100644 index 0000000..b6c6a64 --- /dev/null +++ b/src/icons/brain-augemnted-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/src/local_instance.py b/src/local_instance.py index 46e8e78..4733204 100644 --- a/src/local_instance.py +++ b/src/local_instance.py @@ -5,10 +5,14 @@ from time import sleep instance = None port = 11435 data_dir = os.getenv("XDG_DATA_HOME") +overrides = {} def start(): - global instance - instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, 'OLLAMA_HOST': f"127.0.0.1:{port}", "HOME": data_dir}, stderr=subprocess.PIPE, text=True) + global instance, overrides + params = overrides.copy() + params["OLLAMA_HOST"] = f"127.0.0.1:{port}" # You can't change this directly sorry :3 + params["HOME"] = data_dir + instance = subprocess.Popen(["/app/bin/ollama", "serve"], env={**os.environ, **params}, stderr=subprocess.PIPE, text=True) print("Starting Alpaca's Ollama instance...") sleep(1) print("Started Alpaca's Ollama instance") diff --git a/src/window.py b/src/window.py index f5f90c4..306aac0 100644 --- a/src/window.py +++ b/src/window.py @@ -314,6 +314,16 @@ class AlpacaWindow(Adw.ApplicationWindow): self.manage_models_dialog.present(self) thread.start() + @Gtk.Template.Callback() + def override_changed(self, dropdown, pspec): + if str(pspec) != "": return #Great code + name = dropdown.get_name() + value = dropdown.get_selected_item().get_string() if dropdown.get_selected() != 0 else None + if (not value and name not in local_instance.overrides) or (value and value in local_instance.overrides and local_instance.overrides[name] == value): return + if not value: del local_instance.overrides[name] + if value: local_instance.overrides[name] = value + self.save_server_config() + if not self.run_remote: local_instance.reset() def check_alphanumeric(self, editable, text, length, position): new_text = ''.join([char for char in text if char.isalnum() or char in ['-', '_']]) @@ -490,7 +500,7 @@ class AlpacaWindow(Adw.ApplicationWindow): def save_server_config(self): with open(os.path.join(self.config_dir, "server.json"), "w+") as f: - json.dump({'remote_url': self.remote_url, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks}, f) + json.dump({'remote_url': self.remote_url, 'run_remote': self.run_remote, 'local_port': local_instance.port, 'run_on_background': self.run_on_background, 'model_tweaks': self.model_tweaks, 'ollama_overrides': local_instance.overrides}, f) def verify_connection(self): response = connection_handler.simple_get(connection_handler.url) @@ -1012,6 +1022,8 @@ class AlpacaWindow(Adw.ApplicationWindow): self.temperature_spin.set_value(self.model_tweaks['temperature']) self.seed_spin.set_value(self.model_tweaks['seed']) self.keep_alive_spin.set_value(self.model_tweaks['keep_alive']) + #Overrides + if "ollama_overrides" in data: local_instance.overrides = data['ollama_overrides'] self.background_switch.set_active(self.run_on_background) self.set_hide_on_close(self.run_on_background) diff --git a/src/window.ui b/src/window.ui index d18ca5f..c715cd4 100644 --- a/src/window.ui +++ b/src/window.ui @@ -358,6 +358,44 @@ + + + Ollama Instance + brain-augemnted-symbolic + + + Ollama Overrides + Manage the arguments used on Ollama, any changes on this page only applies to the integrated instance, the instance will restart if you make changes + + + + HSA_OVERRIDE_GFX_VERSION + AMD Radeon GFX + HSA_OVERRIDE_GFX_VERSION + + + + (Do not override) + gfx900 + gfx906 + gfx908 + gfx90a + gfx940 + gfx941 + gfx942 + gfx1030 + gfx1100 + gfx1101 + gfx1102 + + + + + + + + +