| 379 | } |
| 380 | |
| 381 | static void alloc_lora(struct ggml_allocr * alloc, struct my_llama_lora * lora) { |
| 382 | ggml_allocr_alloc(alloc, lora->tok_embeddings_a); |
| 383 | ggml_allocr_alloc(alloc, lora->tok_embeddings_b); |
| 384 | ggml_allocr_alloc(alloc, lora->norm_a); |
| 385 | ggml_allocr_alloc(alloc, lora->norm_b); |
| 386 | ggml_allocr_alloc(alloc, lora->output_a); |
| 387 | ggml_allocr_alloc(alloc, lora->output_b); |
| 388 | for (uint32_t i = 0; i < lora->layers.size(); ++i) { |
| 389 | auto & layer = lora->layers[i]; |
| 390 | ggml_allocr_alloc(alloc, layer.attention_norm_a); |
| 391 | ggml_allocr_alloc(alloc, layer.attention_norm_b); |
| 392 | ggml_allocr_alloc(alloc, layer.wq_a); |
| 393 | ggml_allocr_alloc(alloc, layer.wq_b); |
| 394 | ggml_allocr_alloc(alloc, layer.wk_a); |
| 395 | ggml_allocr_alloc(alloc, layer.wk_b); |
| 396 | ggml_allocr_alloc(alloc, layer.wv_a); |
| 397 | ggml_allocr_alloc(alloc, layer.wv_b); |
| 398 | ggml_allocr_alloc(alloc, layer.wo_a); |
| 399 | ggml_allocr_alloc(alloc, layer.wo_b); |
| 400 | ggml_allocr_alloc(alloc, layer.ffn_norm_a); |
| 401 | ggml_allocr_alloc(alloc, layer.ffn_norm_b); |
| 402 | ggml_allocr_alloc(alloc, layer.w1_a); |
| 403 | ggml_allocr_alloc(alloc, layer.w1_b); |
| 404 | ggml_allocr_alloc(alloc, layer.w2_a); |
| 405 | ggml_allocr_alloc(alloc, layer.w2_b); |
| 406 | ggml_allocr_alloc(alloc, layer.w3_a); |
| 407 | ggml_allocr_alloc(alloc, layer.w3_b); |
| 408 | } |
| 409 | ggml_allocr_alloc(alloc, lora->tok_embeddings_a->grad); |
| 410 | ggml_allocr_alloc(alloc, lora->tok_embeddings_b->grad); |
| 411 | ggml_allocr_alloc(alloc, lora->norm_a->grad); |
| 412 | ggml_allocr_alloc(alloc, lora->norm_b->grad); |
| 413 | ggml_allocr_alloc(alloc, lora->output_a->grad); |
| 414 | ggml_allocr_alloc(alloc, lora->output_b->grad); |
| 415 | for (uint32_t i = 0; i < lora->layers.size(); ++i) { |
| 416 | auto & layer = lora->layers[i]; |
| 417 | ggml_allocr_alloc(alloc, layer.attention_norm_a->grad); |
| 418 | ggml_allocr_alloc(alloc, layer.attention_norm_b->grad); |
| 419 | ggml_allocr_alloc(alloc, layer.wq_a->grad); |
| 420 | ggml_allocr_alloc(alloc, layer.wq_b->grad); |
| 421 | ggml_allocr_alloc(alloc, layer.wk_a->grad); |
| 422 | ggml_allocr_alloc(alloc, layer.wk_b->grad); |
| 423 | ggml_allocr_alloc(alloc, layer.wv_a->grad); |
| 424 | ggml_allocr_alloc(alloc, layer.wv_b->grad); |
| 425 | ggml_allocr_alloc(alloc, layer.wo_a->grad); |
| 426 | ggml_allocr_alloc(alloc, layer.wo_b->grad); |
| 427 | ggml_allocr_alloc(alloc, layer.ffn_norm_a->grad); |
| 428 | ggml_allocr_alloc(alloc, layer.ffn_norm_b->grad); |
| 429 | ggml_allocr_alloc(alloc, layer.w1_a->grad); |
| 430 | ggml_allocr_alloc(alloc, layer.w1_b->grad); |
| 431 | ggml_allocr_alloc(alloc, layer.w2_a->grad); |
| 432 | ggml_allocr_alloc(alloc, layer.w2_b->grad); |
| 433 | ggml_allocr_alloc(alloc, layer.w3_a->grad); |
| 434 | ggml_allocr_alloc(alloc, layer.w3_b->grad); |
| 435 | } |
| 436 | } |
| 437 | |
| 438 | static void init_lora(const struct my_llama_model * model, struct my_llama_lora * lora) { |
no test coverage detected