새소식

Project

[RAG 프로젝트][데이콘] 재정정보 AI 검색 알고리즘 경진대회 2 - Llama3.1 파인튜닝

  • -

 

 

## 훈련 데이터셋 만들기 

 

 

 

 

 

## 파인튜닝

Unsloth - FastLanguageModel, SFTTrainer 로 파인튜닝하기

 

 

## 허깅페이스에 파인튜닝한 모델 저장 

 

 

 

## GGUF로 변환 

 

 

성공!!

 

## Ollama를 이용해서 로컬에서 사용하기 

Ollama를 통해 로컬에서도 사용하고 Langchain에서 Chatollama를 이용해서 RAG를 수행하자 

 

### 1. gguf파일 다운 

 

허깅페이스에 올린 gguf를 다운 받자 

나는 아래와 같은 위치에 넣어둠 

 

위와 같이 Modelfile을 만들어야 한다. 

그전에 Ollama를 설치하자. Ollama 설치 가이드 https://hyundoil.tistory.com/312

 

### 2.Modelfile 만들기 

일단 우리는 llama3.1을 기반으로 만들었기 때문에 llama3.1의 템플릿기반 Modelfile을 만들어야함 

 

cmd에서 다음 명령어 

> ollama show --modelfile llama3.1

 

결과가 엄청 길게 나오는데

FROM부터 

LICENSE 전까지 복사하면됨

즉, 아래와 같이 복사해서 Modelfile 파일에 넣자 

FROM은 내 .gguf 파일 위치 

FROM C:/Users/kim_h/ollama/gguf/unsloth.Q8_0.gguf
TEMPLATE """{{ if .Messages }}
{{- if or .System .Tools }}<|start_header_id|>system<|end_header_id|>
{{- if .System }}

{{ .System }}
{{- end }}
{{- if .Tools }}

You are a helpful assistant with tool calling capabilities. When you receive a tool call response, use the output to format an answer to the orginal use question.
{{- end }}
{{- 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.

{{ $.Tools }}
{{- end }}

{{ .Content }}<|eot_id|>{{ 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 }}{{ if not $last }}<|eot_id|>{{ end }}
{{- 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 }}
{{- else }}
{{- if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ end }}{{ .Response }}{{ if .Response }}<|eot_id|>{{ end }}"""
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

 

즉 이런식으로 

 

### 우리의 파인튜닝 모델 ollama에 만들기 

 

> ollama create <우리모델이름> -f Modelfile 

 

나는 아래와 같이 입력하였다. 

 

> ollama create llama3.1-dacon-Q8 -f Modelfile 

 

### 모델 확인 

 

> ollama list

 

 

잘 생성됨 

 

### 모델 실행 

 

> ollama run llama3.1-dacon-Q8:latest 

 

 

아주 잘 생성한다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.