학습 자료

내 노트북에서 도는 모델을 얹는다 — Ollama 와 qwen


Article

앞 편까지 264편을 9,005조각으로 자르고, 질문을 던지면 관련 조각을 찾아내는 데까지 왔다. 그런데 아직 답을 만들어주지는 않는다. 조각을 찾아서 보여줄 뿐이다.

3부 열흘 중 지금
  1. ① 모델을 얹는다오늘
  2. ② 출력을 통제한다내일
  3. ③ 검색을 재고 고친다수요일
  4. ④~⑩ 서비스로다음 주

지금까지 쓴 모델과 오늘 얹을 모델은 다른 것이다

우리는 이미 AI 모델을 쓰고 있었다. 11강부터 쓴 multilingual-e5-small임베딩 모델이다. 문장을 넣으면 숫자 384개가 나오고, 글은 만들지 못한다. 하는 일은 뜻이 가까운 것을 찾는 것 하나다.

오늘 얹는 qwen 은 생성 모델(LLM) 이다. 글을 넣으면 글이 나온다. 찾은 조각을 읽고 답을 만드는 쪽이다. 크기가 2GB 를 넘고 임베딩 모델보다 훨씬 느리다.

둘 다 필요하다. 찾는 것과 답하는 것은 다른 일이다.

1. 왜 상용 API 를 바로 안 쓰나

돈만 내면 훨씬 좋은 모델을 쓸 수 있는데도 오늘은 일부러 노트북에서 도는 걸 먼저 쓴다. 이유는 셋이다.

첫째, 데이터가 밖으로 안 나간다. 상용 API 는 프롬프트를 남의 서버로 보내는데, 무엇을 보내면 안 되는지는 아직 안 배웠다.

둘째, 마음껏 틀려도 된다. 오늘 프롬프트를 수십 번 고쳐가며 돌릴 텐데 로컬은 몇 번을 돌리든 0원이다.

셋째, 나쁜 걸 봐야 좋은 걸 안다. 다음 주에 상용 API 로 갈아끼울 때 비교 대상이 필요하다. 그때 코드를 다시 쓰지는 않는다 — 주소와 열쇠와 모델 이름 세 줄만 바꾼다.

2. Ollama 를 깐다

ollama.com 에서 설치 파일을 받아 실행한다. 깔리면 백그라운드에서 서버가 하나 돈다. 파이썬이 이 서버에 요청을 보내는 구조다.

우리가 만들 구조
  1. 내 파이썬 코드요청을 보낸다
  2. Ollama 서버localhost:11434 · 내 컴퓨터 안
  3. qwen 모델글을 만든다
인터넷을 안 탄다. 전부 내 컴퓨터 안에서 오간다.
ollama --version
터미널
  • ollama version is 0.32.6

설치가 끝나면 Launch 창이 하나 뜬다. 남의 도구를 로컬 모델에 물려주는 기능이라 우리 수업과 상관없다. 창은 닫되 트레이 아이콘에서 Quit 하지는 않는다 — 서버까지 꺼진다.

3. 어느 모델을 받을지가 오늘의 진짜 결정이다

같은 qwen 이라도 크기가 여러 개다. 기준은 노트북 사양 — VRAM 2GB, RAM 16GB 다. VRAM 은 그래픽카드 메모리로 빠르지만 작고, RAM 은 본체 메모리로 느리지만 크다. 모델은 통째로 메모리에 올라가야 도는데, VRAM 에 다 못 올라가면 RAM 으로 밀려나고 CPU 가 계산한다.

qwen2.5 크기별 (Q4 양자화 기준)
모델받는 크기어디서 도나판정
qwen2.5:0.5b약 0.4GBVRAM한국어가 무너진다. 쓸 수 없다
qwen2.5:1.5b약 1GBVRAM 에 들어갈 수도느린 노트북용 대안
qwen2.5:3b약 2GB대부분 RAM · CPU오늘 쓸 것
qwen2.5:7b약 4.7GBRAM · CPU답 하나에 1분. 수업 불가
b 는 billion. 파라미터가 몇 십억 개인지를 뜻한다. 클수록 똑똑하고 느리다.

양자화는 모델 안의 숫자를 덜 정밀하게 저장하는 것이다. 3b 모델의 원본은 6GB 가 넘는데 Q4 로 줄이면 2GB 가 된다. Ollama 가 받는 것은 기본이 양자화된 판이라 따로 신경 쓸 게 없다.

ollama pull qwen2.5:3b

2GB 를 서른 명이 동시에 받으면 60GB 다. 11강에서 허깅페이스가 429 Too Many Requests 로 막았던 것과 같은 일이 생기므로, 오늘 것은 미리 받아두었다.

4. 첫 대화 — 터미널에서

파이썬을 쓰기 전에 모델이 살아 있는지부터 확인한다. 빠져나올 때는 /bye 다.

ollama run qwen2.5:3b
터미널
  • >>> 안녕? 너는 누구야
  • 안녕하세요! 저는 Alibaba Cloud에서 제작한 AI 챗봇입니다. 다양한 질문에
  • 답변하거나 도와드릴 수 있습니다. 어떤 걸 도와드릴까요?
  • >>> /bye

여기서 두 가지를 눈여겨본다. 첫 글자가 나오기까지 몇 초 걸리는데, 모델을 메모리에 올리는 시간이라 두 번째 질문부터는 빨라진다. 그리고 답이 나오는 속도가 눈에 보인다 — 상용 서비스에서 답이 주르륵 흐르는 것과 같은 원리인데 우리는 느려서 더 잘 보인다.

5. 어디서 돌고 있나 — GPU 인가 CPU 인가

모델을 띄워둔 채로 다른 터미널을 열어 확인한다.

ollama ps
터미널 — PROCESSOR 값은 노트북마다 다르다
  • NAME ID SIZE PROCESSOR CONTEXT UNTIL
  • qwen2.5:3b 357c53fb659c 2.2 GB 100% CPU 4096 4 minutes from now
PROCESSOR 값이 뜻하는 것
표시무슨 뜻속도
100% GPU전부 그래픽카드에 올라갔다가장 빠르다
40%/60% CPU/GPU일부만 올라갔다어중간하다
100% CPU전부 본체 메모리에서 돈다느리다. 우리는 대개 여기
VRAM 이 2GB 라 3b(2.5GB)가 통째로 안 들어간다. 그래서 CPU 로 밀린다.

그래픽카드가 있어도 모델이 들어가야 쓴다. 3b 가 답답하면 ollama pull qwen2.5:1.5b 로 내려도 된다 — 오늘 배울 내용은 모델 크기와 상관이 없다. 다만 0.5b 는 한국어가 아예 무너져서 다음 주 비교가 「고장 대 정상」이 되어버린다.

6. 조각을 많이 넣으면 CPU 에서만 느려진다

모델은 답을 만들기 전에 입력을 통째로 한 번 읽는다. 이 단계를 프리필(prefill)이라고 부르고, CPU 에서는 특히 느리다.

조각 수와 걸리는 시간 — qwen2.5:3b 실측
넣은 조각입력 토큰CPU 프리필CPU 총GPU 총
3개4233.6초10.9초3.1초
10개8644.2초11.9초3.1초
30개2,64721.0초30.4초4.0초
생성은 120토큰으로 고정했다. 늘어나는 것은 답을 만드는 시간이 아니라 입력을 읽는 시간이다.

GPU 는 조각을 열 배로 늘려도 3.1초에서 4.0초다. CPU 는 10.9초에서 30.4초가 되고, 프리필만 3.6초에서 21초로 뛴다. 우리 노트북은 여기다.

그래서 학원 노트북에서는 조각을 적게 넣는 것이 선택이 아니라 조건이다. 검색을 잘해서 세 개만 넣어야 한다. 우리 조각은 200자라 토큰 평균 71개다 — 영어권 예제대로 1000자로 잘랐으면 조각 하나가 414토큰이라 셋만 넣어도 1,200토큰이다. 청킹을 200으로 잡은 결정이 오늘 속도로 돌아온다.

7. 모델이 어디에 저장됐나

ollama list
터미널
  • NAME ID SIZE MODIFIED
  • qwen2.5:3b 357c53fb659c 1.9 GB 12 minutes ago

저장 위치는 윈도우 기준 C:\Users\사용자\.ollama\models 다. C 드라이브가 빠듯하면 OLLAMA_MODELS 환경변수로 옮길 수 있고, 안 쓰는 모델은 ollama rm 모델이름 으로 지운다. 11강에서 본 허깅페이스 캐시와는 별개의 폴더라 둘 다 쌓인다.

이번 편에 나온 것

정리
쓴 것하는 일
ollama --version설치 확인
ollama pull 모델모델을 받는다
ollama run 모델터미널에서 바로 대화. 나올 때 /bye
ollama ps지금 떠 있는 모델과 GPU/CPU 비율
ollama list받아둔 모델 목록
ollama rm 모델모델 삭제
OLLAMA_MODELS저장 위치를 옮긴다
localhost:11434Ollama 서버 주소. 다음 편에서 여기로 요청한다

다음 편에서 파이썬으로 이 모델을 부른다.

Share
  • 파이썬
  • AI
  • LLM
  • Ollama
  • 로컬모델