Study/Python

로컬에 LLaMA 3 실행하여 사용해 보기

Bluesky_ 2024. 6. 9. 01:42
반응형

LLaMA 소개

https://llama.meta.com/

LLaMA (Large Language Model Meta AI)는 메타에서 만든 오픈소스 모델이다.

LLaMA 1의 경우 2023년 2월 24일에 학계를 대상으로 오픈소스로 공개되어 수많은 파생형 모델들이 탄생하였다
LLaMA 2의 경우 2023년 7월 18일에 학계뿐만 아니라 기업도 사용 가능하도록 공개하였다.
LLaMA 3의 경우 2024년 4월 18일 공개되었다.

META의 LLaMA 뿐만 아니라 많은 LLM 모델들이 현재 경쟁하고 있다.

최단기간 가장 많은 가입자/이용자를 달성하여 파장을 일으킨 OpenAI의 ChatGPT 또한 현재 GPT-4o 가 공개된 상황이고
이외에도 Google의 Gemini, Antropic의 Claude, Mistral AI의 Mistral 모델, 아랍에미리트 글로벌 과학연구센터의 Falcon, xai의 grok 등
수많은 LLM이 등장하였고 OpenAI나 구글에 뒤쳐지면서 META의 LLAMA는 전략적으로 오픈소스 화를 통해 생태계 확장을 선택하였다.
https://en.wikipedia.org/wiki/Large_language_model

공개된 llama와 같은 model의 경우 홈페이지나 제공된 API를 사용하는 방법이 아닌 직접 로컬에 설치하고 로컬의 API를 사용하거나 프롬프트로 접근하여 사용할 수 있다.

설치하기

Python 기반의 LLM을 사용하기 위해선 python을 설치하고 gpu 사용 관련하여 cuda toolkit 설치 과정이 필요했던 거 같은데
일단 ollama를 사용하면 기본적으로 LLaMA를 쉽게 사용할 수 있는 것 같다.

(내 경우 2대의 PC에서 테스트를 하였지만 둘 다 이미 python과 cuda가 설치되어 있던 상태라 해당 단계를 건너뛴 상태이다.)
만약 필요한 경우 각각 설치를 진행하면 된다.

ollama 설치

ollama는 여러 오픈소스 LLM 모델을 로컬에서 설치/실행 및 관리하는 과정을 CLI 명령어로 간단하게 사용할 수 있도록 도와주는 프로그램이다.
https://www.ollama.com/

이름만 보면 llama만 쓸 수 있을 거 같아 보이지만 다양한 LLM model을 지원한다.
https://ollama.com/library

https://ollama.com/download
예전엔 window의 경우 wsl에 docker 기반으로 설치하고 그랬다는 거 같긴 한데 이 글을 작성한 시점 (2024/6/7)엔 그냥 ollama windows 버전을 설치하면 wsl 없이 실행되는 것 같다.
(아직은 preview 상태)

실행해 보기

프롬프트에 다음과 같이 입력하여 실행할 수 있다.

ollama run ollama3

run 명령어 다음에 실행하려는 model을 지정하면 된다.

따로 프롬프트 창을 띄우고 현재 실행 중인 ollama의 CPU/GPU 각각에 대한 사용율을 확인할 수 있다.

ollama ps

프롬프트에 원하는 대로 자연어 질문을 입력하면 답변을 해준다.

C:\Users\bluesky>ollama run llama3
>>> 한국에서 가장 유명한 가수가 누구야?
A question about K-pop!

There are many famous Korean singers, but some of the most well-known ones include:

1. BTS () - Also known as the Bangtan Boys, they are a global phenomenon and have won numerous awards, including several Grammy nominations.
2. Blackpink () - A popular girl group known for their high-energy performances and hit songs like "DDU-DU DDU-DU" and " Kill This Love".
3. PSY () - Known for his viral hit song "Gangnam Style", which became the first YouTube video to reach 1 billion views.
4. IU () - A successful singer-songwriter known for her powerful vocals and hit songs like "Good Day" and "You & I".
5. Baek A Yeon () - A popular singer-songwriter known for his smooth vocals and hit songs like "Rope" and "So So".
6. Sunmi () - A former member of the girl group Wonder Girls, she has had a successful solo career with hits like "Full Moon" and "Heroine".
7. Wanna One () - A project group formed through the reality TV show "Produce 101", they have had several hit songs and albums.

