llama3的微调与部署

第一次做大模型的微调,记录一下。我的显卡是 4060ti 16G,显存只有16G注定会碰到很多问题。

模型:Llama3-Chinese-8B-Instruct

1. 我首先选择了LLaMA-Factory做为工具进行微调,最终结果提示显存不足,大概差1G吧。参考Llama3本地部署与高效微调入门_llama3 8b 微调-CSDN博客

2. 我又用unsloth作为工具进行微调,将fp16设置成True,bf16设置成False,可以生成相应的lora。参考使用Unsloth微调Llama3-Chinese-8B-Instruct中文开源大模型_llama3 unsloth-CSDN博客 https://colab.research.google.com/drive/135ced7oHytdxu3N2DNe1Z0kqjyYIkDXp?usp=sharing

3. 用transformers加载unsloth生成的lora和Llama3-Chinese-8B-Instruct时,  如果device_map为auto时,可以加载成功,但是很慢,gpu大概用了13G左右。

AutoModelForCausalLM.from_pretrained(mode, device_map="auto", torch_dtype=torch.float16)

如果将device_map设置成gpu,则会报错,提示显存不足。

4. 改用ollama部署,但ollama需要gguf格式的文件。将第二步生成的lora,直接保存成gguf,仍然提示显存不足

model.push_to_hub_gguf("hf/model", tokenizer, token = "")

修改了quantization_method参数,也没有用。这里我是将微调加保存放在一个py文件内,让后执行py文件,model会load和finetune后会一直占着显存,无法释放。我不清楚如果用jupyter会不会好些。

5. 用convert-lora-to-ggml.py转换第二步中生成的lora为bin文件。参考nous-llama.cpp/convert-llama-ggml-to-gguf.py at master · NousResearch/nous-llama.cpp · GitHub

6. 将Llama3-Chinese-8B-Instruct转成gguf文件,参考llama.cpp/examples/quantize/README.md at master · ggerganov/llama.cpp · GitHub

7. 做个Modelfile之后用ollama部署,最终可以load成功

总结:如果没有24G以上的显存还是用ollama+llama.cpp比较好

遗留问题:

1. 我查看40系列的显卡是支持bf16,为什么微调时不能用bf16

2. 在其他的贴子下看到,用ollama分别加载model和lora,效果不好,需要在第二步将model和lora merge。待验证。ollama 使用自己的微调模型_ollama微调模型-CSDN博客

Llama3是一种基于M6的预训练语言模型,通常用于文本生成、问答等自然语言处理任务。它的部署流程一般包括以下几个步骤: 1. **下载模型**:首先需要从Hugging Face的模型库或其他提供者处下载预训练的Llama3模型。你可以使用`transformers`库的`AutoModelForCausalLM`类加载模型。 ```python from transformers import AutoTokenizer, AutoModelForCausalLM model_name = "allenai/llama3-base" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) ``` 2. **环境配置**:确保你的Python环境中已经安装了必要的依赖,如`torch`、`transformers`库以及GPU(如果模型是GPU加速的)。 3. **微调(Fine-tuning)**:如果你有特定的任务数据,可以对模型进行微调。这涉及到将模型放在一个适合的训练循环中,通过输入任务相关的数据并调整模型的权重,使其适应新的上下文。例如,对于序列标注任务,可以使用`Trainer`类: ```python from transformers import Trainer, TrainingArguments # 准备训练数据 train_dataloader = ... # 加载训练数据集 validation_dataloader = ... # 加载验证数据集 training_args = TrainingArguments(..., per_device_train_batch_size=4, ...) trainer = Trainer(model=model, args=training_args, train_dataset=train_dataloader, eval_dataset=validation_dataloader) # 开始微调 trainer.train() ``` 4. **部署**:完成微调后,可以将模型保存到磁盘以便后续使用。然后,在生产环境中,加载模型并调用其`generate()`或`predict()`方法来处理新的文本请求。 请注意,由于Llama3是一个较大的模型,它可能会消耗大量的计算资源,并且微调过程可能需要较长的时间。另外,模型部署通常会涉及服务器、API设计、性能优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值