CollieModelForCausalLM¶
- class CollieModelForCausalLM(config)[源代码]¶
CoLLiE 的基础模型。如果要实现新的模型,必须继承该基类。
CollieModelForCausalLM统一了非流水线模型和流水线模型的接口,并且可以执行 生成任务。为了适应流水线线的生成过程,每个新模型除了实现基类中的抽象方法外,还需要满足:
每一个 layer 包含一个
use_cache属性来决定前向传播中是否使用past_key_values。将 Attention 过程中产生的 key 和 value 保存在每一个 layer 的
past_key_value属性中。将每层的 hidden_states 保存在每一个 layer 的
hidden_states属性中。将 lm_head 的输入 hidden_states 保存在
hidden_states属性中。也可以使 用ColumnParallelLMHead来自动地保存。
- main_input_name = 'input_ids'¶
- base_model_prefix = ''¶
- classmethod from_config(config, **kwargs)[源代码]¶
从
config中加载一个模型。- 参数:
config (
Union[CollieConfig,str]) – 接受一个字符串或CollieConfig。为字符串时,会先从 该str代表的路径或远程链接中加载 config,再进行初始化
- abstract set_cache(use_cache)[源代码]¶
设置
use_cache的函数。- 参数:
use_cache – 是否在生成时使用缓存的
past_key_values。如果为True则会保存前向传播过程中 Attention 的 key 和 value 用于下一次 生成。可以参考_set_use_cache()的代码来设置。
- classmethod from_pretrained(model_path_or_name, config, **kwargs)[源代码]¶
从
model_path_or_name中加载预训练好的模型。- 参数:
model_path_or_name (
str) –huggingface格式预训练模型的本地路径或名 称。config (
Union[CollieConfig,str]) – 可以是字符串或者CollieConfig。如果为字符串,则会 使用该字符串代表的模型设置;如果为None,从model_path_or_name中加载模型设置。kwargs –
process_exclusion - 是否每个 rank 各自独立、互斥地加载模型权重。在模 型规模较大时,该参数可以帮助节省内存。
其余
kwargs的内容会用于设置CollieConfig的内容。
- abstract prepare_inputs(input_ids, attention_mask=None, use_cache=None, past_key_values=None, **kwargs)[源代码]¶
在生成过程中更新
input_ids、attention_mask等输入参数的函数。
- prepare_inputs_for_generation(input_ids, attention_mask=None, use_cache=None, past_key_values=None, **kwargs)[源代码]¶
生成过程中更新输入和 cache 状态的函数,包含设置 use_cache 和 past_key_values 以及更新输入两个过程。
- abstract static load_parallel_state_dict(path, config, process_exclusion=False, **kwargs)[源代码]¶
从
path中加载模型权重。path中的模型权重应当是 huggingface 格式。- 参数:
path (
str) –config (
Union[CollieConfig,str]) –process_exclusion (
bool, default:False) – 是否每个 rank 各自独立、互斥地加载模型权重。在模 型规模较大时,该参数可以帮助节省内存。
- 返回:
一个字典,每个字典都包含当前 rank 上模型需要的权重。
- abstract static save_parallel_state_dict(state_dict, path, config, process_exclusion=False, **kwargs)[源代码]¶
将模型权重保存到
path路径。保存的格式同huggingface格式。- 参数:
state_dict (
dict) – 模型权重path (
str) –config (
CollieConfig) –process_exclusion (
bool, default:False) – 是否每个 rank 各自独立、互斥地保存模型权重。在模 型规模较大时,该参数可以帮助节省内存。
- enable_input_require_grads()[源代码]¶
Enables the gradients for the input embeddings. This is useful for fine-tuning adapter weights while keeping the model weights fixed.
-
training:
bool¶