LLM api 서빙해보기 (with. Ollama)

Cropo·2024년 6월 3일
2
post-custom-banner

최근에는 여러 회사에서 LLM 모델이 나오면서 마치 대LLM시대가 된것 같다.
실제로도 많이 사용하고 있는 ChatGPT, Copilot, Amazon CodeWhisperer 등 많은 AI 서비스들과 함께 LLM 모델들도 쏟아져 나오고 있다.
이러한 모델 중 오픈소스 모델들도 꽤 많아지고 성능 역시 좋아져서 개인 프로젝트에서 구현하기 어려웠던 기능들을 LLM의 도움을 받아 처리해볼까 한다. 예를 들면 데이터 크롤링 후 가공 또는 분류라던가 리뷰 데이터에 대한 분석 같은 자연어 처리가 꼭 필요했던 부분에서 사용해보려고 한다. Ollama를 통해 Local 환경에서 LLM 모델을 실행시켜보고 후기를 공유하는 글입니다.

Ollama란?

Get up and running with large language models.

Ollama는 사용자의 로컬 머신에서 LLM 모델을 쉽게 실행할 수 있도록 도와주는 프레임워크입니다. 모델을 직접 다운로드 하고 관련 코드를 작성하고 실행하는 기존 방식과 다르게 Ollama를 설치하면 명령어를 통해 쉽게 모델을 로드하여 LLM 모델을 실행할 수 있고 Rest API까지 지원하여 이를 응용해 나만의 서비스를 만들수도 있습니다.
현재는 macOS, Linux, Windows 운영체제에서 지원하고 있습니다.

Ollama 설치

Ollama는 각 운영체제에 맞게 다양한 설치 방식을 지원합니다.

이번엔 간단하게 테스트를 위해 홈페이지에서 .dmg 파일을 다운로드 받아 설치하였습니다.

Ollama 사용법

Ollama Models 사이트에서 사용하고 싶은 LLM 모델을 찾은 후 다음 명령어를 통해 쉽게 모델을 다운로드하고 실행할 수 있습니다.
ollama pull {model}:{version}

저는 llama3 모델을 사용하기 위해 ollama pull llama3:8b 명령어를 사용했습니다.
그리고 ollama run llama3 명령어를 통해 실행합니다.

그럼 터미널에서 바로 질문을 입력하고 결과를 받아볼 수 있습니다.

API 사용 with Python

Ollama를 통해 LLM을 실행시켜 보았습니다. 이번에는 Ollama에서 지원하는 rest api를 통해 Python에서 호출하여 기능 개발에 이용해보겠습니다.

Python 라이브러리를 지원하기 때문에 pip install Ollama 명령어를 통해 설치합니다.

from langchain_community.llms.ollama import Ollama

ollama = Ollama(
    base_url='http://localhost:11434',
    model='llama3:8b'
)

response = ollama.chat(model='llama3', messages=[
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
])
print(response['message']['content'])

후기

비교적 멀게 느껴졌던 AI 관련 기술이 Ollama를 통해 쉽게 사용할 수 있게 도와주고 이를 통해 평소에는 구현하기 어려웠던 아이디어들을 많이 시도해볼 수 있을것 같다. 예를 들면 정부 정책 수집 등 정해진 형식이 없는 형태의 글들도 LLM 모델을 통해 원하는 Key:Value 형태의 Json으로 분류할 수 있고 이를 통해 자연어 처리가 필요한 많은 기능들을 보다 쉽게 구현할 수 있게 되었다. 물론 ChatGpt API 등을 사용하는 방법도 있겠지만 Ollama는 Local에서 구동되는만큼 비용적으로도 부담이 없어서 좋았다. 물론 성능은 gpt-4o를 따라갈수는 없었던 것 같다.
또 하나의 단점으로는 그래픽 메모리가 모델의 용량만큼 필요하다보니 llama3의 경우 8b 모델까지가 한계였다. 이부분은 aws 등 클라우드 서비스를 통해 해결 가능할 것 같지만 그럴 경우에는 gpt api가 조금 더 저렴할 것 같다.

profile
Software Engineer - 박영훈
post-custom-banner

0개의 댓글