작성자: Farruh
인공지능은 유행어를 넘어 비즈니스와 개인 애플리케이션 모두에서 중요한 도구로 자리 잡았습니다. AI 분야가 성장함에 따라 보다 효율적이고 업무에 특화된 모델에 대한 필요성도 커지고 있습니다. 바로 이 부분에서 미세 조정과 정량화가 중요한 역할을 하며, 이를 통해 미리 구축된 모델을 필요에 맞게 개선하고 더 효율적으로 수행할 수 있습니다. 아래는 초보자를 위해 Python과 Hugging Face Transformers
라이브러리를 사용하여 언어 모델을 미세 조정하고 정량화하는 과정을 안내하기 위해 마련된 가이드입니다.
미세 조정은 광범위한 기술을 전문 기술로 연마하는 것과 비슷합니다. 사전 학습된 언어 모델은 많은 주제에 대해 많이 알고 있을 수 있지만, 미세 조정을 통해 법률 전문 용어나 의학 용어와 같은 특정 영역에 대한 전문가가 될 수 있습니다.
정량화는 이러한 대규모 모델을 더욱 리소스 효율적으로 만들어 메모리 공간을 줄이고 계산 속도를 높임으로써 이를 보완하며, 이는 특히 컴퓨팅 성능이 제한된 환경이나 엣지 디바이스에 모델을 배포할 때 유용합니다.
기업은 미세 조정되고 정량화된 모델을 활용하여 리소스 제약으로 인해 실현 불가능해 보였던 고급 AI 애플리케이션을 만들 수 있습니다. 개인은 이러한 기술을 통해 표준 하드웨어에서 정교한 AI를 실행할 수 있어 개인 프로젝트나 연구에 더 쉽게 접근할 수 있습니다.
코드를 다루기 전에 AI 모델과 데이터 세트에 액세스할 수 있어야 합니다. Hugging Face로 시작하면 좋습니다.
먼저 필요한 라이브러리를 가져옵니다. PyTorch 기능을 위해서는 torch
라이브러리가 필요하고, 모델 아키텍처와 사전 학습된 가중치를 위해서는 Hugging Face의 transformers
라이브러리가 필요합니다. 기타 임포트에는 데이터 세트 로드 및 처리를 위한 datasets
, 효율적인 훈련 루틴 및 양자화 지원을 위한 peft
및 trl
이 포함됩니다.
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
)
BitsAndBytesConfig
는 양자화를 위해 모델을 구성합니다. load_in_4bit
를 True
로 설정하면 모델이 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)
모델을 미세 조정하고 정량화했으면 이제 프롬프트에 따라 텍스트를 생성하여 모델이 얼마나 잘 작동하는지 확인할 수 있습니다. 이 작업은 transformers
의 pipeline
함수를 사용하여 수행합니다.
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의 우수성을 향한 길을 미세 조정할 준비를 하세요!
행복하게 코딩하세요!
이 문서는 영어로 작성되었습니다. 원본 문서는 여기를 참조하세요.
การเพิ่มประสิทธิภาพโมเดล GenAI: แนวทางในการปรับแต่งอย่างละเอียดและควอนไทเซชัน
84 posts | 3 followers
FollowRegional Content Hub - April 15, 2024
Regional Content Hub - September 9, 2024
JJ Lim - December 29, 2023
Regional Content Hub - August 12, 2024
JJ Lim - December 3, 2021
Regional Content Hub - March 20, 2024
84 posts | 3 followers
FollowTop-performance foundation models from Alibaba Cloud
Learn MoreAccelerate AI-driven business and AI model training and inference with Alibaba Cloud GPU technology
Learn MoreAccelerate innovation with generative AI to create new business success
Learn MoreA platform that provides enterprise-level data modeling services based on machine learning algorithms to quickly meet your needs for data-driven operations.
Learn MoreMore Posts by Regional Content Hub