로컬 음악 생성

로컬 음악 생성 속도와 하드웨어 비교: RTF를 제대로 읽는 법

음악 모델의 속도표는 측정 범위부터 서로 다릅니다. 어떤 표는 이미 메모리에 올라간 모델의 샘플링 시간만 재고, 어떤 표는 가사 계획과 디코딩까지 포함합니다. RTF1는 생성에 든 시간과 만들어진 오디오 길이의 비율이며, 실시간 배수는 그 역수입니다. 이 가이드는 확인 가능한 공식 수치만 나란히 두고, 비어 있는 조건은 비어 있다고 표시합니다. GPU2 구매 전에는 원하는 모델과 소프트웨어 백엔드가 그 장치에서 실제로 동작하는지 먼저 확인하세요.

실행 조건과 핵심 내용
  • RTF는 생성 시간 ÷ 오디오 길이입니다. RTF 0.5는 실시간의 2배 속도이며, RTF 2는 음악 길이의 2배 시간이 걸린다는 뜻입니다.
  • 수치가 모델 로딩, 계획, 보코더/VAE 디코딩, 파일 저장을 포함하는지 확인해야 비교할 수 있습니다.
  • YuE2 모델 카드에는 RTX 4090의 모드별 실측과 H800 확인 결과가 있습니다. ACE-Step 1.5의 요약 속도 주장, 구버전 ACE-Step 표, YuE2-Turbo의 RTX 5090 서빙 수치는 각각 다른 조건·구현이므로 공통 GPU 순위처럼 읽으면 안 됩니다.

먼저 같은 종류의 결과물을 비교하세요

텍스트에서 짧은 효과음을 만드는 모델, 가사와 보컬이 있는 노래를 만드는 모델, 이미 있는 멜로디를 확장하는 모델은 맡은 일이 다릅니다. 생성 길이와 조건도 다르므로 처리 시간만 나열하면 오해하기 쉽습니다. 비교 전에 원하는 작업, 출력 길이, 스테레오 여부, 보컬·가사 포함 여부를 고정하세요.

예를 들어 ‘30초짜리 보컬 없는 신스팝 루프’를 만들고 싶다면, 먼저 모든 후보가 텍스트 조건의 반주를 생성할 수 있는지 확인합니다. 가사 노래 전용 경로와 효과음 생성 경로를 억지로 한 줄에 세우지 마세요. 공통 작업을 지원하는 모델끼리만 나란히 재고, 지원하지 않는 후보는 속도표에서 제외하는 이유를 적으면 구매 선택이 더 명확해집니다.

비교 단위도 결과물에 맞추세요. 곡 생성은 한 곡에 걸린 시간과 실제 길이를 기록하고, 긴 노래를 여러 번 이어 만드는 방식이면 각 세그먼트 수와 이어 붙이기 시간을 함께 적습니다. 배치를 키우면 여러 곡을 한 번에 만드는 처리량3이 달라질 수 있지만, 한 곡이 빨라졌다는 뜻은 아닙니다. 단일 요청 지연시간과 시간당 처리량을 서로 다른 지표로 보고하세요.

RTF와 실시간 배수는 서로 반대 방향입니다

RTF(real-time factor)는 생성에 걸린 벽시계 시간 ÷ 출력 음성의 재생 시간입니다. 60초 오디오를 30초에 만들면 RTF 0.5, 즉 실시간의 2배 속도입니다. 120초가 걸리면 RTF 2이며 실시간보다 느립니다. 어떤 저장소는 ‘34배’처럼 역수인 실시간 배수를 RTF라고 부르기도 하므로, 정의와 단위를 먼저 읽고 필요하면 원시 초 단위로 다시 계산하세요.

모델을 불러오는 시간과 오디오를 만드는 시간을 나누세요

