大模型相关目录

大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。

大模型应用向开发路径及一点个人思考大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factory的指令增量微调

文章目录

大模型相关目录一、LLaMA-Factory简介二、使用准备二、单卡微调测试集对微调模型性能评估微调模型问答使用微调模型增量模型导出

三、多卡微调四、其他

一、LLaMA-Factory简介

LLaMA-Factory是开源的大模型微调框架,在模型微调方式、参数配置、数据集设置、模型保存、模型合并、模型测试以及模型试用上,提供了非常完备的开发接口。其框架使用形式分为指令与界面两种。

二、使用准备

1.拉取项目并部署相应环境(微调chatGLM3 6B很流畅,微调Qwen系列可能需要按错误提示对环境进行补包),并激活。

conda activate zwllama_factory

2.下载模型到本地

3.自行准备数据集 包括:

自我认知数据集(微调后可能效果也比较一般,需要多次微调,或者配合prompt。)通用数据集(微调时用不用均可,可保持模型通用能力。且LLaMA-Factory的data文件夹下有alpaca_gpt4_data_zh等已经备好的数据集,不需要刻意定制。)特定领域数据集 基本格式如下(alpaca,一种指令微调的格式。当然还有其他格式):

[

{

"instruction": "你好",

"input": "",

"output": "您好,我是XX大模型,一个由XXX开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"

},

{

"instruction": "你好",

"input": "",

"output": "您好,我是XX大模型,一个由XXX打造的人工智能助手,请问有什么可以帮助您的吗?"

}

]

其中,instruction和input可以都填充进内容,如把问题作为input,把“回答问题这一要求”作为instruction。据说这种指令微调数据集的格式效果比较好。

准备数据及后,应上传所用到的数据集至项目路径下data文件夹 data文件夹下的数据集要想使用,还需在dataset_info.json下进行登记注册。 其中,file_sha1可通过如下代码计算获得,该字段要求并不严格,有即可,主要为了区分重复文件,作uuid使用。

import hashlib

def calculate_sha1(file_path):

sha1 = hashlib.sha1()

try:

with open(file_path, 'rb') as file:

while True:

data = file.read(8192) # Read in chunks to handle large files

if not data:

break

sha1.update(data)

return sha1.hexdigest()

except FileNotFoundError:

return "File not found."

# 使用示例

file_path = r'C:\Users\12258\Desktop\xxx.json' # 替换为您的文件路径

sha1_hash = calculate_sha1(file_path)

print("SHA-1 Hash:", sha1_hash)

二、单卡微调

单卡微调往往针对6B、7B等规模不大的大模型,因此界面化操作完全狗满足需求。 下述指令启动界面:

CUDA_VISIBLE_DEVICES=0 python src/train_web.py

如下图所示配置页面信息

可见界面微调的本质依旧是后端的指令。 点击开始,开始微调,界面无反应,后端开始加载 加载完毕后,前端界面出现训练所需时间和损失曲线。 注意,训练随时可以中断。

测试集对微调模型性能评估

微调模型问答使用

微调模型增量模型导出

三、多卡微调

新增config.yaml文件在README同级目录,内容如下:

compute_environment: LOCAL_MACHINE

debug: false

distributed_type: MULTI_GPU

downcast_bf16: 'no'

gpu_ids: all

machine_rank: 0

main_training_function: main

mixed_precision: fp16

num_machines: 1

num_processes: 2

rdzv_backend: static

same_network: true

tpu_env: []

tpu_use_cluster: false

tpu_use_sudo: false

use_cpu: false

运行如下命令即可微调:

accelerate launch --config_file config.yaml src/train_bash.py \

--ddp_timeout 180000000 \

--stage sft \

--do_train True \

--model_name_or_path /home/gputest/sgq/text-generation-webui/models/Qwen1.5-14B-Chat \

--finetuning_type lora \

--template default \

--dataset_dir data \

--dataset self_cognition_modified,approval_data_ls_300 \

--cutoff_len 1024 \

--learning_rate 5e-05 \

--num_train_epochs 3.0 \

--max_samples 100000 \

--per_device_train_batch_size 2 \

--gradient_accumulation_steps 8 \

--lr_scheduler_type cosine \

--max_grad_norm 1.0 \

--logging_steps 5 \

--save_steps 100 \

--warmup_steps 0 \

--optim adamw_torch \

--output_dir saves/Qwen1.5-14B/lora/train_2024-03-21-02-22-33 \

--fp16 True \

--lora_rank 8 \

--lora_alpha 16 \

--lora_dropout 0.1 \

--lora_target q_proj,v_proj \

--plot_loss True

当然上述代码内容需要根据你的实际需求进行一定修改。

四、其他

更多信息可以访问开源项目进行了解。

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: