当前位置: 首页 > news >正文

校园门户网站 建设wordpress 动漫网站

校园门户网站 建设,wordpress 动漫网站,视频优化软件,东莞想做网站1. 引言 前文训练时都做了一定的编码工作#xff0c;其实有一些框架可以支持我们零代码微调#xff0c;LLama-Factory就是其中一个。这是一个专门针对大语言模型的微调和训练平台#xff0c;有如下特性#xff1a; 支持常见的模型种类#xff1a;LLaMA、Mixtral-MoE、Qw…1. 引言 前文训练时都做了一定的编码工作其实有一些框架可以支持我们零代码微调LLama-Factory就是其中一个。这是一个专门针对大语言模型的微调和训练平台有如下特性 支持常见的模型种类LLaMA、Mixtral-MoE、Qwen、Baichuan、ChatGLM等等。支持单GPU和多GPU训练。支持全参微调、Lora微调、QLora微调。 …… 还有很多优秀的特性详细参考https://llamafactory.readthedocs.io/zh-cn/latest/ 本文会尝试用LLamaFactory进行一次多GPU训练。 2. 安装 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .[torch,metrics,deepspeed,bitsandbytes,vllm]安装完后执行llamafactory-cli version验证安装是否成功结果报了AttributeError: module torch.library has no attribute register_fake。 原因PyTorch 和 TorchVision 版本不兼容经常发生在torchvision较新而pytorch版本较旧的场景。 解法使用pip install --upgrade torch torchvision 更新两者版本使之一致再次运行llamafactory-cli version后正常输出了版本号0.8.4。 ---------------------------------------------------------- | Welcome to LLaMA Factory, version 0.8.4.dev0 | | | | Project page: https://github.com/hiyouga/LLaMA-Factory | ----------------------------------------------------------3. 数据处理 针对sft llamafactory支持多种数据格式我们这里选用alpaca此格式简单清晰每条数据只需包含三个字段 instruction 列对应的内容为人类指令input 列对应的内容为人类输入output 列对应的内容为模型回答。 {instruction: 计算这些物品的总费用。 ,input: 输入汽车 - $3000衣服 - $100书 - $20。,output: 汽车、衣服和书的总费用为 $3000 $100 $20 $3120。 },为了格式匹配封装一个函数to_alpaca用于转换数据。 import json def to_alpaca(input_path, output_path):with open(input_path, r, encodingutf-8) as infile, open(output_path, w, encodingutf-8) as outfile: dataset []for line in infile: data json.loads(line) item {input: data[input],output: json.dumps({is_fraud:data[label]}, ensure_asciiFalse),instruction:data[instruction],} dataset.append(item)# 将结果写入输出文件 outfile.write(json.dumps(dataset, indent4, ensure_asciiFalse)) print(fconvert over{input_path} to {output_path})批量将前文欺诈文本分类微调四构造训练/测试数据集已经构建好的数据集作格式转换。 input_files [../dataset/fraud/train_test/train0819.jsonl,../dataset/fraud/train_test/test0819.jsonl,../dataset/fraud/train_test/eval0819.jsonl, ]for input_path in input_files:output_path f../dataset/fraud/train_test/{filename(input_path)}_alpaca.jsonto_alpaca(input_path, output_path)convert over../dataset/fraud/train_test/train0819.jsonl to ../dataset/fraud/train_test/train0819_alpaca.json convert over../dataset/fraud/train_test/test0819.jsonl to ../dataset/fraud/train_test/test0819_alpaca.json convert over../dataset/fraud/train_test/eval0819.jsonl to ../dataset/fraud/train_test/eval0819_alpaca.json 文件内容如下所示 [{input: 发言人3: 现在我所在这个哪里能够工艺能够去把屈光做得很好的去到这个省级医院是自治区医院跟广西医科大学这个附属医院他们还可以他们一直保持比较好的一个一个手术量。\n发言人1: 就是,output: {\is_fraud\: false},instruction: \n下面是一段对话文本, 请分析对话内容是否有诈骗风险以json格式输出你的判断结果(is_fraud: true/false)。\n},……{input: 发言人12: 好的感谢大家参加本次电话会议会议到此结束祝大家生活愉快再见。\n发言人1: 本次会议已结束。\n发言人2: the meeting has ended。,output: {\is_fraud\: false},instruction: \n下面是一段对话文本, 请分析对话内容是否有诈骗风险以json格式输出你的判断结果(is_fraud: true/false)。\n} ]转换好数据集后需要将其配置到LLamaFactory安装目录下的data/dataset_info.json文件中只需要在文件最后添加我们新构造的数据集。 {identity: {file_name: identity.json},……anti_fraud: {file_name: train0819_alpaca.jsonl,columns: {prompt: instruction,query: input,response: output}} }4. 训练参数配置 LLamaFactory的训练参数采用yaml文件保存在安装目录下的examples子目录下有各种微调方法的示例配置可以直接拷贝一份进行修改。 yaml文件中采用分块配置下面分别示例。 模型路径 ### model model_name_or_path: /data2/anti_fraud/models/modelscope/hub/Qwen/Qwen2-1___5B-Instruct微调方法 说明同前面训练的参数配置保持一致。 stage: sft do_train: true finetuning_type: lora # 具体微调方法采用Lora lora_target: q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj lora_rank: 16 lora_alpha: 32 lora_dropout: 0.2stage: sft LLamaFactory中将训练划分成了很多阶段例如rm(reward modeling), pt(pretrain), sft(Supervised Fine-Tuning), PPO, DPO, KTO, ORPO监督微调选择sft。finetuning_type: lora 微调方法选择Lora。 数据集配置 这部分参数定义上有些不同下面会详细说明。 dataset: anti_fraud template: qwen cutoff_len: 2048 max_samples: 200000 overwrite_cache: true preprocessing_num_workers: 16dataset: anti_fraud 是用于上面在dataset_info.json中添加的数据集名称。 template: llama3 此参数控制着最终给模型训练的数据模板。 如果是llama3: |start_header_id|user|end_header_id|下面是一段对话文本, 请分析对话内容是否有诈骗风险以json格式输出你的判断结果(is_fraud: true/false)。发言人3: 现在我所在这个哪里能够工艺能够去把屈光做得很好的去到这个省级医院是自治区医院跟广西医科大学这个附属医院他们还可以他们一直保持比较好的一个一个手术量。 发言人1: 就是|eot_id||start_header_id|assistant|end_header_id|{is_fraud: false}|eot_id|如果是qwen: |im_start|system You are a helpful assistant.|im_end| |im_start|user下面是一段对话文本, 请分析对话内容是否有诈骗风险以json格式输出你的判断结果(is_fraud: true/false)。发言人3: 现在我所在这个哪里能够工艺能够去把屈光做得很好的去到这个省级医院是自治区医院跟广西医科大学这个附属医院他们还可以他们一直保持比较好的一个一个手术量。 发言人1: 就是|im_end| |im_start|assistant {is_fraud: false}|im_end|cutoff_len: 相当于max_length限制一条数据的最大长度超出截断。 max_samples: 用于限制在训练或评估过程中使用的样本数量。此参数主要适用于数据集非常大并且不需要所有样本都进行训练的场景。 输出配置 说明同前面训练的参数配置保持一致。 ### output output_dir: /data2/anti_fraud/models/Qwen2-1___5B-Instruct_ft_0826 logging_steps: 10 save_steps: 100 plot_loss: true overwrite_output_dir: true训练配置 说明同前面训练的参数配置保持一致。 per_device_train_batch_size: 16 gradient_accumulation_steps: 1 gradient_checkpointing: true learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.05 bf16: true ddp_timeout: 180000000验证配置 说明同前面训练的参数配置保持一致。 val_size: 0.1 per_device_eval_batch_size: 8 eval_strategy: steps eval_steps: 100配置完成后将上面的配置保存到qwen2_lora_sft.yaml 文件中。 5. 训练 5.1 开始训练 设置环境变量CUDA_VISIBLE_DEVICES声明训练过程中允许使用4张显卡显卡编号分别为1、2、3、4。 使用 llamafactory-cli命令启动训练。 export CUDA_VISIBLE_DEVICES1,2,3,4 llamafactory-cli train /data2/downloads/LLaMA-Factory/qwen2_lora_sft.yaml 训练关键信息 08/26/2024 18:08:49 - INFO - llamafactory.model.loader - trainable params: 18,464,768 || all params: 1,562,179,072 || trainable%: 1.1820 [INFO|trainer.py:2134] 2024-08-26 18:08:50,496 ***** Running training ***** [INFO|trainer.py:2135] 2024-08-26 18:08:50,496 Num examples 19,021 [INFO|trainer.py:2136] 2024-08-26 18:08:50,496 Num Epochs 3 [INFO|trainer.py:2137] 2024-08-26 18:08:50,496 Instantaneous batch size per device 16 [INFO|trainer.py:2140] 2024-08-26 18:08:50,496 Total train batch size (w. parallel, distributed accumulation) 64 [INFO|trainer.py:2141] 2024-08-26 18:08:50,496 Gradient Accumulation steps 1 [INFO|trainer.py:2142] 2024-08-26 18:08:50,496 Total optimization steps 894 [INFO|trainer.py:2143] 2024-08-26 18:08:50,502 Number of trainable parameters 18,464,768从上面这个信息可以看出一个显著变化实际的批量大小batch_size从单卡下的16变成了多GPU下的64。在数据量不变的情况下总的训练步数从之前的3522缩小到了894相当于训练步数变少而每一步迈的更大。 第一个100步的信息 训练完的eval_loss为0.0152比单卡时的验证损失0.016190要低。 ***** eval metrics *****epoch 3.0eval_loss 0.0152eval_runtime 0:00:17.00eval_samples_per_second 124.291eval_steps_per_second 3.9395.2 可视化训练结果 使用tensorboard可视化训练过程中的数据指标。 tensorboard --host0.0.0.0 --port 6006 --logdir/data2/anti_fraud/models/Qwen2-1___5B-Instruct_ft_0826/runs/Aug26_18-07-16_ubuntu/训练损失下降曲线 验证损失下降曲线 学习率变化曲线 学习率先降后升是学习率调度器配置lr_scheduler_type: cosine所起的作用它将我们预设的1e-4作为最大值刚开始训练时从2e-5左右缓慢上升至1e-4来适应数据随着训练到了后期逐渐降低学习率来尝试找到损失最低点。 5.3 评估测试 使用魔法命令%run导入评估脚本定义原始模型/微调checkpoint的路径以及评估数据集。 %run evaluate.py device cuda evaldata_path /data2/anti_fraud/dataset/eval0819.jsonl model_path /data2/anti_fraud/models/modelscope/hub/Qwen/Qwen2-1___5B-Instruct checkpoint_path_900 /data2/anti_fraud/models/Qwen2-1___5B-Instruct_ft_0826/checkpoint-900运行评测 evaluate(model_path, checkpoint_path_900, evaldata_path, device, batchTrue, debugTrue)progress: 100%|██████████| 2348/2348 [03:2200:00, 11.59it/s] tn1160, fp:5, fn:103, tp:1080 precision: 0.9953917050691244, recall: 0.9129332206255283精确率precision从0.978上升到了0.995召回率从0.866上升到了0.912说明多张卡一起训练带来的批量大小增加有助于模型更好的学习数据分布从而更快的收敛到更优的解。 小结本文尝试用LLamaFactory工具对前面的欺诈文本分类任务进行了SFT微调训练并启用了多张GPU多GPU的直接影响是批量大小batch_size的4倍增加使得模型每次训练时能看到更多的数据进行更稳定梯度估计和更准确的参数更新最终在评测指标上有一个显著的提升。 参考文章 欺诈文本分类微调七lora单卡二次调优LLamaFactory使用教程llama-factory参数体系llama-factory微调参数详解
http://www.hkea.cn/news/14413479/

