Skip to content

boostcampaitech7/level4-nlp-finalproject-hackathon-nlp-07-lv3

Repository files navigation

NOTA 오디오 언어모델의 경량 모델링 레서피 탐구

1. Introduction

Audio adapter의 결합 및 사전학습을 통해, 언어모델은 음성/음악/환경음 등의 소리를 이해하고 다양한 downstream task를 수행할 수 있게 되었습니다.

VRAM의 크기가 작은 전형적인 디바이스 환경에서는 오디오 언어모델에 대한 경량 모델링이 필수적입니다.

본 프로젝트는 오디오 언어 모델들을 사용하여 ASR, Audiocaps 등의 다양한 오디오 문제를 한번에 해결하는 모델을 제작하는 프로젝트입니다.

2. Teams & Schedule

NLP-7조 NOTY

강신욱 박규태 이정민 장요한 한동훈 홍성균

Team member Role

팀원 역할
홍성균 Team Leader, base line 작성, Data EDA, 모델 탐색
강신욱 Data EDA, 모델 탐색
박규태 CED 아키텍처 적용, 지식증류,모델 탐색
이정민 Nvidia Canary, Optimization
장요한 모델 탐색
한동훈 Data EDA, 모델 탐색

Project Calender

1월 10일 (금) 10:00 ~ 2월 10일 (월) 18:00

timeline


3. How to use (conda 기준)

  1. conda create -n inference_test python==3.9.17
  2. git clone https://github.com/boostcampaitech7/level4-nlp-finalproject-hackathon-nlp-07-lv3.git
  3. Move to project directory
  4. .env, configs/eval_config.yaml 형식에 맞춰 작성
  5. test_aac.json, test_asr.json을 사용하는 데이터 경로에 맞춰 이동시켜줌
  6. pip install -r requirements.txt
  7. python asr_inference.py for inference asr tasks
  8. python aac_inference.py for inference aac tasks

How to use config.yaml

  1. wandb : wandb 기록에 대한 설정
  2. model : 사용할 모델 및 Q-Former, LoRA 등의 구성
  3. datasets : 학습 및 추론에 사용하는 데이터 경로
  4. run : 학습 방법(배치 크기, 분산 학습, AMP, Optimizer)

4. Model Architecture

1. openai/whisper-large-v3-turbo
2. CED Small 
3. Qwen/Qwen2.5-0.5B-Instruct
4. Window-Level Q-Former
5. LoRA

Key Features

  • 본 모델은 멀티모달 처리 능력을 갖추어 음성, 이미지, 텍스트 입력을 통합하여 이해하고 생성할 수 있음.
  • 여러 모델을 조합하여 음성 인식 및 언어 이해를 강화하고, LoRA를 활용해 경량화된 학습이 가능함.
  • STT, QA, 요약, 번역 등 다양한 멀티모달 NLP 및 음성 관련 작업을 지원함.
  • 분산 학습 및 혼합 정밀도(Amp) 지원으로 효율적인 모델 훈련이 가능함.

5. Project Structure

📦level4-nlp-finalproject-hackathon-nlp-07-lv3
 ┣ 📂src
 ┃ ┣ 📂configs
 ┃ ┃ ┣ 📜eval_config.yaml
 ┃ ┃ ┗ 📜train.yaml
 ┃ ┣ 📂models
 ┃ ┃ ┣ 📂beats
 ┃ ┃ ┃ ┣ 📜backbone.py
 ┃ ┃ ┃ ┣ 📜BEATs.py
 ┃ ┃ ┃ ┣ 📜modules.py
 ┃ ┃ ┃ ┣ 📜quantizer.py
 ┃ ┃ ┃ ┣ 📜Tokenizers.py
 ┃ ┃ ┃ ┗ 📜__init__.py
 ┃ ┃ ┣ 📂CED
 ┃ ┃ ┃ ┗ 📂models
 ┃ ┃ ┃ ┃ ┣ 📜audiotransformer.py
 ┃ ┃ ┃ ┃ ┣ 📜checkpoints.py
 ┃ ┃ ┃ ┃ ┣ 📜ensemble.py
 ┃ ┃ ┃ ┃ ┣ 📜layers.py
 ┃ ┃ ┃ ┃ ┗ 📜__init__.py
 ┃ ┃ ┣ 📜modeling_ced.py
 ┃ ┃ ┣ 📜modeling_llama.py
 ┃ ┃ ┣ 📜modeling_whisper.py
 ┃ ┃ ┣ 📜Qformer.py
 ┃ ┃ ┣ 📜salmonn.py
 ┃ ┃ ┣ 📜utils.py
 ┃ ┃ ┗ 📜__init__.py
 ┃ ┣ 📂prompts
 ┃ ┃ ┣ 📜test_prompt.json
 ┃ ┃ ┗ 📜train_prompt.json
 ┃ ┣ 📜config.py
 ┃ ┣ 📜dataset.py
 ┃ ┣ 📜dist_utils.py
 ┃ ┣ 📜evaluate.py
 ┃ ┣ 📜evaluate_efficiency_salmonn.py
 ┃ ┣ 📜logger.py
 ┃ ┣ 📜metrics.py
 ┃ ┣ 📜optims.py
 ┃ ┣ 📜runner.py
 ┃ ┣ 📜salmonn_utils.py
 ┃ ┣ 📜submission_validator.py
 ┃ ┣ 📜train.py
 ┃ ┣ 📜utils.py
 ┃ ┗ 📜__init__.py
 ┣ 📜aac_inference.py
 ┣ 📜asr_inference.py
 ┣ 📜Makefile
 ┣ 📜README.md
 ┣ 📜requirements.txt
 ┗ 📜run.py

Evaluate Environment

CPU : Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz
GPU : Tesla V100-SXM2-32GB x 2ea
RAM : 178GB
Nvidia Driver Version: 535.161.08   
CUDA Version: 12.2

Final Score

ASR Score :  6.99%
AAC Score : 36.15%
Inference Speed : 0.1722(TTFT) + 0.038(TPOT) = 0.2102 second
VRAM Usage : 3.83 GB

train dataset

  • src/data/data_sampling.ipynb 에 명시된 목차 따라 진행
  • 단, 기제공된 stage2_train.json에 기록된 path부분이 원본 data 폴더의 audiocaps가 아니라 audiocaps_1m으로 바뀌어 있음 주의

About

level4-nlp-finalproject-hackathon-nlp-07-lv3 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •