权重工具
load_weights_sharded_inplace_nemo2_to_mcore(model, distributed_checkpoint_dir, skip_keys_with_these_prefixes)
给定一个 Megatron 模块,此函数将根据并行/分布式状态确定要加载的权重键/子集。此操作假设检查点由 nemo2 训练器保存,该训练器将 module.
前缀放在所有键名称上,但我们随后将直接加载到没有 module.
前缀的 Megatron 模块中。请注意,如果有任何额外的键您不想在检查点中搜索,例如,如果您在模块上添加了新的层/头,则需要在模型中提供这些键的前缀路径,它们将被忽略。后一个功能对于灵活的微调策略至关重要,在这种策略中,您可以从具有部分重叠结构的其他模型中部分加载权重。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
model
|
MegatronModelType
|
您要将权重加载到的 Megatron 模型。 |
必需 |
distributed_checkpoint_dir
|
str | Path
|
描述 |
必需 |
skip_keys_with_these_prefixes
|
Set[str]
|
描述 |
必需 |
源代码位于 bionemo/llm/utils/weight_utils.py
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
nemo1_to_nemo2_biobert_key_mapping(old_key, new_model_prefix='module', old_model_prefix='model', te_mapping=False)
此函数用于将旧的 nemo BERT 模型的键映射到新的 BioBERT 模型
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
old_key
|
str
|
我们想要映射到预期新键名称的旧键。 |
必需 |
new_model_prefix
|
str
|
基本权重的新键。如果您将其指向核心 Megatron 模型,请将其设置为“”。对于遵循标准的常规 nemo2 lightning 模块,请将其设置为“module”。默认为“module”。 |
'module'
|
old_model_prefix
|
str
|
先前保存的权重前缀。默认为“model”,这是 nemo1 中的标准。 |
'model'
|
返回
名称 | 类型 | 描述 |
---|---|---|
str |
str
|
新键名称 |
源代码位于 bionemo/llm/utils/weight_utils.py
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
|