惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
About on SuperTechFans
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
G
Google Developers Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Latest news
Latest news
I
Intezer
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
月光博客
月光博客
T
Threatpost
博客园 - 【当耐特】
S
Schneier on Security
P
Privacy International News Feed
G
GRAHAM CLULEY
T
Tenable Blog
AWS News Blog
AWS News Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
博客园 - Franky
Engineering at Meta
Engineering at Meta
美团技术团队
S
Secure Thoughts
T
Troy Hunt's Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测 505游戏母公司现已收购《明末:渊虚之羽》IP | 机核 GCORES 基石 手动杂谈12|格斗游戏也能讲好故事 | 机核 GCORES I Love You Mr Snowball 我的向日葵小姐 会比GTA6先发售吗?最硬核的生存游戏《DAYZ》要推新DLC了 周记02:在2026遇到新怪谈 什么硬件,能让游戏Loading界面快速消失? | 机核 GCORES GadioSpec《百年风云世界杯》免费试听集 | 机核 GCORES 百年风云世界杯Vol.1丨足球崛起 | 机核 GCORES 100年前,一群人提前替我们经历了AI恐惧 | 机核 GCORES 《呼啸山庄》2026 ——一辆当代艺术的大卡车冲撞了我的大脑 手游《天穗之咲稻姬:日之香巡灵传》宣布将于7月27日停服 | 机核 GCORES 集结梦之队,征战世界杯,《最佳球会ONLINE》上线Steam 山水绝景随心拼 休闲建造游戏《千里山河录》Steam商店页公开 巫师帽、法袍、魔杖,为什么它们是影视、游戏里的法师必备三件套? 《无鞘信使》-第一章 复古风自动战斗肉鸽《终结之终结》Steam商店页面现已上线 电脑里有一款不破不立的MMO,录音笔VOL.688 | 机核 GCORES 《生化危机》30周年纪念周边发售,这次是真的“保护伞” 可靠耐用+AI全能,惠普战66 2025锐龙版深度体验 《时之书:无尽终章》关卡“大航海时代”全球首次公开 经典名作《乌龙派出所》改编经营模拟游戏《乌龙派出所~阿两的商店街物语~》正式宣布支持简体中文 明日开冲,解锁反套路三国互动影游《代号三国:龙起》即将上线 独立游戏《这是我的宝藏!》已发售~ 降低难度不是唯一解,无压力死亡也是好体验 Netflix官宣新片《普通人》:讲述韩国现代史上的权力风暴 《生化危机:安魂曲》全球销量现已突破700万份 《绝地鸭卫》PC版5月15日正式发售 亡妻回忆录?女性向情感叙事游戏《S-mail》现已正式发售 全新酷黑风格,酷睿Ultra 200S PLUS的高性价比搭档!七彩虹BATTLE-AX B860M-PLUS S WIFI7 V20 超级黑刃主板测评 胖狗 索尼发布了港台地区PS5产品价格调整公告,将于5月1日起实施 二次元怪猎+性感美女!《碧蓝幻想:无尽黄昏》开启Beta公测 这款怪谈类型中式恐怖游戏居然更新了?! 《百日战纪 -最终防卫学园-》改编漫画将于今年冬季开启连载 《如被附身,请致电我们》:匈牙利黑色幽默恐怖小说 《竹屿山房杂部卷五》(译文) 大树 超越引擎 摄影分享丨四月 碎片杂记vol.72 当老式FPS与老式动画技术碰撞出新时代的火花—《神探杰克鼠》 想做独游,如何避免首个项目就褒姒? 在线多人动作游戏《OCTOPinbs》将于5月12日上线Steam! 《酒鬼女神的酒诡》确定将于2026年登陆Steam 《CRYMELIGHT》将于11月5日(周四)正式发售!4月25日开始预购! 钢铁国度MKI部落Evolution,蛮兵部分 【钢铁国度】部落-Primal MK I,蛮兵部分 这是一个高中生用ai跑出来的作品,我自称他为物理神话 钢铁国度MKI部落Metamorphosis,蛮兵部分上 钢铁国度MKI部落Metamorphosis,蛮兵部分下 INDIE Live Expo于4月25日举办:首发9款新作,超200款独立游戏亮相 暗黑卡牌策略新作《魔忌:穷鼠啮狸》发布全新中文试玩版和发售预告片,4月30日正式上线在即 战锤40K长篇小说:变节者・苦难主宰(三)(全书完) 战锤40K长篇小说:变节者・苦难主宰(二) 战锤40K长篇小说:变节者・苦难主宰(一) 英语语言学习丨短语专题1:短语的特点 唯一的EVE战争 【少前同人】【M200】战术人形会梦见音乐会吗 【昏迷3】即将发售,前作主角悉数到场!“恶灵”宋老师化身可操控角色 业内人士:游戏公司“十有八九”使用生成式AI,包括卡普空 欢庆一周年:《光与影:33号远征队》全新纪念艺术图、超值折扣与免费更新同步上线 才刚刚开始呢 【抽奖】《星际卡车司机》推出免费大型更新,四折平史低折扣进行中 四人合作FPS游戏《佣兵猎手》抢先体验重大更新 1 现已上线 Raw Fury新作《深馅地牢 Deep Dish Dungeon》将于今秋加入 XGP 塔防幸存者游戏《魔怪来袭》推出首个 DLC 《饿狼传说:群狼之城》1周年纪念!新DLC“沃尔夫冈·克劳萨”今日参战 猫狗相伴 欢乐闯关 双人合作平台跳跃游戏《猫狗同行》上线Steam商店页 《同行:月球逃脱》(Together: Moon Escape)上线将于明日上线Steam
大模型全参数微调指南
瞻明 · 2025-05-10 · via 机核

