Kaldi BigLM Rescoring 구현 및 하이퍼파라미터 튜닝

Source

  • Field Notes/ReturnZero/Daily Notes/Day 237. 2022-02-22.md

Summary

이 노트는 Kaldi 기반 음성 인식 파이프라인에서 BigLM Rescoring을 적용하여 CER(문자 오류율)을 개선하려는 시도와 그 과정을 기록한다. 초기 CER 27%를 David의 기준(Rescore 적용 시 18%)에 맞추기 위해 UseBigLMRescore 함수와 관련 LM 파일(G.fst, G.carpa)의 경로를 확인하고, LatticeProcessor 상속을 통한 커스텀 구현 방안을 모색한다. 또한 lattice_beamchunksize 파라미터 변경에 따른 CER 및 GPU 사용률 변화를 실험하며, 메모리 오류(Signal 11/6) 발생 원인을 분석하고 NNLM Rescoring 코드 구조를 검토한다.

Key Points

  • BigLM Rescoring 적용 목표: 현재 CER 27%를 Rescore 적용 시 18% 수준으로 낮추기 위해 설정 조정 및 구현 진행.
  • Kaldi 설정 및 파일 매핑: UseBigLMRescore에서 lm_small은 G.fst, lm_large는 G.carpa 파일에 대응하며, 모델 경로는 NFS 아카이브 참조.
  • 커스텀 LatticeProcessor 구현: 기존 Kaldi fork(rtzr/kaldi)를 바탕으로 새 LatticeProcessor를 상속하고 cuda_pipeline에 직접 연결하는 방식 검토.
  • 하이퍼파라미터 튜닝 실험: lattice_beam이 너무 작으면 메모리 오류 발생, chunksize 증가 시 CER 개선 및 GPU 사용률 상승 확인.
  • NNLM Rescoring 구조: DeliverResponse 단계에 NNLM Rescoring 로직을 구현한 후 함수로 분리하는 전략 수립.