การเตรียมความพร้อมสำหรับการ fine-tuning

Python เบื้องต้นสำหรับ LLMs

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Pipelines และ auto classes

Pipelines: pipeline()

  • ทำให้งานง่ายขึ้น
  • เลือกโมเดลและ tokenizer อัตโนมัติ
  • ควบคุมได้จำกัด

Hugging Face Transformers' pipelines

Auto classes (AutoModel class)

  • ปรับแต่งได้
  • ปรับค่าเองได้
  • รองรับการ fine-tuning

Hugging Face Transformers' AutoModel class showing customization options

Python เบื้องต้นสำหรับ LLMs

วงจรชีวิตของ LLM

LLMs lifecycle

Pre-training

  • ข้อมูลหลากหลาย
  • เรียนรู้รูปแบบทั่วไป
Python เบื้องต้นสำหรับ LLMs

วงจรชีวิตของ LLM

LLMs lifecycle

Pre-training                                                             Fine-tuning

  • ข้อมูลหลากหลาย                                                          เฉพาะโดเมน
  • เรียนรู้รูปแบบทั่วไป                                       งานเฉพาะทาง
Python เบื้องต้นสำหรับ LLMs

การโหลดชุดข้อมูลสำหรับ fine-tuning

from datasets import load_dataset


train_data = load_dataset("imdb", split="train")
train_data = data.shard(num_shards=4, index=0)
test_data = load_dataset("imdb", split="test")
test_data = data.shard(num_shards=4, index=0)
  • load_dataset(): โหลดชุดข้อมูลจาก Hugging Face hub
    • imdb: การจำแนกประเภทรีวิว
Python เบื้องต้นสำหรับ LLMs

Auto classes

from transformers import AutoModel, AutoTokenizer

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
Python เบื้องต้นสำหรับ LLMs

การ tokenization

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from datasets import load_dataset

train_data = load_dataset("imdb", split="train")
train_data = data.shard(num_shards=4, index=0)
test_data = load_dataset("imdb", split="test")
test_data = data.shard(num_shards=4, index=0)

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")


# Tokenize the data tokenized_training_data = tokenizer(train_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64) tokenized_test_data = tokenizer(test_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64)
Python เบื้องต้นสำหรับ LLMs

ผลลัพธ์การ tokenization

print(tokenized_training_data)
{'input_ids': tensor([[  101,  1045, 12524,  1045,  2572,  8025,  1011,  3756,  
2013,  2026, 2678,  3573,  2138,  1997,  2035,  1996,  6704,  2008,  5129,  2009, 
2043,  2009, 2001,  2034,  2207,  1999,  3476,  1012,  1045,  2036, ...
Python เบื้องต้นสำหรับ LLMs

การ tokenize ทีละแถว

def tokenize_function(text_data):
    return tokenizer(text_data["text"], return_tensors="pt", padding=True, truncation=True, max_length=64)

# Tokenize in batches
tokenized_in_batches = train_data.map(tokenize_function, batched=True)

# Tokenize row by row tokenized_by_row = train_data.map(tokenize_function, batched=False)
Dataset({
    features: ['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'],
    num_rows: 1563
})
Python เบื้องต้นสำหรับ LLMs

Subword tokenization

  • พบได้ทั่วไปใน tokenizer สมัยใหม่
  • คำถูกแบ่งออกเป็นส่วนย่อยที่มีความหมาย

 

Unbelievably

Python เบื้องต้นสำหรับ LLMs

Subword tokenization

  • พบได้ทั่วไปใน tokenizer สมัยใหม่
  • คำถูกแบ่งออกเป็นส่วนย่อยที่มีความหมาย

 

Unbelievably tokenized as un, believ, ably.

Python เบื้องต้นสำหรับ LLMs

มาฝึกกันเถอะ!

Python เบื้องต้นสำหรับ LLMs

Preparing Video For Download...