code: def save_gguf(self, gguf_writer):
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_TOKEN_EMBD,
          self.n_rank_tok_embeddings,
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_OUTPUT_NORM, self.n_rank_norm
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_OUTPUT, self.n_rank_output
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_ATTN_NORM,
          self.n_rank_attention_norm,
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_ATTN_Q, self.n_rank_wq
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_ATTN_K, self.n_rank_wk
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_ATTN_V, self.n_rank_wv
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_ATTN_OUT, self.n_rank_wo
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_FFN_NORM, self.n_rank_ffn_norm
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_FFN_GATE, self.n_rank_w1
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_FFN_DOWN, self.n_rank_w2
      )
      gguf_writer.add_uint32(
          LLM_KV_TRAINING_LORA_RANK_FFN_UP, self.n_rank_w3
      )
  
imports: import argparse
  import gguf
  import struct
  import numpy
  from pathlib import Path
label_desc: Use image node_id 3 for calling the LoraParams obj's underlying member method code with example usage: obj.save_gguf(gguf_writer) without return types