Skip to content

Commit c00fe0c

Browse files
committed
fix moe
1 parent ff41be4 commit c00fe0c

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

ggml/src/ggml-tp/ggml-tp.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,8 +1607,8 @@ static void do_init(size_t node_index, ggml_tensor * tensor, ggml_tensor_paralle
16071607
break;
16081608
}
16091609

1610-
case GGML_OP_MUL_MAT:
1611-
case GGML_OP_MUL_MAT_ID: {
1610+
case GGML_OP_MUL_MAT_ID:
1611+
case GGML_OP_MUL_MAT: {
16121612
no_split_view(src0, src0_extra);
16131613
if (tensor->view_src) {
16141614
GGML_ABORT("Tensor %s has view source tensors, which are not supported for tensor parallelism.\n", tensor->name);
@@ -1704,7 +1704,16 @@ static void do_init(size_t node_index, ggml_tensor * tensor, ggml_tensor_paralle
17041704

17051705
GGML_ASSERT(extra->tensors[0]->src[0]->ne[0] == extra->tensors[0]->src[0]->ne[0] && "Tensor parallel tensors must have the same inner dimension (ne0).");
17061706
GGML_ASSERT(extra->tensors[0]->ne[0] == extra->tensors[0]->src[0]->ne[1] && "Tensor parallel has incorrect outer dimension (ne0).");
1707-
GGML_ASSERT(extra->tensors[0]->ne[1] == extra->tensors[0]->src[1]->ne[1] && "Tensor parallel has incorrect outer dimension (ne1).");
1707+
1708+
if (tensor->op == GGML_OP_MUL_MAT_ID) {
1709+
// all experts are split so all GPUs will run a portion of each expert.
1710+
set_src_tensor(2, GGML_TP_SPLIT_NONE);
1711+
1712+
GGML_ASSERT(extra->tensors[0]->ne[2] == extra->tensors[0]->src[1]->ne[2] && "Tensor parallel has incorrect outer dimension (ne1).");
1713+
}
1714+
else {
1715+
GGML_ASSERT(extra->tensors[0]->ne[1] == extra->tensors[0]->src[1]->ne[1] && "Tensor parallel has incorrect outer dimension (ne1).");
1716+
}
17081717
break;
17091718
}
17101719

0 commit comments

Comments
 (0)