×
Community Blog GenAI 모델 최적화: 미세 조정 및 정량화 가이드

GenAI 모델 최적화: 미세 조정 및 정량화 가이드

이 문서에서는 사전 학습된 언어 모델을 미세 조정하고 정량화하는 방법에 대해 설명합니다.

작성자: Farruh

1_jpeg

인공지능은 유행어를 넘어 비즈니스와 개인 애플리케이션 모두에서 중요한 도구로 자리 잡았습니다. AI 분야가 성장함에 따라 보다 효율적이고 업무에 특화된 모델에 대한 필요성도 커지고 있습니다. 바로 이 부분에서 미세 조정과 정량화가 중요한 역할을 하며, 이를 통해 미리 구축된 모델을 필요에 맞게 개선하고 더 효율적으로 수행할 수 있습니다. 아래는 초보자를 위해 Python과 Hugging Face Transformers 라이브러리를 사용하여 언어 모델을 미세 조정하고 정량화하는 과정을 안내하기 위해 마련된 가이드입니다.

AI에서 미세 조정과 정량화의 중요성

미세 조정은 광범위한 기술을 전문 기술로 연마하는 것과 비슷합니다. 사전 학습된 언어 모델은 많은 주제에 대해 많이 알고 있을 수 있지만, 미세 조정을 통해 법률 전문 용어나 의학 용어와 같은 특정 영역에 대한 전문가가 될 수 있습니다.

정량화는 이러한 대규모 모델을 더욱 리소스 효율적으로 만들어 메모리 공간을 줄이고 계산 속도를 높임으로써 이를 보완하며, 이는 특히 컴퓨팅 성능이 제한된 환경이나 엣지 디바이스에 모델을 배포할 때 유용합니다.

2_jpeg

기업 및 개인을 위한 가치

기업은 미세 조정되고 정량화된 모델을 활용하여 리소스 제약으로 인해 실현 불가능해 보였던 고급 AI 애플리케이션을 만들 수 있습니다. 개인은 이러한 기술을 통해 표준 하드웨어에서 정교한 AI를 실행할 수 있어 개인 프로젝트나 연구에 더 쉽게 접근할 수 있습니다.

3_jpeg

Hugging Face 계정 설정하기

코드를 다루기 전에 AI 모델과 데이터 세트에 액세스할 수 있어야 합니다. Hugging Face로 시작하면 좋습니다.

  1. Hugging Face로 이동합니다.
  2. Sign Up을 클릭하여 새 계정을 생성합니다.
  3. 등록 절차를 완료합니다.
  4. 이메일을 인증하면 모든 준비가 완료됩니다!

4

환경 준비하기

먼저 필요한 라이브러리를 가져옵니다. PyTorch 기능을 위해서는 torch 라이브러리가 필요하고, 모델 아키텍처와 사전 학습된 가중치를 위해서는 Hugging Face의 transformers 라이브러리가 필요합니다. 기타 임포트에는 데이터 세트 로드 및 처리를 위한 datasets, 효율적인 훈련 루틴 및 양자화 지원을 위한 pefttrl이 포함됩니다.

import torch
from datasets import load_dataset
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    TrainingArguments,
    pipeline,
    logging,
)
from peft import LoraConfig, PeftModel
from trl import SFTTrainer

모델 및 데이터 세트 선택

다음으로, 이 코드는 미세 조정에 중요한 역할을 하는 사용할 모델과 데이터 세트를 지정합니다. model_name 변수는 미세 조정하려는 사전 학습된 모델의 식별자를, dataset_name은 학습에 사용할 데이터 세트의 식별자를 담고 있습니다.

model_name = "Qwen/Qwen-7B-Chat"
dataset_name = "mlabonne/guanaco-llama2-1k"
new_model = "Qwen-7B-Chat-SFT"

미세 조정 파라미터

미세 조정을 위한 파라미터는 TrainingArguments를 사용하여 설정합니다. 여기에는 에포크 수, 배치 크기, 학습 속도 등이 포함되며, 미세 조정 과정에서 모델이 학습하는 방식을 결정합니다.

training_arguments = TrainingArguments(
    output_dir="./results",
    num_train_epochs=1,
    Per_device_train_batch_size = 1,
    gradient_accumulation_steps=1,
    learning_rate=2e-4,
    weight_decay=0.001,
    # ... other arguments
)

BitsAndBytes를 사용한 양자화

BitsAndBytesConfig는 양자화를 위해 모델을 구성합니다. load_in_4bitTrue로 설정하면 모델이 4비트 양자화 버전을 사용하도록 설정하여 크기를 줄이고 잠재적으로 속도를 높일 수 있습니다.

bnb_config = BitsAndBytesConfig(
    load_in_4bit=use_4bit,
    bnb_4bit_quant_type=bnb_4bit_quant_type,
    bnb_4bit_compute_dtype=compute_dtype,
    bnb_4bit_use_double_quant=use_nested_quant,
)

모델 미세 조정 및 훈련

지정된 구성으로 모델이 로드되고 토큰화 도구가 준비됩니다. 그런 다음 로드된 데이터 세트에서 모델을 미세 조정하는 데 SFTTrainer가 사용됩니다. 훈련 후 모델은 나중에 사용할 수 있도록 저장됩니다.

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    # ... other configurations
)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    # ... other configurations
)

trainer.train()
trainer.model.save_pretrained(new_model)

모델 평가하기

모델을 미세 조정하고 정량화했으면 이제 프롬프트에 따라 텍스트를 생성하여 모델이 얼마나 잘 작동하는지 확인할 수 있습니다. 이 작업은 transformerspipeline 함수를 사용하여 수행합니다.

pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])

튜토리얼 독자 참여

이 가이드는 환경 설정부터 첫 번째 미세 조정 및 정량화된 모델 실행까지 단계별로 독자를 안내해야 합니다. 각 단계는 제공된 코드의 스니펫을 통해 그 목적을 설명하고 필요에 따라 수정하는 방법을 독자에게 안내해야 합니다.

결론

이 튜토리얼이 끝나면 독자는 사전 학습된 언어 모델을 미세 조정하고 정량화하는 방법을 확실히 이해하게 될 것입니다. 이러한 지식은 AI 애플리케이션의 새로운 가능성을 열어주며, 모델을 더욱 전문적이고 효율적으로 만들 수 있습니다.

AI 분야는 끊임없이 진화하고 있으며, 그 잠재력을 최대한 활용하려면 최신 기술을 최신 상태로 유지하는 것이 핵심이라는 점을 기억하세요. 그러니 몰입하여 실험하고, 그 성과와 배움을 주저하지 말고 커뮤니티와 공유하시기 바랍니다.

AI의 우수성을 향한 길을 미세 조정할 준비를 하세요!

행복하게 코딩하세요!


이 문서는 영어로 작성되었습니다. 원본 문서는 여기를 참조하세요.

0 0 0
Share on

Regional Content Hub

36 posts | 2 followers

You may also like

Comments

Regional Content Hub

36 posts | 2 followers

Related Products