시작하기 앞서...
Ollama(올라마)를 사용하다 보면, 내가 사용하고자 하는 모델이 부족한 느낌이 많이 듭니다.
이럴 때, Huggingface에 공개되어 있는 모델을 사용하면, 내가 사용하고자 하는 용도에 맞게 모델을 사용할 수 있습니다.
이번 글에서 Ollama Modelfile을 이용해서, Llama 3.2-3B 모델 중 Bllossom/llama-3.2-Korean-Bllossom-3B 모델을 Ollama(올라마)에서 다운 받는 방법을 알아보겠습니다.
Bllossom/llama-3.2-Korean-Bllossom-3B 모델 정보
Bllossom/llama-3.2-Korean-Bllossom-3B 모델은 Bllossom 팀에서 개발한 한국어-영어 이중언어 모델입니다.
Bllossom 팀은 서울과학기술대학교의 임경태 교수, Teddysum의 함영균 CEO, 연세대학교의 김한샘 교수를 중심으로 구성되어 있으며, 다수의 연구원들이 참여하고 있습니다.
huggingface에 있는 Bllossom 모델과 팀에 대한 정보에 대한 소개는 다음과 같습니다.
저희 Bllossom 팀에서 Bllossom-3B 모델을 공개합니다.
llama3.2-3B가 나왔는데 한국어가 포함 안되었다구?? 이번 Bllossom-3B는 한국어가 지원되지 않는 기본 모델을 한국어-영어로 강화모델입니다.
- 100% full-tuning으로 150GB의 정제된 한국어로 추가 사전학습 되었습니다. (GPU많이 태웠습니다)
- 굉장히 정제된 Instruction Tuning을 진행했습니다.
- 영어 성능을 전혀 손상시키지 않은 완전한 Bilingual 모델입니다.
- LogicKor 기준 5B이하 최고점수를 기록했고 6점 초반대 점수를 보입니다.
- Instruction tuning만 진행했습니다. DPO 등 성능 올릴 방법으로 튜닝해보세요.
- MT-Bench, LogicKor 등 벤치마크 점수를 잘받기 위해 정답데이터를 활용하거나 혹은 벤치마크를 타겟팅 해서 학습하지 않았습니다. (해당 벤치마크 타게팅해서 학습하면 8점도 나옵니다...)
언제나 그랬듯 해당 모델은 상업적 이용이 가능합니다.
1. Bllossom은 AAAI2024, NAACL2024, LREC-COLING2024 (구두) 발표되었습니다.
2. 좋은 언어모델 계속 업데이트 하겠습니다!! 한국어 강화를위해 공동 연구하실분(특히논문) 언제든 환영합니다!!
Huggingface 모델 찾기
Huggingface(허깅페이스) 바로가기
상단 탭에 Model 탭을 클릭합니다.
검색을 korean이라고 검색해주고, 정렬을 trending으로 해줍니다.
여기에 gguf로 양자화된 버전이 있어, 전 양자화된 모델을 다운 받겠습니다.
Huggingface 모델 다운로드
모델을 클릭하시면 다음과 같은 화면으로 넘어옵니다.
여기서 1.Files and versions 클릭, 모델 부분에서 2.다운로드 아이콘을 누르시면 다운로드됩니다.
Ollama(올라마)에 모델 다운로드
1. 모델 파일 준비하기
먼저 Hugging Face 등에서 다운로드 받은 모델 파일을 바탕화면에 폴더를 생성하여 넣어주시면 됩니다.
2. Modelfile 생성하기
Modelfile의 역할은 Ollama가 모델을 올바르게 불러오고 사용할 수 있도록 필요한 정보를 제공하는 것입니다. 여기에는 모델 가중치 파일의 경로, 모델의 구조, 하이퍼파라미터 등의 설정이 포함됩니다. 이러한 정보가 있어야 Ollama는 모델을 정확하게 로드하고, 원하는 대로 동작시킬 수 있습니다.
터미널을 열어 Ollama에서 사용할 Modelfile을 만듭니다.
잘 모르겠다. 하시는 분은 텍스트 편집기에서 파일 하나 만들며 됩니다.
윈도우 쓰시는분은 메모장에 붙여넣으시면 됩니다.
#맥 터미널에서 텍스트 파일 만들기
touch Modelfile
다운 받은 모델을 볼 수 있습니다.
Modelfile에는 모델의 정보와 설정이 포함되어야 합니다.
어떤 분이 Ollama(올라마) Modelfile의 설정값과 템플릿을 물어보았고, 감사하게도 Modelfile에 들어갈 정보를 제공해 주었습니다.
아래에 있는 걸 그대로 복사해서 Modelfile 텍스트에 넣어주시면 됩니다.
FROM ./llama-3.2-Korean-Bllossom-3B-gguf-Q4_K_M
PARAMETER temperature 0.6
PARAMETER top_p 0.9
TEMPLATE """<|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
{{ if .System }}{{ .System }}
{{- end }}
{{- if .Tools }}When you receive a tool call response, use the output to format an answer to the orginal user question.
You are a helpful assistant with tool calling capabilities.
{{- end }}<|eot_id|>
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 }}
{{- if eq .Role "user" }}<|start_header_id|>user<|end_header_id|>
{{- if and $.Tools $last }}
Given the following functions, please respond with a JSON for a function call with its proper arguments that best answers the given prompt.
Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}. Do not use variables.
{{ range $.Tools }}
{{- . }}
{{ end }}
{{ .Content }}<|eot_id|>
{{- else }}
{{ .Content }}<|eot_id|>
{{- end }}{{ if $last }}<|start_header_id|>assistant<|end_header_id|>
{{ end }}
{{- else if eq .Role "assistant" }}<|start_header_id|>assistant<|end_header_id|>
{{- if .ToolCalls }}
{{ range .ToolCalls }}
{"name": "{{ .Function.Name }}", "parameters": {{ .Function.Arguments }}}{{ end }}
{{- else }}
{{ .Content }}
{{- end }}{{ if not $last }}<|eot_id|>{{ end }}
{{- else if eq .Role "tool" }}<|start_header_id|>ipython<|end_header_id|>
{{ .Content }}<|eot_id|>{{ if $last }}<|start_header_id|>assistant<|end_header_id|>
{{ end }}
{{- end }}
{{- end }}"""
SYSTEM """You are a helpful AI assistant. Please answer the user's questions kindly. 당신은 유능한 AI 어시스턴트 입니다. 사용자의 질문에 대해 친절하게 답변해주세요."""
붙여 넣으면 다음과 같이 보입니다.
그리고 2번째 줄과 3번째 줄에 PARAMETER값이 있는데, 이건 모델의 출력을 제어할 수 있는 하이퍼파라미터입니다.
- temperature는 모델의 응답의 다양성을 조절합니다. 값이 높을수록 답변이 더 창의적이고 예측 불가능하게 되며, 낮을수록 더 보수적인 답변을 생성합니다.
- top_p는 누적 확률의 기준을 정해, 가장 유력한 응답을 제한하는 방식으로 제어합니다. 0.9로 설정된 경우, 전체 응답 중 상위 90%의 확률에 해당하는 선택만을 고려합니다.
3. Ollama 모델 생성하기
터미널에 다음 명령어를 입력하시면 됩니다.
[Llama3.2-Korean]은 제가 모델에 이름을 붙여준 겁니다.
ollama create Llama3.2-Koren -f Modelfile
다음과 같은 Success메시지가 나오면 다운로드되었습니다.
4. Ollama 모델 확인하기
터미널에 다음 명령어를 통해 모델이 잘 다운되었는지 확인하면 됩니다.
ollama list
Ollama(올라마) 사용하기 - 다운받은 모델 실행하기
터미널에서 Ollama를 실행해서 확인하시면 됩니다.
ollama run Llama3.2-Korean
아래 이미지를 보면 모델이 잘 작동되는 것을 확인할 수 있습니다.
Open-WebUI 실행 - 모델 선택
Open-WebUI를 실행하고, 모델 선택 부분에 다운로드된 모델이 잘 들어간 것을 볼 수 있습니다.
Huggingface에 있는 질문을 그대로 해보겠습니다.
잘 답변하는 걸 확인할 수 있습니다.
그리고 뉴스 기사 내용에 대해 1000자 이내로 요약해 달라고 하였습니다.
뉴스기사 출처 연합뉴스 기사
요약 질문 - 기사 내용
요약 질문 답변 - Bllossom/llama-3.2-Korean-Bllossom-3B
잘 요약해 주는 것을 확인할 수 있습니다.
오픈소스를 이용하면, 자신이 하고자 하는 방향에 맞게 찾아 커스텀하면서 사용할 수 있으면 좋은 것 같습니다.
이외에 템플릿 수정이나 출력값 수정 등을 통해 보다 정교하게 모델을 만들어 사용할 수 있습니다.