학습 자료

내 노트북에서 도는 모델을 얹는다 — 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 로 갈아끼울 때 비교 대상이 필요하다. 그때 코드를 다시 작성할 필요가 없다 — 주소와 key값 모델 이름 이 세 줄만 바꾸면 된다.

2. Ollama 를 깐다

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

혹은 터미널에서 아래의 명령어로 바로 설치 가능

winget install --id Ollama.Ollama
우리가 만들 구조
  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

4. 첫 대화 — 터미널에서

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

ollama run qwen2.5:3b

5. CUDA 오류 발생 문제 해결법 (GPU연산 스킵처리)

만약 위의 명령어 실행시 CUDA관련 오류가 발생하는 이유는 현재 GPU와 호환불가 이슈인 경우가 대부분 이런경우 터미널에서 아예 GPU연산을 스킵하고 CPU로 연산처리하도록 우회하는 방법을 사용.

taskkill /F /IM ollama.exe
taskkill /F /IM "ollama app.exe"

먼저 위의 명령어로 기존 ollama 강제 종료

netstat -ano | findstr :11434

기존 터미널 오류에서 출력되는 포트번호를 위와 같이 넣어서 해당 포트번호 요청이 비워졌는지 확인 위의 명령어를 입력시 다음 터미널에 아무런 메세지가 안나오면 제대로 해당 포트에서 ollama 작동 중지되었다는 의미

만약 위의 명령어 입력후 터미널에 아무것도 안 떠야 정상인데 뭔가 포트 정보가 뜬다면 아래의 터미널 명령어를 추가 입력

taskkill /F /PID 11434
set CUDA_VISIBLE_DEVICES=-1
set OLLAMA_HOST=127.0.0.1:11434
ollama serve

위의 명령어를 한줄씩 실행해서 다시 ollama 실행 해당 올라마 구동 터미널은 그대로 유지한채 새로운 터미널창 열기

set OLLAMA_HOST=127.0.0.1:11434
ollama run qwen2.5:3b

새로운 터미널 창에서 위의 명령어 실행후 프롬프트가 나오면 chatgpt 이용하듯 llm에게 질문 가능

터미널
  • >>> 안녕? 너는 누구야
  • 안녕하세요! 저는 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
  • 로컬모델
내 노트북에서 도는 모델을 얹는다 — Ollama 와 qwen — 디코드랩(DCODELAB)