Llama 3.1을 로컬에서 설치하여 실행하는 방법과 langchain에서 사용하는 방법에 대해 알아보자. 이 가이드는 Mac Studio M1 Max에서의 설치를 기준으로 하며, 다른 운영체제에서도 동일한 과정으로 설치할 수 있다.
llama3.1 설치
파일 다운로드
https://ollama.com/에 접속하여 운영체제에 맞는 파일 Download 한다.
여기서는 Mac Studio M1 Max라서 macOS를 선택하였다.
설치파일 실행
설치파일 클릭을 하면 Ollama 설치를 시작한다.
설치 진행
설치 창에서 install을 눌러 설치를 진행한다.
모델 실행 준비
llama 3.1을 실행하려면 모델파일이 필요하다. 모델파일을 다운로드 받는 방법은 명령어로 받는 방법과 직접 다운받는 방법이 있다.
1) 명령어로 다운로드
그러면 아래와 같이 다운로드를 받는다.
2) 직접 다운로드
또는 Hugging Face에서 모델파일을 직접 다운로드 받을 수 있다.
https://huggingface.co/QuantFactory/Meta-Llama-3.1-8B-Instruct-GGUF/tree/main
여기서는 직접 다운로드 받았다.
여기서 파일 크기가 클수록 더 좋은 성능을 나타낸다. 그래서 Meta-Llama-3.1-8B-Instruct.Q8_0.gguf을 다운로드 받았다.
Modelfile 생성
모델 파일을 다운로드한 후, 아래와 같은 Modelfile
을 생성한다. 이 파일은 Llama 모델을 구성하는데 필요한 설정을 포함하고 있다. (파일명: Modelfile)
FROM Meta-Llama-3.1-8B-Instruct.Q8_0.gguf
TEMPLATE """{{- if .System }}
<s>{{ .System }}</s>
{{- end }}
<s>Human:
{{ .Prompt }}</s>
<s>Assistant:
"""
SYSTEM """A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions."""
PARAMETER temperature 0
PARAMETER num_ctx 4096
PARAMETER stop <s>
PARAMETER stop </s>
Ollama 모델 생성
이제 Modelfile이 위치한 폴더에서 아래 명령어를 실행한다.
ollama create llama3.1-instruct-8b -f Modelfile
Meta-Llama-3.1-8B-Instruct.Q8_0.gguf
와 Modelfile
은 같은 디렉토리에 있어야 한다.
실행하면 아래와 같이 변환이 되고 성공적으로 실행된 것을 확인할 수 있다.
설치 확인
모델이 제대로 설치되었는지 아래 명령어로 확인한다.
ollama list
ollama 모델 실행
ollama run llama3.1-instruct-8b
실행 후 간단한 질문을 해보자.
>>> 한국의 수도는?
한국의 수도는 서울입니다. 한국은 한반도에 위치한 동아시아의 국가로, 인구는 약 5천만 명이며, 세계에서 28번째로 큰 경제를 가지고 있습니다
정상적으로 잘 응답하는 것을 확인할 수 있다.
langchain에서 사용
llama를 langchain을 통해서 실행을 해보자.
우선 langchain-ollama를 설치한다.
pip install langchain-ollama
Python 코드는 아래와 같다.
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import OllamaLLM
llm = OllamaLLM(model="llama3.1-instruct-8b")
template = "{country}의 수도는?"
prompt = PromptTemplate.from_template(template=template)
chain = prompt | llm | StrOutputParser()
result = chain.invoke({"country", "한국"})
print(result)
model=llama3.1-instruct-8b
는 여기서 사용한 모델이름이다. 명령어로 다운로드 한 경우는 llama3.1
로 사용하면 된다.
실행결과
한국의 수도는 서울입니다. 한국은 동아시아에 위치한 국가로, 인구가 1억 2천만 명 이상인 세계에서 가장 인구가 많은 국가 중 하나입니다. 한국은 또한 기술과 경제적으로 발전한 국가로, 세계적인 기업들이 많이 있습니다