Skip to content

Commit b5fb85c

Browse files
authored
Merge pull request LykosAI#1644 from NeuralFault/remove-normalvram
ComfyUI: Remove `--normalvram`
2 parents 9934870 + a8dbfc0 commit b5fb85c

3 files changed

Lines changed: 121 additions & 4 deletions

File tree

StabilityMatrix.Core/Models/Packages/ComfyUI.cs

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,10 +221,9 @@ IPipWheelService pipWheelService
221221
InitialValue = HardwareHelper.IterGpuInfo().Select(gpu => gpu.MemoryLevel).Max() switch
222222
{
223223
MemoryLevel.Low => "--lowvram",
224-
MemoryLevel.Medium => "--normalvram",
225224
_ => null,
226225
},
227-
Options = ["--highvram", "--normalvram", "--lowvram", "--novram"],
226+
Options = ["--highvram", "--lowvram", "--novram"],
228227
},
229228
new()
230229
{
@@ -529,6 +528,8 @@ public override async Task RunPackage(
529528
await SetupVenv(installLocation, pythonVersion: PyVersion.Parse(installedPackage.PythonVersion))
530529
.ConfigureAwait(false);
531530

531+
var launchArguments = NormalizeLaunchArguments(installedPackage, options.Arguments);
532+
532533
VenvRunner.UpdateEnvironmentVariables(GetEnvVars);
533534

534535
// Check for old NVIDIA driver version with cu130 installations
@@ -585,7 +586,7 @@ older torch index (e.g. cu128)
585586
}
586587

587588
VenvRunner.RunDetached(
588-
[Path.Combine(installLocation, options.Command ?? LaunchCommand), .. options.Arguments],
589+
[Path.Combine(installLocation, options.Command ?? LaunchCommand), .. launchArguments],
589590
HandleConsoleOutput,
590591
OnExit
591592
);
@@ -609,6 +610,34 @@ void HandleConsoleOutput(ProcessOutput s)
609610
}
610611
}
611612

613+
protected ProcessArgs NormalizeLaunchArguments(
614+
InstalledPackage installedPackage,
615+
ProcessArgs fallbackArguments
616+
)
617+
{
618+
if (installedPackage.LaunchArgs is not { Count: > 0 })
619+
{
620+
return fallbackArguments;
621+
}
622+
623+
var removedCount = installedPackage.LaunchArgs.RemoveAll(option =>
624+
string.Equals(option.Name, "--normalvram", StringComparison.OrdinalIgnoreCase)
625+
);
626+
627+
if (removedCount == 0)
628+
{
629+
return fallbackArguments;
630+
}
631+
632+
Logger.Info("Removed {RemovedCount} obsolete ComfyUI launch args before launch", removedCount);
633+
634+
SettingsManager.SaveLaunchArgs(installedPackage.Id, installedPackage.LaunchArgs);
635+
636+
return ProcessArgs.FromQuoted(
637+
installedPackage.LaunchArgs.Select(option => option.ToArgString()).OfType<string>()
638+
);
639+
}
640+
612641
public override TorchIndex GetRecommendedTorchVersion()
613642
{
614643
var preferRocm =

StabilityMatrix.Core/Models/Packages/ComfyZluda.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,10 @@ public override async Task RunPackage(
205205
await SetupVenv(installLocation, pythonVersion: PyVersion.Parse(installedPackage.PythonVersion))
206206
.ConfigureAwait(false);
207207

208+
var launchArguments = NormalizeLaunchArguments(installedPackage, options.Arguments);
209+
208210
var zludaPath = Path.Combine(installLocation, LaunchCommand);
209-
ProcessArgs args = ["--", VenvRunner.PythonPath.ToString(), "main.py", .. options.Arguments];
211+
ProcessArgs args = ["--", VenvRunner.PythonPath.ToString(), "main.py", .. launchArguments];
210212
zludaProcess = ProcessRunner.StartAnsiProcess(
211213
zludaPath,
212214
args,
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using NSubstitute;
2+
using StabilityMatrix.Core.Helper;
3+
using StabilityMatrix.Core.Helper.Cache;
4+
using StabilityMatrix.Core.Models;
5+
using StabilityMatrix.Core.Models.Packages;
6+
using StabilityMatrix.Core.Processes;
7+
using StabilityMatrix.Core.Python;
8+
using StabilityMatrix.Core.Services;
9+
10+
namespace StabilityMatrix.Tests.Models.Packages;
11+
12+
[TestClass]
13+
public class ComfyLaunchArgMigrationTests
14+
{
15+
[TestMethod]
16+
public void NormalizeLaunchArguments_StripsObsoleteNormalVramAndPersistsUpdatedArgs()
17+
{
18+
var settingsManager = Substitute.For<ISettingsManager>();
19+
var package = new TestComfyUI(
20+
Substitute.For<IGithubApiCache>(),
21+
settingsManager,
22+
Substitute.For<IDownloadService>(),
23+
Substitute.For<IPrerequisiteHelper>(),
24+
Substitute.For<IPyInstallationManager>(),
25+
Substitute.For<IPipWheelService>()
26+
);
27+
28+
var installedPackage = new InstalledPackage
29+
{
30+
Id = Guid.NewGuid(),
31+
PackageName = "ComfyUI",
32+
LaunchArgs =
33+
[
34+
new LaunchOption
35+
{
36+
Name = "--normalvram",
37+
Type = LaunchOptionType.Bool,
38+
OptionValue = true,
39+
},
40+
],
41+
};
42+
43+
var fallbackArguments = ProcessArgs.FromQuoted(
44+
installedPackage
45+
.LaunchArgs.Select(option => option.ToArgString())
46+
.Where(argument => argument is not null)
47+
.Select(argument => argument!)
48+
);
49+
50+
var normalizedArguments = package.Normalize(installedPackage, fallbackArguments);
51+
52+
Assert.IsFalse(installedPackage.LaunchArgs.Any(option => option.Name == "--normalvram"));
53+
Assert.IsFalse(normalizedArguments.Contains("--normalvram"));
54+
settingsManager
55+
.Received(1)
56+
.SaveLaunchArgs(
57+
installedPackage.Id,
58+
Arg.Is<IEnumerable<LaunchOption>>(options =>
59+
options.All(option => option.Name != "--normalvram")
60+
)
61+
);
62+
}
63+
64+
private sealed class TestComfyUI : ComfyUI
65+
{
66+
public TestComfyUI(
67+
IGithubApiCache githubApi,
68+
ISettingsManager settingsManager,
69+
IDownloadService downloadService,
70+
IPrerequisiteHelper prerequisiteHelper,
71+
IPyInstallationManager pyInstallationManager,
72+
IPipWheelService pipWheelService
73+
)
74+
: base(
75+
githubApi,
76+
settingsManager,
77+
downloadService,
78+
prerequisiteHelper,
79+
pyInstallationManager,
80+
pipWheelService
81+
) { }
82+
83+
public ProcessArgs Normalize(InstalledPackage installedPackage, ProcessArgs fallbackArguments) =>
84+
NormalizeLaunchArguments(installedPackage, fallbackArguments);
85+
}
86+
}

0 commit comments

Comments
 (0)