Default batch size to 1 with localStorage persistence, update README

- Batch size defaults to 1 (safe for 8GB GPUs), persisted in browser
- Bulk count also persisted in browser localStorage
- Add Pinokio 1-click installer as recommended install method
- Add batch size, bulk generation, and LM backend docs
- Update troubleshooting with VRAM-saving tips
This commit is contained in:
fspecii
2026-02-05 22:57:46 +02:00
parent 584b37e53b
commit 23ff094aad
2 changed files with 37 additions and 7 deletions
+26 -2
View File
@@ -154,6 +154,20 @@
## ⚡ Quick Start
### 🎯 Pinokio - 1-Click Install (Recommended for All Users!)
The easiest way to get ACE-Step UI up and running on **any platform** — no terminal, no manual setup:
<p align="center">
<a href="https://beta.pinokio.co/apps/github-com-cocktailpeanut-ace-step-ui-pinokio">
<img src="https://img.shields.io/badge/⚡_Install_with_Pinokio-One_Click-ff69b4?style=for-the-badge&labelColor=1a1a1a" alt="Install with Pinokio" height="50">
</a>
</p>
> **[Pinokio](https://pinokio.computer)** handles everything automatically: Python, Node.js, dependencies, model downloads, and launching. Just click install and start making music.
---
### 🪟 Windows - One-Click Start (Easiest!)
```batch
cd ace-step-ui
@@ -380,6 +394,16 @@ Full control over every parameter:
| **BPM** | 60-200 beats per minute |
| **Key** | Musical key (C major, A minor, etc.) |
### Batch Size & Bulk Generation
| Setting | Description |
|---------|-------------|
| **Batch Size** | Number of variations generated per job (1-4). Default is **1** for broad GPU compatibility. Higher values generate more variations but use more VRAM. **8GB GPU users should keep this at 1.** |
| **Bulk Generate** | Queue multiple independent generation jobs (1-10). Each job runs sequentially, so this is safe for any GPU. |
| **LM Backend** | Choose between **PT** (~1.6 GB VRAM) and **VLLM** (~9.2 GB VRAM). PT is the default and works on most GPUs. |
> **Tip:** Both batch size and bulk count are remembered in your browser — set them once and they stick for future sessions.
---
## 🔧 Built-in Tools
@@ -398,8 +422,8 @@ Full control over every parameter:
| Issue | Solution |
|-------|----------|
| **ACE-Step API not reachable** | Ensure API server is running (see Usage section) |
| **CUDA out of memory** | Close other GPU apps, reduce duration, or disable Thinking Mode |
| **4GB GPU - Out of memory** | Make sure **Thinking Mode is OFF** (it's off by default). LLM features require 12GB+ |
| **CUDA out of memory** | Switch LM Backend to **PT**, set batch size to **1**, reduce duration, or disable Thinking Mode |
| **4GB GPU - Out of memory** | Use **PT** backend (default), batch size **1**, and keep **Thinking Mode OFF**. LLM features require 12GB+ |
| **AttributeError: 'NoneType'** | Update to latest ACE-Step-1.5 (fix merged in PR #109) |
| **Songs show 0:00 duration** | Install FFmpeg: `sudo apt install ffmpeg` (Linux) or download from [ffmpeg.org](https://ffmpeg.org) (Windows) |
| **LAN access not working** | Check firewall allows ports 3000 and 3001 |
+11 -5
View File
@@ -135,8 +135,14 @@ export const CreatePanel: React.FC<CreatePanelProps> = ({
// Advanced Settings
const [showAdvanced, setShowAdvanced] = useState(false);
const [duration, setDuration] = useState(-1);
const [batchSize, setBatchSize] = useState(2);
const [bulkCount, setBulkCount] = useState(1); // Number of independent generation jobs to queue
const [batchSize, setBatchSize] = useState(() => {
const stored = localStorage.getItem('ace-batchSize');
return stored ? Number(stored) : 1;
});
const [bulkCount, setBulkCount] = useState(() => {
const stored = localStorage.getItem('ace-bulkCount');
return stored ? Number(stored) : 1;
});
const [guidanceScale, setGuidanceScale] = useState(9.0);
const [randomSeed, setRandomSeed] = useState(true);
const [seed, setSeed] = useState(-1);
@@ -1028,7 +1034,7 @@ export const CreatePanel: React.FC<CreatePanelProps> = ({
max="4"
step="1"
value={batchSize}
onChange={(e) => setBatchSize(Number(e.target.value))}
onChange={(e) => { const v = Number(e.target.value); setBatchSize(v); localStorage.setItem('ace-batchSize', String(v)); }}
className="w-full h-2 bg-zinc-200 dark:bg-zinc-700 rounded-lg appearance-none cursor-pointer accent-pink-500"
/>
<p className="text-[10px] text-zinc-500">Number of song variations to generate</p>
@@ -1494,7 +1500,7 @@ export const CreatePanel: React.FC<CreatePanelProps> = ({
max="4"
step="1"
value={batchSize}
onChange={(e) => setBatchSize(Number(e.target.value))}
onChange={(e) => { const v = Number(e.target.value); setBatchSize(v); localStorage.setItem('ace-batchSize', String(v)); }}
className="w-full h-2 bg-zinc-200 dark:bg-zinc-700 rounded-lg appearance-none cursor-pointer accent-pink-500"
/>
<p className="text-[10px] text-zinc-500">How many versions to create in one run</p>
@@ -1512,7 +1518,7 @@ export const CreatePanel: React.FC<CreatePanelProps> = ({
{[1, 2, 3, 5, 10].map((count) => (
<button
key={count}
onClick={() => setBulkCount(count)}
onClick={() => { setBulkCount(count); localStorage.setItem('ace-bulkCount', String(count)); }}
className={`flex-1 py-2 rounded-lg text-xs font-bold transition-all ${
bulkCount === count
? 'bg-gradient-to-r from-orange-500 to-pink-600 text-white shadow-md'