《复刻DeepSeek「联网搜索」功能》文章最后,浅谈了自己对于大模型时代下生态位变化的理解:底层是“领域数据集+模型”,中间是“Prompt工程+ai组件”,最上面是“业务SOP”。

近两年一直在做Text-to-SQL相关工作,明显感觉单靠中间层的“Prompt工程”来解决问题已经遇到瓶颈,很难再有进一步突破,于是开始尝试从底层数据和模型侧切入,寻找新的可能性。

那为什么觉得存在天花板?比较朴素的逻辑:

现在市面上的大模型评测基准大多集中在自然科学、数学等通识领域,因此模型的能力也主要适配这些领域。如果要很好地应用在企业垂类场景,Prompt必不可少。但是Prompt本身存在两个限制:一个是长度限制,虽然RAG一定程度能缓解;另一个是,当你在Prompt里不断添加指令或示例来解决新的badcase时,很容易出现顾此失彼的情况,新问题解决了,老问题又复现(在《Prompt设计和迭代指南》这篇文章有分析原因)。

相比之下,微调模型能直接将领域内知识内化到模型参数中,对Prompt依赖自然就降低了。

刚开始研究的时候,网上搜到的大部分方案教程都是基于LoRA,优势在于小显存机器也能跑,但是第一次测试效果不理想,不禁产生疑问:到底是数据构建得不好?模型不够大?还是因为LoRA没有微调全部参数导致的?

第一个问题目前业内都没有很好的解决方案,第二又个受限于硬件成本,所以开始研究有没有可能低成本实现全参数微调。因此也就有了这篇文章,在这里分享给机核的朋友们。

一、流程概览

整体流程分为4步:

  • 在本地准备用于模型微调的数据集

  • 申请阿里云服务器并部署环境,包括:下载模型和上传数第一步准备好的据集

  • 微调大模型

  • 测试微调后的模型效果

二、数据构建

先在我们自己的电脑下载数据集,python代码:

from datasets import load_dataset dataset = load_dataset("simplescaling/s1K_tokenized", split="train") dataset.to_pandas().to_csv("./output_dataset.csv")

下载后的csv有很多列,我们只需要关注text列即可,参考该列的样式准备领域内数据集。

具体样式如下图,其中<im_start>和<im_end>是模型的特殊token,让模型知道什么时候开始什么时候结束。因为传统非推理模型只有system、user和assistant,所以注意这里的think和answer并没有<im_end>

这里多说一句,关于Prompt中要不要写system以及怎么写的问题,大家经常比较纠结。从这里的训练样本可以看出来,如果模型厂商自己在构建训练集时,system只是这么简单的一句,那么大家使用这些模型完全可以不需要写system。一般模型厂商也会给出相应参考建议。

最终我们构建出来的数据集只需要保留一列,表头为text,注意需要转成parquet格式。

