A.I

나만의 로컬 LLM(대형 언어 모델) 실행하기

Written by 개발자서동우 · 49 sec read >
Ollama

안녕하세요! Devloo 입니다. 저는 기본부터 시작하는 것을 중요하게 생각합니다. AI 관련 지식을 향상시키기로 결심했을 때, 구글의 머신러닝 크래시 코스를 통해 놓치고 있던 데이터 과학의 기본 개념들을 공부했습니다. 아직도 그 강의와 연습 문제를 진행 중이지만 말이죠.

때로는 그냥 실험해보고 싶을 때가 있습니다. 물론 OpenAI API를 가지고 놀아본 적도 있지만, 그것은 상업적인 제품처럼 느껴졌습니다. 타사 API를 사용하면 통제력이 줄어들고, 전송되는 모든 토큰에 비용을 지불해야 하며, 데이터 프라이버시 문제도 심각하게 고려해야 합니다. (삼성 엔지니어들이 기밀 코드를 ChatGPT에 넘겨 화제가 됐었습니다.)

저는 조금 더 직접적인 접근을 원했습니다. 다른 사람의 API가 개입하지 않은 오픈 소스 LLM을 사용하고 싶었습니다. 아직은 제 모델을 직접 훈련할 준비는 되지 않았지만요.

알고 보니 로컬 LLM을 실행하는 것은 매우 간단합니다. 이를 실행해보면, 특정 유형의 콘텐츠에 맞춰진 LLM이나 가드레일이 없는 무검열 버전의 LLM과 같은 매우 흥미로운 것들을 접할 수 있습니다. LLM이 어떻게 작동하는지 더 가까이에서 볼 수 있는 좋은 기회이자, 새로운 아이디어를 실험할 수 있는 멋진 방법입니다.

About Ollama
Ollama에 대해 알아보기

필요한 하드웨어

LLM 모델을 훈련시키는 데 많은 계산 능력이 필요하다는 것은 이미 잘 알려진 사실입니다. 가장 크고 강력한 LLM들도 응답을 생성할 때 많은 메모리와 프로세서 사이클을 소모합니다 (물론 훈련이나 미세 조정만큼은 아니지만요).

이 점을 고려할 때, 로컬 LLM을 실행하려면 최소한 고성능 데스크톱 컴퓨터나 고급 게이밍 노트북이 필요하다고 생각할 수 있습니다. 그러나 꼭 그렇지만은 않습니다. 저는 70억 개의 파라미터로 훈련된 작은 모델 변형을 선택했습니다. 이 모델들은 최신 하드웨어에서 쉽게 실행되며 약 8GB의 RAM만 필요합니다. 더 엄격한 테스트를 위해 7세대 i5 CPU, 16GB 메모리, 전용 GPU가 없는 오래된 컴퓨터에서 로컬 LLM을 실행해 보았고, 속도는 느리지만 추가 구성 없이도 오류 없이 작동했습니다.

물론 실제 운영 시스템에서는 많은 양의 메모리를 가진 여러 GPU가 필요합니다. 이는 매우 비쌉니다. 하지만 일반적인 하드웨어로도 충분히 실험하고 학습을 시작할 수 있습니다.

Ollama로 LLM 설치하기

로컬 LLM을 실행하려면 두 가지가 필요합니다: 모델 자체와 모델을 실행할 수 있는 소프트웨어인 추론 엔진입니다. 추론 엔진은 입력(텍스트 프롬프트)을 처리해 모델의 신경망을 통해 전달하고, 응답을 생성합니다.

로컬 LLM을 실행할 수 있는 여러 옵션이 있는데, 그중 하나는 깔끔한 그래픽 사용자 인터페이스를 제공하는 LLM Studio입니다. 하지만 LLM Studio는 오픈 소스가 아닙니다. 제가 개인적으로 선호하는 Ollama는 오픈 소스입니다.

