DeepSeek LoRA微调+Ollama,微调模型本地部署终极指南!

1,811 阅读2分钟

最近deepseek非常火爆,在学习对deepseek进行微调训练后,尝试把模型部署到本地。以下记录下怎么保存模型以及怎么载入Ollama的过程。

模型保存

我使用的Transformers 的 trainer 进行的训练。

在配置TrainingArguments 的 output_dir 以及save_steps后我以为会自动根据相关参数进行保存,但当我使用相应的checkpoint的时候并未调用成功,具体什么原因还没搞清楚。

所以要trainer.save_model 确保模型保存成功。并且可以把训练的模型状态保存下来,下次调用可以更快。

trainer.train()

#进行模型训练后进行一下保存确保模型保无误
trainer.save_model('result/best')#保存路径

保存后的模型文件夹列表:

#微调的配置文件
adapter_config.json

#微调后的权重文件,我理解为微调后的小模型
adapter_model.safetensors

#模型训练的参数以及配置
training_args.bin

上面我们保存是训练好的LoRA模型,从文件大小上就可以看出来。

我们要转换gguf文件需要保存完整训的模型,可以使用model.save_pretrained 进行保存

    #输出目录
    model.save_pretrained("./output_model")

如果我们训练完成后关闭了文件。 可以再次调用已经保存的lora模型与基座模型进行融合并保存

    from peft import PeftModel

    from transformers import LlamaForCausalLM

    #载入模型
    model = LlamaForCausalLM.from_pretrained('./model', load_in_8bit=False, device_map="auto")

    #载入微调后的模型文件
    model = PeftModel.from_pretrained(model, './you-lora-model', device_map="auto",trust_remote_code=True)

    #合并模型
    merged_model = model.merge_and_unload() 

    #保存模型
    merged_model.save_pretrained(save_path)

转换为gguf

首先介绍下什么是gguf文件。我理解它是一种把模型转换(打包)为一个文件的文件格式,便于调用。

我用到的是llama.cpp

1739948532798.png

直接上github 下载下来。

    git clone <https://github.com/ggerganov/llama.cpp.git>

然后cd 到 你的下载目录中进行安装

    #如果使用的conda 的时候 cd 后面跟上 /d 
    #例如:   cd /d F:/py/output

    pip install -r ./requirements.txt

安装完成后我们就可以直接开始转换了,直接调用目录下的convert_hf_to_gguf.py 文件。输入你训练好的模型地址,以及要保存的地址以及保存的文件名。

    python ./convert_hf_to_gguf.py ./qwen2_0.5b_instruct   --outfile ./qwen2_0.5b_instruct_my.gguf

运行完成后,我们就可以在目录下面看见xx.gguf文件了

载入 Ollama

要载入ollama 其实非常简单,在你的gguf 文件夹内新建一个文件名为 Modelfile 无后缀名。用记事本打开,写入 ./you-mode.guuf 你要载入的gguf模型文件。具体每个模型参数不同可查看该模型文档。

然后用 ollama create 命令

    ollama create you_model-name -f Modelfile

载入完成后 用 ollama list 就可以查看到你的模型,之后就可以愉快的玩耍了。