728x90
최근 메타에서 llama3 (https://github.com/meta-llama/llama3) 모델을 공개 하였다.
ollama 로 llama2 를 local llm 으로 테스트중에 있었기에 바로 새로운 모델을 적용해보기로 했다.
한국어 버전의 모델을 사용중이므로 Llama-3-Open-Ko-8B-gguf (https://huggingface.co/teddylee777/Llama-3-Open-Ko-8B-gguf) 를 사용하였다.
먼저, 모델을 다운받아보자.
git clone https://huggingface.co/teddylee777/Llama-3-Open-Ko-8B-gguf
safetensors 나 pytorch 모델의 경우 llama.cpp 로 변환을 해줘야 하는데,
위 모델은 이미 양자화가 진행된 모델로 필요한 모델을 불러와 사용하기만 되는 것으로 보인다.
ollama 에서 사용하기 위해 Modelfile 을 만들어 보자.
FROM ./models/Llama-3-Open-Ko-8B-gguf/Llama-3-Open-Ko-8B-Q8_0.gguf
TEMPLATE """{{- if .System }}
<s>{{ .System }}</s>
{{- end }}
<s>Human:
{{ .Prompt }}</s>
<s>Assistant:
"""
SYSTEM """사용자와 인공지능 어시스턴트 간의 대화. 어시스턴트는 사용자의 질문에 유용하고 상세하며 예의 바른 답변을 제공합니다."""
PARAMETER temperature 0
PARAMETER num_predict 3000
PARAMETER num_ctx 4096
PARAMETER stop <s>
PARAMETER stop </s>
다음으로 ollama 에서 사용하기 위해 모델을 생성한다.
./ollama create Llama-3-Open-Ko-8B -f Modelfile
그럼 아래와 같이 로컬 환경에 빌드된 모델을 확인 할 수 있다.
./ollama list
이제 로컬에서 llama3 를 실행해보자.
./ollama run Llama-3-Open-Ko-8B
양자화를 해서 인지 메모리를 크게 사용하지 않고, 기본 설정만으로도 대답이 빠른 편이다.
Modelfile 생성 시 PARAMETER 를 조정하고 임베딩 등을 통해 더욱 발전된 서비스를 만들 수 있을 것으로 기대가 된다.
# API 호출 예시
curl --location 'http://localhost:11434/api/chat' \
--header 'Content-Type: application/json' \
--data '{
"model": "Llama-3-Open-Ko-8B",
"messages": [
{
"role": "user",
"content": "SK에너지 머핀 서비스에 대해 설명해주세요."
}
],
"stream": false
}' | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 696 100 509 100 187 221 81 0:00:02 0:00:02 --:--:-- 303
{
"model": "Llama-3-Open-Ko-8B",
"created_at": "2024-04-27T13:42:46.550334Z",
"message": {
"role": "assistant",
"content": "SK에너지는 SK이노베이션, SK종합화학 등과 함께 2018년 12월 1일부터 SK머핀을 운영하고 있습니다. SK머핀은 SK에너지가 보유한 전국 주유소와 LPG 충전소에서 사용할 수 있는 멤버십 서비스입니다"
},
"done": true,
"total_duration": 2292507959,
"load_duration": 883417,
"prompt_eval_duration": 278649000,
"eval_count": 72,
"eval_duration": 2011616000
}
728x90