챌린지

패스트캠퍼스 환급챌린지 41일차 : [6개 AI 프로덕트로 완성하는 LLM/LMM 서비스 개발의 모든 것 : 프롬프트 엔지니어링부터 멀티모달까지] 강의 후기

passion-of-coding 2025. 8. 10. 21:54

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

💠 기계번역 실습

 

1) 입력 전처리 파이프라인

  • 오타 교정: 한글 자모 분리 후 편집거리(Levenshtein)로 가장 가까운 후보를 찾아 교정.
  • 문장 분리/병합: spaCy(ko_core_news_sm)로 문장 단위 토크나이즈 → 약어/마침표 예외 케이스 보완, 과도한 분리 시 병합 규칙 적용.
  • 개행/공백/소문자화: 줄바꿈 규격화, 다중 공백 압축, 필요 시 소문자화로 규칙 기반 처리 안정화.
  • 언어 감지: langdetect로 소스 언어 판별(잘못된 언어 유입 시 우회/보정).
  • 숫자·단위·기호 표준화: 숫자 포맷과 특수기호(%, ℃ 등) 일관화로 번역 오류 감소.

2) 번역 메모리(TM) + 퍼지 매칭

  • SQLite 기반 TM 클래스로 source→target 쌍을 저장/조회.
  • 정확 일치 우선, 없으면 퍼지 매칭(편집거리/유사도 기준)으로 후보 제안.
  • 학습 포인트: 반복 문구(에러 메시지, 공지, UI 텍스트)에 매우 유용하며 LLM 호출 비용 절감.

3) 용어집(Glossary)·규칙 기반 치환

  • 도메인 약어 확장(예: HR→심박수, BP→혈압) 및 금지/선호 번역어 사전 반영.
  • 선택적 번역 유틸:
    • HTML 본문만 번역: 태그/속성 유지, 텍스트 노드만 번역(BeautifulSoup/정규식).
    • 코드에서 주석만 번역: 정규식으로 #, //, /* ... */ 영역 추출 후 번역.

4) LLM 호출(기계번역 코어)

  • OpenAI Chat API 사용: 시스템 프롬프트에 역할·스타일·금칙어 명세 → 번역 지시.
  • 샘플링 파라미터: temperature, top_p 등 노출(안정성 vs 창의성 트레이드오프).
  • 후처리: 공백·문장부호 재정렬, 단위/기호 재삽입, 용어집 재검수.

5) 품질 보증(QA) & 재추론(Re-inference)

  • n-gram 점검: 과잉 반복, 희귀 n-gram 폭증 등 이상치 탐지.
  • 길이 비율 체크: source/target 토큰 길이 급격한 불균형 탐지.
  • 자동 재추론 루프: 이상 발생 시 프롬프트를 강화(지시문/맥락/용어강제)하여 재번역.
  • 평가 지표: TER(sacrebleu 패키지)로 참조 대비 편집량 평가(실습은 TER 중심).

6) 실행 플로우(main)

preprocess → TM/용어집 적용 → LLM 번역 → postprocess → QA 점검 → (필요시) 재추론 → 결과 반환

  • 실습 셀에 일반 문장, HTML, 전문용어 포함 문장, 코드 주석만 번역 예제가 포함.

7) LLM vs 전통 NMT 정리(요지)

  • LLM: 컨텍스트·지시 최적화에 강함, 규칙/용어 강제는 프롬프트/후처리 설계가 관건.
  • 전통 NMT: 일관성·추론비용 유리, 대량 도메인 커스터마이징 용이.
  • 실무 팁: TM/용어집/규칙 처리로 LLM의 가변성을 보완한 하이브리드 설계가 효율적.


오늘 노트북을 따라가며 가장 크게 느낀 점은 “좋은 번역은 모델만으로 완성되지 않는다”는 사실입니다. 데이터가 모델을 만든다는 말을 번역 워크플로우에 그대로 옮겨오면, 전처리·후처리·품질 점검·재추론까지의 전체 파이프라인이 결과 품질을 좌우합니다. 단순히 API를 호출해서 번역 문자열을 받는 수준을 넘어, 문장 분리의 미세한 실패나 공백·줄바꿈 처리의 일관성 부족이 번역 품질을 가볍게 무너뜨릴 수 있다는 걸 실습을 통해 체감했습니다. 특히 한국어의 문장 경계는 영어보다 까다로운데, spaCy로 1차 분리 후 규칙으로 병합하는 접근은 “완벽한 규칙은 없지만, 실용적인 보정 루프로 충분히 견고하게 만들 수 있다”는 좋은 메시지를 줬습니다.

