mirror of
https://github.com/fspecii/ace-step-ui.git
synced 2026-04-25 06:05:47 +03:00
[GH-ISSUE #46] Limitations and more 🫠 #42
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/ace-step-ui#42
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @cynical2010 on GitHub (Feb 10, 2026).
Original GitHub issue: https://github.com/fspecii/ace-step-ui/issues/46
on the newer Git pull 10.02.2026 (made a new installment)
Why limits? (From this repo) (Code-based restrictions?)
20 steps? Why did you choose 20 - and not 25, 17, 14 or maybe 19? It looks like the random generator jumbled them up. The user interface allows 200 steps.
20 out of 200 steps 😂
50 are possible depending on the model, and there are people who go up to 70 and more.
@cynical2010 commented on GitHub (Feb 10, 2026):
So I looked it up in the console — it still uses the turbo model even if another model is chosen in the model selector at the top of the page (so nonfunctional?).
It did not download any models from that dropdown menu. I clicked all of them and nothing happened at all, so maybe it's just a placeholder at the moment.
Turbo gen works.
See you in some weeks i go back to gradio there is no limitation.
@Basthet commented on GitHub (Feb 11, 2026):
You have to restart the ace-step-api if you want to change the model.
The ace-step-ui is only the frontend. The model selection in the top left only changes the UI defaults — the model itself is not dynamically switchable.
So (at least on Linux):
If you want to use the sft model:
Set
ACESTEP_CONFIG_PATH=acestep-v15-sftin the.envfile of the API (ace-step-15)Start the server with
uv run acestep-apiIn the UI, select 1.5S (so the UI defaults match the running model)
If you want to use the acestep-v15-turbo model:
Stop the API server
Set
ACESTEP_CONFIG_PATH=acestep-v15-turboin the.envfile of the API (ace-step-15)Restart the server
@cynical2010 commented on GitHub (Feb 11, 2026):
i will take a look later and report back 👍
@cynical2010 commented on GitHub (Feb 11, 2026):
Generation failed. Please try again.: spawn \ace-step-ui\ACE-Step-1.5\env\Scripts\python.exe ENOENT
model loads now but generation is now fully gone not even with the turbo model
i will look on the ENOENT stuff now but i got no hope on that one 😂
for now ty @Basthet
@cynical2010 commented on GitHub (Feb 11, 2026):
Here are the concise, directory‑agnostic steps and code changes you can apply and share to fix ENOENT/path issues and deprecated args on Windows.
Update server/src/services/acestep.ts
Add/export resolveAceStepPath() and resolvePythonPath() with robust checking:
ts
import path from 'path';
import fs from 'fs';
import { readdirSync } from 'fs';
export function resolveAceStepPath(): string {
const envPath = process.env.ACESTEP_PATH || 'ACE-Step-1.5';
const workspaceRoot = path.resolve(__dirname, '../../..');
const candidate = path.isAbsolute(envPath) ? envPath : path.resolve(workspaceRoot, envPath);
const resolved = path.normalize(candidate);
if (!fs.existsSync(resolved)) {
const sibling = path.normalize(path.resolve(workspaceRoot, '..', envPath));
if (fs.existsSync(sibling)) return sibling;
console.warn(
ACE-Step path not found: ${resolved});return resolved;
}
return resolved;
}
export function resolvePythonPath(baseDir?: string): string {
const base = baseDir ? (path.isAbsolute(baseDir) ? baseDir : path.resolve(baseDir)) : resolveAceStepPath();
const candidates: string[] = [];
const venvNames = ['.venv', 'python_embedded', 'python_embeded'];
const children = readdirSync(base, { withFileTypes: true }).filter(d => d.isDirectory()).map(d => d.name);
const dottedVenvs = children.filter(n => n.endsWith('.venv'));
venvNames.push(...dottedVenvs);
for (const v of venvNames) {
candidates.push(path.join(base, v, 'Scripts', 'python.exe'));
candidates.push(path.join(base, v, 'python.exe'));
}
candidates.push(path.join(base, 'python.exe'));
candidates.push(path.join(base, 'Scripts', 'python.exe'));
candidates.push('python');
for (const c of candidates) {
try {
const abs = path.isAbsolute(c) ? c : path.resolve(c);
if (fs.existsSync(abs)) return abs;
} catch (_) {}
}
console.warn('No embedded Python found; falling back to "python" on PATH.');
return 'python';
}
Update server/src/routes/generate.ts
Import helpers at top:
ts
import { existsSync } from 'fs';
import { resolveAceStepPath, resolvePythonPath } from '../services/acestep';
Replace inline ACE-Step path resolution with:
ts
const ACESTEP_DIR = resolveAceStepPath();
console.info('Resolved ACESTEP_DIR:', ACESTEP_DIR);
Before spawning Python processes, validate executable and script:
ts
const pythonExe = resolvePythonPath(ACESTEP_DIR);
const scriptPath = path.resolve(ACESTEP_DIR, 'scripts', 'simple_generate.py'); // adjust if needed
console.info('Using Python executable:', pythonExe);
if (!(existsSync(pythonExe) || pythonExe === 'python')) {
throw new Error(
Python executable not found: ${pythonExe});}
if (!existsSync(scriptPath)) {
throw new Error(
Script not found: ${scriptPath});}
Remove deprecated LM arguments for simple_generate.py
When building args for simple_generate.py, do not add --lm-backend or --lm-model. Keep those flags only for format_sample.py where still valid.
Improve spawn error handling and logging
Add contextual logging in spawn error callbacks:
ts
.on('error', (err) => {
console.error(
Failed to spawn ${pythonExe} ${scriptPath}:, err);// return/throw descriptive error to client
});
.env and runtime recommendations (no directory names)
Ensure .env contains the model selection (either a config name or full checkpoint path depending on app expectations):
Example: ACESTEP_CONFIG_PATH=acestep-v15-sft
Optionally set ACESTEP_PATH (absolute or relative to repo root) to point to the ACE-Step checkout:
Example: ACESTEP_PATH=./ACE-Step-1.5
To force a session value when starting the server:
PowerShell: $env:ACESTEP_CONFIG_PATH='acestep-v15-sft'; python -m uvicorn acestep_api:app --reload
Testing checklist
Test with venvs named: .venv, *.venv, python_embedded, python_embeded, or portable python locations.
Test ACESTEP_PATH set to absolute and relative values and unset.
Verify logs show resolved ACESTEP_DIR and Python executable.
Confirm format and generate features work both with and without the API running (deprecated args removed from simple_generate.py calls).
Notes to include in your commit/PR
Explain that path resolution now:
Resolves relative paths from repo/workspace root
Accepts multiple venv naming patterns
Normalizes paths and validates existence
Explain removal of deprecated --lm-backend / --lm-model for generation calls to avoid ENOENT/failure when API unavailable.
Mention added logging to aid debugging.
🔴🔴🔴🔴DISCLAIMER : text above is from GPT5 mini so i don't know if it's workable i've not tested it and will not. 🔴🔴🔴🔴
i'm out of here this is just insane sorry.....
call it how you want
maybe the text above can help anyone out there for me it's over and i'm happy to be out of here as well.
ty @Basthet