첫 실행에는 체크포인트4 읽기, 메모리 할당, 컴파일이나 커널 준비가 들어갈 수 있습니다. 이미 적재된 뒤의 연속 생성 시간은 이 비용을 빼므로 새로 앱을 켜는 사용자의 대기 시간과 다릅니다. 첫 요청(콜드 스타트)과 준비 완료 후 요청(웜 런)을 각각 기록하고, 전체 사용자 대기시간도 별도로 남기세요.

공식 자료에서 확인되는 숫자와 빈칸

아래는 공식 저장소나 모델 카드에 나온 수치입니다. 다만 공개 문구에도 증거의 수준 차이가 있습니다. 구버전 ACE-Step 표와 ACE-Step 1.5 README의 속도 주장은 서로 다른 모델 버전이며, 후자는 프로파일러로 재현한 기기별 결과표가 아닙니다. 빈칸은 속도가 느리다는 뜻이 아니라 이 조사에서 조건을 확인할 수 있는 숫자를 찾지 못했다는 뜻입니다.

공식 문서에서 확인한 하드웨어 속도 근거와 미기재 조건
모델·공식 근거기기·실행 경로공개된 속도·출력 조건빠진 조건
ACE-Step (구버전)RTX 4090; MacBook M2 Max. 저장소 실행 스크립트; 런타임 상세 미기재27 steps: 4090 34.48×(1분 렌더 1.74초), M2 Max 2.27×(26.43초). 60 steps: 4090 15.63×(3.84초), M2 Max 1.03×(58.25초). 출처에 공개된 실시간 배수와 분당 생성 시간 그대로정확한 모델/커밋, 샘플 수, 배치, 프롬프트, 웜업·로딩 포함 여부, 반복·분산 미기재
ACE-Step 1.5README 주장: A100 ‘full song’ <2초(일부 조건 0.5–10초), RTX 3090 <10초. macOS MLX 스크립트와 프로파일러 CUDA/MPS/CPU, LLM용 vLLM/PyTorch/MLX 경로 문서화공식 프로파일러는 길이·배치·thinking·steps 및 계획/DiT/VAE/저장/전체 시간을 계측하지만, 재현 가능한 장치별 시간표는 별도 미공개full song 길이, 체크포인트, 배치, think/steps, cold/warm, 측정 정의·분산 미기재. 요약 주장을 다른 버전/장치에 일반화하지 않음
YuE2-3B (HF pipeline)모델 카드 실행 조건: Linux, Python 3.10+, BF16 NVIDIA GPU 24GB. HF 경로는 PyTorch 2.10, Transformers 4.57.6, CUDA graphs/FlashAttention, BF16 AR/NAR + FP32 VAE, 무양자화RTX 4090: full 71.04초/214.85초 오디오(준비 후 32회), melody 68.68/214.67초, off 57.91/196.88초. H800: full 54.74/224.96초(1회). 동기화한 파이프라인 호출 시간이며 초기 경로 탐색과 저장은 제외합니다.GPU 결과는 한 장치의 공식 카드 측정. H800은 n=1. 호출당 후보 1개. 초기 로딩과 저장을 포함한 사용자 대기시간과 다름
YuE2-Turbo오픈소스 추론/서빙 구현, 동일 YuE2 가중치·32 flow steps 주장. 단일 5090 테스트RTX 5090 32GB, warm: 단일요청 RTF 0.290→0.173(1.68×). 동시 4요청 system RTF 0.317→0.096(3.31× throughput). PyTorch 2.10/CUDA 12.8/vLLM 0.19/BF16. 서로 다른 지표자체 README의 측정: 단일요청은 3곡×3회, 동시처리는 4요청×3웨이브. 원본 YuE2와 다른 서빙 구현 결과이며 4090 값 아님
HeartMuLa-oss-3B공식 예제 기본은 CUDA; 모델·codec 장치 지정 및 lazy-load 가능‘RTF ≈ 1.0’만 표기. 장치·길이는 미기재측정 정의, 모델 세부 버전, 길이, 샘플 수, cold/warm, Apple 경로 미기재
Stable Audio Open 1.0모델 카드 예제: CUDA 또는 CPU PyTorch. MPS/MLX 속도표 없음최대 47초, 44.1kHz stereo. tools 예제 100 steps/30초; diffusers 예제 200 steps/10초. 장치별 속도 미공개사용 예시는 성능 측정이 아님. GPU 모델과 생성 시간·웜업·종단간 범위 미기재
MusicGen / AudioCraftGPU 중심 공식 안내; medium 모델에 약 16GB GPU 메모리 권장. 공식 Apple MLX 경로 없음300M/1.5B/3.3B 모델 안내. 기기별 생성 시간 표 미기재GPU, 출력 길이, 스텝/토큰, 디코드 포함 시간, cold/warm 구분 미기재

공식 문서에서 확인한 하드웨어 속도 근거와 미기재 조건

ACE-Step (구버전)

기기·실행 경로
RTX 4090; MacBook M2 Max. 저장소 실행 스크립트; 런타임 상세 미기재
공개된 속도·출력 조건
27 steps: 4090 34.48×(1분 렌더 1.74초), M2 Max 2.27×(26.43초). 60 steps: 4090 15.63×(3.84초), M2 Max 1.03×(58.25초). 출처에 공개된 실시간 배수와 분당 생성 시간 그대로
빠진 조건
정확한 모델/커밋, 샘플 수, 배치, 프롬프트, 웜업·로딩 포함 여부, 반복·분산 미기재

ACE-Step 1.5

기기·실행 경로
README 주장: A100 ‘full song’ <2초(일부 조건 0.5–10초), RTX 3090 <10초. macOS MLX 스크립트와 프로파일러 CUDA/MPS/CPU, LLM용 vLLM/PyTorch/MLX 경로 문서화
공개된 속도·출력 조건
공식 프로파일러는 길이·배치·thinking·steps 및 계획/DiT/VAE/저장/전체 시간을 계측하지만, 재현 가능한 장치별 시간표는 별도 미공개
빠진 조건
full song 길이, 체크포인트, 배치, think/steps, cold/warm, 측정 정의·분산 미기재. 요약 주장을 다른 버전/장치에 일반화하지 않음

YuE2-3B (HF pipeline)

기기·실행 경로
모델 카드 실행 조건: Linux, Python 3.10+, BF16 NVIDIA GPU 24GB. HF 경로는 PyTorch 2.10, Transformers 4.57.6, CUDA graphs/FlashAttention, BF16 AR/NAR + FP32 VAE, 무양자화
공개된 속도·출력 조건
RTX 4090: full 71.04초/214.85초 오디오(준비 후 32회), melody 68.68/214.67초, off 57.91/196.88초. H800: full 54.74/224.96초(1회). 동기화한 파이프라인 호출 시간이며 초기 경로 탐색과 저장은 제외합니다.
빠진 조건
GPU 결과는 한 장치의 공식 카드 측정. H800은 n=1. 호출당 후보 1개. 초기 로딩과 저장을 포함한 사용자 대기시간과 다름

YuE2-Turbo

기기·실행 경로
오픈소스 추론/서빙 구현, 동일 YuE2 가중치·32 flow steps 주장. 단일 5090 테스트
공개된 속도·출력 조건
RTX 5090 32GB, warm: 단일요청 RTF 0.290→0.173(1.68×). 동시 4요청 system RTF 0.317→0.096(3.31× throughput). PyTorch 2.10/CUDA 12.8/vLLM 0.19/BF16. 서로 다른 지표
빠진 조건
자체 README의 측정: 단일요청은 3곡×3회, 동시처리는 4요청×3웨이브. 원본 YuE2와 다른 서빙 구현 결과이며 4090 값 아님

HeartMuLa-oss-3B

기기·실행 경로
공식 예제 기본은 CUDA; 모델·codec 장치 지정 및 lazy-load 가능
공개된 속도·출력 조건
‘RTF ≈ 1.0’만 표기. 장치·길이는 미기재
빠진 조건
측정 정의, 모델 세부 버전, 길이, 샘플 수, cold/warm, Apple 경로 미기재

