损失
BERTMLMLossWithReduction
基类:_Nemo2CompatibleLossReduceMixin
, MegatronLossReduction
源代码位于 bionemo/llm/model/loss.py
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
|
__init__(validation_step=False, val_drop_last=True, send_train_output=False, send_val_output=True)
初始化 Model 类。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
validation_step
|
bool
|
此对象是否应用于验证步骤。默认为 False。 |
False
|
val_drop_last
|
bool
|
是否配置为在验证期间删除最后一个批次。默认为 True。 |
True
|
send_train_output
|
bool
|
是否在训练中返回模型输出。默认为 False。 |
False
|
send_val_output
|
bool
|
是否在验证中返回模型输出。默认为 True。 |
True
|
include_forward_output_for_metrics
|
bool
|
一些下游指标(如困惑度)需要此项。但是,返回此项可能代价高昂,因此如果性能是首要考虑因素,请禁用此项。 |
必需 |
源代码位于 bionemo/llm/model/loss.py
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
|
forward(batch, forward_out)
计算批次中 labels
与当前 forward 输出中的 token_logits
之间的损失。未来,如果 forward_out 和 batch 中存在其他损失类型(如序列损失),则会扩展以处理这些类型。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
batch
|
Dict[str, Tensor]
|
数据批次。每个张量的形状应为 [batch_size, , ],并与批次输出中该特定键的相应维度匹配。例如,“labels”和“token_logits”键应具有形状为 [batch_size, sequence_length] 的张量。 |
必需 |
forward_out
|
Dict[str, Tensor]
|
来自模型的 forward 输出。每个张量的形状应为 [batch_size, , ] |
必需 |
摘自:https://github.com/NVIDIA/NeMo/blob/main/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py#L951-L976 。
源代码位于 bionemo/llm/model/loss.py
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 |
|
DataParallelGroupLossAndIO
基类:TypedDict
数据并行组的平均损失 + 原始批次和推理输出。
源代码位于 bionemo/llm/model/loss.py
57 58 59 60 61 62 |
|
PerTokenLossDict
基类:TypedDict
损失的张量字典。
这是为批次中每个 token 计算的损失的返回类型,支持不同大小的微批次。
源代码位于 bionemo/llm/model/loss.py
39 40 41 42 43 44 45 |
|
SameSizeLossDict
基类:TypedDict
损失的张量字典。
这是为整个批次计算的损失的返回类型,其中所有微批次的大小相同。
源代码位于 bionemo/llm/model/loss.py
48 49 50 51 52 53 54 |
|
unreduced_token_loss_fn(logits, labels, cross_entropy_loss_fusion=False)
计算给定 logits 和 labels 的未缩减 token 损失,不考虑损失掩码。
警告:此函数不应用损失掩码。此外,它对输入执行就地操作。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
logits
|
Tensor
|
形状为 [sequence_length, batch_size, num_classes] 的预测 logits。 |
必需 |
labels
|
Tensor
|
形状为 [batch_size, sequence_length] 的真实 labels。 |
必需 |
cross_entropy_loss_fusion
|
bool
|
如果为 True,则使用词汇表并行交叉熵的融合内核版本。通常应优先使用此项以提高速度,因为它将更多操作打包到 GPU 上的单个内核中。但是,一些用户在使用此方法时观察到训练稳定性降低。 |
False
|
返回
名称 | 类型 | 描述 |
---|---|---|
Tensor |
Tensor
|
形状为 [batch_size, sequence_length] 的未缩减 token 损失。 |
源代码位于 bionemo/llm/model/loss.py
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
|