본문 바로가기

Study

Ollama 를 사용한 피드백 어시스트 만들기 (LLM 커스터마이징)

 

취준을 끝내고 커리어 관리를 체계적으로 하기 위해, 커리어 나침반 이라는 문서를 만들었다. 

이 문서를 잘 활용하고 있는지, 하루를 잘 보냈는지 점검하기 위해 Ollama 라는 도구를 활용해서 피드백 어시스트를 만드는 간단한 사이드 프로젝트를 하기로 했다. 프로젝트를 시작하기 앞서, LLM과 로컬 ai 생태계를 잘 몰랐던 내가 궁금했던 점이 몇 가지 있었다.

Q. Ollama 가 뭐냐?

LLM(Large Language Model) 을 로컬에서 실행하고 관리할 수 있는 로컬 ai 관리 도구이다.

Q. Ollama 라는 것은 로컬에서 동작하는 모델 그 자체인가?

A. No. Ollama 는 모델이 아니다. 로컬라이징을 지원하는 여러 모델 (gemma, deepseek, mistral, ...)들을 로컬 컴퓨터에 다운받고 사용, 관리(커스터마이징)하는 것을 통합하는 인터페이스이다. 즉, LLM 을 로컬에서 사용할 수 있게 해주는 도구이다. 

Q. 왜? 로컬라이징이 필요한가? gpt 켜서 물어보면 편한데?

A. 클라우드에 오픈된 모델을 사용하는것과 로컬 LLM을 사용하는 것은 장단점이 있다. 로컬 LLM을 사용하는 주된 이유는 다음과 같다.

* 개인정보 보호 및 보안
* 비용 절감
* 진정한 오프라인
* 사용자 지정 모델 구축 가능
* (하드웨어 성능에 따라)성능 이점

이런 이유로 로컬 LLM 을 사용하는 추세가 늘고 있다

Q. 로컬 LLM 을 위한 다른 도구는 없는지?

A. 가장 대표적인 것은 Ollama(Cli 기반의 개발자 타겟의 강력하고 유연한 도구) 와 LM Studio(Gui 기반의 사용자 친화적이고 직관적인 도구)  이다. 둘 간의 자세한 비교는 아래에서 확인할 수 있다.
https://peekaboolabs.ai/blog/ollama-lm-studio-comparison

Q. 로컬에서 그런 거대한 모델을 돌리는 것이 가능하다는게 이해되지 않는다. 내 PC는 지금도 별로인 사양인데? 

A. 물론 gpt 5, gemini 3 같은 대규모 모델들을 로컬에서 돌릴 수는 없겠지만, Ollama에서는 로컬 LLM에 특화된 경량 모델들을 지원한다. 정확히 말하자면, 대부분의 ai 기업에서 대규모, 고성능의 심층 추론 모델과 대조적으로 경량화, 효율성에 최적화된 오픈소스 제품군을 따로 배포하고 있다. 예를 들어 구글에서는 잘 알려진 gemini 시리즈가 있지만, 비슷한 기반기술로 제작된 더 경량화된 오픈소스 모델인 gemma 시리즈가 있다. 이러한 오픈소스 모델들을 쉽게 설치하고 관리할 수 있도록 ollama에서 지원하고 있다.

 

...

 

이런 몇 가지 궁금증을 해소하고 나니 큰 그림을 그리기 조금 수월해 졌다. 그러면 프로젝트를 시작해 보자. 진행 과정은

1. ollama 설치(공식 문서 참고)

2. ollama 에서 원하는 모델 다운(cli/gui 둘다 지원)

3. 모델 커스터마이징

4. 검증

5. 고도화

로 진행할 것이다.

 

1차 구현

로컬에 ollama 를 설치하고 ollama gui 에서 모델을 다운받는 과정은 문서를 보고 쉽게 따라갈 수 있었다. 조금 복잡한 건 모델 커스터마이징이었는데, 조금 뒤에 다루겠다.

ollama 설치 → 모델 설치 모델 커스터마이징을 마치면 이렇게 간단하게 1차 구현은 끝난다. 결과를 확인해 보자.

우선 아래는 아무 커스터마이징을 하지 않은 모델과 커스터마이징한 모델에 대한 응답을 비교한 것이다.

 

 

 

기본 모델

 

 

(커스텀 모델)
ㄱㅅㄲ.....

 

고도화

고도화는 두 가지 목표로 진행한다. 

1. 한 일, 달성률 추출에 대한 정확도 높이기

2. 할 일을 입력하지 않고 한 일만 입력하고도 피드백 응답 생성

 

 

1. 한 일, 달성률 추출에 대한 정확도 높이기

프롬프트를 추가하거나 모델 설정을 변경하려면 Modelfile 을 편집해야 한다.
그러나 Modelfile 을 편집하려고 모델이 저장된 경로를 열어보니,
모델과 같은 경로에 있던 Modelfile 이 사라졌다.


그리고 sha256 으로 해싱된 파일 중 하나를 열어보니, Modelfile 을 만들면서 작성한 프롬프트가 저장되어 있었다.
→ Modelfile은 모델을 커스터마이징하기 위해 작성하는 파일이지만, 해당 모델파일을 기반으로 create 함과 동시에 모델의 일부가 되어 산화한다. (Modelfile을 구성하는 시스템 프롬프트, 매개변수 등은 해싱되어 모델 정보에 포함되지만 이를 구성하던 Modelfile 자체는 사라진다)

따라서, 모델의 커스터마이징을 변경하려면 새로운 모델파일을 생성하여 같은 이름의 모델을 새로 생성하는 수밖에 없다.
(현재 ollama 에서는 Modelfile을 편집하는 방법을 지원하지 않는다)

시스템 메시지를 편집하여 조금 달성률은 정확해졌지만, 완벽히 정확하진 않았다.(경량모델+ 프롬프트만으로 달성하기 어려운 한계로 보인다)

 

2. 할 일을 입력하지 않고 한 일만 입력하고도 피드백 응답 생성

 

2를 달성하기 위해선, 내 목표(할 일)를 기록한 데이터베이스(노션)로부터 한 일을 가져오고, 해당 목록을 프롬프트로 정제하여 모델에게 전달하는 작업이 추가로 필요하다. 즉 비즈니스 로직이 생긴 것이다.

노션 API 사용과 어플리케이션 로직이 필요하므로, 스프링 어플리케이션으로 작성하기로 했다. 

간단한 설계와 구현 계획은 다른 글로 다루겠다.

 

 

 

'Study' 카테고리의 다른 글

OSI 7 계층  (0) 2025.12.18
Https와 TLS/SSL  (0) 2025.12.17
운영체제 정리(5) - 메모리 관리와 페이징, 세그먼테이션  (1) 2025.12.12
운영체제 정리(4)-Process Scheduling과 Race Condition  (0) 2025.12.11
커리어 나침반  (1) 2025.12.01