오늘도 어김없이 HuggingFace를 둘러보다가 재미난 것을 발견했다.

 

 

텍스트로 음악을 생성할 수 있는 모델로 meta에서 만들걸로 보인다. 모델은 Transformer를 사용했으며 2024년에 발표된 논문으로 생각보다 최근에 발표된 모델이었다. 논문을 간단하게만 살펴보니 음악 생성 모델을 만드는게 생각보다 어려운 문제라고 한다. 자연어, 텍스트와 다르게 악보는 음표, 박자, 연주법 등 보이는 양보다 많은 정보가 담겨있기 때문에 이것을 숫자로 표현하는 것이 간단한 문제가 아니라고 한다. 

 

https://github.com/facebookresearch/audiocraft/blob/main/docs/MUSICGEN.md

 

audiocraft/docs/MUSICGEN.md at main · facebookresearch/audiocraft

Audiocraft is a library for audio processing and generation with deep learning. It features the state-of-the-art EnCodec audio compressor / tokenizer, along with MusicGen, a simple and controllable...

github.com

 

Huggingface, github 공식 설명에 따라서 python 음악 생성 코드를 작성했다. 모델 크기에 따라 small, medium, melody 모델이 있는데 small 모델은 정말 간단한 음악을 생성해주었고 melody 음악을 사용하면 적당히 들어줄 만한 음악이 생성되었다.

# Load model directly
from transformers import AutoTokenizer, AutoModelForTextToWaveform
import torch

# tokenizer = AutoTokenizer.from_pretrained("facebook/musicgen-melody")
# model = AutoModelForTextToWaveform.from_pretrained("facebook/musicgen-melody")

# tokenizer = AutoTokenizer.from_pretrained("facebook/musicgen-medium")
# model = AutoModelForTextToWaveform.from_pretrained("facebook/musicgen-medium")

tokenizer = AutoTokenizer.from_pretrained("facebook/musicgen-stereo-melody")
model = AutoModelForTextToWaveform.from_pretrained("facebook/musicgen-stereo-melody")

device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
model.to(device)

inputs = tokenizer(
    text=["high quality", "clear sound", "how Ludwig van Beethoven felt when he realize that he is deaf"],
    padding=True,
    return_tensors="pt",
).to(device)

audio_values = model.generate(**inputs, max_new_tokens=1000)

import scipy

audio_values = audio_values.detach().cpu()
sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out_stereo_melody.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())

 

 

1. GPT-1 (2018)
  • 기술적 특징
    • 파라미터: 1.17억개
    • 데이터: BookCorpus (7,000권의 미출판 도서)
    • 트레이닝 방식:
      • 비지도 사전학습 + 지도학습 미세조정
      • 다음 단어 예측 작업으로 학습
    • 아키텍처:
      • 12-layer 디코더 전용 트랜스포머
      • 768 차원의 임베딩
      • 12개의 어텐션 헤드
  • 주요 혁신
    • 트랜스포머 기반 언어 모델 상용화
    • 전이 학습의 효과적인 활용
    • 제한적이지만 문맥 이해 능력 입증
  • 참고문헌: Radford, A., et al. (2018). "Improving Language Understanding by Generative Pre-Training"
2. GPT-2 (2019)
  • 기술적 특징
    • 파라미터: 15억개 (최대 버전)
    • 데이터: WebText (40GB의 고품질 인터넷 텍스트)
    • 학습 방식:
      • 제로샷 태스크 학습에 초점
      • 더 긴 컨텍스트 처리 가능
    • 아키텍처:
      • 48-layer 트랜스포머
      • 1,600 차원의 임베딩
      • 25개의 어텐션 헤드
  • 주요 발전
    • 제로샷 학습 능력 입증
    • 고품질 텍스트 생성
    • 다양한 태스크 수행 능력
    • 컨텍스트 이해도 향상
  • 윤리적 고려사항으로 인한 단계적 공개
    • 초기: 117M 파라미터 모델
    • 중기: 355M 모델
    • 후기: 774M 모델
    • 최종: 1.5B 모델
  • 참고문헌: Radford, A., et al. (2019). "Language Models are Unsupervised Multitask Learners"
3. GPT-3 (2020)
  • 기술적 특징
    • 파라미터: 1,750억개
    • 데이터:
      • Common Crawl
      • WebText2
      • Books1&2
      • Wikipedia
    • 학습 방식:
      • 퓨샷 학습 능력 강화
      • 더 큰 컨텍스트 윈도우
    • 아키텍처:
      • 96-layer 트랜스포머
      • 12,288 차원의 임베딩
      • 96개의 어텐션 헤드
  • 핵심 혁신
    • 규모의 효과 입증
      • 모델 크기 증가에 따른 성능 향상
      • 새로운 능력의 자연스러운 출현
    • 퓨샷 학습 능력
      • 적은 예시로 새로운 태스크 수행
      • 문맥 학습의 효율성
    • 다양한 응용 가능성
      • 코드 생성
      • 번역
      • 질문-답변
      • 요약
  • 한계점
    • 계산 비용
    • 환경적 영향
    • 편향성 문제
    • 사실 정확성
  • 참고문헌: Brown, T., et al. (2020). "Language Models are Few-Shot Learners"