相关文章:

  • 洛阳网站推广公司电话可以自己设计装修的免费软件
  • 产品网站建设公司建设银行网站下载中心
  • 电子商务网站中的信息技术阿里巴巴wordpress 挂马 清除
  • kingcms 暂未创建网站首页网站建设后端技术
  • 网站开发外包业务怎么接国外免费wordpress主题
  • 实战营销型网站建设刚建的网站百度搜不到
  • 怎么查网站找谁做的卖鞋推广引流方法
  • 血液中心网站建设规范易网网站多少
  • 雁塔免费做网站安装百度到手机桌面
  • 营销网站建设费用共享经济网站建设策划书
  • 增城网站公司电话建设厅考试网站
  • 如何让网站被收录wordpress 标题翻译
  • 网站建设流程报价彩票网站 在哪里做
  • 做个网站要多少钱营销比较成功的企业
  • 食品建设网站的目的松江品划网络做网站
  • 网站建设氵金手指下拉十三商城网站服务器
  • 昆明网站的建设常州网站设计湛江公司电话
  • 网站排名提高南昌哪里学做网站
  • 网站建设项目风险管理的主要内容青岛建设集团苏州招聘信息网站
  • 政务网站信息化建设情况汇报网站做线上销售
  • 网站建设需要每年交钱吗重庆广告公司网站建设
  • 做网站和做平台的区别wordpress邮箱美化
  • 论坛网站开发技术太原找工作网站
  • 网站被攻击会影响收录么大数据营销的概念
  • 佛山新网站建设平台wordpress百度联盟
  • 淘宝购物券网站怎么做云南网络推广服务
  • 怎么把网站设置为信任网站seo网站推广多少钱
  • 开封网站开发wordpress微信扫码登录
  • 安吉城乡建设局网站怎么制作网站布局
  • 外包公司做的网站企业网站建设的研究开发方法及技术路线