모바일 장치에서 실시간 피아노 자동 완성용 125M 파라미터 모델 훈련
125M 파라미터의 트랜스포머 모델은 이제 iPhone 15에서 실시간으로 피아노 연주를 자동 완성할 수 있으며, 초당 약 108개의 음을 처리할 수 있습니다. 이 프로젝트는 RollTab이라는 앱을 통해 구현되었으며, 최적화된 MIDI 표현 방식, 적극적인 데이터 정제, 훈련 후 선호도 최적화를 통해 비교적 작은 모델로도 고품질의 음악적 연속을 달성할 수 있음을 보여줍니다.
실시간 추론을 위한 최적화된 MIDI 표현
MIDI 모델링의 주요 기술적 과제는 지속적인 음악 이벤트를 트랜스포머가 추론할 수 있는 이산적인 시퀀스로 변환하는 것입니다. 이 과정에서 추론 속도나 음악적 일관성을 희생하지 않아야 합니다.
노트-온/노트-오프를 넘어서기
기존의 MIDI 표현 방식은 일반적으로 별도의 NOTE_ON과 NOTE_OFF 토큰을 사용합니다. 그러나 작은 실시간 모델은 종종 "드리프트" 현상을 겪는데, 이는 노트 오프 토큰을 발행하지 못해 음이 끊어지지 않는 문제를 일으킵니다. 문법 마스크된 토큰 스트림(예: [NOTE_ON, PITCH, VELOCITY])은 문법적 유효성을 보장하지만, 각 음악적 음에 대해 트랜스포머를 여러 번 실행해야 하므로 생성 속도가 느려집니다.
단일 토큰 노트 표현 방식
처리량을 극대화하기 위해 최종 모델은 트랜스포머가 한 번에 하나의 완전한 음을 진행하는 표현 방식을 사용합니다. 각 음은 다섯 가지 범주형 필드의 조합으로 표현됩니다:
- 이벤트 유형: (예: NOTE, PAD, BOS, EOS)
- 피치: 128개의 MIDI 피치
- 델타 온셋: 이전 음의 시작 이후 경과 시간 (1분 음표당 24단계로 정수화)
- 지속 시간: 음의 길이 (정수화)
- 벨로시티: 음의 강도
평탄한 토큰 스트림이 아닌, 각 필드마다 별도의 임베딩을 사용합니다. 최종 노트 토큰은 이러한 임베딩의 합입니다. 모델은 각 필드에 대해 별도의 출력 헤드를 사용하며, 작은 중첩 디코더를 통해 같은 음 내에서 나중에 예측된 필드가 이전에 예측된 필드에 조건을 부여할 수 있도록 합니다. 이 아키텍처는 비용이 큰 트랜스포머 백본을 음 하나당 한 번만 실행할 수 있게 해줍니다.
데이터 엔지니어링 및 증강
모델 성능은 양보다 품질에 더 크게 영향을 받았습니다. 개발자는 데이터셋을 원래 크기의 다섯 배로 확장했을 때 오히려 성능이 저하되는 것을 발견하여, 적극적인 정제의 중요성을 강조했습니다.
데이터셋 파이프라인
훈련 데이터셋은 수십만 개의 MIDI 파일(약 3억 개의 음 이벤트)로 구성되었으며, 주로 공공 영역의 고전 음악에 초점을 맞췄습니다. 정제 파이프라인에는 다음이 포함되었습니다:
- 피아노 중심의 자료를 필터링하고, 병합된 다중 트랙 혼합물은 제거.
- 전역 이동과 균일한 템포 변화를 무시하는 지문을 사용한 중복 제거.
- 동일한 작품의 다른 버전을 같은 데이터 분할에 그룹화하여 누수를 방지.
지속 페달 처리
모델링 문제를 단순화하기 위해 지속 페달 이벤트는 제거되었습니다. 대신 전처리 단계에서 지속 페달이 작동하는 동안 키가 해제되면, 해당 음의 지속 시간이 페달이 올라가는 시점까지 연장됩니다.
실시간 입력을 위한 증강
실시간 인간 입력은 완벽하지 않기 때문에, 모델은 타이밍 및 벨로시티 오류에 대한 강건성을 보장하기 위해 증강을 통해 훈련되었습니다:
- 전역 이동 및 균일한 템포 스케일링.
- 지속 시간 및 벨로시티 저항.
- 프롬프트 음의 제거.
훈련 및 최적화 전략
모델은 RMSNorm, 회전 위치 임베딩(RoPE), SwiGLU/MLP 블록을 갖춘 디코더 전용 트랜스포머입니다.
스케줄링 샘플링
훈련(모델이 진짜 피치를 보는 경우)과 추론(모델이 자신의 예측을 보는 경우) 사이의 격차를 메우기 위해 개발자는 스케줄링 샘플링을 구현했습니다. 모델이 자신의 예측 피치를 입력할 확률을 점진적으로 증가시켜(최대 50%까지), 롤아웃 품질은 향상되었지만, 검증 손실은 증가했습니다.
직접 선호도 최적화(DPO)
DPO는 연속의 신뢰성 향상에 가장 큰 영향을 미친 요소였습니다. 개발자는 Gemini 3.5 Flash를 사용하여 생성된 연속을 쌍별 평가하고, 두 기준에 따라 점수를 매겼습니다: 프롬프트를 얼마나 잘 따르는지(연속 점수)와 일반적인 음악적 품질(좋은 소리 점수).
"공동의견" 데이터셋(평가자가 일관되게 동의하는 경우)과 $\beta$ 값 0.01에서 0.03 사이를 사용하여, 모델의 선호도는 기본 사전 훈련 모델 대비 69.05%로 증가했습니다.
장치 내 배포
모델은 Core ML로 내보내지고 iOS 배포를 위해 INT8로 양자화되었습니다. 512음의 훈련 컨텍스트보다 긴 세션을 처리하기 위해 앱은 최근 384음을 유지하고, 한계에 도달하면 KV 캐시를 다시 구축합니다.
커뮤니티의 통찰과 비판
이 프로젝트는 기술적 실행과 장치 내 성능 측면에서 칭찬을 받았지만, 음악가와 AI 연구자들 사이에서 음악적 즉흥 연주 본질에 대한 논쟁을 촉발했습니다.
"결과는 마르코프 모델보다 나은 수준이거나, 그보다 더 나쁘다고 느껴집니다... 음악을 화성적 시퀀스와 멜로디적 시퀀스로 분해하는 파이프라인을 구성하거나, 더 나은 데이터셋을 개발해야 합니다." — @rajivayyangar
"누군가가 화성, 음색, 음의 이어짐에 대해 배우고 싶어할 것 같지 않아요... 그들은 단지 몇 개의 키를 누르고 컴퓨터가 생성한 것을 자신이 만든 것이라고 선언하고 싶어할 뿐이에요." — @bubblegumcrisis
다른 사용자들은 모델을 다중 파트 앙상블(예: 바로크 스타일)을 지원하도록 확장하거나, 전문 음악 제작을 위한 VST/Max 4 Live 장치로 통합하는 것을 제안했습니다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch