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

响应式网站设计欣赏兰州网站开发公司

响应式网站设计欣赏,兰州网站开发公司,做网站的公司违约怎么处理,如何在招聘网站上做薪酬统计文章目录 从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑一 参考二 安装三 启动准备大模型文件 四 数据集(关键)!4.1 Alapaca格式4.2 sharegpt4.3 在 dataset_info.json 中注册4.4 官方 alpaca_zh_demo 例子 999条数据, 本机微调 5分…

文章目录

  • 从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑
    • 一 参考
    • 二 安装
    • 三 启动
      • 准备大模型文件
    • 四 数据集(关键)!
      • 4.1 Alapaca格式
      • 4.2 sharegpt
      • 4.3 在 dataset_info.json 中注册
      • 4.4 官方 alpaca_zh_demo 例子 999条数据, 本机微调 5分钟
      • 4.5 我的数据(关键)
        • 4.6 微调成功但是新模块问答都失败(巨坑)
        • 小数据微调参数!!!
        • 巨坑 数据集的内容,要差异够大!!!
        • TODO 扩展阅读,
    • 五 TODO LLaMaFactory 参数详解

从零安装 LLaMA-Factory 微调 Qwen 大模型成功及所有的坑

2025-1-22

老规矩,感谢所有参考文章的作者。少走很多弯路。

一 参考

【1】llama-factory使用教程

这里有各种依赖的版本。 似乎不用。直接安装,一键成功。

【2】学大模型必看!手把手带你从零微调大模型

微调 零一 大模型。

【3】【Qwen2微调实战】LLaMA-Factory框架对Qwen2-7B模型的微调实践

流程主参考文章

【4】LLaMA-Factory QuickStart
【5】官网 gitcode 镜像

【6】LLaMa-Factory部署及llamafactory-cli webui命令无法打开ui界面问题解决记录

私链转公链

二 安装

  • 前置条件

N卡 在 WSL2 Ubuntu22.04 环境下装 cuda toolkit 见这篇文章
WSL2 Ubuntu22.04 部署配置Xinference和所有的坑

  • 安装

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
> 参数‘--depth 1’, 只clone 最近一次 commit后的所有仓库。就是不需要之前的 commit 历史记录。或者下载代码zip 包,解压到本地。
unzip archive.zip -d /path/to/destinationconda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -e '.[torch,metrics]'Attempting uninstall: datasets
Found existing installation: datasets 3.2.0
Uninstalling datasets-3.2.0:
Successfully uninstalled datasets-3.2.0
Successfully installed accelerate-1.0.1 contourpy-1.3.1 cycler-0.12.1 datasets-3.1.0 docstring-parser-0.16 fire-0.7.0 fonttools-4.55.3 jieba-0.42.1 joblib-1.4.2 kiwisolver-1.4.8 llamafactory-0.9.2.dev0 matplotlib-3.10.0 nltk-3.9.1 peft-0.12.0 pyparsing-3.2.1 rouge-chinese-1.0.3 shtab-1.7.1 tokenizers-0.20.3 transformers-4.46.1 trl-0.9.6 tyro-0.8.14

一次成功。

  • 验证
import torch
torch.cuda.current_device()
torch.cuda.get_device_name(0)
torch.__version__>>> torch.cuda.get_device_name(0)
'NVIDIA GeForce RTX 4070 SUPER'
>>> torch.__version__
'2.5.1+cu124'
llamafactory-cli train -h(mypy310) rainbow@zy-pc-01:~/LLaMA-Factory-main$ llamafactory-cli train -h
usage: llamafactory-cli [-h] [--ray_run_name RAY_RUN_NAME] [--ray_num_workers RAY_NUM_WORKERS][--resources_per_worker RESOURCES_PER_WORKER][--placement_strategy {SPREAD,PACK,STRICT_SPREAD,STRICT_PACK}]options:-h, --help            show this help message and exit

三 启动

cd /home/***/LLaMA-Factory-main
llamafactory-cli webui

注意:在刚才安装的conda环境下启动

切换到 LLaMA-Factory-main 目录,因为需要识别数据集文件夹

准备大模型文件

下载略
因为我通过 Xinference 已经下载了, 只需要提供路径即可。

Qwen1.5-1.8B
/home/xinference/modelscope/hub/qwen/Qwen1___5-1___8B-Chat/

大模型路径, 设置ok。 就可以 chat。

  • 坑 wsl 下 Ubuntu 浏览器中文乱码
sudo apt-get remove firefox
sudo apt-get remove --purge firefox

卸载 Ubuntu的浏览器, 用 windows 的浏览器就ok。

LLama Factory 运行界面报错问题解决方法-DJT
export GRADIO_ROOT_PATH=xxx

这是解决云端部署中文乱码的。

  • 坑 Failed to create DBus proxy for org.a11y.Bus: Could not connect: No such file or directory

没解决, 是个warning, 貌似没有任何影响。后续微调成功,chat也成功。

四 数据集(关键)!

官网文档

llama_factory/data
这里默认是llama-factory中的data文件夹中的数据,在使用自己的数据集的时候,可以把数据集文件直接放到data文件夹下。
注意,无论是否放到data文件夹下,记得在dataset_info.json 中添加你要用的数据集信息,包括名称和路径,否则在页面中是加载不出来的。

必须! 如果有自定义数据, 必须在dataset_info.json中注册。

【04】LLaMA-Factory微调大模型——数据准备

一、数据格式
LLaMA-Factory支持 alpaca 格式和 sharegpt 格式的数据集。

4.1 Alapaca格式

[{"instruction": "人类指令(必填)","input": "人类输入(选填)","output": "模型回答(必填)","system": "系统提示词(选填)","history": [["第一轮指令(选填)", "第一轮回答(选填)"],["第二轮指令(选填)", "第二轮回答(选填)"]]}
]

官方自带例子
alpaca_zh_demo.json

[{"instruction": "识别并解释给定列表中的两个科学理论:细胞理论和日心说。","input": "","output": "细胞理论是生物科学的一个理论,它认为所有生命体都是由微小的基本单元——细胞所构成。这是生物学的一个基础理论,认为细胞是所有生物的基本结构和功能单位,所有的生物都是由一个或多个细胞组成,细胞只能通过细胞分裂产生新的细胞。这一理论由薛定谔、施瓦内和雪莱于1839年首次提出。\n\n日心说是指太阳是太阳系的中心,也就是说,行星围绕太阳旋转的理论。这个理论打破了传统的地心说观点,认为地球并不是宇宙的中心。日心说的提出者是尼古拉·哥白尼,他在16世纪初发表了他的著作《天体运行论》,阐述了太阳系行星围绕太阳运行的模型,为天文学的发展做出了巨大贡献。"},{"instruction": "输入三支篮球队的名称并生成一个适当的口号。","input": "输入:俄克拉荷马城雷霆队,芝加哥公牛队,布鲁克林网队。","output": "输出: \"雷霆,公牛和网队:各显神通,角逐群雄!\""}
]
  • instruction 和 input
    在指令监督微调时,instruction 列对应的内容会与 input 列对应的内容拼接后作为人类指令,
    即人类指令为 instruction\n input。
    而 output 列对应的内容为模型回答。

所以, 上面篮球队的例子中。 AI拿到的输入如下
“输入三支篮球队的名称并生成一个适当的口号。输入:俄克拉荷马城雷霆队,芝加哥公牛队,布鲁克林网队。”

  • system
    如果指定,system 对应的内容将被作为系统提示词。

  • history
    history 是由多个字符串二元组构成的列表,分别代表历史消息中每轮对话的指令和回答。

注意在指令监督微调时,历史消息中的回答内容也会被用于模型学习。

4.2 sharegpt

相比 alpaca 格式的数据集,sharegpt 格式支持更多的角色种类,
例如 human、gpt、observation、function 等等。它们构成一个对象列表呈现在 conversations 列中。
其中 human 和 observation 必须出现在奇数位置,gpt 和 function 必须出现在偶数位置。

sharegpt 格式如下:

[{"conversations": [{"from": "human","value": "人类指令"},{"from": "function_call","value": "工具参数"},{"from": "observation","value": "工具结果"},{"from": "gpt","value": "模型回答"}],"system": "系统提示词(选填)","tools": "工具描述(选填)"}
]

4.3 在 dataset_info.json 中注册

LLaMA-Factory/data 目录中的 dataset_info.json 文件中包含了所有可用的数据集。
如果使用自定义数据集,首先需要在 dataset_info.json 文件中添加数据集描述,

"数据集名称": {"hf_hub_url": "Hugging Face 的数据集仓库地址(若指定,则忽略 script_url 和 file_name)","ms_hub_url": "ModelScope 的数据集仓库地址(若指定,则忽略 script_url 和 file_name)","script_url": "包含数据加载脚本的本地文件夹名称(若指定,则忽略 file_name)","file_name": "该目录下数据集文件夹或文件的名称(若上述参数未指定,则此项必需)","formatting": "数据集格式(可选,默认:alpaca,可以为 alpaca 或 sharegpt)","ranking": "是否为偏好数据集(可选,默认:False)","subset": "数据集子集的名称(可选,默认:None)","split": "所使用的数据集切分(可选,默认:train)","folder": "Hugging Face 仓库的文件夹名称(可选,默认:None)","num_samples": "该数据集所使用的样本数量。(可选,默认:None)","columns(可选)": {"prompt": "数据集代表提示词的表头名称(默认:instruction)","query": "数据集代表请求的表头名称(默认:input)","response": "数据集代表回答的表头名称(默认:output)","history": "数据集代表历史对话的表头名称(默认:None)","messages": "数据集代表消息列表的表头名称(默认:conversations)","system": "数据集代表系统提示的表头名称(默认:None)","tools": "数据集代表工具描述的表头名称(默认:None)","images": "数据集代表图像输入的表头名称(默认:None)","chosen": "数据集代表更优回答的表头名称(默认:None)","rejected": "数据集代表更差回答的表头名称(默认:None)","kto_tag": "数据集代表 KTO 标签的表头名称(默认:None)"},"tags(可选,用于 sharegpt 格式)": {"role_tag": "消息中代表发送者身份的键名(默认:from)","content_tag": "消息中代表文本内容的键名(默认:value)","user_tag": "消息中代表用户的 role_tag(默认:human)","assistant_tag": "消息中代表助手的 role_tag(默认:gpt)","observation_tag": "消息中代表工具返回结果的 role_tag(默认:observation)","function_tag": "消息中代表工具调用的 role_tag(默认:function_call)","system_tag": "消息中代表系统提示的 role_tag(默认:system,会覆盖 system column)"}
}

对于alpaca 格式的数据,dataset_info.json 中的数据集注册描述应为:


"<your dataset name>": {"file_name": "<your dataset file.json>","columns": {"prompt": "instruction","query": "input","response": "output","system": "system","history": "history"}
}

如上面例子中 alpaca_zh_demo 在dataset_info.json中的注册信息如下。

{"identity": {"file_name": "identity.json"},"alpaca_en_demo": {"file_name": "alpaca_en_demo.json"},"alpaca_zh_demo": {"file_name": "alpaca_zh_demo.json"},
}

数据集注册方便, 大多数参数用默认就好,
最简注册,只需要“数据集名字”和“数据集文件的名字”

4.4 官方 alpaca_zh_demo 例子 999条数据, 本机微调 5分钟

输入三支篮球队的名称并生成一个适当的口号。
俄克拉荷马城雷霆队,芝加哥公牛队,布鲁克林网队

微调之前
俄克拉荷马城雷霆队口号:“Thunderbolts Rule the City!”
芝加哥公牛队口号:“Bulls on the Rise #Bulls #Rise”
布鲁克林网队口号:“The Nets are Here to Stay #Nets #Stay”

微调之后 5分钟 4070

“雷霆猛兽,公牛铁血,网球队员,勇往直前。”

4.5 我的数据(关键)

学校成绩


你是python程序员。编写一段完整的python 程序。要求
- 按照下面个格式生成 n个同学的数据, 并保存为 alpaca_zh_my_demo.json
- 学号从1 到 n, 默认998
- 姓名按中国人姓名随机生成,分男女
- 性别,男女各一半
- 考试时间, 默认10月
- 数学,物理,化学的成绩从1到100
-
[{"instruction": "红星小学学号1成绩","input": "","output": "姓名:张三,	性别:男, 学号:1, 考试时间:10月,	数学:49,	物理:9,	化学:13"},{"instruction": "红星小学学号2成绩","input": "","output": "姓名:李四,	性别:女, 学号:1, 考试时间:10月,	数学:69,	物理:59,	化学:93"}
]
以下是一个完整的Python程序,用于生成指定格式的JSON数据并保存为文件。程序会随机生成998个学生的成绩数据,姓名随机生成,男女各占一半,考试时间为10月,成绩随机生成。
Python复制略

文件复制到 data 目录

cp /mnt/e/Tec/LLama-Factory/alpaca_zh_my_demo.json /home/LLaMA-Factory-main/data/
cat /home/LLaMA-Factory-main/data/alpaca_zh_my_demo.json

注册

/home/LLaMA-Factory-main/data/dataset_info.json
{"identity": {"file_name": "identity.json"},"alpaca_en_demo": {"file_name": "alpaca_en_demo.json"},"alpaca_zh_demo": {"file_name": "alpaca_zh_demo.json"},"alpaca_zh_my_demo": {"file_name": "alpaca_zh_my_demo.json","columns": {"prompt": "instruction","query": "input","response": "output"}},
4.6 微调成功但是新模块问答都失败(巨坑)

微调数据
{"instruction": "红星小学张三10月考试成绩是多少?","input": "","output": "姓名:张三, 性别:男, 学号:1, 考试时间:10月, 数学:66, 物理:66, 化学:66"
}

当提问 “红星小学张三10月考试成绩是多少?”
期望回答, “姓名:张三, 性别:男, 学号:1, 考试时间:10月, 数学:66, 物理:66, 化学:66”

刚开始怀疑是数据量的问题。
结果数据 9条,199条,999条数据,都微调失败。

小数据微调参数!!!

基于LLaMA-Factory微调llama3成为一个角色扮演大模型

如果训练的文件小,训练配置调大一点:
学习率: 2e-3(默认5e-5) 训练论数:10.0(默认3.0) 最大样本数:1000(默认1W)

特别感谢,这位作者提供的微调参数。
如果有知道原因的同学,能告诉我的话就更好了,我来更新。

只把张三的一条数据,添加到官方例子 “alpaca_zh_demo.json”, 让数据集中的每条数据各不相同。
设置如上参数。微调成功。

在这里插入图片描述

巨坑 数据集的内容,要差异够大!!!

{"instruction": "红星小学张三10月考试成绩是多少?","input": "","output": "姓名:张三, 性别:男, 学号:1, 考试时间:10月, 数学:66, 物理:66, 化学:66"},{"instruction": "红星小学冯超10月考试成绩是多少?","input": "","output": "姓名:冯超, 性别:男, 学号:2, 考试时间:10月, 数学:47, 物理:63, 化学:69"},{"instruction": "红星小学孙波10月考试成绩是多少?","input": "","output": "姓名:孙波, 性别:男, 学号:3, 考试时间:10月, 数学:98, 物理:96, 化学:98"}

如果是10条类似的成绩数据,提示词只有姓名不同,同样的参数,微调后,问答还是失败。

如果是10个学生成绩这种的数据,因为提示词只有姓名的不同, 微调不出来!!!

TODO 扩展阅读,

魔搭社区数据集
从Llama Factory数据集看模型微调和训练

微调数据集的准备
自我认知数据集
特定任务数据集
通用任务数据集

理解怎样设置数据集。如果是学生成绩这种,怎样配置数据集?

五 TODO LLaMaFactory 参数详解

从0学习LLaMaFactory参数解释说明

Finetuning method
Checkpoint path
Quantization bit/Enable quantization (QLoRA).
Quantization method
Chat template
RoPE scaling
Booster

Train tab
Stage
Data dir
Dataset
Learning rate (学习率, 关键参数!!!)
Epochs
Maximum gradient norm
Max samples
Compute type
Cutoff length
Batch size
Gradient accumulation
Val size
LR scheduler

Data dir
Dataset

http://www.ds6.com.cn/news/17904.html

相关文章:

  • 电子商务网站建设的目的意义站外引流推广渠道
  • php动态网站开发总结搜索引擎营销的特点
  • 怎样做网站维护网络推广图片
  • 长春代做网站seo网络推广课程
  • 平安河南建设网站目前主流搜索引擎是哪种
  • 大学社团做网站百度外推排名
  • 网站建站素材seo推广软件怎样
  • 猪八戒网做网站如何付款南宁seo排名收费
  • 如何选择电商网站建设百度一下你就知道移动首页
  • 高端购物网站企业管理8大系统
  • 武汉平台公司常州seo外包
  • 个人网站注册名称seo咨询顾问
  • 做网站的图片Pc端和手机端的区别seo服务商排名
  • 企业网站网页设计苏州seo建站
  • 苏州高端网站建设设计公司哪家好网站推广的方法有哪些
  • wordpress 360收录推广优化关键词
  • 一个企业网站多少钱电商网站上信息资源的特点包括
  • 品牌形象推广搜索引擎优化是什么意思啊
  • 电影网站开发现状百度账号管家
  • 专业网站制作服务如何修改百度上面的门店号码
  • 廊坊中小企业网站制作百度竞价电话
  • 个人做网站和百家号赚钱营销策划公司经营范围
  • 做渔具网站说到很多seo人员都转行了
  • 做的最好的择日择时的网站seo教学
  • 网站后台程序和数据库开发互联网营销师报考条件
  • 做网站人家直接百度能搜到的推广恶意点击软件怎样使用
  • 太原注册公司网站网站推广的优化
  • 上海做网站公司品划网络app推广团队
  • h5响应式网站开发最近有新病毒出现吗
  • 网站制作工具 织梦广告外链平台