Stable Audio Open 1.0

기기·실행 경로
모델 카드 예제: CUDA 또는 CPU PyTorch. MPS/MLX 속도표 없음
공개된 속도·출력 조건
최대 47초, 44.1kHz stereo. tools 예제 100 steps/30초; diffusers 예제 200 steps/10초. 장치별 속도 미공개
빠진 조건
사용 예시는 성능 측정이 아님. GPU 모델과 생성 시간·웜업·종단간 범위 미기재

MusicGen / AudioCraft

기기·실행 경로
GPU 중심 공식 안내; medium 모델에 약 16GB GPU 메모리 권장. 공식 Apple MLX 경로 없음
공개된 속도·출력 조건
300M/1.5B/3.3B 모델 안내. 기기별 생성 시간 표 미기재
빠진 조건
GPU, 출력 길이, 스텝/토큰, 디코드 포함 시간, cold/warm 구분 미기재

각 시간 항목이 답하는 질문은 다릅니다

음악 생성에는 텍스트·가사 계획 모델, 오디오 토큰5 생성이나 확산 모델6, 보코더 또는 VAE7 디코더, 저장·변환 단계가 들어갈 수 있습니다. end-to-end 시간은 사용자가 기다린 총 시간이고, 각 단계 시간은 병목을 찾기 위한 진단값입니다. ACE-Step 1.5 공식 프로파일러는 LLM8 계획, DiT9 확산, VAE 디코딩, 오디오 저장과 전체 벽시계 시간을 나눠 잴 수 있습니다.

음악 생성 과정을 계획, 오디오 합성, 디코딩, 저장 단계로 나눈 타임라인
총 대기시간에는 모델 준비와 오디오 저장까지 포함될 수 있습니다.

YuE2 모델 카드의 RTX 4090 속도는 모드별로 읽으세요

YuE2 공식 모델 카드는 세 가지 생성 모드를 RTX 4090에서 비교합니다. RTX 4090 값은 모델 준비 후 32회 생성한 평균이며, GPU 메모리는 NVML 기준 전체 실행 피크입니다.

출력 초는 각 실행 결과의 오디오 길이이고 생성 초는 모델 카드의 동기화된 pipeline10 호출 시간입니다. 행별 RTF는 생성 초 ÷ 오디오 초로 계산한 참고값입니다.

카드 설명상 최초 입력 경로 해석과 결과 저장은 시간에서 빠져 있으므로 앱 실행부터 저장까지의 대기시간으로 읽으면 안 됩니다.

YuE2-3B 공식 모델 카드의 시간과 메모리 측정
장치·모드오디오 길이생성 시간계산 RTFGPU 메모리 피크
RTX 4090 · full214.85초71.04초0.33111.18 GiB
RTX 4090 · melody214.67초68.68초0.32011.02 GiB
RTX 4090 · off196.88초57.91초0.29411.09 GiB
H800 · full (1회)224.96초54.74초0.24310.34 GiB

YuE2-3B 공식 모델 카드의 시간과 메모리 측정

RTX 4090 · full

오디오 길이
214.85초
생성 시간
71.04초
계산 RTF
0.331
GPU 메모리 피크
11.18 GiB

RTX 4090 · melody

오디오 길이
214.67초
생성 시간
68.68초
계산 RTF
0.320
GPU 메모리 피크
11.02 GiB

RTX 4090 · off

오디오 길이
196.88초
생성 시간
57.91초
계산 RTF
0.294
GPU 메모리 피크
11.09 GiB

H800 · full (1회)

오디오 길이
224.96초
생성 시간
54.74초
계산 RTF
0.243
GPU 메모리 피크
10.34 GiB

공정한 비교를 위해 실행 조건을 기록하세요