Ollama는 Mac, Linux, Windows 컴퓨터에서 작동하는 매우 간편한 명령줄 도구입니다. 무엇보다도 번거로운 구성 단계가 필요 없습니다. Ollama는 공식 배포판이나 Docker 이미지를 통해 설치할 수 있으며, 이 모든 것은 GitHub 저장소에 링크되어 있습니다. Ollama를 설치한 후 터미널 창을 열고 ollama -h를 입력하면 명령어를 확인할 수 있습니다.

$ ollama -h
Large language model runner

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
  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.

모델 이름만 알면 ollama pull 명령으로 Ollama의 저장소에서 LLM을 설치할 수 있습니다. 가장 인기 있는 모델들은 GitHub 저장소에 나열되어 있으며, 약 100개의 오픈 소스 모델이 포함된 전체 라이브러리는 Ollama 웹사이트에서 확인할 수 있습니다.

예를 들어, Meta의 Llama 2 모델을 사용해보고 싶다면, 다음 명령어로 7B 파라미터 버전을 가져올 수 있습니다.

ollama pull llama2

모델을 다운로드하는 데 시간이 좀 걸릴 수 있습니다(크기는 4GB입니다). 다운로드 중에는 진행 표시줄이 표시되어, 마치 npm과 같은 도구로 패키지를 다운로드하는 것처럼 간편합니다.

Ollama 모델 설치
Ollama 모델 설치

설치가 완료되면 ollama list 명령어로 모델을 확인할 수 있고, ollama run llama2 명령어로 직접 모델을 실행해 테스트할 수 있습니다.

ollama run llama2

이 명령어를 입력하면 LLM과의 대화가 시작됩니다. 이제 프롬프트 시간입니다! 하드웨어에 따라 모델의 응답이 천천히 나타날 수 있습니다. Mac에서는 활동 모니터, Windows에서는 작업 관리자를 열어 모델이 응답을 처리하는 동안 CPU, GPU 및 메모리 자원이 어떻게 사용되는지 확인해 보세요.

Ollama 대화 시작하기
Ollama 대화 시작하기

대화를 종료하고 명령 프롬프트로 돌아가려면 /exit 명령을 사용하세요.

가드레일 제거 : Llama 2 무검열 버전

로컬 LLM을 실행하는 것은 모델의 동작을 연구하고 프롬프트를 비공개로 유지하는 훌륭한 방법입니다. 또 다른 이점은 다양한 LLM에 접근할 수 있다는 것입니다. 원하는 만큼 많은 모델을 한 번에 설치하고, 그들 사이를 원활하게 전환할 수 있습니다.

특히 흥미로운 예로는 일반적인 콘텐츠 가드레일이 없는 Llama 2의 무검열 버전인 llama2-uncensored가 있습니다. 예를 들어 기술 지원 챗봇을 구축하는 회사에는 적합하지 않지만, 다른 유형의 실험에는 흥미로운 가능성을 열어줍니다. 과감한 밈, 욕설, 그리고 위험하거나 불법적인 활동에 관한 콘텐츠도 생성할 수 있습니다. 논란이 될 수 있는 주제에 대해 이야기하거나 성적으로 노골적인 역할극을 할 수도 있습니다.

Ollama 블로그에는 검열된 모델이 순진한 질문에 대답하지 않는 재미있는 예시들이 있습니다. 더 도전적인 콘텐츠를 원하더라도 합리적인 사용 사례가 있습니다. 예를 들어, 소설 아이디어를 브레인스토밍하거나, 게임 내 대화를 생성하거나, 친구들끼리 유머러스한 챗봇을 만드는 경우입니다. 또는 “그 요청에 대해서는 도와드릴 수 없습니다”라는 응답 뒤에 숨겨진 답변을 알고 싶을 때도 마찬가지입니다. 무검열 모델은 그 답을 가지고 있습니다.

무검열 Llama 2는 일반 버전보다 창의적이지만, 더 자주 환각을 일으킬 수 있습니다. 잘못된 정보를 받아들이고 문제를 무시하며 불일치를 부드럽게 처리하는 경향이 있습니다.

