ผู้เขียน: Farruh

ปัญญาประดิษฐ์ได้ก้าวข้ามจากคำศัพท์มาเป็นเครื่องมือสำคัญทั้งในการใช้งานทางธุรกิจและส่วนบุคคล เมื่อสาขา AI เติบโตขึ้น ความต้องการโมเดลที่มีประสิทธิภาพและเฉพาะงานก็เพิ่มมากขึ้นเช่นกัน นี่คือจุดที่การปรับแต่งอย่างละเอียดและควอนไทเซชันเข้ามามีบทบาท ช่วยให้เราปรับแต่งโมเดลที่สร้างไว้ล่วงหน้าเพื่อให้เหมาะกับความต้องการของเราได้ดีขึ้นและดำเนินการได้อย่างมีประสิทธิภาพมากขึ้น ด้านล่างนี้คือคำแนะนำที่ออกแบบมาเพื่อแนะนำผู้เริ่มต้นผ่านกระบวนการปรับแต่งอย่างละเอียดและควอนไทซ์โมเดลภาษาโดยใช้ Python และ Hugging Face ไลบรารี Transformers
การปรับแต่งอย่างละเอียดนั้นคล้ายกับการฝึกทักษะกว้างๆ ให้เป็นทักษะเฉพาะทาง โมเดลภาษาที่ได้รับการฝึกล่วงหน้าจะรู้มากมายเกี่ยวกับหัวข้อต่างๆ แต่ด้วยการปรับแต่งอย่างละเอียดจะสามารถกลายเป็นผู้เชี่ยวชาญในขอบเขตเฉพาะทางได้ เช่น ศัพท์เฉพาะทางกฎหมายหรือศัพท์ทางการแพทย์
ควอนไทเซชันช่วยสนับสนุนสิ่งนี้ด้วยการทำให้โมเดลขนาดใหญ่เหล่านี้ใช้ทรัพยากรได้อย่างมีประสิทธิภาพมากขึ้น ลดพื้นที่หน่วยความจำและเร่งความเร็วในการประมวลผล ซึ่งเป็นประโยชน์อย่างยิ่งเมื่อปรับใช้โมเดลบนอุปกรณ์ Edge หรือในสภาพแวดล้อมที่มีพลังการประมวลผลจำกัด

ธุรกิจต่างๆ สามารถใช้ประโยชน์จากโมเดลที่ได้รับการปรับแต่งอย่างละเอียดและการควอนไทซ์ เพื่อสร้างแอปพลิเคชัน AI ขั้นสูงที่ดูเหมือนจะเป็นไปไม่ได้เนื่องจากข้อจำกัดด้านทรัพยากร สำหรับบุคคล เทคนิคเหล่านี้ทำให้สามารถใช้งาน AI ที่ซับซ้อนบนฮาร์ดแวร์มาตรฐานได้ ทำให้สามารถเข้าถึงโครงการส่วนตัวหรือการวิจัยได้มากขึ้น

ก่อนที่จะจัดการกับโค้ด คุณจะต้องเข้าถึงโมเดล AI และชุดข้อมูลก่อน Hugging Face คือจุดเริ่มต้น:

ขั้นแรก ไลบรารีที่จำเป็นจะถูกนำเข้า คุณจะต้องมีไลบรารีtorchสำหรับฟังก์ชัน PyTorch และไลบรารีtransformers จาก Hugging Face สำหรับสถาปัตยกรรมโมเดลและโมเดลที่ได้รับการฝึกล่วงหน้า การนำเข้าอื่นๆ ได้แก่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)
ด้วยโมเดลที่ได้รับการปรับแต่งอย่างละเอียดและควอนไทซ์แล้ว ตอนนี้คุณสามารถเขียนพรอมท์เพื่อดูว่ามันมีประสิทธิภาพดีเพียงใด ทำได้โดยใช้ฟังก์ชันpipelineจากtransformers
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!
ขอให้สนุกกับการเขียนโค้ด!
บทความนี้ถูกเขียนเป็นภาษาอังกฤษ ดูบทความต้นฉบับที่นี่
Tối ưu hóa mô hình GenAI: Hướng dẫn tinh chỉnh và lượng tử hóa
129 posts | 4 followers
Follow
129 posts | 4 followers
Follow
Container Compute Service (ACS)
A cloud computing service that provides container compute resources that comply with the container specifications of Kubernetes
Learn More
Container Service for Kubernetes
Alibaba Cloud Container Service for Kubernetes is a fully managed cloud container management service that supports native Kubernetes and integrates with other Alibaba Cloud products.
Learn More
Tongyi Qianwen (Qwen)
Top-performance foundation models from Alibaba Cloud
Learn More
AI Acceleration Solution
Accelerate AI-driven business and AI model training and inference with Alibaba Cloud GPU technology
Learn MoreMore Posts by Regional Content Hub