大模型的训练目前主要分为Pre-training和Post-training,受限于资源算力等原因,实际工作中更多用到的是SFT。
- 对于普通用户来说SFT仍然具备较高的门槛,需要了解一定的理论基础,准备用于微调的数据,由于不同基座模型相应的微调方法也不一样,需要对超参数优化等其他问题
- 目前可以通过完善的微调框架来简化上面的情况,常用框架如:
-
- LaMA-Factory: https://github.com/hiyouga/LLaMA-Factory
- swift: https://github.com/modelscope/swift
- unsloth: https://github.com/unslothai/unsloth
- mlx: https://github.com/ml-explore/mlx
- SuperAdapters: https://github.com/cckuailong/SuperAdapters
- Firefly: https://github.com/yangjianxin1/Firefly
- 这里推荐使用LaMA-Factory
-
- 支持多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Qwen2-VL、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
- 集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
- 多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
- 先进算法:GaLore、BAdam、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。
- 实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。
- 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
- 极速推理:基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口。
我们原来介绍过基于LaMA-Factory对Qwen和llama3模型的微调
- 基于LLaMA-Factory微调Llama3
- 如何使用LLaMA Factory 微调Qwen1.5
由于2024年6月后,LaMA-Factory进行了升级,相较于原来操作更加简单便捷。
本文介绍下目前新版对llama3.1的微调
基于LaMA-Factory对llama3.1 8B进行微调
1. 环境配置
- 查看当前硬件显卡驱动CUDA
nvidia-smi
官方推荐:
推荐使用
- py3.10
- cuda 12.2
- 创建虚拟环境及安装LLaMA-Factory
# 1. 创建虚拟环境
conda create -n llama-factory python=3.11
# 2. 激活虚拟环境
source activate
conda activate llama-factory
# 3 安装LLaMA-Factory
# 3.1 切换到工作路径
cd /home/work
# 3.2 下载LLaMA-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
# 3.3 pip 安装依赖
pip install -e ".[torch,metrics]"
- 依赖校验 注意:可以通过下面的命令查看依赖的安装情况
# 查看当前环境信息
python -m torch.utils.collect_env
# 查看conda安装版本信息
conda list
# CUDA和Pytorch环境校验 在python下
import torch
torch.cuda.current_device()
torch.cuda.get_device_name(0)
torch.__version__
如果发现安装的cuda不是GPU版本,或者版本不匹配,可以直接去pytorch官网安装相应的pytorch
- 安装GPU版本torch
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
- 安装成功验证 在LLaMA-Factory路径下对库进行校验
llamafactory-cli version
llamafactory-cli train -h
如果出现下面输出则成功:
安装成功后可以通过webui在网页操作进行微调评估等操作
llamafactory-cli webui
- run with demo
# 切换为你下载的模型文件目录, 这里的demo是Llama-3-8B-Instruct
# 如果是其他模型,比如qwen,chatglm,请使用其对应的官方demo
model_id = "/path/to/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
pipeline.tokenizer.eos_token_id,
pipeline.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
2. 上传数据集
配置好环境后,需要准备用于微调的数据集。
需要在examples/train_lora/llama3_lora_sft.yaml文件中修改dataset, 如果不修改则使用默认数据集:
### dataset
dataset: identity,alpaca_en_demo
如果要用自己的数据集,则需要将数据上传到data路径下,并且在data中注册data/dataset_info.json进行注册,如
{
"your_data": {
"file_name": "your_data.json"
},
3. 微调
这里演示使用lora微调
1. 更改模型地址
# 修改sft ymal文件
vi examples/train_lora/llama3_lora_sft.yaml
# 使用llama3.1-8B模型文件
model_name_or_path: /path/to/Meta-Llama-3___1-8B-Instruct
# 模型微调后的结果文件存储路径
output_dir: saves/llama3-8b/lora/sft
2. Run SFT
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
# 或者指定卡
# CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml
3. 训练过程中内存占用情况
这里使用了两张A100-80G,实际1张A100也可以跑起来,
4. 评估预测
# 在 MMLU/CMMLU/C-Eval 上评估
CUDA_VISIBLE_DEVICES=0 llamafactory-cli eval examples/lora_single_gpu/llama3_lora_eval.yaml
# 批量预测并计算 BLEU 和 ROUGE 分数
CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_predict.yaml
4. Merge
模型微调后的结果需要与基座模型进行merge
# 1. 修改merge yaml文件,修改model path和微调文件path及最终merge导出文件地址
cd /home/LLaMA-Factory
vi examples/merge_lora/llama3_lora_sft.yaml
### Note: DO NOT use quantized model or quantization_bit when merging lora adapters
### model
model_name_or_path: /path/to/Meta-Llama-3___1-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft
template: llama3
finetuning_type: lora
### export
export_dir: models/llama3_lora_sft
export_size: 2
export_device: cpu
export_legacy_format: false
# 2. run merge
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml
5.Infer
使用微调后的模型进行推理
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
reference:
- LlamaFactory: Unified Efficient Fine-Tuning of 100+ Language Models https://arxiv.org/abs/2403.13372
如何系统的去学习大模型LLM ?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
事实上,抢你饭碗的不是AI,而是会利用AI的人。
继科大讯飞、阿里、华为
等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?
与其焦虑……
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈
一、LLM大模型经典书籍
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。
二、640套LLM大模型报告合集
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
三、LLM大模型系列视频教程
四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)
LLM大模型学习路线 ↓
阶段1:AI大模型时代的基础理解
-
目标:了解AI大模型的基本概念、发展历程和核心原理。
-
内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践
- L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
-
目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
-
内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例
- L2.2 Prompt框架
- L2.3 流水线工程
- L2.4 总结与展望
阶段3:AI大模型应用架构实践
-
目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
-
内容:
- L3.1 Agent模型框架
- L3.2 MetaGPT
- L3.3 ChatGLM
- L3.4 LLAMA
- L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
-
目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
-
内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
这份 LLM大模型资料
包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