25주차

J. Hwang·2025년 1월 24일
0

Boostcamp AI Tech

목록 보기
25/25

Day 1. Monday

🙌🏻 Peer Session

  • 내일 오프라인 미팅 계획
    오후 1시 ~ 9시 투썸플레이스 파이낸셜뉴스빌딩점
  • AAC 채점 불가 문제
    • . (comma)가 없어서 생긴 문제? → 수정해서 제출 시도
    • but 그래도 채점이 안됨. 1B가 성능이 좋지 않아서 생기는 문제?
    • 3B 학습 돌리고 evaluate해서 뭐가 원인인지 알아볼 예정
  • 2월 미팅 계획
    • 2월 4일 화요일 13-21시 @ 용산
    • 2월 7일 금요일 11-19시 @ 용산
  • 데이터 분석 브리핑 (EDA)
    • 오디오가 들어가는 길이 결정 (30초에서 자를 것인가?)
    • 결측치 처리 어떻게 할 것인지 (5개 밖에 없으니 자체 생성해도 될 것 같고, 빼고 진행해도 될 것 같고)
    • sampling rate란?
  • evaluate_efficiency_salmonn.py 실행
TTFTTPOT
baseline0.16060.0264
llama-1B0.26860.0250
  • pre-trained 모델 탐색하기 예시) 3B-QLoRA

📋 Memo

최근 계속 느끼고 있는 이 불쾌한 감정과 의욕 없음의 원인을 조금은 알 것도 같다. 일단 내 나름대로는 열심히 하고는 있는데 원하는 만큼의 진도가 나가지 않아서 조급해지고 스스로를 일 못하고 성장하지 못하고 있다고 자책하고 있기 때문인 것 같다. 일단 조급함을 가라앉히고, 타인 의식하지 말고, 내가 할 수 있는 걸 차근차근 해나가자.


Day 2. Tuesday

🙌🏻 Peer Session

  • Quantization-Aware Training (학습 과정에서 양자화 적용) 적용할 방법 연구
  • 갈아끼울 언어 모델 탐색
    • 원래 SpinQuantQLoRA를 사용해보려고 했으나, 모델 로드에서 계속 오류가 떠서 실험하지 못했음...
    • gemma-2b but SALMONN과 구조가 많이 달라서 코드를 크게 손봐야 함
    • ModelCloud의 여러 경량화 llama 모델 (tinyllama)
    • NeuralMagic의 여러 경량화 llama 모델
    • apple
    • MobileLLM
    • FastChat
    • llama-3B FP8 학습을 시도했지만 [WARNING] NaN or Inf found in input tensor. 에러가 뜨고 해결하지 못해서 중단.
  • 데이터 EDA 팀 결론
    • stage 2 5개의 결측치는 그냥 제거
    • stratified k-fold로 stage1_train.json, stage2_train.json을 train : valid : test = 9.8 : 0.1 : 0.1의 비율로 나눔 (기준 : task)
    • 기존 30초에서 자르는 코드에서 60초 이상 넘어가면 자르는 것으로 수정
    • max epoch = 5, train step = 3000으로 설정
    • salmonn.py의 SALMONN 클래스의 init 부분에서 low_resource=True, device_8bit 활성화하여 코드 돌리기 (아직 적용해보지 못함) (참조)
  • 현재 실험 진행 중
    • GPU 0 : llama 3B stage 1 재학습
    • GPU 1 : llama 3B-GPTQ stage 1 학습

📋 Memo

오늘도 지난 주에 이어서 오프라인 팀 미팅을 했다. 강남의 회의실이 있는 투썸 플레이스를 예약하여 사용했는데 방에서 도란도란 있을 수 있어서 좋았지만 방음이 안 되고 무엇보다 인터넷이 안 되어서 핫스팟으로 하느라 고생했다ㅠ 이번에는 오후만 모여서 했는데도 힘들었다...🫠 그래도 같이 모여있으니 바로 바로 논의하고 진행되는 것이 좋기는 하다. 다 좋은데 짧은 기간 안에 잘 모르는 분야에 좋은 성과를 내야 한다는 압박이 있으니 정신이 힘들다ㅠ 게다가 자존감 깎여서 나만 잘 못하고 있다는 생각이 자꾸 들어 괴롭다ㅠ 얼른 좋은 성과 내고 해커톤 마무리되면 좋겠다...


Day 3. Wednesday

🙌🏻 Peer Session

  • 다음주부터 Knowledge Distillation이든 Pruning이든 활용해서 직접 경량화 시도
  • SpinQuantQLoRA 모델 로드 시도 (pth 파일로 직접 로드)
  • salmonn_eval_config.yaml에서 do_sample=True 때문에 성능이 낮게 나올 가능성?
ASRAAC비고
llama-1B (do_sample=True)0.1110TimeoutError30 epoch
llama-1B (do_sample=False)0.11280.189130 epoch & AAC에서 쓸데없는 구절 반복은 여전함
llama-3B (do_sample=True)0.0886미제출(쓸데없는 반복 있음)5 epoch & new data
llama-3B (do_sample=False)0.06420.367830 epoch

ASR의 경우 do_sample=False로 하면 오히려 성능이 나빠짐. AAC의 경우는 채점 정도는 되게 만드는 듯. 결론은 do_sample은 별로 성능에 영향을 크게 미치는 것 같지 않음

  • salmonn_eval_config.yaml에서 repetition_penalty=3.0까지 늘렸을 때 1B에서의 무의미한 구절 반복도 사라졌다고 함. 추후 2까지 조절해도 괜찮은지 실험할 예정.
  • 노타 멘토링 사전 질문지 작성
  • SpinQuant & QLoRA 불러오기 실험 참조

📋 Memo