准备好的数据集通过ssh上传到下一步申请的云服务器中,并且在第三步微调模型时,将sft.py文件中的`dataset = load_dataset(config.train_file_path)` 修改为 `dataset = load_dataset("parquet", data_files={"train": "/root/llm_project/s1k/s1-main/train/train-game-retention.parquet"})`,其中,第二个参数即云上数据集的实际路径。

三、环境准备

1、申请机器

  • 付费类型选择:抢占式实例

  • 地域选择非中国,比如:日本、韩国。因为抢占实例会存在被随时释放的风险,国外服务器释放机率非常小

  • 实例:架构选择GPU,规格选择4 * NVIDIA A10,显存4*24GB

  • 镜像:Ubuntu 24.04 64位

  • 系统盘默认ESSD云盘,容量填2048G

  • 带宽和安全组勾选上公网IP,计费模式按使用流量,带宽峰值可以设置50或100Mbps

  • 登陆凭证选择自定义密码,登录名默认root

这个配置大概30元/h,最大可以训练7B大小的模型。

如果大家担心不一定能一次性搞定,可以先申请小一点的资源跑0.5B模型微调流程,比如:1*NVIDIA A10显存的机器、512GB系统盘,其他不变。

2、安装环境

最开始执行 nvidia-smi 报错:

执行添加源、更新和安装nvidia驱动

  • sudo add-apt-repository ppa:graphics-drivers/ppa

  • apt update

  • apt install -y nvidia-driver-535 nvidia-utils-535

再次执行 nvidia-smi 可以看到CUDA Version

安装toolkit和配置环境变量:sudo apt install nvidia-cuda-toolkit

执行 nvcc --version 查看是否成功

增加到环境变量:

  • export PATH=/usr/lib/cuda/bin:$PATH

  • export LD_LIBRARY_PATH=/usr/lib/cuda/lib64:$LD_LIBRARY_PATH

  • source ~/.bashrc

安装miniconda管理环境,注意,执行sh安装命令时候尽量保持当前目录是空文件夹状态。

  • sh Miniconda3-latest-Linux-x86_64.sh

  • export PATH=/root/miniconda3/bin:$PATH

  • source ~/.bashrc

创建python虚拟环境和安装torch

  • conda create --name llm python=3.10 # 指定Python版本(如3.10)

  • conda activate llm

安装后,创建test_torch.py代码文件,代码内容:

import torch

print(torch.__version__) # 应输出2.5.1

print(torch.cuda.is_available()) # 应返回True

print(torch.version.cuda) # 可能显示12.1(由PyTorch编译版本决定)

执行 python test_torch.py 如下图显示表示安装成功

最后安装其他依赖包,分别执行:

  • pip install openai==1.56.1

  • pip install transformers==4.46.1

  • pip install wandb==0.17.3

  • pip install datasets==3.1.0

  • pip install accelerate==1.0.1

  • pip install vllm==0.6.4.post1

  • pip install ipykernel==6.28.0

  • pip install ipython==8.20.0

  • pip install gradio==4.44.0

  • pip install trl==0.12.0

  • pip install deepspeed==0.15.4

  • pip install huggingface-hub==0.29.3

注册wandb并执行 wandb login,记录project和entity,后续会更新在sft.py文件中。

四、模型训练

环境和数据集准备好后,我们开始微调模型。

首先,在/root目录下创建models文件夹,执行命令下载模型:huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local-dir /root/models/DeepSeek-R1-Distill-Qwen-7B

  • sft.py文件修改:1)模型路径;2)wandb的entity(project因为最开始命名就是s1,所以不需要修改,以实际为准);3)数据集路径

  • sft.sh文件修改:1)增加`export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True`, `export CUDA_LAUNCH_BLOCKING=1`, `export ACCELERATE_DISABLE_NO_SYNC=1 # 显式禁用no_sync`;2)修改base_mode路径;3)修改epochs参数;4)改为deepseepd,将梯度等参数计算放到CPU中。

  • 增加ds_config_stages3.json文件