4. GPT-4 (2023)
  • 기술적 특징
    • 멀티모달 능력:
      • 이미지 이해 및 분석
      • 다양한 형식의 입력 처리
    • 향상된 추론 능력:
      • 복잡한 문제 해결
      • 논리적 사고 체인
    • 안전성 강화:
      • 편향성 감소
      • 유해 콘텐츠 필터링
  • 주요 발전
    • 전문 분야 성능
      • 법률
      • 의학
      • 프로그래밍
      • 학문적 분석
    • 시스템 통합
      • API 기반 서비스
      • 플러그인 시스템
      • 타 서비스와의 연동
    • 안전성 및 제어
      • 스팸 방지
      • 오용 방지
      • 윤리적 가이드라인
  • 참고문헌: OpenAI. (2023). "GPT-4 Technical Report"

'2. Machine, Deep Learning > Language' 카테고리의 다른 글

[LLM] BERT 정리  (0) 2025.01.07
[NLP] 언어 모델의 역사  (0) 2025.01.07
BERT와 양방향 모델 (2018-2019)
  • BERT (Bidirectional Encoder Representations from Transformers)
    • Google AI가 개발, 2018년 10월 공개
    • MLM(Masked Language Modeling) 및 NSP(Next Sentence Prediction) 도입
    • GLUE 벤치마크에서 획기적인 성능 달성
    • 참고: Devlin, J., et al. (2018). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"
주요 BERT 변형 모델들
  1. RoBERTa (2019, Facebook AI)
    • 더 큰 배치 크기와 더 긴 학습 시간
    • 동적 마스킹 도입
    • NSP 제거로 성능 개선
    • 참고: Liu, Y., et al. (2019). "RoBERTa: A Robustly Optimized BERT Pretraining Approach"
  2. ALBERT (2019, Google Research)
    • 파라미터 공유로 모델 크기 감소
    • 문장 순서 예측 태스크 도입
    • 참고: Lan, Z., et al. (2019). "ALBERT: A Lite BERT for Self-supervised Learning of Language Representations"

'2. Machine, Deep Learning > Language' 카테고리의 다른 글

[LLM] GPT 정리  (2) 2025.01.08
[NLP] 언어 모델의 역사  (0) 2025.01.07

 

1. 초기 통계적 접근 (1960-1970년대)

  • 통계적 언어 모델의 탄생
    • 1948년 Claude Shannon이 "A Mathematical Theory of Communication"에서 정보 이론 소개
    • 1960년대 IBM의 Frederick Jelinek가 음성 인식을 위한 n-gram 모델 개발
    • 주요 논문: Shannon, C. E. (1948). "A Mathematical Theory of Communication." Bell System Technical Journal.
  • 초기 구현의 한계
    • 하드웨어 제약: 당시 컴퓨터는 수백 KB의 메모리만 보유
    • 데이터 부족: 디지털화된 텍스트 코퍼스 부재
    • 계산 복잡성: n이 증가할수록 n-gram 모델의 복잡도가 기하급수적 증가

2. 신경망 시대의 시작 (1980-1990년대)

  • 초기 신경망 모델
    • 1986년 Rumelhart, Hinton, Williams가 역전파 알고리즘 제안
    • 1989년 Elman이 순환 신경망(RNN) 소개
    • 주요 논문: Rumelhart, D. E., et al. (1986). "Learning representations by back-propagating errors." Nature.
  • 주요 혁신
    • 단어 표현의 분산 표현 개념 도입
    • 문맥 기반 언어 처리의 기초 확립
    • LSTM (1997년, Hochreiter & Schmidhuber) 개발
    • 참고 문헌: Hochreiter, S., & Schmidhuber, J. (1997). "Long Short-Term Memory." Neural Computation.

3. 현대적 접근의 시작 (2000년대 초-중반)

  • 신경망 언어 모델의 발전
    • 2003년 Bengio의 신경망 언어 모델 제안
    • 확률적 문맥 표현 도입
    • 주요 논문: Bengio, Y., et al. (2003). "A Neural Probabilistic Language Model." JMLR.
  • 단어 임베딩의 혁신
    • 2013년 Word2Vec (Mikolov et al.)
    • 2014년 GloVe (Pennington et al.)
    • 참고: Mikolov, T., et al. (2013). "Efficient Estimation of Word Representations in Vector Space." arXiv.

4. 트랜스포머 혁명 (2017-현재)

  • 트랜스포머 아키텍처
    • 2017년 "Attention is All You Need" 논문 발표
    • 어텐션 메커니즘의 혁신적 도입
    • 주요 논문: Vaswani, A., et al. (2017). "Attention is All You Need." NeurIPS.

5. BERT와 양방향 모델 (2018-2019)

  • BERT (2018): 양방향 인코딩 도입 [LLM] BERT 정리
  • GPT-1 (2018): 생성적 사전 학습 도입 [LLM] GPT 정리
  • GPT-2 (2019): 제로샷 학습 능력 입증 
  • GPT-3 (2020): 1,750억 매개변수 규모
  • 참고: Devlin, J., et al. (2019). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." NAACL.

6. 최신 발전 (2022-2024)

  • 멀티모달 모델
    • DALL-E, Stable Diffusion: 텍스트-이미지 생성
    • GPT-4: 다중 양식 입력 처리
    • 참고: OpenAI. (2023). "GPT-4 Technical Report." arXiv.
  • 특화 모델
    • Github Copilot: 코드 생성 특화
    • ChatGPT: 대화형 인터페이스 최적화
    • Claude: 윤리적 고려사항 강화

'2. Machine, Deep Learning > Language' 카테고리의 다른 글

[LLM] GPT 정리  (2) 2025.01.08
[LLM] BERT 정리  (0) 2025.01.07

+ Recent posts