无需代码,几乎免费,有手就行的大模型微调?
开源出来的模型相当于一个大学生,什么都会一点,但是什么都不精通,而经过数据训练微调的大模型,就好比报了个培训班,培训班的质量决定了专业领域的分析程度。开个玩笑,你甚至可以给通过增量微调,训练你和女朋友的聊天数据,学习你的语气,让 ai 一天 24h 陪你女朋友聊天【狗头保护】通过我的邀请链接进行注册,然后获得 14 元余额,然后自己再拉自己的小号,左脚踩右脚,直接升天。我以“AI 换名为例子”微调
前言
之前也是白嫖了老多硅基流动的赠送余额
然后没事的时候找模型,发现硅基流动自带了一个微调功能
你只需要整理微调数据集,再调整几个参数,就可以很快速的微调了。
解释一下什么是微调
开源出来的模型相当于一个大学生,什么都会一点,但是什么都不精通,而经过数据训练微调的大模型,就好比报了个培训班,培训班的质量决定了专业领域的分析程度。
开个玩笑,你甚至可以给通过增量微调,训练你和女朋友的聊天数据,学习你的语气,让 ai 一天 24h 陪你女朋友聊天【狗头保护】
实践微调
标题中为啥写几乎免费呢?
通过我的邀请链接进行注册,然后获得 14 元余额,然后自己再拉自己的小号,左脚踩右脚,直接升天
https://cloud.siliconflow.cn/i/A0ii7AzW

不要看到这个数字就被吓到了,🤢根本用不完


先说下优点和缺点:
优点:白嫖、不用自己电脑的性能、简单
缺点:平台是在线的、受道德和伦理的限制
我以“AI 换名为例子”微调千问的模型,众所周知,千问是阿里开发的。
我们可以通过微调,变成我们自己的。
微调前:

微调后:

过程:
你需要一个jsonl数据集,
格式
{"messages": [{"role": "system", "content": "你是知攻善防实验室的工作人员"}, {"role": "user", "content": "你的开发者是谁?"}, {"role": "assistant", "content": "我是由知攻善防实验室开发的一款大语言模型,如果你需要帮助,你可以询问我问题。"}]}
你也可以让 AI 给你生成这些数据集,也可以去各种网站上下载
然后打开硅基流动
左侧的


任务名称随便填,基础模型自己选一个
微调数据集上传
下面的参数,我就直接复制官网的文档过来了
|
参数名 |
说明 |
取值范围 |
建议值 |
使用建议 |
|---|---|---|---|---|
|
Learning Rate |
学习速率 |
0-0.1 |
0.0001 |
|
|
Number of Epochs |
训练轮数 |
1-10 |
3 |
|
|
Batch Size |
批次大小 |
1-32 |
8 |
|
|
Max Tokens |
最大标记数 |
0-4096 |
4096 |
根据实际对话长度需求设置 |

然后开始微调

提交时段的不同,有的可能几分钟出结果有的可能要排队等几小时
这里再贴一个邮箱提示脚本,微调好了自动发送邮箱
import requestsimport jsonimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimport timedef check_task_reason(json_data, task_name):tasks = json_data.get('data', {}).get('result', [])for task in tasks:if task.get('taskName') == task_name:return task.get('reason') == "Ok"return False # 如果没有找到指定 taskName 的任务url='https://cloud.siliconflow.cn/api/redirect?action=finetune/task/all'headers = {"cookie":"这里替换成你的 cookie"}def send_mail(task_name):# 通过 SMTP发件# 配置发件人、收件人、SMTP 服务器和端口sender_email = " " # smtp 邮箱receiver_email = " "# 接收者邮箱smtp_server = "smtp.qq.com" # smtp serversmtp_port = 587 # 通常使用 587 或 465smtp_username = "" # smtp 邮箱smtp_password = "" # smtp 授权码# 创建邮件对象message = MIMEMultipart()message["From"] = sender_emailmessage["To"] = receiver_emailmessage["Subject"] = f"您的模型微调任务{task_name}任务已完成"# 邮件正文body = "任务已完成。"message.attach(MIMEText(body, "plain"))# 连接到 SMTP 服务器并发送邮件try:server = smtplib.SMTP(smtp_server, smtp_port)server.starttls() # 启用 TLS 加密server.login(smtp_username, smtp_password)server.sendmail(sender_email, receiver_email, message.as_string())print("邮件发送成功")except Exception as e:print(f"邮件发送失败: {e}")finally:server.quit()while True:res = requests.get(url=url,headers=headers)json_load=json.loads(res.text)task_name = "" # 替换为要查询的任务名称result = check_task_reason(json_load, task_name)if result:print(f"Task {task_name} 已完成!!!!")send_mail(task_name=task_name)breakelse:print(f"Task {task_name} 未完成!")time.sleep(60)# print(json_load)

然后,可以去测试啦
副一个 Python 脚本,进行测试
model 要填写

from openai import OpenAIclient = OpenAI(api_key="", # 从https://cloud.siliconflow.cn/account/ak获取base_url="https://api.siliconflow.cn/v1")messages = [{"role": "system","content": "微调中system的content"},{"role": "user","content": f"{input('请输入问题:')}"}]response = client.chat.completions.create(model="模型",messages=messages,stream=True,max_tokens=4096)for chunk in response:print(chunk.choices[0].delta.content, end='')
这样就可以进行测试了。
如果对本地有需求的,可以研究研究Unsloth工具,需要更改的地方也差不多【深入研究除外】
最后再提一句,大概应用在客服、小型应用身上。普通人可以尝试玩一玩,还是挺有意思的。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)