mirror of
https://github.com/hpcaitech/ColossalAI.git
synced 2025-08-14 22:23:23 +00:00
* refactor: separate log_probs fn from Actor forward fn * refactor: separate generate fn from Actor class * feat: update unwrap_model and get_base_model * unwrap_model returns model not wrapped by Strategy * get_base_model returns HF model for Actor, Critic and RewardModel * feat: simplify Strategy.prepare * style: remove get_base_model method of Actor * perf: tokenize text in batches * refactor: move calc_action_log_probs to utils of model * test: update test with new forward fn * style: rename forward fn args * fix: do not unwrap model in save_model fn of naive strategy * test: add gemini test for train_prompts * fix: fix _set_default_generate_kwargs
27 lines
747 B
Python
27 lines
747 B
Python
from typing import Union
|
|
|
|
import torch.nn as nn
|
|
|
|
from .actor import Actor
|
|
from .critic import Critic
|
|
from .reward_model import RewardModel
|
|
|
|
|
|
def get_base_model(model: Union[Actor, Critic, RewardModel]) -> nn.Module:
|
|
"""Get the base model of our wrapper classes.
|
|
For Actor, Critic and RewardModel, return ``model.model``,
|
|
it's usually a ``transformers.PreTrainedModel``.
|
|
|
|
Args:
|
|
model (nn.Module): model to get base model from
|
|
|
|
Returns:
|
|
nn.Module: the base model
|
|
"""
|
|
assert isinstance(model, (Actor, Critic, RewardModel)), \
|
|
f'Expect Actor, Critic or RewardModel, got {type(model)}, use unwrap_model first.'
|
|
return model.model
|
|
|
|
|
|
__all__ = ['Actor', 'Critic', 'RewardModel', 'get_base_model']
|