首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

使用LLama-Factory的简易教程(Llama3微调案例+详细步骤)

  • 25-04-24 08:21
  • 2200
  • 9010
blog.csdn.net

引言:一套快速实现 Llama3 中文微调的教程

主要参考:胖虎遛二狗的 B 站教学视频《【大模型微调】使用Llama Factory实现中文llama3微调》


✅

笔者简介:Wang Linyong,西工大,2023级,计算机技术
研究方向:文本生成、大语言模型

笔者的实验环境:

版本
Ubuntu22.04.4
CPUIntel® Core™ i9-14900KF
Driver(驱动)535.171.04
GPU(一张)NVIDIA GeForce RTX 4090
CUDA12.4
Python3.10.14
Pytorch2.2.1

文章目录

  • 1. 配置 Hugging Face 的国内镜像网站
  • 2. 安装 LLaMA-Factory 框架
  • 3. 启动可视化窗口
  • 4. 数据集构建方式
  • 5. 模型微调的流程
  • 6. 参考资料
  • 7. 补充说明


1. 配置 Hugging Face 的国内镜像网站

● 如果不配置的话,我们在后续下载 15G 的 Llama3 的模型权重文件会很慢很慢。

● 第一步: 安装 huggingface_hub 包。这个包是 Hugging Face 提供的 Python 客户端库,用于与 Hugging Face Hub 进行交互。

pip install huggingface_hub
  • 1

● 第二步: 配置 Hugging Face API 的镜像端点,可以加快模型的下载速度,尤其是在中国大陆网络环境。

export HF_ENDPOINT=https://hf-mirror.com
  • 1

● 第三步: 使用 huggingface-cli 工具从 Hugging Face Hub 下载指定的模型文件。

huggingface-cli download --resume-download meta-llama/Llama-3.2-3B-Instruct --local-dir ./models/Qwen2.5-7B-Instruct/
  • 1

指令解释:

  1. --resume-download:启用断点续传。如果下载中断,下次继续下载时将从中断的位置开始,而不是重新下载。
  2. shenzhi-wang/Llama3-8B-Chinese-Chat:这是模型的仓库路径,表示从 Hugging Face 上下载 shenzhi-wang(作者) 发布的 Llama3-8B-Chinese-Chat 模型。
  3. --local-dir ./models/Llama3-8B-Chinese-Chat/:将下载的模型文件保存到本地的 ./models/Llama3-8B-Chinese-Chat/ 目录中。

结果展示(我安装在 ~/llama/models/Llama3-8B-Chinese-Chat 目录下的):

在这里插入图片描述


2. 安装 LLaMA-Factory 框架

● 【关于 LLaMA-Factory 的简介】LLaMA-Factory 是一个开源工具,旨在简化大型语言模型(LLMs)的微调和推理过程,特别是针对 LLaMA(Large Language Model Meta AI)系列模型。它提供了用户友好的接口和高效的工具,帮助研究者和开发者快速上手并定制化 LLM 模型,适用于各种自然语言处理任务。

● 首先进入 ~/llama 的同级目录,从 GitHub 克隆 LLaMA-Factory 仓库到本地。再进入该仓库目录。接着使用 pip 安装该项目作为一个可编辑的 Python 包,方便开发和修改。

cd ~/llama
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
  • 1
  • 2
  • 3
  • 4

3. 启动可视化窗口

● 启动命令:

cd LLaMA-Factory
llamafactory-cli webui
  • 1
  • 2

● UI界面执行步骤: 注意第 ③ 步要将模型路径换成你所下载的路径。

在这里插入图片描述

● 一个简单的调用案例:

问题:工作多长一段时间后没有签订劳动合同,公司的做法是违法的?我们应该怎么维权?
  • 1

在这里插入图片描述


4. 数据集构建方式

● 在 LLaMA-Factory/data/dataset_info.json 中添加自己的数据格式。比如下述名为 Laws_QA 的数据集(对应的文件是 Laws_QA.json )。其中,各字段的含义:

  1. instruction 告诉模型要解释法律条款。
  2. input 提供了具体的法律条款。
  3. output 是模型生成的解释。
