-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
提一个您llama.cpp适配rwkv的问题 #7
Comments
是的,当时提PR的时候这样写大概是按习惯来了,实际上确实可以像你说的那样写。 rwkv-qualcomm/rwkv_src/rwkv_v6_modules.py Line 167 in 3f4cbbe
这个repo里涉及到合并的自定义wkv算子时,也是reshape成[T, H, S]的 |
是的,pytroch这种写法是为了让最后两个维度能够进行矩阵乘法。谢谢博主哈,别close,后面我还有问题可能。 |
我今天试了一下,把上面提到的reshape方式改掉,并去掉k/v/r上的ggml_transpose,性能上似乎并没有太大的影响
|
早上好啊!博主,我来了,我有几个问题,如下: 2、llama.cpp中n_embd, n_seqs, seq_tokens相当于pytorch中的 embed_dim, batch, seqs_len? 3、我适配的模型kv变换下面这样写的:
因为我觉得在wkv中它是按照ntokens,heads,head_dim去遍历的。 您看看我上述观点有什么不妥的吗,以及回答下我的疑问,谢谢哥。 |
早上好呀
是的,对应dim相乘。如果a和b的shape不一样的话,如果可以broadcast也是可以相乘的,具体可以看看ggml文档或者代码
没错
因为ggml的shape是反过来的吧,然后ntokens就等于batch_size * seqs_len,所以pytorch就是[B, T, C],ggml里面是[head_dim, head_size, ntokens](head_dim * head_size = embed_dim) |
好的,等我研究研究出来一些问题再来向你请教,谢谢哈,博主。 |
博主,您好,当我在llama.cpp写好我自己适配的计算图,以及能够正常编译,然后能够推理,但是推理时出现问题, ./build/bin/llama-cli -m model/xxxx.gguf -p "you are" --no-context-shift。它会一直出现 |
抱歉回复晚了
|
抱歉回复晚了 |
有段代码不太理解,我的浅薄理解如下,还请指教一下:
既然,ggml_rwkv_wkv算子是逐个token计算的,那么我觉得
`
struct ggml_tensor * r = ggml_reshape_4d(ctx, llm_build_lora_mm(lctx, ctx, layer->time_mix_receptance, xr), head_size, 1, head_count, n_tokens);
这个1是没有用的吧,因为ggml_rwkv_wkv算子代码是遍历的n_tokens,head_count,head_size,甚至上面的rkv都可以reshape成head_size,head_count,n_tokens。
The text was updated successfully, but these errors were encountered: