mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-08-16 07:58:27 +02:00
ggml: backward pass for split swiglu (llama/14483)
This commit is contained in:
committed by
Georgi Gerganov
parent
0ca760433c
commit
4aaf8114e7
@ -6042,13 +6042,28 @@ static void ggml_compute_backward(
|
|||||||
}
|
}
|
||||||
GGML_ASSERT(!src1_needs_grads && "backward pass for labels not implemented");
|
GGML_ASSERT(!src1_needs_grads && "backward pass for labels not implemented");
|
||||||
} break;
|
} break;
|
||||||
|
case GGML_OP_GLU: {
|
||||||
|
switch (ggml_get_glu_op(tensor)) {
|
||||||
|
case GGML_GLU_OP_SWIGLU: {
|
||||||
|
if (src0_needs_grads) {
|
||||||
|
GGML_ASSERT(src1 && "backward pass only implemented for split swiglu");
|
||||||
|
ggml_add_or_set(ctx, cgraph, isrc0, ggml_silu_back(ctx, ggml_mul(ctx, grad, src1), src0));
|
||||||
|
}
|
||||||
|
if (src1_needs_grads) {
|
||||||
|
ggml_add_or_set(ctx, cgraph, isrc1, ggml_mul(ctx, ggml_silu(ctx, src0), grad));
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
default: {
|
||||||
|
GGML_ABORT("unsupported glu op for backward pass: %s", ggml_glu_op_name(ggml_get_glu_op(tensor)));
|
||||||
|
} //break;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
case GGML_OP_NONE: {
|
case GGML_OP_NONE: {
|
||||||
// noop
|
// noop
|
||||||
} break;
|
} break;
|
||||||
case GGML_OP_COUNT:
|
case GGML_OP_COUNT:
|
||||||
default: {
|
default: {
|
||||||
fprintf(stderr, "%s: unsupported ggml op for backward pass: %s\n", __func__, ggml_op_name(tensor->op));
|
GGML_ABORT("%s: unsupported ggml op for backward pass: %s\n", __func__, ggml_op_name(tensor->op));
|
||||||
GGML_ABORT("fatal error");
|
|
||||||
} //break;
|
} //break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user