Unslot을 사용하여 데이터로 LLaMA-3을 쉽게 미세 조정하기
LLaMA-3를 Unslot이라는 강력한 도구를 사용하여 최대 30배 더 빠르게 학습할 수 있습니다. 설정, 최적화, 학습된 모델 저장 방법을 배워 다양한 플랫폼에서 원활한 추론을 수행하세요. LLaMA-3의 전체 잠재력을 활용하여 특정 사용 사례에 맞게 활용하세요.
2025년 2월 14일

LLAMA-3, 강력한 오픈 소스 언어 모델을 자신의 데이터로 손쉽게 파인 튜닝하세요. Unslot 패키지를 사용하여 이 AI 모델의 전체 잠재력을 활용하고 복잡한 설정이나 리소스 집약적인 학습 없이도 특정 요구 사항에 맞게 조정할 수 있습니다.
LLAMA-3를 Fine-Tune하기 위한 Unslot: 강력하고 효율적인 접근법
학습 매개변수 설정하기
Fine-Tuning을 위한 데이터 준비하기
Unslot의 Supervised Fine-Tuning Trainer로 모델 학습하기
Fine-Tuned 모델로 추론 수행하기
Fine-Tuned 모델 저장 및 로드하기
결론
LLAMA-3를 Fine-Tune하기 위한 Unslot: 강력하고 효율적인 접근법
LLAMA-3를 Fine-Tune하기 위한 Unslot: 강력하고 효율적인 접근법
언슬롯(Unslot)은 자신의 데이터 세트에서 LLAMA-3 모델을 효율적으로 미세 조정할 수 있는 놀라운 도구입니다. 다음은 이를 수행하는 단계별 가이드입니다:
-
필수 패키지 설치: 먼저 언슬롯 GitHub 리포지토리를 복제하고 하드웨어 구성에 따라 필요한 패키지를 설치합니다.
-
학습 매개변수 설정: 최대 시퀀스 길이, 데이터 유형, 양자화 방법 등의 학습 매개변수를 정의합니다. 언슬롯은 효율적인 미세 조정을 위해 Lora 어댑터를 사용합니다.
-
학습 데이터 형식화: 지침, 입력, 출력 열이 있는 형식으로 데이터를 구조화합니다. 언슬롯은 Alpaca 데이터 세트를 사용하는 예를 제공하지만 자신의 데이터에 맞게 조정할 수 있습니다.
-
SFT 트레이너 설정: Hugging Face Transformers 라이브러리의 SFT(Supervised Fine-Tuning) Trainer 객체를 생성하고 모델, 토크나이저, 데이터 세트 및 기타 학습 매개변수를 지정합니다.
-
모델 학습: SFT Trainer 객체의
train()
함수를 호출하여 미세 조정 프로세스를 시작합니다. 언슬롯의 최적화된 메모리 사용과 속도로 인해 제한된 GPU 리소스에서도 효율적인 학습이 가능합니다. -
추론 수행: 학습 후 언슬롯 전용
FastLanguageModel
클래스를 사용하여 미세 조정된 모델에서 응답을 생성할 수 있습니다. 언슬롯은 모델 저장 및 향후 사용을 위한 Lora 어댑터 로드 옵션도 제공합니다. -
추가 기능 탐색: 언슬롯은 PyTorch Lightning과 같은 다른 프레임워크에서 모델 사용, GGML 형식으로의 변환 등 다양한 고급 기능을 제공합니다.
학습 매개변수 설정하기
학습 매개변수 설정하기
먼저 언슬롯 라이브러리에서 필요한 클래스를 가져와야 합니다:
from unslot.models.fast_language_model import FastLanguageModel
다음으로 학습 매개변수를 설정합니다:
max_sequence_length
: 입력의 최대 시퀀스 길이를 248 토큰으로 설정합니다.data_type
: 효율적인 학습을 위해 4비트 양자화를 사용합니다.
max_sequence_length = 248
data_type = "4bit"
언슬롯은 효율적인 미세 조정을 위해 Lora 어댑터를 사용합니다. 두 가지 옵션이 있습니다:
- 이미 Lora 어댑터가 병합된 언슬롯 Hugging Face 리포지토리의 사전 로드된 모델 사용.
- Hugging Face 리포지토리의 모델을 사용하고 직접 Lora 어댑터를 추가.
이 경우 사전 로드된 모델을 사용하므로 추가 단계가 필요하지 않습니다.
model = FastLanguageModel.from_pretrained("unslot/alpaca-7b")
다른 모델을 사용하고 직접 Lora 어댑터를 추가해야 하는 경우 다음 섹션의 주석을 해제하고 필요한 매개변수를 제공할 수 있습니다.
# model_id = "your-hugging-face-model-id"
# model = FastLanguageModel.from_pretrained(model_id)
# model.add_lora_adapters()
이제 다음 단계인 학습 데이터 형식화로 넘어갈 수 있습니다.
Fine-Tuning을 위한 데이터 준비하기
Fine-Tuning을 위한 데이터 준비하기
Unslot을 사용하여 Lama 3 모델을 미세 조정하려면 학습 데이터를 특정 형식으로 구조화해야 합니다. 예제에서 사용된 데이터 세트에는 지침, 입력, 출력의 세 가지 열이 있습니다.
지침 열에는 모델이 완료해야 할 작업 설명이 포함됩니다. 입력 열에는 작업에 대한 추가 컨텍스트가 제공되며, 출력 열에는 모델이 생성해야 하는 예상 응답이 포함됩니다.
자신의 데이터를 형식화할 때는 지침, 입력, 출력 열이 있는 동일한 구조를 사용해야 합니다. 특정 예제에 입력이 없는 경우에도 괜찮습니다. 지침만으로도 모델이 출력을 생성하는 데 필요한 정보를 제공할 수 있습니다.
데이터를 다운로드한 후에는 세 개의 열을 특정 형식의 단일 텍스트 문자열로 변환해야 합니다. 이 형식에는 지침, 입력, 응답에 대한 특수 토큰이 포함됩니다. 예제 코드는 이러한 변환을 수행하는 방법을 보여줍니다. 이렇게 하면 모델 학습에 사용할 수 있는 단일 열이 생성됩니다.
예제에서는 표준 Alpaca 데이터 세트를 사용하지만, OpenAI에서 소개한 ChatML 형식과 같은 다른 프롬프트 템플릿을 사용하여 데이터를 구조화할 수도 있습니다. 입력 예제를 올바르게 형식화하는 것이 중요합니다. 이 예제는 학습 중에 언어 모델에 제공됩니다.
Unslot의 Supervised Fine-Tuning Trainer로 모델 학습하기
Unslot의 Supervised Fine-Tuning Trainer로 모델 학습하기
먼저 학습 매개변수를 설정해야 합니다. Unslot에서 FastLanguageModel
클래스를 가져오고 최대 시퀀스 길이, 데이터 유형 및 양자화 방법을 정의합니다.
다음으로 Lora 어댑터를 모델에 추가해야 하는 경우를 처리합니다. Hugging Face 리포지토리의 모델을 사용하는 경우 서비스 약관에 동의하는 토큰을 제공해야 할 수 있습니다.
이제 학습 데이터를 형식화해야 합니다. 데이터 세트에는 지침, 입력, 출력의 세 가지 열이 있어야 합니다. Hugging Face에서 데이터를 다운로드하고 이 형식에 매핑합니다.
그런 다음 Hugging Face Transformers 라이브러리의 Supervised Fine-Tuning Trainer를 설정합니다. 이 트레이너는 모델 객체, 토크나이저, 데이터 세트 및 옵티마이저, 학습률 스케줄, 출력 디렉토리와 같은 기타 매개변수를 허용합니다.
마지막으로 트레이너 객체의 train()
함수를 호출합니다. 학습 손실이 감소하는 것을 관찰할 수 있습니다. 이는 모델이 학습하고 있음을 나타냅니다. 이 예제에서는 데이터의 일부만 실행하지만 더 나은 결과를 얻으려면 최소 1 에폭 이상 실행해야 합니다.
학습 후 모델을 저장하고 추론을 위해 Lora 어댑터를 로드할 수 있습니다. Unslot은 PyTorch Lightning, TensorFlow와 같은 다른 프레임워크에서 모델을 사용할 수 있는 옵션도 제공합니다.
Fine-Tuned 모델로 추론 수행하기
Fine-Tuned 모델로 추론 수행하기
모델 학습이 완료되면 추론에 사용할 수 있습니다. Unslot은 이를 위한 간단한 인터페이스를 제공합니다:
- Unslot에서
FastLanguageModel
클래스를 가져옵니다. - 학습된 모델을 제공하고 추론을 수행하도록 지시합니다.
- Alpaca 형식(지침, 입력, 예상 출력)을 사용하여 입력을 토큰화합니다.
- 사용 가능한 리소스를 활용하기 위해 입력을 GPU로 이동합니다.
generate
함수를 호출하여 토큰화된 입력, 생성할 최대 토큰 수, 캐싱 사용 여부를 제공합니다.
그러면 모델이 제공된 입력을 기반으로 응답을 생성합니다. TextStreamer
클래스를 사용하여 텍스트 응답을 스트리밍할 수도 있습니다.
학습 후 모델을 다음과 같이 저장할 수 있습니다:
- Hugging Face Hub에 모델을 푸시하여 Lora 어댑터를 별도로 저장합니다.
- 로컬에 모델을 저장하고 Lora 어댑터를 별도로 저장합니다.
저장된 모델을 추론에 사용하려면 Lora 어댑터를 모델에 병합하도록 플래그를 설정할 수 있습니다.
Unslot은 Hugging Face Transformers 라이브러리의 AutoModelForCausalLM
클래스를 사용하는 등 추론을 위한 대체 옵션도 제공합니다. 이 옵션은 속도가 느릴 수 있지만 LLaMA-CPP 또는 GoLLAMA와 같은 다른 도구에서 모델을 사용할 수 있습니다.
Fine-Tuned 모델 저장 및 로드하기
Fine-Tuned 모델 저장 및 로드하기
모델 학습이 완료되면 다양한 방법으로 모델을 저장하여 나중에 추론에 사용할 수 있습니다. Unslot은 미세 조정된 모델을 저장하고 로드하는 여러 옵션을 제공합니다:
- Hugging Face Hub에 저장: 미세 조정된 모델을 Hugging Face Hub에 푸시할 수 있습니다. 이를 통해 다른 사람들과 모델을 공유하고 사용할 수 있습니다. 이를 위해서는 Hugging Face 토큰을 제공해야 합니다.
model.push_to_hub("your-model-name")
- 로컬에 저장: 모델을 로컬에 저장할 수도 있습니다. 이 경우 전체 모델이 아닌 Lora 어댑터만 저장됩니다. 이를 통해 나중에 Lora 어댑터를 쉽게 로드하고 기본 모델에 병합할 수 있습니다.
model.save_pretrained("path/to/save/model")
- 저장된 Lora 어댑터 로드: 미세 조정된 모델을 추론에 사용하려면 저장된 Lora 어댑터를 로드하고 기본 모델에 병합할 수 있습니다.
model = FastLLamaForCausalLM.from_pretrained("path/to/base/model")
model.load_adapter("path/to/saved/model")
- GGML 형식으로 변환: Unslot은 미세 조정된 모델을 GGML 형식으로 변환할 수 있는 기능도 제공합니다. 이를 통해 Llama-CPP 또는 GoLlama와 같은 도구에서 모델을 사용할 수 있습니다. 이렇게 하면 CPU 전용 환경에서도 모델을 사용할 수 있습니다.
model.save_pretrained("path/to/save/model", quantization_method="nf16")
이러한 옵션을 활용하여 미세 조정된 모델을 쉽게 저장, 로드 및 사용할 수 있습니다. 다양한 사용 사례와 환경에 배포하거나 커뮤니티와 공유할
자주하는 질문
자주하는 질문