같은 프롬프트와 가사, 같은 출력 길이·샘플레이트·채널, 같은 품질 관련 설정을 사용하고 모델 체크포인트·코드 버전·백엔드·정밀도·스텝 수를 기록합니다. 장치 이름뿐 아니라 운영체제와 드라이버/프레임워크 버전도 남기세요. 첫 실행과 워밍업 후 반복을 분리하고 최소 여러 번 재서 중앙값과 범위를 기록합니다. 실패, OOM, 잘린 출력도 숨기지 않습니다.

실제로는 작은 기록표 하나면 시작할 수 있습니다. 예를 들어 ‘모델/리비전, 장치, 백엔드, 정밀도, 길이, 스텝, 첫 실행초, 웜업 뒤 1~5회 초, 출력 실제 길이, peak 메모리, 상태’를 열로 둡니다. 같은 프롬프트와 설정을 그대로 복사해 모델별 요청을 만들고, 각 결과 파일과 로그에 같은 실험 ID를 붙이세요. 설정을 바꾼 실행은 새 행으로 분리합니다.

예를 들어 한 번은 첫 실행이 42초, 다음 다섯 번의 중앙값이 18초, 출력 길이가 30초였다고 합시다. 웜 생성의 conventional RTF는 18÷30=0.60, 실시간 배수는 약 1.67×입니다.

첫 실행까지 포함한 새 실행 대기는 42초로 따로 설명합니다. 원본 표기가 1.67×라면 ‘RTF’라는 말만 옮기지 말고 이처럼 무엇을 나눈 값인지 표기하면 독자가 속도 방향을 뒤집지 않습니다.

비교 뒤에는 숫자만으로 승자를 정하지 말고 질문을 나눠 해석하세요. 매번 앱을 켜고 한 곡을 만들면 첫 실행 대기가 중요하고, 하루 종일 서버를 켜두면 웜 런 중앙값과 처리량이 더 중요할 수 있습니다.

긴 결과에서 DiT나 오디오 토큰 생성이 지배적인지, 짧은 결과에서 계획·로딩 고정비가 크게 보이는지도 단계별 시간으로 살펴봅니다. 음질 설정이나 출력 길이를 낮춰 얻은 빠른 숫자는 원래 설정 결과와 별도 비교로 표시합니다.

LLM 토큰/초에서 음악 생성 속도를 추정하지 마세요

음악 모델에서 텍스트 계획 단계만 LLM일 수 있으며 전체 오디오는 확산 반복, 오디오 토큰 자동회귀, 디코딩에서 만들어집니다. 초당 텍스트 토큰 수가 빠른 장치라도 다른 단계가 느릴 수 있습니다. 오디오 생성에서는 초당 오디오 프레임11·토큰, 확산 스텝, 전체 오디오 길이와 end-to-end 초를 함께 봐야 합니다.

노트북과 그래픽카드 옆에 CUDA, MPS, MLX 실행 경로 카드가 놓인 장면
기기 사양보다 모델이 실제 지원하는 백엔드를 먼저 확인합니다.

하드웨어는 지원 경로와 작업량에 맞춰 고르세요

NVIDIA CUDA12, Apple MPS, MLX13는 서로 바꿔 끼울 수 있는 이름이 아니라 각 프로젝트가 실제로 구현·지원해야 하는 실행 경로입니다. ACE-Step 1.5 문서는 CUDA/MPS와 LLM의 vLLM·PyTorch14·MLX 경로를 안내하지만, 모델 구성별 성능은 직접 확인해야 합니다.

YuE2 문서의 기준은 Linux와 24GB BF1615 NVIDIA GPU입니다. HeartMuLa 공식 예제는 CUDA를 기본으로 합니다.

Mac의 통합 메모리16나 RTX 5090의 사양만으로 미지원 경로를 해결하거나 처리량을 추정할 수는 없습니다.

점수표보다 먼저 들어 보고 사용 조건을 살피세요

가사 선명도, 프롬프트 반영, 곡 구조, 음색은 하나의 보편 점수로 정리하기 어렵습니다. 짧은 샘플을 직접 들어보고 원하는 작업에 맞춰 판단하세요. 모델 가중치와 코드의 라이선스가 다를 수 있으므로 배포·상업 이용 전 해당 버전의 약관과 학습 데이터 안내를 확인하고, 권리자가 허락하지 않은 가사·음원이나 유명인의 목소리를 입력·복제하지 않도록 주의하세요.

