Skip to content

[FEAT] 온디바이스 일기 요약 기능 추가 (KoBART + ONNX Runtime) - #9

Merged
cchanmi merged 9 commits into
developfrom
feature/on-device-diary-summary
Aug 1, 2026
Merged

[FEAT] 온디바이스 일기 요약 기능 추가 (KoBART + ONNX Runtime)#9
cchanmi merged 9 commits into
developfrom
feature/on-device-diary-summary

Conversation

@cchanmi

@cchanmi cchanmi commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Describe

온디바이스(폰 안에서 직접 돌아가는) KoBART 모델로 일기 요약 기능을 만들었습니다. 채팅은 여러 번에 나눠서 입력되니까, 사용자가 입력할 때마다 그 내용을 계속 모아두다가 대화가 끝나면 판단합니다. 모아둔 글자수가 140자보다 적으면 굳이 요약할 필요가 없어서 원문 그대로 쓰고, 140자 이상이면 반드시 모델을 돌려서 요약한 걸 씁니다.

Works made

사용 모델 + 구현 방식

  • 모델: KoBART(한국어 BART) 기반 요약 모델. 안드로이드에서 이미 검증해서 쓰고 있는 것과 동일한 모델 사용했습니다.
  • 구조: 인코더와 요약 문장을 한 단어씩 만들어내는 디코더를 따로 관리했고, 모델 파일도 encoder(64M)/decoder(99M) 두 개로 나뉩니다.
  • 실행 방식: 폰 안에서 모델을 직접 돌리기 위해 ONNX Runtime Mobile(onnxruntime-objc, CocoaPods로 추가한 라이브러리)을 사용했습니다.
  • 토크나이저: 감정 분류 모델과 동일하게 swift-transformers 라이브러리를 씁니다. 이 파일 이름이 감정분석 기능의 파일이랑 겹쳐서, 따로 임시 폴더를 만들어 그 안에서 읽도록 처리했습니다.
  • 용량 최적화: 원래 모델 그대로 쓰면 용량이 훨씬 크기 때문에, 가볍게 압축한(int8 양자화) 버전을 사용해 용량을 줄였고, Git LFS로 관리합니다.

로직: 여러 번 입력받은 걸 모았다가 한 번에 판단

  • 원래는 문장 하나 받아서 바로 처리하는 구조였는데, 실제로는 채팅처럼 여러 번 나눠서 입력되니까 "입력할 때마다 모아두기"(addUtterance)와 "다 모으고 나서 최종 판단하기"(finalize) 두 단계로 나눴습니다.
  • 기준은 140자, 여러 문장을 합칠 땐 줄바꿈으로 이어붙입니다.
  • 주의할 점: 지금은 한 번에 일기 하나만 쓰는 상황만 고려했습니다.

테스트용 화면

  • 기존 감정분석 테스트 화면이랑 같은 방식으로, 일기 요약만 따로 테스트해볼 수 있는 화면을 만들었습니다.
  • 여러 번 입력해보는 걸 테스트하기 위해 "전송"(입력 모으기)이랑 "대화 종료"(최종 결과 보기) 버튼을 따로 뒀고, 지금까지 모은 문장들도 화면에 보이게 했습니다.

Changes Made

As-Is

기존 로직

  • 일기 요약 기능 없음

To-Be

변경 로직

  • 폰 안에서 직접 요약 모델을 돌리는 기능 추가, 140자 기준으로 필요할 때만 요약
  • 앱 용량 165MB 정도 늘어남 (모델 파일들 때문)

How to Test

  1. GAMSSApp.swift에서 시작 화면을 잠깐 SummaryTestView로 바꿔서 시뮬레이터/실기기에서 직접 여러 문장 입력해보고 "대화 종료" 눌러서 결과 확인 가능
  2. 실행 중 메모리(시뮬레이터에서 측정, 대략적인 수치):
    • 모델 없이 앱만 켰을 때: 약 196MB
    • 일기 요약 모델까지 켰을 때: 약 219MB (+23MB)
    • 감정분석 모델까지 같이 켰을 때: 약 241MB (+45MB)
    • 모델 로딩 시간: 약 0.6~0.7초 (거의 안 걸림)

Issues Resolved

  • 연결된 이슈 없음

References

@cchanmi cchanmi self-assigned this Jul 31, 2026
@cchanmi cchanmi changed the title [FEAT] 온디바이스 일기 요약 기능 추가 (KoBART ONNX Runtime) [FEAT] 온디바이스 일기 요약 기능 추가 (KoBART + ONNX Runtime) Aug 1, 2026
@cchanmi
cchanmi merged commit c710975 into develop Aug 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant