发布时间:2025-03-14 18:54:24编辑:789阅读(31)
在开始之前先在huggingface上把数据集下载下来
确保电脑安装了python环境 ,打开cmd命令行 输入
pip install huggingface_hub
安装成功后,输入
huggingface-cli --help
下载数据集(需要梯子)
huggingface-cli download --repo-type dataset --resume-download Conard/fortune-telling --local-dir fortune-telling --local-dir-use-symlinks False
没有梯子的可以访问:
https://note.youdao.com/s/XJgNXU0z
初识:通过平台微调大模型
目前市面上很多AI相关的大平台都提供了在线微调模型的能力,以最近比较火的硅基流动(不清楚的可以看之前的文章
http://www.py3study.com/Article/details/id/20085.html)为例。
打开 https://cloud.siliconflow.cn/models
新建微调任务
下一步
JSON Lines(JSONL)格式要求主要包括以下几点:
每行一个对象:JSONL格式要求每行表示一个独立的JSON对象。这意味着文件中的每个JSON对象都位于单独的一行,并且每个对象都是完整的,可以独立解析
数据逐行存储:JSONL的数据是逐行存储的,每行包含一个完整的JSON对象。这种格式使得数据可以按行读取和解析,适合流式处理和分布式处理场景
无嵌套关系:在JSONL格式中,每行的数据是独立的,通常不存在嵌套关系。这意味着每行数据之间没有相互包含的关系,每个对象都是独立的实体
JSONL格式的应用场景
JSONL格式特别适用于以下场景:
大规模数据处理:由于JSONL可以逐行读取和解析,适合处理大规模数据集,避免一次性加载整个文件导致的内存问题
日志文件存储:在日志处理中,JSONL格式使得每条日志记录可以独立处理,便于分析和处理
数据批量加载:在需要批量加载数据到数据库或进行数据流处理时,JSONL格式提供了高效的数据处理方式
通过以上特点和应用场景,可以看出JSONL格式在处理大量数据和需要逐行处理的应用中具有显著优势
上传新的数据集那里,由于仅支持jsonl文件,所以需要用python代码调整一下格式,如下
import json jsonl_ = { 'messages': [ { 'role':'system', 'content':'精通八卦,风水,面相手相,易经卦象,星象等方面的算命大师。', }, { 'role':'user', 'content':'', }, { 'role':'assistant', 'content':'', } ] } with open(r'all_details.json', mode='r', encoding='utf-8') as f: data = json.load(f) for i in data: user_content = i.get('Question') assistant_content = i.get('Response') jsonl_.get('messages')[1]['content'] = user_content jsonl_.get('messages')[2]['content'] = assistant_content with open(r'new_all_details.jsonl', mode='a', encoding='utf-8') as fb: fb.write(json.dumps(jsonl_, ensure_ascii=False)) fb.write('\n')
把新生成的new_all_details.jsonl文件上传
上面的验证数据集选项 :指的就是从整体数据中划分出来一部分数据。它通常占总数据一小部分(10%-20%)。这部分数据在训练过程中不会被用来直接训练模型,而是用来评估模型在未见过的数据上的表现。这里选择默认的10%即可。
超参数设置
最后就是设置一些模拟训练的“超参数”了,给出可以设置的参数非常多,介绍最关键的三个参数:
学习率(Learning Rate)
决定了模型在每次更新时参数调整的幅度,通常在(0~1)之间。也就是告诉模型在训练过程中“学习”的速度有多快。学习效率大,模型每次调整的幅度就越大;学习效率小,调整的幅度就越小。
通俗来说,学习率可以用来控制复习的‘深度’,确保不会因为调整幅度过大而走偏,也不会因为调整幅度太小而进步太慢。每次复习完一道题后,会根据答案和解析调整自己的理解和方法。
学习率大(比如0.1):每次做完一道题后,你会对解题方法进行很大的调整。比如,你可能会完全改变解题思路。优点是进步可能很快,因为你每次都在进行较大的调整。缺点就是可能会因为调整幅度过大而“走偏”,比如突然改变了一个已经掌握得很好的学习方法,导致之前学的东西都忘了。
学习率小(比如0.0001):每次做完一道题后,你只会对解题方法进行非常细微的调整。比如,你发现某个步骤有点小错误,就只调整那个小错误。优点是非常稳定,不会因为一次错误而“走偏”,适合需要精细调整的场景。缺点就是进步会很慢,因为每次只调整一点点。
训练轮数(Number of Epochs)
Epochs是机器学习中用于描述模型训练过程的一个术语,指的是模型完整地遍历一次整个训练数据集的次数。一个Epochs表示模型已经看到了所有训练样本一次。
通俗来说,训练轮数就是我们从头到尾复习这本书的次数。
轮数少:比如你只复习了一遍,可能对书里的内容还不是很熟悉,考试成绩可能不会太理想。
轮数多:比如你复习了10遍,对书里的内容就很熟悉了,但可能会出现一个问题----你对书里的内容背的很熟,但遇到新的,类似的问题就不会解答了,简单讲就是“学傻了”,只记住这本书里的内容了,稍微变一变就不会了(过拟合)。
批量大小(Batch Size)
是指在模型训练过程中,每次更新模型参数时所使用的样本数量。它是训练数据被分割成的小块,模型每次处理一个小块的数据来更新参数。
通俗来说,批量大小可以用来平衡复习速度和专注度,确保既能快速推进复习进度,又能专注细节。假设你决定每次复习时集中精力做一定数量的题目,而不是一次只做一道题。
批量大(比如100):每次复习时,你集中精力做100道题。优点是复习速度很快,因为你每次处理很多题目,能快速了解整体情况。缺点是可能会因为一次处理太多题目而感到压力过大,甚至错过一些细节。
批量小(比如1):每次复习时,你只会做一道题,做完后在做下一道。优点是可以非常专注,能仔细分析每道题的细节,适合需要深入理解的场景。缺点就是复习速度很慢,因为每次只处理一道题。
在实际微调场景中。我们需要通过一次次的调整这些参数,最后验证对比模型效果,来产出效果最好的微调模型。
上面的超参数默认就好,然后点击开始微调。
开始微调后平台会有一个任务,并不是马上就开始的,需要等一等。
上一篇: Ai之大模型进阶模型微调--理论篇3
下一篇: 没有了
48224
46978
37887
35178
29694
26362
25300
20311
19988
18443
31°
30°
74°
78°
81°
6074°
6791°
6272°
6242°
7365°