These are just a few examples, but there are many other talented K-pop artists out there! 🎤

다른 질문으로 학습한 데이터의 최근날짜를 물어보니 대략 2022년 11월까지 데이터를 학습한 듯하다.

다른 모델 사용해 보기

ollama에서 기본 제공되는 model 외의 모델도 사용할 수 있다.

llama 3를 그대로 사용할 수 있지만 한국어가 좀 어색하다.
한국어 학습이 진행된 파생 모델을 사용해 보자.

ollama에서는 gguf format의 파일을 import 할 수 있다.

gguf format은 Georgi Gerganov 라는 개발자가 model의 빠른 load 및 save를 위한 binary format이다.
https://huggingface.co/docs/hub/gguf
https://github.com/ggerganov/ggml/blob/master/docs/gguf.md

따라서 이 gguf foramt의 model을 다운로드하여 ollama에서 해당 파일을 지정하여 사용할 수 있다.

gguf format의 model 파일은 huggingface 사이트에서 다운로드할 수 있다.
https://huggingface.co/

huggingface는 머신러닝에 최적화된 git 사이트이다.
수많은 학습을 위한 dataset들과 model들이 등록되어 있고 이 model들을 사용한 api를 사용하거나 model을 학습시키고 배포를 할 수 있다.

예를 들어 한국어 학습된 model의 경우 다음과 같은 위치에 있다.
https://huggingface.co/MLP-KTLim/llama-3-Korean-Bllossom-8B-gguf-Q4_K_M/tree/main

해당 모델은 서울과학기술대학교 멀티모달 자연어 연구실에서 공개한 llama 3 기반 한국어 학습 model이다.
https://sites.google.com/view/aailab
https://www.bllossom.ai/home

공개된 model의 gguf 파일은 해당 사이트에 로그인하지 않아도 다운로드할 수 있다.

해당 model의 gguf 파일을 다운로드하고 파일이 있는 위치에 Modelfile 을 만들어 다음과 같이 작성한다.

FROM ./llama-3-Korean-Bllossom-8B-Q4_K_M.gguf

이 Modelfile을 사용하여 model을 적당한 이름으로 생성한다

ollama create llama3-Korean-Bllossom -f Modelfile

해당 모델이 추가된 것을 list 명령어로 확인할 수 있다.

ollama list

해당 모델을 사용한다.

ollama run llama3-Korean-Bllossom

그 밖의 명령어

다른 명령어가 무엇이 있는지 확인하고 싶은 경우 그냥 ollama 만 입력하면 확인할 수 있다.

C:\Users\bluesky>ollama
Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.

다른 이미지를 받고 싶은 경우 pull 명령을 사용하면 된다.

ollama pull mxbai-embed-large

다운로드한 모델을 삭제하고 싶은 경우 rm 명령어를 사용하면 된다

ollama rm mxbai-embed-large

명령어가 docker랑 동일하였는데 내 경우 docker를 설치하지 않은 PC에서 ollama를 사용하였다.


사용해 보니 답변 속도는 만족스러웠지만 내가 원하는 답변을 하는 경우보다 엉터리 답변을 하는 경우가 많았다.
(개발 관련 질문이어서 그런 빈도가 좀 많이 높은 느낌)

개발 관련 질문에 한국어 학습한 모델의 경우 오히려 답변이 더 엉망이었고 이러한 이유로 특정 분야별로 파생된 모델들이 많아진 게 아닌가 싶었다.

오답을 마치 정답인 것처럼 답변하는 현상을 AI 할루시네이션(Hallucination : 환각)이라고 하는데 다양한 원인들로 인해 발생하고 이를 줄이기 위해 다양한 해결 방법을 사용해야 한다고 한다.

이에 관련해서는 좀 더 찾아보고 정리해 보아야겠다.

반응형