
NVIDIA의 GPU를 가지고 있지 않은 구형 노트북(구세대 i7, 16GB RAM, 500GB SSD)을 Ollama 기반의 경량 LLM을 이용해서 자율 작업을 수행시키는 머신으로 만들 계획을 세웠습니다.
그러나 Gemini나 ChatGPT가 추천하는 qwen2.5-coder:3b 모델을 설치해 보았지만 일반적인 대화는 그럭저럭 빠르게 대답하지만 코드 작성 등 정작 내가 원하는 작업은 거의 수행이 불가능했습니다.
전혀 관계없는 코드, 그것도 10줄 이내의 기본적인 코드만 만들어내고, 지시한 파일명조차 제대로 맞춰주지 못하더군요.
화면 출력만을 위한 Intel 기반의 GPU는 있지만.. AI모델의 연산이 목적이라면 No GPU의 상태에서 작동 가능한 모델을 선택했으니 어쩔 수 없는 것이라고 생각했습니다.
그래서 코드 작업은 포기하고 그냥 데이터를 정리해서 보고서 정도 만들 수만 있으면 만족하기로 했습니다.
그런데 이왕 그 수준에서 만족한다면 굳이 외산모델을 선택하지 않아도 괜찮지 않을까? 싶어서 최근에 "독파모" 프로젝트와 함께 올라오기 시작한 국산 모델을 찾아보았습니다.
그 중에서 LG AI Research에서 개발한 Exaone3.5:2.4B 모델을 선택했습니다.
LG AI Research에서 모델 개발 초기에 밝혔던 것처럼 일반 대화보다는 산업쪽에 좀 더 특화되어있다는 점이 다른 모델보다 관심을 끌더군요.
크기는 2.4B라서 크게 기대는 하지 말고 사용해 보자.. 라고 생각했습니다.
Exaone3.5:2.4B 양자화 모델의 경우, 메모리 점유 용량이 약 1.8GB라고 하니 No GPU인 구형 노트북에서도 어느 정도 돌아갈 것으로 기대했습니다.
그래서 Ollama를 기반으로 Exaone3.5:2.4B를 설치하고 테스트를 해 보았습니다.
ollama run exaone3.5:2.4b
결과는 대만족입니다.

다음은 일반 질의응답의 내용입니다.
평범한 대화보다는 Exaone의 특징이라는 산업 분야에 맞는 질문을 해 보았습니다.
[ 질문 ]
제조설비에서 진동센서의 측정값이 불량률 관리에 중요한 이유를 정리해줘.
[ 답변 ]
제조설비에서 진동센서의 측정값이 불량률 관리에 중요한 이유는 다음과 같이 요약할 수 있습니다:
1. **기계 상태의 실시간 모니터링**:
- **조기 이상 징후 감지**: 진동센서는 기계 부품의 미세한 진동을 감지하여 정상적인 작동 범위를 벗어난 신호를 빠르 게 탐지합니다. 이로 인해 고장 징후나 마모를 조기에 파악할 수 있습니다.
- **예방적 유지보수**: 조기에 이상 징후를 발견함으로써 예측적인 유지보수 계획을 수립하고 비용 효율적인 유지보수를 실현할 수 있습니다.
2. **결함과의 연관성**:
- **부품 마모 및 손상**: 지속적인 진동 증가는 주로 베어링 마모, 기어의 손상, 또는 다른 부품의 결함과 관련이 있습 니다. 이러한 문제들은 직접적으로 불량 제품 발생률을 증가시키므로 진동 데이터는 결함 원인 분석에 필수적입니다.
- **공정 불안정성**: 진동의 크기와 패턴 변화는 공정의 불안정성을 시사하며, 이는 최종 제품 품질 저하와 불량률 상승 으로 이어질 수 있습니다.
3. **품질 관리 및 신뢰성 향상**:
- **일관성 유지**: 정확한 진동 데이터를 통해 제조 공정의 일관성을 유지하고 품질 관리 수준을 높일 수 있습니다. 안 정적인 진동 상태는 일관된 제품 품질을 보장합니다.
- **신뢰성 평가**: 장기적인 진동 패턴 분석을 통해 설비의 신뢰성을 평가하고 개선 방안을 모색할 수 있습니다. 이는 장기적으로 전체 생산 효율성 향상에 기여합니다.
4. **데이터 기반 의사결정**:
- **통계적 분석**: 대량의 진동 데이터를 통계적으로 분석함으로써 불량률과 진동 패턴 간의 상관관계를 정확히 파악할 수 있습니다. 이를 통해 데이터 기반의 의사결정이 가능해집니다.
- **예측 모델링**: 머신러닝 기술을 활용해 미래의 불량 발생 가능성을 예측하고 사전 대응 전략을 수립할 수 있습니다 .
결론적으로, 진동센서의 측정값은 기계 상태의 즉각적인 이해와 예측적 관리를 통해 제조 공정의 효율성을 극대화하고 불량 률을 최소화하는 데 핵심적인 역할을 합니다.
2.4B 모델에서 이정도의 대답을 내놓을 줄은 몰랐습니다.
깊은 곳까지 다루지는 못했지만 그래도 실제 현장에서 신경써야 할 부분들은 제대로 설명하고 있습니다.
특히 진동의 증가가 어디와 관련이 있으며 어떻게 사용해야 하는지를 정확하게 이야기하고 있네요.
더 큰 모델이었다면 제대로 상세한 설명까지 해 줄 것 같습니다.