번역 메모리(TM)와 퍼지 매칭 파트는 실무 효용이 아주 컸습니다. 반복 문구를 TM로 흡수하면 응답 속도와 비용이 모두 줄어듭니다. 여기에 퍼지 매칭으로 유사 문장을 당겨오는 전략은 LLM이 매번 새로 “생각”하지 않아도 되게 만들어 주죠. 실습에서 SQLite로 간단히 구현했지만, 서비스 단계에서는 벡터 검색과 결합해 더 부드러운 유사도 탐색을 구성하고, 승인된 번역만 TM에 축적하는 검수 루프를 얹는 게 자연스러워 보였습니다. “번역은 기록의 축적이 자산이 된다”는 관점을 다시 확인했습니다.

용어집과 규칙 기반 치환은 LLM 시대에도 여전히 핵심이었습니다. LLM이 문맥을 이해한다고 해도, 도메인 약어(HR, BP 등)나 회사 내부의 표준 번역어는 규칙과 데이터로 강제하는 편이 안전합니다. 또 HTML/코드 주석과 같이 “번역 대상만 정확히 골라내는” 선택적 번역 유틸은 현업에서 바로 쓰일 수 있는 실전 팁이었고, 프론트엔드/문서화 파이프라인에도 적용 여지가 커 보였습니다. 이런 유틸이 있으면, 개발자와 번역 파이프라인이 충돌하지 않고 역할 경계를 안정적으로 유지할 수 있습니다.

품질 보증(QA)와 재추론은 “운영”의 관점에서 특히 인상적이었습니다. n-gram 이상치, 길이 비율 체크, TER 같은 지표를 통해 자동으로 문제 사례를 감지하고, 프롬프트를 강화해 재번역하는 루프를 돌리면, 사람이 모든 결과를 검수하지 않아도 일정 수준 이상의 품질을 유지할 수 있습니다. 이때 지표가 전부를 말해주진 않으므로(특히 의미 보존 측면에서 BLEU/TER 한계), 에러 라벨링과 휴리스틱 보완을 병행하는 게 필요하다는 생각도 들었습니다. 장기적으로는 품질 이슈를 태깅·집계하는 대시보드와, 코스트/지연시간·성공률 간 트레이드오프를 시각화하는 모니터링이 있으면 운영이 훨씬 수월해질 것 같습니다.

마지막으로 LLM vs 전통 NMT의 구분은 기술 선택의 기준을 분명히 해줬습니다. LLM은 프롬프트 설계와 컨텍스트 관리로 빠르게 고품질을 뽑아낼 수 있지만, 일관성·규정 준수·대량 배치 번역에서는 여전히 전통 NMT의 장점이 분명합니다. 그래서 오늘 실습처럼 TM/용어집/규칙/QA로 LLM의 자유도를 안전하게 감싸는 하이브리드가 현실적인 최적해라는 데 공감했습니다. 앞으로 개선한다면, (1) TM 후보를 벡터 검색으로 확장, (2) 제약 디코딩/용어 강제를 프롬프트+후처리 이중 안전장치로 적용, (3) 실패 케이스 자동 수집→재학습/룰 갱신 파이프라인을 붙여 “쓰면 쓸수록 좋아지는 번역 시스템”을 만들고 싶습니다.

정리하면, 오늘의 학습은 “한 줄 번역”에서 “운영 가능한 번역 시스템”으로의 사고 전환을 이끌었습니다. 모델 호출은 시작일 뿐이고, 데이터 규격화 → 지식 재사용(TM/용어집) → 자동 품질 관리 → 재학습/재추론 루프가 붙을 때 비로소 실무에 견디는 번역이 됩니다. 이 흐름을 코드로 직접 확인한 것이 큰 수확이었고, 다음엔 평가 지표 다변화(Comet/QE), 다국어 문장 경계기 보강, 안전성 필터링까지 포함해 더욱 탄탄한 파이프라인으로 확장해보려 합니다.

 

 

 

공부 시작

 

 

공부 종료

 

 

 

 

 

 

수강 클립

 

 

완강률

 

 

 

 

 

 

 

 

오늘의 passion of coding이 내일의 passion이 된다! 

 

https://fastcampus.info/4n8ztzq