Chuyển tới nội dung chính

Batch trên GPU

Trên GPU CUDA v3 Turbo tự batch. Một infer() dài tự gom các chunk của chính nó; infer_batch() gom nhiều văn bản vào một lượt forward. Cùng API, không đổi code.

Trang đã đổi tên

Trang này trước đây mô tả "fast mode" LMDeploy cho VieNeu-TTS v2. Backend đó giờ là đồ cũ; xem cuối trang.

infer_batch​

from vieneu import Vieneu

tts = Vieneu() # CUDA → engine PyTorch
texts = [
"Chào cả nhà, hôm nay mình sẽ hướng dẫn các bạn cách cài đặt bộ giọng đọc mới.",
"Giọng nghe cực kỳ tự nhiên và truyền cảm.",
"Nếu thấy hữu ích, nhớ để lại một lượt thích nhé!",
] * 10

audios = tts.infer_batch(texts, voice="Minh Quân Pro")
for i, a in enumerate(audios):
tts.save(a, f"batch_{i}.wav")
  • Chunk của mọi văn bản dùng chung từng bước forward, đó là nguồn gốc của lợi ích thông lượng.
  • Cỡ batch chặn ở max_batch_size (mặc định 32). Chỉnh bằng Vieneu(max_batch_size=64) hoặc infer_batch(..., batch_size=64); batch_size=1 tắt batch.
  • Trên CPU infer_batch vẫn chạy, chỉ là tuần tự, nên không nhanh thêm.
  • Cần phát thời gian thực thì dùng infer_stream. Đó là bản song sinh dạng stream, phục vụ 16 người nghe cùng lúc trên một GPU.

CUDA graph (3.7.0+)​

Mỗi frame âm thanh là một lần replay CUDA graph duy nhất: bộ giải mã âm học, lấy mẫu, phạt lặp và bước backbone trong một nhát. Không torch.compile, không cần bộ dịch C++.

Đo trên RTX 3060:

Đầu vàoAudioThời gian chạyTrước 3.7.0
Một câu3,5 s0,36 s2,3 s
Đoạn hai chunk19 s1,4 s8,7 s
16 chunk154 s2,8 s (RTF 0,02)16,7 s

Lần gọi đầu cho mỗi cỡ batch tốn ~0,5 s để bắt graph, sau đó giữ lại. Server có thể gọi tts.warm_fused() lúc khởi động. VIENEU_FUSED_FRAME=0 quay về vòng lặp thường khi cần gỡ lỗi.

Yêu cầu​

  • GPU NVIDIA. RTX 3060 (12 GB) cho các số trên; ~6 GB là đủ để suy luận.
  • Cài theo Cài đặt & backend: trên Windows cài torch CUDA 2.8.0 trước, transformers==4.57.6, rồi vieneu.

Mô hình fine-tune​

Bản v3 Turbo đã merge LoRA giữ trọn API, kể cả batch:

tts = Vieneu(mode="v3turbo", backbone_repo="finetune/output/my_voice/merged")

Xem Fine-tuning và finetune/README.md trong repo.

Đồ cũ: chế độ "fast" LMDeploy (chỉ v2)​

Vieneu(mode="fast") nạp VieNeu-TTS v1/v2 qua LMDeploy. Giữ lại cho các hệ đang chạy (pip install "vieneu[legacy]", hoặc uv sync --group gpu trong repo), không cập nhật thêm. v3 Turbo trên PyTorch nhanh hơn và không cần runtime phụ.