fixed pre_slayer slider crashing on changes

This commit is contained in:
Pakobbix 2023-05-22 07:45:06 +02:00
parent ef7e4ed673
commit 39b2f0c54d

View File

@ -373,8 +373,6 @@ class MainWindow(QMainWindow):
self.ram_slider.valueChanged.connect(self.on_ram_slider_changed) self.ram_slider.valueChanged.connect(self.on_ram_slider_changed)
# Pre-layer Slider # Pre-layer Slider
# Check if Nvidia_gpu is enabled, if not, we don't need multiple pre_layer slider.
if nvidia_gpu:
self.pre_layer_labels = [] self.pre_layer_labels = []
self.pre_layer_slider = [] self.pre_layer_slider = []
self.pre_layer_slider_value = [] self.pre_layer_slider_value = []
@ -395,19 +393,6 @@ class MainWindow(QMainWindow):
pre_layer_sliders_value = QLabel("0") pre_layer_sliders_value = QLabel("0")
layout.addWidget(pre_layer_sliders_value, 11 + (len(gpu_stats) * 2) + i, 2) layout.addWidget(pre_layer_sliders_value, 11 + (len(gpu_stats) * 2) + i, 2)
self.pre_layer_slider_value.append(pre_layer_sliders_value) self.pre_layer_slider_value.append(pre_layer_sliders_value)
else:
self.pre_layer_slider = QSlider(Qt.Horizontal)
self.pre_layer_slider.setMinimum(0)
self.pre_layer_slider.setMaximum(100)
self.pre_layer_slider.setTickInterval(1)
self.pre_layer_slider.setSingleStep(1)
layout.addWidget(QLabel("Pre-layer:"), 11 + len(gpu_stats), 0)
self.pre_layer_slider.setToolTip("The number of layers to allocate to the GPU. Setting this parameter enables CPU offloading for 4-bit models.")
layout.addWidget(self.pre_layer_slider, 11 + len(gpu_stats), 1)
self.pre_layer_slider.valueChanged.connect(self.on_pre_layer_slider_changed)
self.pre_layer_value_label = QLabel("0")
layout.addWidget(self.pre_layer_value_label, 11 + len(gpu_stats), 2)
# Add horizontal line to seperate the Checkboxes # Add horizontal line to seperate the Checkboxes
line = QFrame() line = QFrame()
@ -1285,7 +1270,6 @@ class MainWindow(QMainWindow):
self.ram_value_label.setText(f"{value} GiB") self.ram_value_label.setText(f"{value} GiB")
def on_pre_layer_slider_changed(self, value, idx): def on_pre_layer_slider_changed(self, value, idx):
if nvidia_gpu:
# Calculate the current total value of all sliders # Calculate the current total value of all sliders
total_value = sum(slider.value() for slider in self.pre_layer_slider) total_value = sum(slider.value() for slider in self.pre_layer_slider)
@ -1298,13 +1282,8 @@ class MainWindow(QMainWindow):
if value > max_allowed_value: if value > max_allowed_value:
self.pre_layer_slider[idx].setValue(max_allowed_value) self.pre_layer_slider[idx].setValue(max_allowed_value)
value = max_allowed_value value = max_allowed_value
else:
# Update the value label with the current value of the pre-layer slider
self.pre_layer_value_label.setText(str(value))
def on_pre_layer_slider_changed(self, value): self.pre_layer_slider_value[idx].setText(str(value))
# Update the value label with the current value of the pre-layer slider
self.pre_layer_value_label.setText(str(value))
def on_vram_slider_changed(self, value, gpu_idx): def on_vram_slider_changed(self, value, gpu_idx):
self.gpu_vram_labels[gpu_idx].setText(f"{value} GiB") self.gpu_vram_labels[gpu_idx].setText(f"{value} GiB")
@ -1396,6 +1375,7 @@ class MainWindow(QMainWindow):
"use_cpu": self.cpu_radio_button.isChecked(), # Save the state of the CPU radio button "use_cpu": self.cpu_radio_button.isChecked(), # Save the state of the CPU radio button
"use_auto": self.auto_radio_button.isChecked(), # Save the state of the auto device radio button "use_auto": self.auto_radio_button.isChecked(), # Save the state of the auto device radio button
"built_in_ram": self.ram_slider.value(), # Save the value of the built-in RAM slider "built_in_ram": self.ram_slider.value(), # Save the value of the built-in RAM slider
#"prelayer": self.pre_layer_value_label.text(), # Saves the Prelayer value
"use_8bit": self.use_8bit_checkbox.isChecked(), # Saves the state of the 8bit checkbox "use_8bit": self.use_8bit_checkbox.isChecked(), # Saves the state of the 8bit checkbox
"no_stream": self.use_nostream_checkbox.isChecked(), # Saves the state of the no_stream checkbox "no_stream": self.use_nostream_checkbox.isChecked(), # Saves the state of the no_stream checkbox
"use_16bit": self.use_16bit_checkbox.isChecked(), # Saves the state of the use_16bit checkbox "use_16bit": self.use_16bit_checkbox.isChecked(), # Saves the state of the use_16bit checkbox
@ -1462,12 +1442,11 @@ class MainWindow(QMainWindow):
"loras": [self.lora_list.item(i).text() for i in range(self.lora_list.count()) if self.lora_list.item(i).checkState() == Qt.Checked] # Saves the chosen loras "loras": [self.lora_list.item(i).text() for i in range(self.lora_list.count()) if self.lora_list.item(i).checkState() == Qt.Checked] # Saves the chosen loras
} }
if nvidia_gpu:
settings["gpu_vram"] = [slider.value() for slider in self.gpu_vram_sliders]
pre_layer_values = [slider.value() for slider in self.pre_layer_slider] pre_layer_values = [slider.value() for slider in self.pre_layer_slider]
settings["prelayer"] = pre_layer_values settings["prelayer"] = pre_layer_values
else:
settings["prelayer"] = self.pre_layer_value_label.text() if nvidia_gpu:
settings["gpu_vram"] = [slider.value() for slider in self.gpu_vram_sliders]
# Get the text entered in the text field # Get the text entered in the text field
profile_name = self.profile_name_textfield.text() profile_name = self.profile_name_textfield.text()
@ -1655,13 +1634,9 @@ class MainWindow(QMainWindow):
command += f" --gradio-auth-path {self.choose_file_label.text()}" command += f" --gradio-auth-path {self.choose_file_label.text()}"
## Adds the Prelayer selection ## Adds the Prelayer selection
if nvidia_gpu:
slider_values = [slider.value() for slider in self.pre_layer_slider] slider_values = [slider.value() for slider in self.pre_layer_slider]
if any(value > 0 for value in slider_values): if any(value > 0 for value in slider_values):
command += f" --pre_layer {' '.join(str(value) for value in slider_values if value > 0)}" command += f" --pre_layer {' '.join(str(value) for value in slider_values if value > 0)}"
else:
if int(self.pre_layer_value_label.text()) > 0:
command += f" --pre_layer {self.pre_layer_value_label.text()}"
# IF sdp_attention is checked # IF sdp_attention is checked
if self.use_sdp_attention_checkbox.isChecked(): if self.use_sdp_attention_checkbox.isChecked():
@ -1815,16 +1790,14 @@ class MainWindow(QMainWindow):
self.authentication_checkbox.setChecked(settings.get("authentication", False)) self.authentication_checkbox.setChecked(settings.get("authentication", False))
self.choose_file_label.setText(settings.get("authentication_file", "")) self.choose_file_label.setText(settings.get("authentication_file", ""))
self.character_to_load.setCurrentText(settings.get("character", "")) self.character_to_load.setCurrentText(settings.get("character", ""))
#self.pre_layer_slider.setValue(int(settings.get("prelayer", 0)))
self.use_autolaunch_checkbox.setChecked(settings.get("autolaunch", False)) self.use_autolaunch_checkbox.setChecked(settings.get("autolaunch", False))
self.use_network_checkbox.setChecked(settings.get("listen", False)) self.use_network_checkbox.setChecked(settings.get("listen", False))
if nvidia_gpu:
if "prelayer" in settings: if "prelayer" in settings:
pre_layer_values = settings["prelayer"] pre_layer_values = settings["prelayer"]
for i, value in enumerate(pre_layer_values): for i, value in enumerate(pre_layer_values):
self.pre_layer_slider[i].setValue(value) self.pre_layer_slider[i].setValue(value)
else:
self.pre_layer_slider.setValue(int(settings.get("prelayer", 0)))
if nvidia_gpu: if nvidia_gpu:
gpu_vram_settings = settings.get("gpu_vram", []) gpu_vram_settings = settings.get("gpu_vram", [])