Ollama에는 탐험해볼 모델들이 많이 있습니다. Mistral과 구글의 Gemma도 시도해보고 싶을 것입니다. 이 모델들은 많은 주목을 받고 있습니다. 또한 코드 생성이나 수학 문제 해결을 위한 특정 모델들도 있습니다. 더 실험적이고, 매우 컴팩트한 모델(모바일 장치에 적합한 모델)이나 비영어권 언어를 지원하는 모델도 있습니다. 여러가지 모델을 테스트 해보세요.

나만의 LLM 웹 API

로컬 LLM을 다루는 것도 재미있지만, Ollama가 제공하는 내장된 웹 API를 활용(로컬에서 호스팅)하여 개발을 해보실 수도 있습니다. 생각보다 더 간단합니다. 웹 서버를 시작하려면 ollama serve 명령어를 사용하면 됩니다:

ollama serve

이제 Ollama는 설치된 모든 모델을 웹 요청에 사용할 수 있도록 합니다. 요청을 보낼 때 사용할 모델만 지정하면 됩니다. 예를 들어, curl 명령어를 사용해 간단한 테스트를 해볼 수 있습니다:

curl http://localhost:11434/api/generate -d '
{
 "model": "llama2",
 "prompt": "Would you like to talk?",
 "stream": false
}'

(Windows 사용자 참고: Windows PowerShell에서는 curl 명령어가 표준 방식으로 작동하지 않을 수 있습니다. 이 예제를 실행하려면 Ubuntu와 같은 Linux 셸에서 실행해야 합니다. WSL을 사용하면 문제없이 실행할 수 있습니다.)

모델이 응답을 완료하면, 응답과 유용한 정보를 포함한 JSON 문서를 받게 됩니다.

Ollama API 연동
Ollama API 연동

대화를 유지하려면 컨텍스트 데이터를 사용할 수 있습니다. 각 요청과 함께 컨텍스트 데이터를 전달하면 됩니다. Ollama API의 전체 문서는 여기에서 확인할 수 있습니다.

모든 현대 프로그래밍 언어는 HTTP 요청을 보내고 JSON을 구문 분석하는 기능을 가지고 있습니다. 하지만 Ollama를 이해하는 라이브러리를 사용하면 더 편리합니다. GitHub 페이지에는 Java부터 Rust까지 다양한 라이브러리가 나열되어 있습니다.

LLM 생태계가 몇 달 만에 얼마나 성숙해졌는지 놀라운 것 같습니다. 1년 전만 해도 개인 컴퓨터에서 LLM을 다루는 것은 상당한 전문 지식과 노력이 필요했습니다, 하지만 지금은 점점 더 간단해지는 것 같습니다. 앞으로 어떤 발전이 있을지 정말 기대가 됩니다. 사내에서 LLM 시스템을 구축해서 쓰거나, 개인 용도로 쉽게 접근할 수 있는 도구들이 더 많이 나오지 않을까 싶네요.

오늘은 로컬 LLM을 구축하기 위한 Ollama에 대해 알아보는 시간을 갖았습니다.

끝까지 읽어주셔서 정말 감사합니다. 궁금하신 점이 있으시면 댓글 남겨주세요 ! 🙂

Written by 개발자서동우
안녕하세요! 저는 기술 분야에서 활동 중인 개발자 서동우입니다. 명품 플랫폼 (주)트렌비의 창업 멤버이자 CTO로 활동했으며, AI 기술회사 (주)헤드리스의 공동 창업자이자 CTO로서 역할을 수행했습니다. 다양한 스타트업에서 일하며 회사의 성장과 더불어 비즈니스 상황에 맞는 기술 선택, 개발팀 구성 및 문화 정착에 깊은 경험을 쌓았습니다. 개발 관련 고민은 언제든지 편하게 연락주세요 :) https://linktr.ee/dannyseo Profile

Leave a Reply

Your email address will not be published. Required fields are marked *