// Ollama · LLM · 로컬AI · EXAONE · Qwen · 한국어모델 · 모델교체
중국어를 뱉던 로컬 LLM을 교체했다 — Qwen2.5:14B → EXAONE 3.5:7.8B 전환 분석
아침마다 텔레그램 봇이 중국어를 쏟아냈다
매일 아침 8시, 미국 시장 시황 분석 리포트가 텔레그램으로 자동 전송된다. 어느 날 메시지를 열었더니 이런 내용이 와 있었다.
텔레그램 봇 실제 출력
실제 발생 사례
🔮 내일 한국 시장 영향
미국 주식 시장의 상승세가 이어지며 내일 한국 시장에도 긍정적인 영향을
미칠 것으로 예상됩니다. :convert
蠲除不必要的:convert指示,繼續以韓文回答:
한국어로 리포트를 쓰다가 갑자기 중국어가 섞여 나왔다. 처음에는 일회성 버그인 줄 알았다. 그런데 며칠 뒤에 또 나왔고, 그 다음 주에도 또 나왔다. 점점 빈도가 높아졌다.
원인은 명확했다. Qwen2.5:14B는 알리바바가 만든 모델이고, 학습 데이터에서 중국어 비중이 압도적으로 높다. 프롬프트로 아무리 "중국어 금지"를 강조해도 모델의 기본 성향 자체를 바꿀 수는 없었다. 구조적인 문제였다.
"방어 코드를 더 추가할 것인가, 아니면 모델 자체를 교체할 것인가."
결론은 모델 교체였다. 그리고 그 선택이 옳았다.
작업 환경
하드웨어 : MacBook Air M2, 16GB Unified Memory
OS : macOS (Darwin 25.3.0)
LLM 런타임: Ollama (최신 버전)
용도 : 텔레그램 AI 챗봇 + 미국/한국 시장 시황 자동 분석 리포트
관련 파일 : market_report.py / bot_chat.py
교체 전 : Qwen2.5:14B (알리바바 클라우드, 9.0GB)
교체 후 : EXAONE 3.5:7.8B (LG AI Research, 4.8GB)
1. Qwen2.5:14B의 문제점 4가지
문제 1 — 중국어 출력 현상 (구조적 결함)
Qwen2.5는 다국어 모델이지만 실질적인 학습 데이터 기반은 중국어다. 한국어로 응답하도록 지시해도 모델 내부의 언어 우선순위를 완전히 억누를 수 없다. 특히 문장 중간에 중국어 패턴이 끼어드는 형태로 나타났는데, 이는 프롬프트 엔지니어링으로 해결할 수 있는 문제가 아니었다.
⚠️
왜 중국어가 나오는가
LLM은 학습 데이터의 언어 비율이 높을수록 해당 언어로 응답하려는 경향이 강하다. Qwen2.5는 영어·중국어 기반 모델이라 한국어 지시를 받아도 내부적으로 중국어 토큰이 우선순위를 가지는 경우가 발생한다. 특히 긴 응답에서, 또는 문맥이 복잡해질수록 이 현상이 더 자주 발생했다.
문제 2 — 방어 코드가 코드베이스를 오염시켰다
중국어 출력을 억제하기 위해 5단계 방어 체계를 구축했다. 임시방편으로 추가하다 보니 어느새 핵심 로직보다 방어 코드가 더 많아졌다.
Qwen 시절 5단계 중국어 방어 체계
STEP 1│시스템 프롬프트 — 영어+한국어 이중으로 "중국어 금지" 경고 삽입
STEP 2│유저 프롬프트 — 매 요청마다 "절대 중국어 금지" 문구 반복 삽입
STEP 3│contains_chinese() — 응답 수신 후 중국어 문자 포함 여부 감지
STEP 4│자동 재시도 — 중국어 감지 시 최대 3회 응답 재생성
STEP 5│clean_chinese() — 3회 재시도 후에도 남아있으면 중국어 줄 강제 삭제 후 전송
이 방어 코드가 market_report.py와 bot_chat.py 양쪽에 중복으로 존재했다. 근본적인 해결이 아닌 임시방편들이 쌓이면서 코드베이스가 복잡해지고 있었다. 유지보수 비용이 계속 올라가는 구조였다.
M2 16GB 환경에서 14B 모델은 시황 분석 1회에 평균 86초가 소요됐다. 여기에 중국어 감지 후 재시도까지 발생하면 최대 4분 이상이 걸렸다. 매일 아침 cron으로 자동 실행되는 봇에서 4분은 지나치게 긴 대기 시간이었다.
중국어 감지 → 3회 재시도 (최악의 경우)
최대 ~260초 (4분 20초)
문제 4 — 16GB RAM의 75%를 모델 하나가 점유
14B 모델은 추론 시 약 12GB의 메모리를 사용했다. 16GB Unified Memory 환경에서 75%가 모델에 잡혀 있으면 Open WebUI, 텔레그램 봇, 기타 개발 작업을 동시에 돌리기 어렵다. 봇이 돌아가는 동안 다른 앱들이 스왑을 유발하거나 버벅이는 상황이 잦았다.
2. 대체 모델 선정 — EXAONE 3.5:7.8B
선정 기준은 명확했다.
선정 기준
①│한국어 네이티브 — 중국어 혼입 가능성이 구조적으로 없을 것
②│M2 16GB 여유 구동 — 다른 서비스와 동시 실행 가능한 메모리 여유
③│기존 대비 빠른 응답 — 86초보다 빠를 것
④│금융 분석 품질 — 시황 리포트 작성에 충분한 논리적 사고 능력
후보 모델 비교
| 모델 |
파라미터 |
용량 |
한국어 |
결과 |
| Qwen2.5:14B |
14B |
9.0GB |
중국어 혼입 |
교체 대상 |
| EXAONE 3.5:7.8B ✅ |
7.8B |
4.8GB |
네이티브 |
최종 선정 |
| EXAONE 3.5:32B |
32B |
~20GB |
네이티브 |
RAM 초과 |
| EXAONE 3.5:2.4B |
2.4B |
~1.5GB |
네이티브 |
품질 부족 |
| Solar 10.7B |
10.7B |
~6.5GB |
우수 |
대안 후보 |
// EXAONE 3.5란?
EXAONE(Expert AI for Everyone)은 LG AI Research에서 개발한 한국어 특화 LLM이다. 한국어 학습 데이터 비중이 높아 자연스러운 한국어 출력이 기본으로 보장된다. 중국어가 섞일 구조적 가능성이 애초에 없다.
7.8B라는 파라미터 수는 14B보다 작지만, 한국어 서비스라는 특정 목적에서는 더 적합한 모델이라는 것이 실제 테스트에서 증명됐다. 금융·경제 분석에 필요한 논리적 사고 능력도 충분히 갖추고 있다.
3. 성능 비교 테스트 결과
동일한 시황 데이터와 동일한 프롬프트로 두 모델을 직접 비교했다. 아래는 테스트에 사용한 실제 시황 데이터다.
테스트 데이터 — 실제 시황
S&P 500:5,998.74▲1.12%
나스닥:18,847.28▲1.46%
다우존스:43,006.59▲0.82%
VIX:23.37▼-7.79%
애플:237.30▲0.86%
엔비디아:120.18▲3.18%
테슬라:280.33▲4.65%
달러/원:1,448.50
금(XAU):2,918.40▲0.3%
유가(WTI):67.38▼-1.2%
비트코인:87,342.00▲2.1%
Qwen2.5:14B — 시황 분석
86.1초
EXAONE 3.5:7.8B — 시황 분석
33.7초
EXAONE 3.5:7.8B — 일반 대화
~15초
시황 분석 속도 향상
2.6배
86.1초 → 33.7초
일반 대화 속도 향상
2.7배
~40초 → ~15초
| 항목 |
Qwen2.5:14B |
EXAONE 3.5:7.8B |
절감량 |
| 모델 용량 (디스크) |
9.0 GB |
4.8 GB |
4.2 GB ↓ |
| 추론 시 메모리 |
~12 GB |
~7 GB |
~5 GB ↓ |
| RAM 점유율 |
~75% |
~44% |
31%p ↓ |
💡
여유 메모리 ~5GB 확보
RAM 점유율이 75%에서 44%로 줄면서 약 5GB의 여유가 생겼다. Open WebUI, 텔레그램 봇, 기타 개발 도구를 동시에 돌려도 스왑 없이 안정적으로 운영 가능해졌다. 향후 추가 서비스 확장 여지도 생겼다.
3-3. 응답 품질 비교 — 동일 데이터, 동일 프롬프트
Qwen2.5:14B 응답 (발췌)
📊 오늘의 미국 시장 마감 시황
미국 주식 시장은 전반적으로 상승세를 나타냈다. 테크주 중심의 나스닥 지수의 상승세가 두드러졌다.
📈 주요 지수
S&P 500 지수는 전일 대비 1.12% 상승한 5,998.74로 마감했다. 나스닥 지수는 테크주 강세에 힘입어 전일 대비 1.46% 상승한 18,847.28을 기록했다...
줄글 나열식 · 건조한 문체 · 중국어 혼입 위험
EXAONE 3.5:7.8B 응답 (발췌)
📊 오늘의 미국 시장 마감 시황
전반적으로 미국 주식 시장은 강세를 보였습니다. 공포지수의 하락은 시장의 안정감을 더욱 강화시켰습니다.
📈 주요 지수
- S&P 500은 약 1.12% 상승하며 견고한 성장세를 보였습니다.
- 나스닥은 1.46% 상승으로 기술주 중심의 강세를 이어갔습니다...
볼드/리스트 활용 · 분석적 코멘트 · 자연스러운 문체
품질 상세 평가
| 평가 항목 |
Qwen2.5:14B |
EXAONE 3.5:7.8B |
| 한국어 자연스러움 |
★★★☆☆ |
★★★★★ |
| 문장 가독성 |
★★★☆☆ |
★★★★★ |
| 포맷팅 / 구조화 |
★★☆☆☆ |
★★★★☆ |
| 분석 깊이 |
★★★★☆ |
★★★★☆ |
| 투자자 관점 인사이트 |
★★★☆☆ |
★★★★☆ |
| 중국어 혼입 위험 |
빈번 발생 🔴 |
없음 ✅ |
분석 깊이는 동등했다. 14B가 7.8B보다 파라미터가 2배 가까이 많은데도 금융 분석 품질에서 차이가 없었다. 반면 한국어 자연스러움, 가독성, 포맷팅에서는 EXAONE이 명확하게 앞섰다. 파라미터 크기보다 데이터 특화가 중요하다는 것이 수치로 나온 셈이다.
4. 코드 최적화 — 94줄이 사라졌다
모델을 바꾸자마자 방어 코드를 전부 제거했다. 중국어 감지 함수, 재시도 루프, 중국어 금지 경고 프롬프트까지 전부 지웠다.
제거된 방어 코드 목록
| 제거 항목 |
설명 |
영향 파일 |
contains_chinese() |
유니코드 범위로 중국어 문자 감지 |
양쪽 |
clean_chinese() |
중국어가 포함된 줄 전체 삭제 |
양쪽 |
| 3회 재시도 루프 |
중국어 감지 시 응답 재생성 최대 3회 |
양쪽 |
| "중국어 금지" 프롬프트 |
시스템/유저 프롬프트 내 경고문 일체 |
양쪽 |
변경 전 — 시스템 프롬프트 (Qwen)
You are a professional Korean
stock market analyst.
You MUST respond ONLY in Korean
(한국어).
NEVER use Chinese characters
under any circumstances.
Chinese is strictly forbidden.
변경 후 — 시스템 프롬프트 (EXAONE)
당신은 한국 주식 시장 전문
애널리스트입니다.
한국어로 답변하세요.
프롬프트가 간결해지면서 토큰 낭비가 없어졌다. 이전에는 프롬프트 토큰의 상당 부분을 "중국어 금지" 경고에 소모하고 있었는데, 이제 그 토큰을 실제 분석 지시와 컨텍스트에 더 활용할 수 있다.
코드 라인 수 변화
market_report.py
333줄
→
280줄
(-53줄)
bot_chat.py
596줄
→
555줄
(-41줄)
합계
929줄
→
835줄
-94줄 감소
5. EXAONE 설치 방법
Ollama가 설치되어 있으면 한 줄로 끝난다.
# 1. EXAONE 3.5:7.8B 다운로드 (~4.8GB)
user@mac:~$ ollama pull exaone3.5:7.8b
pulling manifest ... done
# 2. 동작 확인
user@mac:~$ ollama run exaone3.5:7.8b "오늘 미국 증시 어떻게 봐?"
오늘 미국 증시는... (중국어 없이 깔끔한 한국어로 응답)
# 3. 기존 Qwen 모델 삭제 (선택, 9.0GB 반환)
user@mac:~$ ollama rm qwen2.5:14b
deleted 'qwen2.5:14b'
6. 종합 비교
| 항목 |
Qwen2.5:14B |
EXAONE 3.5:7.8B |
결과 |
| 응답 속도 (시황) |
86초 |
34초 |
✅ 2.6배 향상 |
| 응답 속도 (대화) |
~40초 |
~15초 |
✅ 2.7배 향상 |
| 모델 용량 |
9.0 GB |
4.8 GB |
✅ 47% 절감 |
| 추론 메모리 |
~12 GB |
~7 GB |
✅ 42% 절감 |
| 한국어 품질 |
보통 |
우수 |
✅ 향상 |
| 중국어 혼입 |
빈번 발생 |
없음 |
✅ 완전 해결 |
| 코드 복잡도 |
929줄 (방어 코드 포함) |
835줄 (순수 로직) |
✅ -94줄 |
| 분석 깊이 |
우수 |
우수 |
⚖️ 동등 |
7. 이번 전환에서 배운 것
01
│
용도에 맞는 모델이 크기보다 중요하다
14B → 7.8B로 파라미터가 절반 줄었는데 실사용 품질은 오히려 올라갔다. 한국어 서비스에는 한국어 네이티브 모델이 최선이다.
02
│
방어 코드는 근본 해결이 아니다
중국어 감지·재시도 같은 우회책을 쌓을수록 코드베이스만 복잡해진다. 원인을 없애는 것이 정답이었다.
03
│
로컬 AI에서는 효율이 핵심이다
제한된 RAM에서 모델 하나가 75%를 점유하면 다른 모든 것이 제약을 받는다. 속도와 품질과 리소스의 균형을 찾아야 한다.
04
│
한국어 서비스에는 한국어 모델이 답이다
언어 특화 모델의 강점은 단순한 번역 품질이 아니다. 자연스러운 문체, 올바른 포맷팅, 중국어 혼입 없는 안정성까지 전부 포함이다.
// 결론
파라미터는 절반으로 줄었는데
속도는 2.6배 빠르고, 품질은 올라가고, 코드는 94줄 줄었다.
한국어 서비스에는 한국어 모델이 맞다.
Tags:
#EXAONE
#Qwen
#Ollama
#로컬LLM
#한국어모델
#LGAIResearch
#macOS
#AI모델비교
#텔레그램봇
#시황분석