探索预训练 LLM

来自人类反馈的强化学习(RLHF)

Mina Parham

AI Engineer

微调的重要性

一个展示 RLHF 流程的示意图。

来自人类反馈的强化学习(RLHF)

微调的重要性

一个展示 LLM 输入与输出的示意图。

来自人类反馈的强化学习(RLHF)

LLM 微调分步指南

一个代表训练用于识别推文情感的 LLM 的图标。

来自人类反馈的强化学习(RLHF)

LLM 微调分步指南

一个代表被训练来识别推文情感但输出错误的 LLM 的图标。

来自人类反馈的强化学习(RLHF)

LLM 微调分步指南

一个代表用大型数据集预训练、用于识别推文情感的 LLM 的图标。

来自人类反馈的强化学习(RLHF)

步骤 1:加载要使用的数据

from datasets import load_dataset
import pandas as pd

# `load_dataset` simplifies loading and preprocessing datasets from various sources
# It provides easy access to a wide range of datasets with minimal setup
dataset = load_dataset("mteb/tweet_sentiment_extraction")
df = pd.DataFrame(dataset['train'])
    id               text                                        label   label_text
0   cb774db0d1       I'd have responded, if I were going         1       neutral
1   549e992a42       Sooo SAD I will miss you in San Diego!!!    0       negative
2   08ac60f138       my boss is bullying me...                   0       negative
来自人类反馈的强化学习(RLHF)

步骤 2:选择预训练模型

from transformers import AutoModelForCausalLM

# AutoModelForCausalLM simplifies loading and switching models
model = AutoModelForCausalLM.from_pretrained("openai-gpt")

 

  • 因果模型:前文"导致"后续词元
来自人类反馈的强化学习(RLHF)

步骤 3:分词器

from transformers import AutoTokenizer

# `AutoTokenizer` loads the correct tokenizer for the specified model
tokenizer = AutoTokenizer.from_pretrained("openai-gpt")
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
model.resize_token_embeddings(len(tokenizer))

 

  • 填充:使批量文本长度一致
来自人类反馈的强化学习(RLHF)

步骤 3:分词器

def tokenize_function(examples):
    tokenized = tokenizer(examples["content"], padding="max_length", truncation=True) 
    return tokenized

tokenized_datasets = dataset.map(tokenize_function, batched=True)

 

  • batched 参数:更快处理
来自人类反馈的强化学习(RLHF)

步骤 4:用 Trainer 方法进行微调

training_args = TrainingArguments(
   output_dir="test_trainer",
   per_device_train_batch_size=1,
   per_device_eval_batch_size=1,  
   gradient_accumulation_steps=4)
trainer = Trainer(
   model=model,
   args=training_args,
   train_dataset=tokenized_dataset["train"],
   eval_dataset=tokenized_dataset["test"])
trainer.train()
来自人类反馈的强化学习(RLHF)

Vamos praticar!

来自人类反馈的强化学习(RLHF)

Preparing Video For Download...