두 음악 파형이 표시된 노트북과 헤드폰, 청취 노트가 놓인 책상
속도와 별도로 원하는 음악 결과인지 직접 들어 확인하세요.

용어 각주

  1. 실시간 계수생성에 걸린 시간을 출력의 재생 시간으로 나눈 값입니다. 조건을 맞춰 비교할 때 값이 작을수록 생성이 빠릅니다.

    본문으로 돌아가기
  2. GPU많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.

    본문으로 돌아가기
  3. 처리량일정 시간 동안 처리하거나 생성한 작업량입니다. 토큰/초, 요청/초처럼 단위를 함께 확인해야 비교할 수 있습니다.

    본문으로 돌아가기
  4. 체크포인트학습된 모델의 가중치 등을 저장한 파일입니다. 같은 모델 계열도 버전이나 용도에 따라 다른 체크포인트를 쓸 수 있습니다.

    본문으로 돌아가기
  5. 토큰모델이 입력이나 출력을 나누어 처리하는 단위입니다. 토큰 하나가 글자 하나나 일정한 시간 길이에 해당하지는 않습니다.

    본문으로 돌아가기
  6. 확산 모델노이즈를 단계적으로 제거하거나 변환해 데이터를 생성하는 모델 계열입니다. 이미지·음성·영상 등에서 쓰이며 단계 수와 구현은 모델마다 다릅니다.

    본문으로 돌아가기
  7. VAEVariational Autoencoder의 약자입니다. 입력을 압축된 잠재 표현으로 바꾸거나, 그 표현에서 결과를 복원하는 데 쓰입니다.

    본문으로 돌아가기
  8. 대규모 언어 모델대량의 텍스트 데이터로 학습해 텍스트를 처리하고 생성하는 언어 모델입니다. 기능과 지원 입력은 모델마다 다릅니다.

    본문으로 돌아가기
  9. DiTDiffusion Transformer의 약자입니다. 트랜스포머 구조를 이용해 확산 과정에서 노이즈가 있는 표현을 단계적으로 다듬는 모델 구조입니다.

    본문으로 돌아가기
  10. 파이프라인입력부터 결과까지 이어지는 처리 단계의 묶음입니다. 각 단계에서 서로 다른 모델이나 도구를 사용할 수 있습니다.

    본문으로 돌아가기
  11. 프레임영상의 한 장면을 이루는 단일 이미지입니다. 초당 프레임 수와 프레임 해상도는 서로 다른 속성입니다.

    본문으로 돌아가기
  12. CUDANVIDIA GPU에서 범용 계산을 실행하기 위한 소프트웨어 플랫폼입니다. CUDA용으로 만든 프로그램은 다른 GPU에서 그대로 동작한다고 보장되지 않습니다.

    본문으로 돌아가기
  13. MLXApple silicon용 머신러닝 프레임워크입니다. Apple silicon의 통합 메모리 구조를 활용하며, 지원 모델과 기능은 MLX 도구별로 다릅니다.

    본문으로 돌아가기
  14. PyTorchAI 모델을 만들고 실행하는 소프트웨어 프레임워크입니다. 모델과 함께 호환되는 PyTorch 버전 및 하드웨어 지원도 확인해야 합니다.

    본문으로 돌아가기
  15. BF16모델의 수를 저장하고 계산하는 16비트 부동소수점 형식입니다. 사용 가능 여부는 하드웨어와 실행 프로그램에 달려 있습니다.

    본문으로 돌아가기
  16. 통합 메모리CPU와 GPU가 같은 물리 메모리 풀을 공유하는 구조입니다. 메모리 용량이 자동으로 늘어나는 것은 아니며, 실제 사용 가능량은 시스템에 따라 다릅니다.

    본문으로 돌아가기