diff --git a/src/airunner/aihandler/engine.py b/src/airunner/aihandler/engine.py index 6f20aa72e..7ac759889 100644 --- a/src/airunner/aihandler/engine.py +++ b/src/airunner/aihandler/engine.py @@ -6,7 +6,6 @@ from airunner.aihandler.llm import LLM from airunner.aihandler.logger import Logger as logger from airunner.aihandler.runner import SDRunner -from airunner.data.managers import SettingsManager from airunner.aihandler.tts import TTS @@ -33,7 +32,6 @@ def __init__(self, **kwargs): engine=self ) self.tts = TTS() - self.settings_manager = SettingsManager() self.tts_thread = threading.Thread(target=self.tts.run) self.tts_thread.start() @@ -51,11 +49,12 @@ def generator_sample(self, data: dict): logger.info("generator_sample called") is_llm = self.is_llm_request(data) is_tts = self.is_tts_request(data) + self.request_data = data["request_data"] if is_llm and self.model_type != "llm": logger.info("Switching to LLM model") self.model_type = "llm" - do_unload_model = self.settings_manager.settings.unload_unused_model - do_move_to_cpu = not do_unload_model and self.settings_manager.settings.move_unused_model_to_cpu + do_unload_model = self.request_data["unload_unused_model"] + do_move_to_cpu = not do_unload_model and self.request_data["move_unused_model_to_cpu"] if do_move_to_cpu: self.move_pipe_to_cpu() elif do_unload_model: @@ -100,9 +99,12 @@ def unload_llm(self): VRAM to keep the LLM loaded while using other models. """ - do_unload_model = self.settings_manager.settings.unload_unused_model - do_move_to_cpu = not do_unload_model and self.settings_manager.settings.move_unused_model_to_cpu - dtype = self.settings_manager.llm_generator_settings.dtype + do_unload_model = self.request_data["unload_unused_model"] + move_unused_model_to_cpu = self.request_data["move_unused_model_to_cpu"] + + + do_move_to_cpu = not do_unload_model and move_unused_model_to_cpu + dtype = self.request_data["dtype"] if dtype in ["2bit", "4bit", "8bit"]: do_unload_model = True do_move_to_cpu = False diff --git a/src/airunner/aihandler/transformer_runner.py b/src/airunner/aihandler/transformer_runner.py index 2e467f798..f308385a8 100644 --- a/src/airunner/aihandler/transformer_runner.py +++ b/src/airunner/aihandler/transformer_runner.py @@ -3,16 +3,10 @@ from PyQt6.QtCore import QObject -# import AutoTokenizer -# import BitsAndBytesConfig from transformers import BitsAndBytesConfig from transformers import AutoModelForCausalLM, AutoModelForSeq2SeqLM, AutoTokenizer from transformers import InstructBlipForConditionalGeneration from transformers import InstructBlipProcessor - -from airunner.data.managers import SettingsManager -from airunner.data.models import LLMGenerator -from airunner.data.session_scope import session_scope from airunner.aihandler.logger import Logger @@ -83,7 +77,6 @@ def __init__(self, *args, **kwargs): app = kwargs.pop("app", None) self.app = app super().__init__(*args, **kwargs) - self.settings_manager = SettingsManager() # self.llm_api = LLMAPI(app=app) def move_to_cpu(self): @@ -175,7 +168,7 @@ def load_model(self, local_files_only = None): "device_map": self.device_map, "use_cache": self.use_cache, "torch_dtype": torch.float16 if self.dtype != "32bit" else torch.float32, - "token": self.settings_manager.settings.hf_api_key_read_key, + "token": self.request_data.get("hf_api_key_read_key", ""), "trust_remote_code": True } @@ -205,14 +198,6 @@ def load_model(self, local_files_only = None): return self.load_model(local_files_only=False) else: Logger.error(e) - - # if self.requested_generator_name == "casuallm": - # self.pipeline = AutoModelForCausalLM.from_pretrained( - # self.model, - # torch_dtype=torch.float16 if self.dtype != "32bit" else torch.float32, - # trust_remote_code=False, - # device_map="auto" - # ) def process_data(self, data): @@ -314,7 +299,7 @@ def load_tokenizer(self, local_files_only = None): self.tokenizer = AutoTokenizer.from_pretrained( self.current_model_path, local_files_only=local_files_only, - token=self.settings_manager.settings.hf_api_key_read_key, + token=self.request_data.get("hf_api_key_read_key"), device_map=self.device_map, ) except OSError as e: diff --git a/src/airunner/alembic/versions/83be186bd388_removes_llm_generator_setting_from_db.py b/src/airunner/alembic/versions/83be186bd388_removes_llm_generator_setting_from_db.py new file mode 100644 index 000000000..485b724c3 --- /dev/null +++ b/src/airunner/alembic/versions/83be186bd388_removes_llm_generator_setting_from_db.py @@ -0,0 +1,54 @@ +"""removes llm generator setting from db + +Revision ID: 83be186bd388 +Revises: ca640e5c9d6d +Create Date: 2024-01-11 16:39:24.547116 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '83be186bd388' +down_revision: Union[str, None] = 'ca640e5c9d6d' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('llm_generator_settings') + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('llm_generator_settings', + sa.Column('id', sa.INTEGER(), nullable=False), + sa.Column('created_at', sa.DATETIME(), nullable=True), + sa.Column('top_p', sa.INTEGER(), nullable=True), + sa.Column('max_length', sa.INTEGER(), nullable=True), + sa.Column('repetition_penalty', sa.INTEGER(), nullable=True), + sa.Column('min_length', sa.INTEGER(), nullable=True), + sa.Column('length_penalty', sa.INTEGER(), nullable=True), + sa.Column('num_beams', sa.INTEGER(), nullable=True), + sa.Column('ngram_size', sa.INTEGER(), nullable=True), + sa.Column('temperature', sa.INTEGER(), nullable=True), + sa.Column('sequences', sa.INTEGER(), nullable=True), + sa.Column('top_k', sa.INTEGER(), nullable=True), + sa.Column('seed', sa.INTEGER(), nullable=True), + sa.Column('do_sample', sa.BOOLEAN(), nullable=True), + sa.Column('eta_cutoff', sa.INTEGER(), nullable=True), + sa.Column('early_stopping', sa.BOOLEAN(), nullable=True), + sa.Column('random_seed', sa.BOOLEAN(), nullable=True), + sa.Column('model_version', sa.VARCHAR(), nullable=True), + sa.Column('generator_id', sa.INTEGER(), nullable=True), + sa.Column('dtype', sa.VARCHAR(), nullable=True), + sa.Column('use_gpu', sa.BOOLEAN(), nullable=True), + sa.ForeignKeyConstraint(['generator_id'], ['llm_generator.id'], ), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### diff --git a/src/airunner/data/db.py b/src/airunner/data/db.py index 4a5171d33..9aa386851 100644 --- a/src/airunner/data/db.py +++ b/src/airunner/data/db.py @@ -6,7 +6,7 @@ from airunner.data.models import ControlnetModel, LLMPromptTemplate, Pipeline, Document, \ MetadataSettings, AIModel, \ ImageFilter, ImageFilterValue, Scheduler, ActionScheduler, \ - LLMGeneratorSetting, LLMGenerator, LLMModelVersion, StandardImageWidgetSettings + LLMGenerator, LLMModelVersion, StandardImageWidgetSettings from airunner.data.session_scope import session_scope, engine from alembic.config import Config from alembic import command @@ -172,13 +172,6 @@ def prepare_database(): generator = LLMGenerator(name=generator_name) my_session.add(generator) - # create GeneratorSetting with property, value and property_type based on value type - setting = LLMGeneratorSetting() - setting.generator = generator - for k, v in generator_data["generator_settings"].items(): - setting.__setattr__(k, v) - my_session.add(setting) - if "model_versions" in generator_data: model_versions = [] for name in generator_data["model_versions"]: diff --git a/src/airunner/data/managers.py b/src/airunner/data/managers.py index b42a6bb0d..b67830609 100644 --- a/src/airunner/data/managers.py +++ b/src/airunner/data/managers.py @@ -10,7 +10,6 @@ models_scope, session_scope, llm_generator_scope, - llm_generator_settings_scope, canvas_settings_scope, memory_settings_scope, metadata_settings_scope @@ -69,7 +68,6 @@ class SettingsManager(QObject): "standard_image_settings": standard_image_widget_settings_scope, "models": models_scope, "llm_generator": llm_generator_scope, - "llm_generator_settings": llm_generator_settings_scope, "canvas_settings": canvas_settings_scope, "memory_settings": memory_settings_scope, } @@ -86,7 +84,6 @@ def __init__(self): self.standard_image_settings = Modelmanager(standard_image_widget_settings_scope) self.models = Modelmanager(models_scope) self.llm_generator = Modelmanager(llm_generator_scope) - self.llm_generator_settings = Modelmanager(llm_generator_settings_scope) self.canvas_settings = Modelmanager(canvas_settings_scope) self.memory_settings = Modelmanager(memory_settings_scope) self.metadata_settings = Modelmanager(metadata_settings_scope) diff --git a/src/airunner/data/models.py b/src/airunner/data/models.py index 7c29fdb71..37d6fe5ba 100644 --- a/src/airunner/data/models.py +++ b/src/airunner/data/models.py @@ -327,31 +327,6 @@ class LLMGenerator(BaseModel): prompt_template = Column(String, default=prompt_template_seed_data[0]["name"]) -class LLMGeneratorSetting(BaseModel): - __tablename__ = 'llm_generator_settings' - id = Column(Integer, primary_key=True) - created_at = Column(DateTime, default=datetime.datetime.utcnow) - top_p = Column(Integer, default=90) - max_length = Column(Integer, default=50) - repetition_penalty = Column(Integer, default=100) - min_length = Column(Integer, default=10) - length_penalty = Column(Integer, default=100) - num_beams = Column(Integer, default=1) - ngram_size = Column(Integer, default=0) - temperature = Column(Integer, default=100) - sequences = Column(Integer, default=1) - top_k = Column(Integer, default=0) - seed = Column(Integer, default=0) - do_sample = Column(Boolean, default=False) - eta_cutoff = Column(Integer, default=10) - early_stopping = Column(Boolean, default=False) - random_seed = Column(Boolean, default=False) - model_version = Column(String, default="google/flan-t5-xl") - generator_id = Column(Integer, ForeignKey('llm_generator.id')) - dtype = Column(String, default="4bit") - use_gpu = Column(Boolean, default=True) - - class LLMModelVersion(BaseModel): __tablename__ = 'llm_model_version' id = Column(Integer, primary_key=True) diff --git a/src/airunner/data/session_scope.py b/src/airunner/data/session_scope.py index 6e66cc4dd..e0ce4e146 100644 --- a/src/airunner/data/session_scope.py +++ b/src/airunner/data/session_scope.py @@ -60,13 +60,6 @@ def llm_generator_scope(): llm_generator = session.query(LLMGenerator).options(joinedload('*')).first() yield llm_generator -@contextmanager -def llm_generator_settings_scope(): - from airunner.data.models import LLMGeneratorSetting - with session_scope() as session: - llm_generator = session.query(LLMGeneratorSetting).options(joinedload('*')).first() - yield llm_generator - @contextmanager def canvas_settings_scope(): from airunner.data.models import CanvasSettings diff --git a/src/airunner/widgets/canvas_plus/canvas_plus_widget.py b/src/airunner/widgets/canvas_plus/canvas_plus_widget.py index 363a8eea5..d27baafea 100644 --- a/src/airunner/widgets/canvas_plus/canvas_plus_widget.py +++ b/src/airunner/widgets/canvas_plus/canvas_plus_widget.py @@ -212,6 +212,8 @@ def __init__(self, parent=None): self.image.fill(Qt.GlobalColor.transparent) self.item = QGraphicsPixmapItem(QPixmap.fromImage(self.image)) self.addItem(self.item) + # self.item should always be on top + self.item.setZValue(1) # self.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) # self.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) @@ -274,7 +276,7 @@ def wheelEvent(self, event): def eraseAt(self, position): painter = QPainter(self.image) painter.setPen(QPen(Qt.GlobalColor.white, self.app.brush_settings["size"], Qt.PenStyle.SolidLine, Qt.PenCapStyle.RoundCap)) - painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Source) + painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Clear) # Create a QPainterPath path = QPainterPath() diff --git a/src/airunner/widgets/llm/chat_prompt_widget.py b/src/airunner/widgets/llm/chat_prompt_widget.py index b0091d8d8..9509f4b1b 100644 --- a/src/airunner/widgets/llm/chat_prompt_widget.py +++ b/src/airunner/widgets/llm/chat_prompt_widget.py @@ -212,11 +212,15 @@ def action_button_clicked_send(self, image_override=None, prompt_override=None, LLMPromptTemplate.name == self.llm_generator.prompt_template ).first() + llm_generator_settings = self.app.llm_generator_settings + data = { "llm_request": True, "request_data": { + "unload_unused_model": self.app.unload_unused_models, + "move_unused_model_to_cpu": self.app.move_unused_model_to_cpu, "generator_name": generator_name, - "model_path": self.llm_generator_settings.model_version, + "model_path": llm_generator_settings["model_version"], "stream": True, "prompt": prompt, "do_summary": False, @@ -225,32 +229,34 @@ def action_button_clicked_send(self, image_override=None, prompt_override=None, "generator": self.llm_generator, "prefix": self.prefix, "suffix": self.suffix, - "dtype": self.llm_generator_settings.dtype, - "use_gpu": self.llm_generator_settings.use_gpu, + "dtype": llm_generator_settings["dtype"], + "use_gpu": llm_generator_settings["use_gpu"], "request_type": "image_caption_generator", "username": self.llm_generator.username, "botname": self.llm_generator.botname, "prompt_template": prompt_template.template, + "hf_api_key_read_key": self.app.hf_api_key_read_key, "parameters": { "override_parameters": self.llm_generator.override_parameters, - "top_p": self.llm_generator_settings.top_p / 100.0, - "max_length": self.llm_generator_settings.max_length, - "repetition_penalty": self.llm_generator_settings.repetition_penalty / 100.0, - "min_length": self.llm_generator_settings.min_length, - "length_penalty": self.llm_generator_settings.length_penalty / 100, - "num_beams": self.llm_generator_settings.num_beams, - "ngram_size": self.llm_generator_settings.ngram_size, - "temperature": self.llm_generator_settings.temperature / 10000.0, - "sequences": self.llm_generator_settings.sequences, - "top_k": self.llm_generator_settings.top_k, - "eta_cutoff": self.llm_generator_settings.eta_cutoff / 100.0, - "seed": self.llm_generator_settings.do_sample, - "early_stopping": self.llm_generator_settings.early_stopping, + "top_p": llm_generator_settings["top_p"] / 100.0, + "max_length": llm_generator_settings["max_length"], + "repetition_penalty": llm_generator_settings["repetition_penalty"] / 100.0, + "min_length": llm_generator_settings["min_length"], + "length_penalty": llm_generator_settings["length_penalty"] / 100, + "num_beams": llm_generator_settings["num_beams"], + "ngram_size": llm_generator_settings["ngram_size"], + "temperature": llm_generator_settings["temperature"] / 10000.0, + "sequences": llm_generator_settings["sequences"], + "top_k": llm_generator_settings["top_k"], + "eta_cutoff": llm_generator_settings['eta_cutoff'] / 100.0, + "seed": llm_generator_settings["do_sample"], + "early_stopping": llm_generator_settings["early_stopping"], }, "image": image, "callback": callback } } + print(data) message_object = Message( name=self.llm_generator.username, message=self.prompt, diff --git a/src/airunner/widgets/llm/llm_settings_widget.py b/src/airunner/widgets/llm/llm_settings_widget.py index 3e4a300f5..2a6ad389c 100644 --- a/src/airunner/widgets/llm/llm_settings_widget.py +++ b/src/airunner/widgets/llm/llm_settings_widget.py @@ -5,7 +5,7 @@ from airunner.widgets.base_widget import BaseWidget from airunner.widgets.llm.templates.llm_settings_ui import Ui_llm_settings_widget -from airunner.data.models import LLMGeneratorSetting, LLMGenerator, AIModel, LLMPromptTemplate +from airunner.data.models import LLMGenerator, AIModel, LLMPromptTemplate from airunner.aihandler.logger import Logger from airunner.data.session_scope import session_scope @@ -45,14 +45,14 @@ def initialize(self): self.initialize_form() def early_stopping_toggled(self, val): - with session_scope() as session: - session.add(self.app.settings_manager.llm_generator_settings) - self.app.settings_manager.llm_generator_settings.early_stopping = val + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["early_stopping"] = val + self.app.llm_generator_settings = llm_generator_settings def do_sample_toggled(self, val): - with session_scope() as session: - session.add(self.generator) - self.app.settings_manager.llm_generator_settings.do_sample = val + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["do_sample"] = val + self.app.llm_generator_settings = llm_generator_settings def toggle_leave_model_in_vram(self, val): if val: @@ -99,14 +99,17 @@ def initialize_form(self): self.ui.move_to_cpu.setChecked(self.app.move_unused_model_to_cpu) self.ui.unload_model.setChecked(self.app.unload_unused_models) + llm_generator_settings = self.app.llm_generator_settings + if self.generator: - self.ui.radio_button_2bit.setChecked(self.app.settings_manager.llm_generator_settings.dtype == "2bit") - self.ui.radio_button_4bit.setChecked(self.app.settings_manager.llm_generator_settings.dtype == "4bit") - self.ui.radio_button_8bit.setChecked(self.app.settings_manager.llm_generator_settings.dtype == "8bit") - self.ui.radio_button_16bit.setChecked(self.app.settings_manager.llm_generator_settings.dtype == "16bit") - self.ui.radio_button_32bit.setChecked(self.app.settings_manager.llm_generator_settings.dtype == "32bit") - self.set_dtype_by_gpu( self.app.settings_manager.llm_generator_settings.use_gpu) - self.set_dtype(self.app.settings_manager.llm_generator_settings.dtype) + dtype = llm_generator_settings["dtype"] + self.ui.radio_button_2bit.setChecked(dtype == "2bit") + self.ui.radio_button_4bit.setChecked(dtype == "4bit") + self.ui.radio_button_8bit.setChecked(dtype == "8bit") + self.ui.radio_button_16bit.setChecked(dtype == "16bit") + self.ui.radio_button_32bit.setChecked(dtype == "32bit") + self.set_dtype_by_gpu(llm_generator_settings["use_gpu"]) + self.set_dtype(dtype) # get unique model names model_names = list(set(model_names)) @@ -115,11 +118,11 @@ def initialize_form(self): self.ui.model.setCurrentText(self.current_generator) self.update_model_version_combobox() if self.generator: - self.ui.model_version.setCurrentText(self.app.settings_manager.llm_generator_settings.model_version) - self.ui.random_seed.setChecked(self.app.settings_manager.llm_generator_settings.random_seed) - self.ui.do_sample.setChecked(self.app.settings_manager.llm_generator_settings.do_sample) - self.ui.early_stopping.setChecked(self.app.settings_manager.llm_generator_settings.early_stopping) - self.ui.use_gpu_checkbox.setChecked(self.app.settings_manager.llm_generator_settings.use_gpu) + self.ui.model_version.setCurrentText(llm_generator_settings["model_version"]) + self.ui.random_seed.setChecked(llm_generator_settings["random_seed"]) + self.ui.do_sample.setChecked(llm_generator_settings["do_sample"]) + self.ui.early_stopping.setChecked(llm_generator_settings["early_stopping"]) + self.ui.use_gpu_checkbox.setChecked(llm_generator_settings["use_gpu"]) self.ui.override_parameters.setChecked(self.generator.override_parameters) self.ui.model.blockSignals(False) @@ -149,12 +152,14 @@ def model_text_changed(self, val): def model_version_changed(self, val): with session_scope() as session: session.add(self.generator) - self.app.settings_manager.llm_generator_settings.model_version = val + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["model_version"] = val + self.app.llm_generator_settings = llm_generator_settings def toggle_move_model_to_cpu(self, val): self.app.move_unused_model_to_cpu = val if val: - self.app.settings_manager.set_value("settings.unload_unused_model", False) + self.app.unload_unused_model = False def override_parameters_toggled(self, val): with session_scope() as session: @@ -187,14 +192,14 @@ def toggled_32bit(self, val): self.set_dtype("32bit") def random_seed_toggled(self, val): - with session_scope() as session: - session.add(self.generator) - self.app.settings_manager.llm_generator_settings.random_seed = val + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["random_seed"] = val + self.app.llm_generator_settings = llm_generator_settings def seed_changed(self, val): - with session_scope() as session: - session.add(self.generator) - self.app.settings_manager.llm_generator_settings.seed = val + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["seed"] = val + self.app.llm_generator_settings = llm_generator_settings def toggle_unload_model(self, val): self.app.unload_unused_model = val @@ -202,15 +207,16 @@ def toggle_unload_model(self, val): self.app.move_unused_model_to_cpu = False def use_gpu_toggled(self, val): - with session_scope() as session: - session.add(self.generator) - self.app.settings_manager.llm_generator_settings.use_gpu = val - # toggle the 16bit radio button and disable 4bit and 8bit radio buttons - self.set_dtype_by_gpu(val) + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["use_gpu"] = val + self.app.llm_generator_settings = llm_generator_settings + self.set_dtype_by_gpu(val) def set_dtype_by_gpu(self, use_gpu): - if not use_gpu: - if self.app.settings_manager.llm_generator_settings.dtype in ["2bit","4bit", "8bit"]: + llm_generator_settings = self.app.llm_generator_settings + dtype = llm_generator_settings["dtype"] + if not use_gpu: + if dtype in ["2bit","4bit", "8bit"]: self.ui.radio_button_16bit.setChecked(True) self.ui.radio_button_2bit.setEnabled(False) self.ui.radio_button_4bit.setEnabled(False) @@ -221,51 +227,30 @@ def set_dtype_by_gpu(self, use_gpu): self.ui.radio_button_4bit.setEnabled(True) self.ui.radio_button_8bit.setEnabled(True) self.ui.radio_button_32bit.setEnabled(False) - if self.app.settings_manager.llm_generator_settings.dtype == "32bit": + if dtype == "32bit": self.ui.radio_button_16bit.setChecked(True) def reset_settings_to_default_clicked(self): - with session_scope() as session: - session.add(self.app.settings_manager.llm_generator_settings) - session.add(self.generator) - - self.app.settings_manager.llm_generator_settings.top_p = LLMGeneratorSetting.top_p.default.arg - self.app.settings_manager.llm_generator_settings.max_length = LLMGeneratorSetting.max_length.default.arg - self.app.settings_manager.llm_generator_settings.repetition_penalty = LLMGeneratorSetting.repetition_penalty.default.arg - self.app.settings_manager.llm_generator_settings.min_length = LLMGeneratorSetting.min_length.default.arg - self.app.settings_manager.llm_generator_settings.length_penalty = LLMGeneratorSetting.length_penalty.default.arg - self.app.settings_manager.llm_generator_settings.num_beams = LLMGeneratorSetting.num_beams.default.arg - self.app.settings_manager.llm_generator_settings.ngram_size = LLMGeneratorSetting.ngram_size.default.arg - self.app.settings_manager.llm_generator_settings.temperature = LLMGeneratorSetting.temperature.default.arg - self.app.settings_manager.llm_generator_settings.sequences = LLMGeneratorSetting.sequences.default.arg - self.app.settings_manager.llm_generator_settings.top_k = LLMGeneratorSetting.top_k.default.arg - self.app.settings_manager.llm_generator_settings.eta_cutoff = LLMGeneratorSetting.eta_cutoff.default.arg - self.app.settings_manager.llm_generator_settings.seed = LLMGeneratorSetting.seed.default.arg - self.app.settings_manager.llm_generator_settings.do_sample = LLMGeneratorSetting.do_sample.default.arg - self.app.settings_manager.llm_generator_settings.early_stopping = LLMGeneratorSetting.early_stopping.default.arg - self.app.settings_manager.llm_generator_settings.random_seed = LLMGeneratorSetting.random_seed.default.arg - self.app.settings_manager.llm_generator_settings.model_version = LLMGeneratorSetting.model_version.default.arg - self.app.settings_manager.llm_generator_settings.dtype = LLMGeneratorSetting.dtype.default.arg - self.app.settings_manager.llm_generator_settings.use_gpu = LLMGeneratorSetting.use_gpu.default.arg - + print("TODO") + llm_generator_settings = self.app.llm_generator_settings self.initialize_form() - self.ui.top_p.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.top_p) - self.ui.max_length.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.max_length) - self.ui.repetition_penalty.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.repetition_penalty) - self.ui.min_length.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.min_length) - self.ui.length_penalty.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.length_penalty) - self.ui.num_beams.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.num_beams) - self.ui.ngram_size.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.ngram_size) - self.ui.temperature.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.temperature) - self.ui.sequences.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.sequences) - self.ui.top_k.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.top_k) - self.ui.eta_cutoff.set_slider_and_spinbox_values(self.app.settings_manager.llm_generator_settings.eta_cutoff) - self.ui.random_seed.setChecked(self.app.settings_manager.llm_generator_settings.random_seed) + self.ui.top_p.set_slider_and_spinbox_values(llm_generator_settings["top_p"]) + self.ui.max_length.set_slider_and_spinbox_values(llm_generator_settings["max_length"]) + self.ui.repetition_penalty.set_slider_and_spinbox_values(llm_generator_settings["repetition_penalty"]) + self.ui.min_length.set_slider_and_spinbox_values(llm_generator_settings["min_length"]) + self.ui.length_penalty.set_slider_and_spinbox_values(llm_generator_settings["length_penalty"]) + self.ui.num_beams.set_slider_and_spinbox_values(llm_generator_settings["num_beams"]) + self.ui.ngram_size.set_slider_and_spinbox_values(llm_generator_settings["ngram_size"]) + self.ui.temperature.set_slider_and_spinbox_values(llm_generator_settings["temperature"]) + self.ui.sequences.set_slider_and_spinbox_values(llm_generator_settings["sequences"]) + self.ui.top_k.set_slider_and_spinbox_values(llm_generator_settings["top_k"]) + self.ui.eta_cutoff.set_slider_and_spinbox_values(llm_generator_settings["eta_cutoff"]) + self.ui.random_seed.setChecked(llm_generator_settings["random_seed"]) def set_dtype(self, dtype): - with session_scope() as session: - session.add(self.app.settings_manager.llm_generator_settings) - self.app.settings_manager.llm_generator_settings.dtype = dtype + llm_generator_settings = self.app.llm_generator_settings + llm_generator_settings["dtype"] = dtype + self.app.llm_generator_settings = llm_generator_settings self.set_dtype_description(dtype) def set_dtype_description(self, dtype): diff --git a/src/airunner/windows/main/main_window.py b/src/airunner/windows/main/main_window.py index 754f3c6c2..93a2d5ad4 100644 --- a/src/airunner/windows/main/main_window.py +++ b/src/airunner/windows/main/main_window.py @@ -619,6 +619,33 @@ def generator_settings(self): @generator_settings.setter def generator_settings(self, val): self.application_settings.setValue("generator_settings", val) + + @property + def llm_generator_settings(self): + return self.application_settings.value("llm_generator_settings", dict( + top_p=90, + max_length=50, + repetition_penalty=100, + min_length=10, + length_penalty=100, + num_beams=1, + ngram_size=0, + temperature=100, + sequences=1, + top_k=0, + seed=0, + do_sample=False, + eta_cutoff=10, + early_stopping=True, + random_seed=False, + model_version="google/flan-t5-xl", + dtype="32bit", + use_gpu=True, + )) + + @llm_generator_settings.setter + def llm_generator_settings(self, val): + self.application_settings.setValue("llm_generator_settings", val) #### END GENERATOR SETTINGS #### @property