오늘은 집에서 차분하게 듀얼 모니터로 인터넷이 안정적으로 연결되어서 작업할 수 있어서 좋았다. 계속 여러 문제들에 부딪히고 있지만 모두 열심히 달려들어서 어떻게든 한 단계 더 나은 대안을 찾아내고 있어서 다행이다. 끝까지 집중해서 다같이 좋은 성과를 거두면 좋겠다.


Day 4. Thursday

🙌🏻 Peer Session

  • 모델 로드 문제 대안? (llama stack)
  • 모델 로드 팀 & 직접 경량화 팀 나눠서 일하기
    • 모델 로드 팀 : meta-llama에서 공식으로 올린 3B_QLoRA_int4는 transformers에서 QLoRA 아키텍쳐를 지원하고 있지 않아서 load를 못하고 대안을 찾아냄: 개인이 경량화한 llama-3.2-3B-QLoRA → salmonn 라이브러리와 호환이 되어서 현재 실험 중. 차후 srang에서도 모델을 선택하여 실험할 듯.
    • 직접 경량화 : 내가 wanda 라이브러리를 이용해서 llama-3B를 2B로 깎으려고 시도했으나 아직 에러 처리 때문에 본격적으로 돌리고 있지는 못함.
  • GPU 사용 실험 내역
    • 0번 : 개인 경량화 QLoRA stage 2 돌려본 후 latency, memory check → 3B 기준 적당한 학습 epoch 찾는 실험
    • 1번 : 개인 경량화 QLoRA stage 1 1 epoch 돌려본 후 latency, memory check → GPTQ stage 1 재학습 → GPTQ stage 1 학습 → GPTQ stage 2 학습 → GPTQ evaluate → srang int8 압축 stage 1 학습 실험
  • 노타 멘토링 QnA 리뷰
  • train_stage2.json에 있던 0초 오디오 파일 3개 삭제
  • audiocaps_1m 문제
    test set에만 audiocaps_1m 데이터가 있어서 failed to load 문구를 보지 못한 것으로 추정. 그래서 어차피 audicaps는 train set은 없으니 /audiocaps/test와 같이 dummy 디렉토리를 만들고 원본 데이터는 /audiocap_1m로 이름 수정
  • 앞으로의 실험에서는 salmonn.py에서 low_resource=True로 변경하여 사용하기

📋 Memo

현재 hugging face에서 실험해볼만한 LLM 경량화 모델 탐색 → SALMONN 베이스라인에서 그 경량화 모델들 갈아끼면서 학습 및 추론 의 루틴을 타고 있는데 그렇다보니 실험 계획이 다 정해져 있고 코드는 돌리기만 하면 되어서 내가 딱히 해 볼 게 없는 것이 좀 걸린다. 물론 더 나은 방법을 위한 모델 탐색이나 자료 조사를 계속 해야겠지만...실질적으로 뭔가 하는 게 없는 느낌이랄까. 그래도 나는 아직 기초/탐색 능력이 많이 부족하니 그것부터 차근차근 해보자.


Day 5. Friday

👶 Mentoring

  • 현 진행 상황 보고
  • 제출 checkpoint 기준 정하기
  • 너무나 큰 search space
    • 몇B 규모의 언어 모델을 기반으로 할 것인지?
    • Instruct를 사용할 것인지? Vicuna를 사용할 것인지?
    • 어떤 모델 조합을 사용할 것인지?
    • 몇 epoch 으로 학습시킬지?
  • Nota 멘토링 결과 논의
  • 데이터 검수 내용 보고
  • pruning을 할 때 target task가 무엇인지를 고려하면서 하는 것이 중요하다.
  • 해커톤은 시험 문제 풀이가 아니다. Nota를 고객으로 생각하고 Nota의 니즈를 많은 상호작용을 통해 알아내기.
  • 다음 멘토링 : 2월 3일 월요일 오후 1시

🙌🏻 Peer Session

  • 진행상황 논의
    • QLoRA 모델 로드하는 방법 탐구 → 이것도 제약이 있어서 실패..ㅠ
    • GPTQ 학습 및 추론
    • 경량화 모델 탐색
    • 적절한 epoch 수 찾기
    • srang 모델 OVModelForCausalLM.from_pretrained 이용해서 로드 실험 → but 결국 LoRA가 안되어서 실패..
    • Pruning 방법 탐색 (wanda 오류 해결 및 shortened LLaMa 사용)
  • low_resource=True는 별로 소용 없었던 걸로...
  • latency와 학습 epoch의 상관 관계 ⇒ 학습 epoch이 작을수록 latency가 커짐 (특히 TTFT)
  • llama-3B GPTQ 실험 결과 → 영 좋지 않음🥲
modelAACASRMemoryTTFTTPOTepochs
GPTQTimeout0.09275.45 GB0.3706 s0.1660 s5
일반 3BTimeout0.08869.17 GB0.3006 s0.0447 s5

메모리만 작아졌을 뿐 성능이 너무 좋지 않다...

  • 일단 우리 팀 방향성은 llama-3B를 베이스로 깎으면서도 성능 좋게 하는 방법 찾기
  • instruction tuning (train 시), prompt engineering (inference 시) 시도

📋 Memo

멘토링을 하면서 역시 수면 위로 드러났다. 경량화 모델을 갈아끼우면서 실험하는 것은 크게 의미가 없다는 걸...지금까지는 거기에 힘을 쏟고 있었으니 허무하고 또 새로운 방법 생각해보려고 하니 머리가 아프다. 하지만 잘 모르는 분야를 건드리다 보니 어쩔 수 없는 것 같기도 하다. 마음 꺾이지 말고 휴일 동안에도 부지런히 공부하고 좋은 접근법으로 성과를 낼 수 있도록 해야겠다.

profile
Let it code

0개의 댓글