赞
踩
大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。
LLaMA-Factory是开源的大模型微调框架,在模型微调方式、参数配置、数据集设置、模型保存、模型合并、模型测试以及模型试用上,提供了非常完备的开发接口。其框架使用形式分为指令与界面两种。
1.拉取项目并部署相应环境(微调chatGLM3 6B很流畅,微调Qwen系列可能需要按错误提示对环境进行补包),并激活。
conda activate zwllama_factory
2.下载模型到本地
3.自行准备数据集
包括:
[
{
"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
当然上述代码内容需要根据你的实际需求进行一定修改。
更多信息可以访问开源项目进行了解。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。