Tune ACE-Step XL-SFT test defaults

This commit is contained in:
Mikei386 committed 2026-09-10 19:49:04 +02:00
1 parent 1d5a113158
commit 436dee6f1e
2 files changed
+20 -10

No files matched your search

+3 -3
View File
@@ -16,8 +16,8 @@ Python-Modulen und teilweise aus dem Browser-`localStorage`. Deshalb bindet der
Compose-Dienst vier kleine, versionierte Overrides aus `./overrides` read-only Compose-Dienst vier kleine, versionierte Overrides aus `./overrides` read-only
in den Container ein. Sie setzen fuer das XL-SFT-Modell: in den Container ein. Sie setzen fuer das XL-SFT-Modell:
- 50 DiT-Schritte, Guidance 7, ODE/Euler und CFG-Intervall 0 bis 1 (Upstream-Defaults) - 80 DiT-Schritte, Guidance 8, Shift 3, ODE/Euler und CFG-Intervall 0 bis 1
- Shift 1 statt des fehlerhaften UI-Werts 3 - reine Stilreferenzen werden entsprechend der ACE-Step-API-Empfehlung automatisch mit Stärke 0,2 übertragen; Cover-/Quellaudio behält seine eigene Stärke
- ADG aus, keine benutzerdefinierten Timesteps - ADG aus, keine benutzerdefinierten Timesteps
- FLAC als verlustfreie Standardausgabe - FLAC als verlustfreie Standardausgabe
- 320 kbit/s als MP3-Ausweichwert - 320 kbit/s als MP3-Ausweichwert
@@ -49,7 +49,7 @@ Image-Build ab. Die Community-UI unter `http://192.168.1.212:7861` ist bis zu
vollstaendigen Ende-zu-Ende-Tests von Cover und Remix als experimentell vollstaendigen Ende-zu-Ende-Tests von Cover und Remix als experimentell
gekennzeichnet. gekennzeichnet.
Die Community-UI startet XL-SFT mit 50 Schritten, Guidance 7, Shift 1, FLAC Die Community-UI startet XL-SFT mit 80 Schritten, Guidance 8, Shift 3, FLAC
und aktivem Thinking ueber den 1,7B-Planer. `AI Enhance` wird als `use_format` und aktivem Thinking ueber den 1,7B-Planer. `AI Enhance` wird als `use_format`
uebertragen. Vor jedem Auftrag zeigt sie die tatsaechlich gesendeten Parameter uebertragen. Vor jedem Auftrag zeigt sie die tatsaechlich gesendeten Parameter
und faengt offensichtliche Widersprueche ab. Referenzaudio steuert nur Klang und faengt offensichtliche Widersprueche ab. Referenzaudio steuert nur Klang
@@ -72,6 +72,11 @@ function buildReleaseTaskPayload(params: GenerationParams): Record<string, unkno
const thinking = params.thinking ?? true; const thinking = params.thinking ?? true;
const enhance = params.enhance ?? false; const enhance = params.enhance ?? false;
const taskType = params.taskType === 'audio2audio' ? 'cover' : (params.taskType || 'text2music'); const taskType = params.taskType === 'audio2audio' ? 'cover' : (params.taskType || 'text2music');
// A reference in text-to-music mode is only a global style/timbre guide.
// ACE-Step's own API guide recommends a low value (~0.2) for style transfer.
// Cover/source-audio jobs retain the explicitly selected cover strength.
const isStyleReference = taskType === 'text2music' && Boolean(params.referenceAudioUrl) && !params.sourceAudioUrl;
const effectiveAudioStrength = isStyleReference ? 0.2 : (params.audioCoverStrength ?? 1.0);
return { return {
prompt, prompt,
@@ -82,9 +87,9 @@ function buildReleaseTaskPayload(params: GenerationParams): Record<string, unkno
key_scale: params.keyScale || '', key_scale: params.keyScale || '',
time_signature: params.timeSignature || '', time_signature: params.timeSignature || '',
audio_duration: params.duration && params.duration > 0 ? params.duration : -1, audio_duration: params.duration && params.duration > 0 ? params.duration : -1,
inference_steps: params.inferenceSteps ?? 50, inference_steps: params.inferenceSteps ?? 80,
guidance_scale: params.guidanceScale ?? 7.0, guidance_scale: params.guidanceScale ?? 8.0,
shift: params.shift ?? 1.0, shift: params.shift ?? 3.0,
infer_method: params.inferMethod || 'ode', infer_method: params.inferMethod || 'ode',
batch_size: Math.min(Math.max(params.batchSize ?? 1, 1), 16), batch_size: Math.min(Math.max(params.batchSize ?? 1, 1), 16),
use_random_seed: params.randomSeed !== false, use_random_seed: params.randomSeed !== false,
@@ -109,7 +114,7 @@ function buildReleaseTaskPayload(params: GenerationParams): Record<string, unkno
audio_codes: params.audioCodes || '', audio_codes: params.audioCodes || '',
repainting_start: params.repaintingStart ?? 0.0, repainting_start: params.repaintingStart ?? 0.0,
repainting_end: params.repaintingEnd ?? -1, repainting_end: params.repaintingEnd ?? -1,
audio_cover_strength: params.audioCoverStrength ?? 1.0, audio_cover_strength: effectiveAudioStrength,
use_adg: params.useAdg ?? false, use_adg: params.useAdg ?? false,
cfg_interval_start: params.cfgIntervalStart ?? 0.0, cfg_interval_start: params.cfgIntervalStart ?? 0.0,
cfg_interval_end: params.cfgIntervalEnd ?? 1.0, cfg_interval_end: params.cfgIntervalEnd ?? 1.0,
@@ -324,7 +329,7 @@ patch('App.tsx', (text) => {
}); });
patch('components/CreatePanel.tsx', (text) => { patch('components/CreatePanel.tsx', (text) => {
text = replaceOnce(text, 'useState(9.0);', 'useState(7.0);', 'guidance default'); text = replaceOnce(text, 'useState(9.0);', 'useState(8.0);', 'guidance default');
text = replaceOnce( text = replaceOnce(
text, text,
'useState(false); // Default false for GPU compatibility', 'useState(false); // Default false for GPU compatibility',
@@ -332,9 +337,9 @@ patch('components/CreatePanel.tsx', (text) => {
'thinking default', 'thinking default',
); );
text = replaceOnce(text, "useState<'mp3' | 'flac'>('mp3');", "useState<'mp3' | 'flac'>('flac');", 'lossless default'); text = replaceOnce(text, "useState<'mp3' | 'flac'>('mp3');", "useState<'mp3' | 'flac'>('flac');", 'lossless default');
text = replaceOnce(text, 'useState(12);', 'useState(50);', 'XL-SFT steps default'); text = replaceOnce(text, 'useState(12);', 'useState(80);', 'XL-SFT steps default');
text = replaceOnce(text, "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-0.6B'", "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-1.7B'", 'planner model default'); text = replaceOnce(text, "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-0.6B'", "localStorage.getItem('ace-lmModel') || 'acestep-5Hz-lm-1.7B'", 'planner model default');
text = replaceOnce(text, 'useState(3.0);', 'useState(1.0);', 'shift default'); // Upstream already defaults to Shift 3. Keep it instead of replacing it.
text = replaceOnce( text = replaceOnce(
text, text,
@@ -347,6 +352,10 @@ patch('components/CreatePanel.tsx', (text) => {
window.alert('Widerspruch: Der Auftrag verlangt Gesang, aber das Liedtextfeld ist leer. Bitte Text eintragen oder „Instrumental“ wählen.'); window.alert('Widerspruch: Der Auftrag verlangt Gesang, aber das Liedtextfeld ist leer. Bitte Text eintragen oder „Instrumental“ wählen.');
return; return;
} }
if (instrumental && asksForVocals) {
window.alert('Widerspruch: „Instrumental“ ist aktiv, aber die Beschreibung verlangt Gesang. Bitte Gesangsbegriffe aus der Beschreibung entfernen oder „Instrumental“ deaktivieren und einen Liedtext eintragen.');
return;
}
if ((taskType === 'cover' || taskType === 'audio2audio') && !sourceAudioUrl.trim() && !audioCodes.trim()) { if ((taskType === 'cover' || taskType === 'audio2audio') && !sourceAudioUrl.trim() && !audioCodes.trim()) {
window.alert('Für einen Cover-Auftrag fehlt das Quellaudio. Bitte unter „Quellaudio / Cover“ eine Datei auswählen.'); window.alert('Für einen Cover-Auftrag fehlt das Quellaudio. Bitte unter „Quellaudio / Cover“ eine Datei auswählen.');
return; return;
@@ -368,6 +377,7 @@ patch('components/CreatePanel.tsx', (text) => {
\`Gesang: \${instrumental ? 'nein (Instrumental)' : 'ja'}\`, \`Gesang: \${instrumental ? 'nein (Instrumental)' : 'ja'}\`,
\`Referenzaudio (nur Klang/Produktion): \${referenceAudioUrl ? 'vorhanden' : 'keines'}\`, \`Referenzaudio (nur Klang/Produktion): \${referenceAudioUrl ? 'vorhanden' : 'keines'}\`,
\`Quellaudio (Melodie/Rhythmus/Akkorde): \${sourceAudioUrl ? 'vorhanden' : 'keines'}\`, \`Quellaudio (Melodie/Rhythmus/Akkorde): \${sourceAudioUrl ? 'vorhanden' : 'keines'}\`,
\`Audio-Einfluss: \${referenceAudioUrl && !sourceAudioUrl && taskType === 'text2music' ? '0,2 (sichere Stilreferenz)' : audioCoverStrength}\`,
\`Ausgabe: \${audioFormat.toUpperCase()}, \${batchSize} Variation(en), \${bulkCount} Auftrag/Aufträge\`, \`Ausgabe: \${audioFormat.toUpperCase()}, \${batchSize} Variation(en), \${bulkCount} Auftrag/Aufträge\`,
'', '',
'Auftrag jetzt starten?', 'Auftrag jetzt starten?',