Views
No views yet
# deepspeed_config_zero3.yaml
compute_environment: LOCAL_MACHINE
debug: false
deepspeed_config:
deepspeed_multinode_launcher: standard
offload_optimizer_device: none
offload_param_device: none
zero3_init_flag: true
zero3_save_16bit_model: true
zero_stage: 3
distributed_type: DEEPSPEED
downcast_bf16: 'no'
machine_rank: 0
main_training_function: main
mixed_precision: bf16
num_machines: 1
num_processes: 8
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false
1import os
2from trl import RewardTrainer, RewardConfig
3from datasets import load_dataset
4
5
6os.environ["WANDB_PROJECT"] = "xx"
7
8training_args = RewardConfig(
9 output_dir="Qwen2.5-7B-Instruct-ultrafeedback_binarized-reward-num_labels_1_wo_filter/",
10 report_to="wandb",
11 run_name="Qwen2.5-7B-Instruct-ultrafeedback_binarized-reward-num_labels_1_wo_filter",
12 model_init_kwargs={"num_labels": 1},
13 num_train_epochs=3,
14 per_device_train_batch_size=1,
15 gradient_accumulation_steps=64,
16 learning_rate=1e-5,
17 warmup_ratio=0.1,
18 center_rewards_coefficient=1e-2,
19 bf16=True,
20 max_length=None,
21 gradient_checkpointing=True,
22 gradient_checkpointing_kwargs={"use_reentrant": False},
23)
24
25trainer = RewardTrainer(
26 model="../model/Qwen/Qwen2.5-7B-Instruct",
27 args=training_args,
28 train_dataset=load_dataset("trl-lib/ultrafeedback_binarized", split="train"),
29)
30trainer.train()ccelerate launch --config_file deepspeed_config_zero3.yaml train_reward_model_7b.py
1import torch
2from transformers import AutoTokenizer, AutoModelForSequenceClassification
3
4MODEL_PATH = "Qwen2.5-7B-Instruct-ultrafeedback_binarized-reward-num_labels_1"
5
6
7tokenizer = None
8model = None
9device = None
10
11def load_model():
12 global tokenizer, model, device
13 device = "cuda" if torch.cuda.is_available() else "cpu"
14 print(f"Loading model from {MODEL_PATH}...")
15 tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
16 model = AutoModelForSequenceClassification.from_pretrained(
17 MODEL_PATH,
18 num_labels=1,
19 torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.float32,
20 )
21 model.to(device)
22 model.eval()
23 print(f"Model loaded on {device}")
24
25
26load_model()
27def get_reward_score(prompt, response):
28 messages = [
29 {"role": "user", "content": prompt},
30 {"role": "assistant", "content": response}
31 ]
32 text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=False)
33
34 inputs = tokenizer(text, return_tensors="pt", truncation=False, max_length=None).to(device)
35
36 with torch.no_grad():
37 outputs = model(**inputs)
38 reward = outputs.logits[0, 0].item()
39
40 return reward
411@misc{vonwerra2022trl,
2 title = {{TRL: Transformer Reinforcement Learning}},
3 author = {Leandro von Werra and Younes Belkada and Lewis Tunstall and Edward Beeching and Tristan Thrush and Nathan Lambert and Shengyi Huang and Kashif Rasul and Quentin Gallou{\'e}dec},
4 year = 2020,
5 journal = {GitHub repository},
6 publisher = {GitHub},
7 howpublished = {\url{https://github.com/huggingface/trl}}
8}