ouzhang57's picture
Upload folder using huggingface_hub (part 8)
505b983 verified
Raw
History Blame Contribute Delete
3.85 kB
# Copyright (c) 2025, HUAWEI CORPORATION. All rights reserved.
from typing import List, Union
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from mindspeed_rl.utils.tokenizer import BaseTokenizer
from mindspeed_rl.workers.rule_reward import RuleReward
from mindspeed_rl.trainer.utils.compute_utils import FixedKLController, AdaptiveKLController
from mindspeed_rl.workers.scheduler.launcher import RayActorGroup
from mindspeed_rl.utils.loggers import WandbLogger
class RayBaseTrainer(object):
"""
Note that this trainer runs on the driver process on a single CPU/GPU node.
"""
def __init__(self,
actor_worker: RayActorGroup = None,
ref_worker: RayActorGroup = None,
vit_worker: RayActorGroup = None,
reward_list: List[Union[RayActorGroup, RuleReward]] = None,
train_iters: int = 1,
save_interval: int = 1,
gamma: float = 1.0,
lam: float = 0.95,
adv_estimator: str = "group_norm",
missing_eos_penalty: float = 1.0,
kl_penalty: str = 'low_var_kl',
kl_ctrl_type: str = 'fixed',
kl_horizon: int = 1000,
kl_target: float = 100.0,
init_kl_coef: float = 0.001,
global_batch_size: int = 32,
micro_batch_size: int = 1,
n_samples_per_prompt: int = 1,
tokenizer: BaseTokenizer = None,
dataset_additional_keys: List[str] = None,
blocking: bool = False,
guarantee_order: bool = False,
num_cpus_for_local_task: float = 0.1,
**kwargs):
self.actor_worker = actor_worker
self.ref_worker = ref_worker
self.vit_worker = vit_worker
self.reward_list = reward_list
self.train_iters = train_iters
self.save_interval = save_interval
self.gamma = gamma
self.lam = lam
self.adv_estimator = adv_estimator
self.missing_eos_penalty = missing_eos_penalty
self.kl_penalty = kl_penalty
self.kl_ctrl_type = kl_ctrl_type
self.kl_horizon = kl_horizon
self.kl_target = kl_target
self.init_kl_coef = init_kl_coef
self.global_batch_size = global_batch_size
self.micro_batch_size = micro_batch_size
self.n_samples_per_prompt = n_samples_per_prompt
self.tokenizer = tokenizer
self.dataset_additional_keys = dataset_additional_keys
self.blocking = blocking
self.guarantee_order = guarantee_order
self.num_cpus_for_local_task = num_cpus_for_local_task
self.kwargs = kwargs
# define KL control
if kl_ctrl_type == 'fixed':
self.kl_ctrl = FixedKLController(init_kl_coef=self.init_kl_coef)
elif kl_ctrl_type == 'adaptive':
if self.kl_horizon <= 0:
raise ValueError(f'horizon must be larger than 0. Got {self.kl_horizon}')
self.kl_ctrl = AdaptiveKLController(init_kl_coef=init_kl_coef,
target_kl=kl_target,
horizon=kl_horizon)
else:
raise NotImplementedError
self.wandb = None
self.tensorboard = None
if kwargs.get("use_wandb", ""):
self.wandb = WandbLogger(kwargs)
if kwargs.get("use_tensorboard", "") and self.wandb is None:
self.tensorboard = SummaryWriter()
def transfer_dock_init(self):
pass
def fit(self, data_loader: DataLoader):
"""
The utils loop of xx
"""
pass
def save_checkpoint(self, iteration):
pass