다음은 코드를 만들도록 시켜보았습니다.
기존의 Qwen 시리즈나 다른 추천 모델들은 제대로 된 답변은 커녕 의도 파악조차 하지 못하는 상황이었습니다.
다른 모델들이 대답하지 못한 질문을 해 보았습니다.
[ 질문 ]
SQLite3와 연결해 일별 메모를 저장하고 조회하는 CLI 파이썬 스크립트 memo.py를 작성해줘.
[ 답변 ]
아래는 SQLite3를 사용하여 일별 메모를 저장하고 조회하는 파이썬 스크립트 `memo.py`의 예제입니다. 이 스크립트는 메모를 생성하고 저장하며, 날짜별로 메모를 조회하는 기능을 제공합니다.
import sqlite3
from datetime import datetime
# 데이터베이스 연결 설정 및 테이블 생성
def init_db():
conn = sqlite3.connect('memos.db')
cursor = conn.cursor()
# 테이블 생성
cursor.execute('''
CREATE TABLE IF NOT EXISTS memos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user TEXT NOT NULL,
date TEXT NOT NULL,
note TEXT NOT NULL
)
''')
conn.commit()
conn.close()
print("데이터베이스 초기화 및 테이블 생성 완료")
# 메모 저장 함수
def add_memo(user, note):
conn = sqlite3.connect('memos.db')
cursor = conn.cursor()
date_str = datetime.now().strftime('%Y-%m-%d') # 현재 날짜 문자열로 변환
cursor.execute('''
INSERT INTO memos (user, date, note) VALUES (?, ?, ?)
''', (user, date_str, note))
conn.commit()
conn.close()
print(f"메모 '{note}'가 '{date_str}'에 저장되었습니다.")
# 날짜별 메모 조회 함수
def view_memos_by_date(date=None):
conn = sqlite3.connect('memos.db')
cursor = conn.cursor()
query = 'SELECT * FROM memos'
if date:
query += f" WHERE date = '{date}'"
cursor.execute(query)
memos = cursor.fetchall()
conn.close()
if memos:
print("\n메모 목록:")
for idx, (id, user, date, note) in enumerate(memos, start=1):
print(f"ID: {idx}, 사용자: {user}, 날짜: {date}, 메모: {note}")
else:
print("해당 날짜에 메모가 없습니다.")
# CLI 인터페이스 구현
def main():
init_db() # 데이터베이스 초기화
while True:
print("\n메모 관리 CLI")
print("1. 메모 저장")
print("2. 날짜별 메모 조회")
print("3. 종료")
choice = input("선택하세요 (1/2/3): ")
if choice == '1':
user = input("작성자 이름: ")
note = input("메모 내용: ")
add_memo(user, note)
elif choice == '2':
date_input = input("날짜(YYYY-MM-DD 형식): ")
view_memos_by_date(date_input)
elif choice == '3':
print("프로그램을 종료합니다.")
break
else:
print("잘못된 입력입니다. 다시 시도해 주세요.")
if __name__ == "__main__":
main()
### 스크립트 설명:
1. **데이터베이스 초기화 (`init_db`)**:
- `memos.db` SQLite 데이터베이스 파일을 생성하고, `memos` 테이블을 정의합니다. 테이블은 사용자 이름(`user`), 메모 날짜(`date`), 그리고 메모 내용(`note`)을 저장합니다.
2. **메모 저장 (`add_memo`)**:
- 현재 날짜를 문자열 형태로 저장하고, 사용자 이름과 메모 내용을 입력받아 `memos` 테이블에 삽입합니다.
3. **날짜별 메모 조회 (`view_memos_by_date`)**:
- 특정 날짜에 해당하는 메모를 조회합니다. `date` 파라미터를 통해 원하는 날짜를 필터링할 수 있습니다.
4. **CLI 인터페이스 (`main`)**:
- 사용자 인터페이스를 통해 메모 저장과 조회를 수행할 수 있습니다. 메뉴를 통해 사용자 선택을 받아 대응합니다.
### 사용 방법:
1. 스크립트를 실행합니다 (`python memo.py`).
2. 메뉴에서 원하는 옵션을 선택하고 입력합니다.
3. 메모를 저장하거나 특정 날짜의 메모를 조회할 수 있습니다.
4. 프로그램을 종료하려면 `3`을 선택합니다.
이 스크립트를 통해 간단한 메모 관리 시스템을 구축할 수 있습니다.
제대로 원하는 답변을 내 놓았습니다.
코드도 제대로 작성되어 있었고, 특정 라이브러리가 아닌 표준 라이브러리를 중심으로 만들어졌기 때문에 별도의 라이브러리 설치 등도 필요없네요.
얼마나 잘 작동하는지 보기 위한 것이었기 때문에 코드를 실행해 보지는 않았습니다.
대신 Gemini에게 코드에 문제는 없는지 검토해 보라고 시켜보았더니, 문법적으로나 프로세스에 문제가 없어보인다고 대답합니다.
아마 제대로 실행될 것이며 상황에 따라 실무적으로 수정은 필요해 질 수도 있다고 하네요.

이 정도의 수준이라면 구형 노트북에서 주력으로 동작시킬 모델로는 합격선이 아닐까 합니다.
메인 PC에서는 더 큰 모델을 선택하면 더 좋은 결과를 보여줄 것으로 기대가 되네요.

'AI' 카테고리의 다른 글
| 바이브 코딩 (0) | 2026.08.17 |
|---|---|
| 신경과학 이론 "글로벌 워크스페이스(Global Workspace, GWT)"에 대하여 (0) | 2026.07.15 |
| "프롬프트-컨텍스트-하네스"의 각 단계와 "바이브 코딩-에이전트 루프" (0) | 2026.04.03 |
| LLM에 대한 접근 방식의 변화 (0) | 2026.04.02 |
| 하네스 엔지니어링 (Harness Engineering) (0) | 2026.04.01 |