"Laws_QA": {
  "file_name": "Laws_QA.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output",
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

● 然后需要把你的数据集对应的文件 Laws_QA.json 放入到 LLaMA-Factory/data/ 目录下。在这里 举一个数据样例:

{
  "instruction": "解释一下以下法律条款",
  "input": "《中华人民共和国合同法》第52条",
  "output": "《中华人民共和国合同法》第52条规定了合同无效的情形,包括一方以欺诈、胁迫的手段订立合同,损害国家利益;恶意串通,损害国家、集体或者第三人利益;以合法形式掩盖非法目的;损害社会公共利益;违反法律、行政法规的强制性规定。"
}
  • 1
  • 2
  • 3
  • 4
  • 5

● 这是我构造的数据样例: 我只构造了简单的 “问答对”,所以 input 字段为空。

在这里插入图片描述

● 这里我贴 20 个 Laws_QA.json 的样例,以供大家上手测试:

[
    {
        "instruction": "在法律中定金与订金的区别订金和定金哪个受",
        "input": "",
        "output": "“定金”是指当事人约定由一方向对方给付的,作为债权担保的一定数额的货币,它属于一种法律上的担保方式,目的在于促使债务人履行债务,保障债权人的债权得以实现。签合同时,对定金必需以书面形式进行约定,同时还应约定定金的数额和交付期限。给付定金一方如果不履行债务,无权要求另一方返还定金;接受定金的一方如果不履行债务,需向另一方双倍返还债务。债务人履行债务后,依照约定,定金应抵作价款或者收回。而“订金”目前我国法律没有明确规定,它不具备定金所具有的担保性质,可视为“预付款”,当合同不能履行时,除不可抗力外,应根据双方当事人的过错承担违约责任。"
    },
    {
        "instruction": "盗窃罪的犯罪客体是什么,盗窃罪的犯罪主体",
        "input": "",
        "output": "盗窃罪的客体要件本罪侵犯的客体是公私财物的所有权。侵犯的对象,是国家、集体或个人的财物,一般是指动产而言,但不动产上之附着物,可与不动产分离的,例如,田地上的农作物,山上的树木、建筑物上之门窗等,也可以成为本罪的对象。另外,能源如电力、煤气也可成为本罪的对象。盗窃罪侵犯的客体是公私财物的所有权。所有权包括占有、使用、收益、处分等权能。这里的所有权一般指合法的所有权,但有时也有例外情况。根据《最高人民法院关于审理盗窃案件具体应用法律若干问题的解释》(以下简称《解释》)的规定:“盗窃违禁品,按盗窃罪处理的,不计数额,根据情节轻重量刑。盗窃违禁品或犯罪分子不法占有的财物也构成盗窃罪。”"
    },
    {
        "instruction": "非法微整形机构构成非法经营罪吗",
        "input": "",
        "output": "符合要件就有可能。非法经营罪,是指未经许可经营专营、专卖物品或其他限制买卖的物品,买卖进出口许可证、进出口原产地证明以及其他法律、行政法规规定的经营许可证或者批准文件,以及从事其他非法经营活动,扰乱市场秩序,情节严重的行为。"
    },
    {
        "instruction": "入室持刀行凶伤人能不能判刑",
        "input": "",
        "output": "对于入室持刀伤人涉嫌故意伤害刑事犯罪,一经定罪,故意伤害他人身体的,处三年以下有期徒刑、拘役或者管制。犯前款罪,致人重伤的,处三年以上十年以下有期徒刑;致人死亡或者以特别残忍手段致人重伤造成严重残疾的,处十年以上有期徒刑、无期徒刑或者死刑。相关法律规定《中华人民共和国刑法》第二百三十四条故意伤害他人身体的,处三年以下有期徒刑、拘役或者管制。犯前款罪,致人重伤的,处三年以上十年以下有期徒刑;致人死亡或者以特别残忍手段致人重伤造成严重残疾的,处十年以上有期徒刑、无期徒刑或者死刑。本法另有规定的,依照规定。"
    },
    {
        "instruction": "我在辅道正常右转进主道,主道有两个车,后面的车占用对向车道超车,撞了是谁的责任",
        "input": "",
        "output": "发生交通事故,及时报警,有交警划分责任,出具交通事故认定书,根据责任的划分和损害情况协商解决,协商不成的必要时可以诉讼处理。"
    },
    {
        "instruction": "对交通事故责任认定书不服怎么办,交通事故损",
        "input": "",
        "output": "事故认定书下发后,如果你对认定不满意,可在接到认定书3日内到上一级公安机关复议。"
    },
    {
        "instruction": "喝完就又去唱歌回家时去了车祸去唱歌我同意了车是我开的",
        "input": "",
        "output": "需要结合具体情况判断,看是否酒驾和交通事故责任的划分,根据责任承担责任,赔偿损失。"
    },
    {
        "instruction": "二审一般要多久",
        "input": "",
        "output": "《民事诉讼法》对二审的审限作出了规定,一般会在立案一个月内开庭,在三个月内审结,但最长也可以超过三个月。《民事诉讼法》第一百七十六条人民法院审理对判决的上诉案件,应当在第二审立案之日起三个月内审结。有特殊情况需要延长的,由本院院长批准。人民法院审理对裁定的上诉案件,应当在第二审立案之日起三十日内作出终审裁定。"
    },
    {
        "instruction": "欠钱没有欠条有录音能起诉吗",
        "input": "",
        "output": "录音资料经过鉴定证实未经剪辑、拼凑、篡改和臆造,并有其他相关证据相印证的,可以认定其效力。"
    },
    {
        "instruction": "帮助别人套花呗违法吗",
        "input": "",
        "output": "帮别人“花呗套现”并且收取手续费,这是违法犯罪行为。"
    },
    {
        "instruction": "关于吃药死亡正常不通过法律手段如何追究申诉,解决赔偿",
        "input": "",
        "output": "不通过法律手段可以双方协商索赔。"
    },
    {
        "instruction": "关于吃药死亡正常不通过法律手段如何追究申诉,解决赔偿",
        "input": "",
        "output": "找医院协商,去卫*委投诉,"
    },
    {
        "instruction": "因工作被三处烫伤,伤为三级烫伤,三处都需要植皮,鉴定能达到几级?",
        "input": "",
        "output": "伤残等级需要去专业鉴定机构鉴定的,根据伤残等级申请工伤认定,要求工伤赔偿。"
    },
    {
        "instruction": "从合伙经营公司撤资,只给欠条有用吗",
        "input": "",
        "output": "欠条是债权凭证,欠条依据的基础法律关系有事实、不违法的,欠条有效。解除合伙关系,如果经合伙人清算,产生合法欠款,欠条有效。"
    },
    {
        "instruction": "我是事业单位在一九八八年工作中左手食指和中指、缺失一节、单位当时就给送进医院还派人护理、当时找单位",
        "input": "",
        "output": "已经三十年了,已经超过诉讼时效了,无法主张权利,"
    },
    {
        "instruction": "我是事业单位在一九八八年工作中左手食指和中指、缺失一节、单位当时就给送进医院还派人护理、当时找单位",
        "input": "",
        "output": "扯淡,是必备技能。"
    },
    {
        "instruction": "事故中我摩托车付次要责任,自行车付主要责任,我怎赔他医药费",
        "input": "",
        "output": "有交强险的,在交强险的1####元医疗费额度中,由机动车方全部支付,超过1####元部分,由双方按责任程度各自分担."
    },
    {
        "instruction": "事故中我摩托车付次要责任,自行车付主要责任,我怎赔他医药费",
        "input": "",
        "output": "医药费的30%左右你需要承担"
    },
    {
        "instruction": "车祸小脑出血昏迷了5天怎么办",
        "input": "",
        "output": "及时报警,有交警出具交通事故认定书,根据责任的划分和实际损害情况协商索赔,协商不成的可以诉讼处理。"
    },
    {
        "instruction": "哪些情况可以先行刑事拘留",
        "input": "",
        "output": "有下列情形之一的,可以先行拘留:(一)正在预备犯罪、实行犯罪或者在犯罪后即时被发觉的;(二)被害人或者在场亲眼看见的人指认他犯罪的;(三)在身边或者住处发现有犯罪证据的;(四)犯罪后企图自杀、逃跑或者在逃的;(五)有毁灭、伪造证据或者串供可能的;(六)不讲真实姓名、住址,身份不明的;(七)有流窜作案、多次作案、结伙作案重大嫌疑的。公安机关拘留人的时候,必须出示拘留证。"
    }
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102

5. 模型微调的流程

● 一图胜千言,按照下图的步骤设置就行:

  1. 微调中文模型就选 zh
  2. 选择模型名称
  3. 选择对应的模型参数路径
  4. 选择微调方法,一般是 LoRA
  5. 训练方式如果是有监督的微调,就选择 Supervised Fine-Tuning
  6. 选择对应的数据集(我这里选的就是之前我构造的 Laws_QA)
  7. 设置对应的超参数
  8. 开始训练

备注:量化等其他设置可自行抉择。

● 微调完后,当需要调用时,可参考本文前面写的 “3. 启动可视化窗口” 的内容。

在这里插入图片描述


6. 参考资料

[1] 胖虎遛二狗的 B 站教学视频《【大模型微调】使用Llama Factory实现中文llama3微调》,感谢Up主:胖虎遛二狗


7. 补充说明

● 若有写得不对、欠妥的地方,或有疑问,欢迎评论交流。


⭐️ ⭐️ 完稿于 2025年3月21日 14:36 教研室工位 💻

注:本文转载自blog.csdn.net的一支王同学的文章"https://blog.csdn.net/Wang_Dou_Dou_/article/details/146420354"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

110
AIGC
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top