{ "zero_optimization": { "stage": 3, "offload_optimizer": { "device": "cpu", "pin_memory": true }, "offload_param": { "device": "cpu", "pin_memory": true }, "overlap_comm": true, "contiguous_gradients": true, "sub_group_size": 1e9, "reduce_bucket_size": "auto", "stage3_prefetch_bucket_size": "auto", "stage3_param_persistence_threshold": "auto", "stage3_max_live_parameters": 1e9, "stage3_max_reuse_distance": 1e9, "stage3_gather_16bit_weights_on_model_save": true }, "bf16": { "enabled": true }, "train_micro_batch_size_per_gpu": "auto", "gradient_accumulation_steps": "auto" }

至此,数据、环境、基础模型和训练脚本都已经准备完成,在train文件夹同级目录下执行 sh train/sft.py 等待训练完成,预计4小时,可以在终端wandb的链接观察loss曲线。

另外,也可以另启一个ssh链接终端,执行 watch -n 1 nvidia-smi 观察显存使用率。

五、效果测试

微调后的模型会存储在/root/models文件夹中,可以下载到本地机器,也可以本地机器直连测试。下载到本地测试可能答案生成比较慢,这里介绍后一种方式。

创建Modelfile文件,文件中的内容:

FROM /root/models/s1-20250325_193807/

SYSTEM """

You are Qwen, created by Alibaba Cloud. You are a helpful assistant.

"""

注意,这里的/root/models/s1-20250325_193807 为微调后的模型路径。

终端执行:OLLAMA_LLM_LIBRARY=cuda ollama create r1-distill-qwen-7b-game-retention -f ./Modelfile

成功后,执行ollma list 显示成功(r1-distill-qwen-7b-game-retention为模型名称,可以自行修改)

配置ollama服务的环境变量,执行 vim /etc/systemd/system/ollama.service

文件内容:

[Unit]

Description=Ollama Service

After=network-online.target

[Service]

ExecStart=/usr/local/bin/ollama serve

User=ollama

Group=ollama

Restart=always

RestartSec=3

Environment="PATH=/root/miniconda3/envs/llm/bin:/root/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"

Environment="OLLAMA_HOST=0.0.0.0:11434"

Environment="OLLAMA_ORIGINS=*"

[Install]

WantedBy=default.target

重启ollama服务:

  • systemctl daemon-reload

  • systemctl restart ollama

这里的端口是11434,所以需要在阿里云上放开该端口,安全组增加规则:

在我们自己的电脑上安装chatbox,并做如下配置,ip修改为阿里云服务器的公网ip

这样就可以在chatbox上非常方便地测试微调后的效果了。

保存快照创建镜像

镜像即云服务器当前的复制体,包括环境、模型、代码、数据。

创建镜像后,下次再次申请实例时,不再需要从头开始配置环境,直接从自定义镜像创建即可。

创建镜像需要先创建快照:

基于快照创建镜像:

镜像创建成功后释放实例:

写在最后

关于基础模型的选择,大家可能好奇为什么我选择了DeepSeek蒸馏版,而不是和参考项目一样直接使用Qwen的Instruct版。

因为核心应用是场景Text-to-SQL,经过测试发现:

  • 像7B这类小尺寸模型的SQL能力本身不够好

  • think对于复杂逻辑处理非常重要

  • Instruct版本生成think效果不如蒸馏版

所以最终设计的方案是:基于蒸馏版微调后的7B模型先生成think,再结合4o或者V3的能力生成最终SQL。

另外,大家实操后可能会觉得全参数微调方案好像已经很成熟了(虽然超参调整需要一些经验,但也不是那么重要),为什么业内很少见到垂类场景真正落地?个人觉得核心瓶颈还是在于如何构建高质量数据集。最近我们在做一些探索,迭代了几个版本的pipeline,后续有靠谱结论第一时间分享给大家。

最近在玩空洞骑士,用一级骨钉硬刚吸虫之母,断断续续被蹂躏了3个小时。但最终过关的那一刻,对法术施放时机的预判、挥刀和回血机会的把握、小虫飞行轨迹的预判能力,都和刚开始截然不同。这其实与文章的全参数微调很像,可能初始参数中有很多为0,随着一步步迭代,这些参数逐渐被激活。当然也存在一些明显的差异:每次小骑士死亡对我来说都是惩罚,而战斗过程中成功回复血量都是奖励,但是这里的微调方案并没有涉及强化和奖励模块;另外流程上还做不到实时参数更新,这些都是后续值得进一步深入探索的地方。