LLama-Factory使用教程

本文是github项目llama-factory的使用教程
注意,最新的llama-factory的github中训练模型中,涉及到本文中的操作全部使用了.yaml配置。
新的.yaml的方式很简洁但不太直观,本质上是一样的。新的readme中的.yaml文件等于下文中的bash指令

PS: 大模型基础和进阶付费课程(自己讲的):《AIGC大模型理论与工业落地实战》-CSDN学院 或者《AIGC大模型理论与工业落地实战》-网易云课堂。感谢支持!

一,数据准备和模型训练

step1-下载项目:

​ 从github中克隆LLaMa-Factory项目到本地

step2-准备数据:

​ 将原始LLaMA-Factory/data/文件夹下的dataset_info.json,增加本地的数据。注意,本地数据只能改成LLama-Factory接受的形式,即本地数据只能支持”promtp/input/output“这种对话的格式,不支持传统的文本分类/实体抽取/关系抽取等等schema数据,如果需要,请想办法改成对话形式的数据。

​ 你需要参考其中的一个文件和它的配置,例如:alpaca_gpt4_data_zh.json,训练和验证数据同样改成这种格式,并在dataset_info.json中新增一个你自己的字典:

{"alpaca_en": {"file_name": "alpaca_data_en_52k.json","file_sha1": "607f94a7f581341e59685aef32f531095232cf23"
},  
..."your_train": {"file_name": "/path/to/your/train.json","columns": {"prompt": "instruction","query": "input","response": "output"}},
...

​ 其中的key,your_train,将在训练/测试的shell命令中使用

step3-模型训练:

​ 数据准备好之后,编写shell脚本训练模型,以mixtral为例根目录下新建run_mixtral.sh

需要改动的主要是:model_name_or_path,dataset,output_dir;和其他可选的改动信息,例如save_steps,per_device_train_batch_size等等。

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--do_train \--model_name_or_path /path/to/your/Mixtral-8x7B-Instruct-v0.1 \--dataset my_train \--template default \--finetuning_type lora \--lora_target q_proj,v_proj \--output_dir ./output/mixtral_train \--overwrite_output_dir \--overwrite_cache \--per_device_train_batch_size 4 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 200 \--learning_rate 5e-5 \--num_train_epochs 1.0 \--plot_loss \--quantization_bit 4 \--fp16
step4-模型融合

​ 模型融合的意义在于合并训练后的lora权重,保持参数和刚从huggingface中下载的一致,以便更加方便地适配一些推理和部署框架

​ 基本流程/原理:将微调之后的lora参数,融合到原始模型参数中,以mixtral为例新建:LLama-Factory/run_mixtral_fusion.sh:

python src/export_model.py \--model_name_or_path path_to_huggingface_model \--adapter_name_or_path path_to_mixtral_checkpoint \--template default \--finetuning_type lora \--export_dir path_to_your_defined_export_dir \--export_size 2 \--export_legacy_format False
step5-模型推理

​ 模型推理即模型在新的验证集上的推理和验证过程

​ 指令和训练的基本一致,只是差别几个参数:

        1.增加了do_predict,2.数据集改成一个新的eval数据集

​ LLama-Factory/runs/run_mixtral_predict.sh

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--do_predict \--model_name_or_path /path/to/huggingface/Mixtral-8x7B-Instruct-v0.1 \--adapter_name_or_path /path/to/mixtral_output/checkpoint-200 \--dataset my_eval \--template default \--finetuning_type lora \--output_dir ./output/mixtral_predict \--per_device_eval_batch_size 4 \--predict_with_generate \--quantization_bit 4 \--fp16
step6-API接口部署

部署接口的作用是可以让你把接口开放出去给到外部调用

CUDA_VISIBLE_DEVICES=0 API_PORT=8000 python src/api_demo.py \--model_name_or_path path_to_llama_model \--adapter_name_or_path path_to_checkpoint \--template default \--finetuning_type lora

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用谷歌云serverless代码托管服务Cloud Functions构建Gemini Pro API

谷歌在2024年4月发布了全新一代的多模态模型Gemini 1.5 Pro,Gemini 1.5 Pro不仅能够生成创意文本和代码,还能理解、总结上传的图片、视频和音频内容,并且支持高达100万tokens的上下文。在多个基准测试中表现优异,性能超越了ChatGP…

LeetCode 每日一题 2024/6/24-2024/6/30

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 6/24 503. 下一个更大元素 II6/25 2732. 找到矩阵中的好子集6/26 2741. 特别的排列6/27 2734. 执行子串操作后的字典序最小字符串6/28 2742. 给墙壁刷油漆6/29 2710. 移除字…

【机器学习】Python sorted 函数

目录: 什么是sorted()函数列表降序排序应用到字符串自定义排序规则实际应用 Python中的内置函数——sorted()。 1. 什么是sorted()函数 在Python中,sorted()是一个内置函数,用于对任何可迭代对象(如列表、元组、字符串等&…

macos scroll direction

If there is no Trackpad option, we can change it in the Mouse option. How to Change the Scroll Direction on a Mac: 2 Ways

AliyunOS安装Node.js

方法1:dnf软件包安装工具自动安装 最方便的安装方式是通过系统的dnf工具,我测试使用的AliyunOS的版本是Alibaba Cloud Linux 3.2104,具体流程如下: dnf module list nodejs #列出服务器中可以使用的所有nodejs版本确定下来希望安…

【折腾手机】一加6T刷机postmarketOS经历和体验

写在前面 到目前为止,我已经花了非常多的时间去学习和了解x86架构和RISC-V架构,对它们的指令集编程、指令格式的设计、编译套件的使用都亲自去体会和实践过,学到了很多的东西。但是对于离我们最近的arm架构却了解甚少。为什么说离我们最近呢…

2095.删除链表的中间节点

给你一个链表的头节点 head 。删除链表的中间节点 ,并返回修改后的链表的头节点 head。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n 1、2、3、4 和…

网络==>总论v4

既然是写ICT方面的文章,就要不断更新版本,不是文学,可以一劳永逸,如果不更新,看十年前或者二十年前的书意义不大,这就是为啥看到很多编程书都更新到第十几版了,因为要与时俱进。 在去一个地方旅…

51单片机第21步_将TIM0用作两个8位定时器同时将TIM1用作波特率发生器

本章重点讲解将TIM0用作两个8位定时器,同时将TIM1用作波特率发生器。 当定时器T0在方式3时,T1不能产生中断,但可以正常工作在方式0、1、2下,大多数情况下,T1将用作串口的波特率发生器。 1、定时器0工作在模式3框图&a…

第22集《大乘起信论》

请大家打开《讲义》第四十四页: 癸二、显示用 子一、正明用即真如 前面讲到一心的体大跟相大,讲到真如门;这以下讲到用,这当中分三科,先看子一、正明用即真如。这个体大跟相大它是真如门,是一个非因缘所…

Webpack: 核心配置结构

概述 Webpack 是一种 「配置」 驱动的构建工具,所以站在应用的角度,必须深入学习 Webpack 的各项配置规则,才能灵活应对各种构建需求。本文将作为小册应用系列的一个总结,汇总与应用配置相关的各项知识点,包括&#x…

高并发场景下的热点key问题探析与应对策略

目录 一、问题描述 二、发现机制 三、解决策略分析 (一)解决策略一:多级缓存策略 客户端本地缓存 代理节点本地缓存 (二)解决策略二:多副本策略 (三)解决策略三:热点…

XJTUSE-数据结构-homework1

任务 1 题目: 排序算法设计: 需要写Selection、Shell、Quicksort 和 Mergesort四种排序算法,书上讲述比较全面而且不需要进行额外的优化,下面我简要地按照自己的理解讲述。 Selection(选择排序)&#xff…

vtk学习笔记

tfun和gradtfun的区别 在体绘制(Volume Rendering)中,vtk.vtkPiecewiseFunction 通常用于定义两种类型的不透明度映射:标量不透明度映射和梯度不透明度映射。虽然这两个函数都使用 vtk.vtkPiecewiseFunction 来创建,但…

【孙子兵法】始计篇 - 原文注解笔记 ① ( 五事 - 道、天、地、将、法 )

文章目录 一、始计篇 原文注解笔记1、兵者,国之大事2、五事道天地将法 一、始计篇 原文注解笔记 1、兵者,国之大事 孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。 孙子说 : 战争 , 是国…

Git上传大文件时各种报错解决方案汇总

如何通过LFS向Github添加大文件 https://zhuanlan.zhihu.com/p/699750305(测试失败) Configuring Git Large File Storage - GitHub Docs HTTP 400 curl 22 The requested URL returned error: 400 send-pack: unexpected disconnect while reading si…

Django ORM 中过滤 JSON 数据

简介 首先,我们假设您有一个名为 MyModel 的 Django 模型,它包含一个 JSONField 类型的字段,名为 data。这个 data 字段可以存储各种 JSON 格式的数据。 过滤 JSON 字段中的键值对 您可以使用双下划线 __ 语法来访问 JSON 字段中的嵌套键值对。例如: # 过滤 data 字段中 &qu…

瓦努阿图将出台数字资产监管法案

亲爱的国民,你们好! “瓦努阿图即将在数字资产领域迎来突破性转型,全世界的加密爱好者准备好迎接一波激动人心的信仰充值。” 对,就是它!比特币定为国家法定货币,央行开发数字货币钱包,总统新…

关于Redisson分布式锁的用法

关于Redisson分布式锁的用法 Redisson是一个基于Redis的Java分布式对象和服务框架,它提供了多种分布式锁的实现,包括可重入锁、公平锁、读写锁等。Redisson实现分布式锁的核心原理主要依赖于Redis的数据结构和Redisson框架提供的高级功能。以下详细讲解…

深度学习11-20

1.神经元的个数对结果的影响: (http://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html) (1)神经元3个的时候 (2)神经元是10个的时候 神经元个数越多,可能会产生…