聊聊SFT微调训练——如何训练更强更低成本的推理大模型

概述

Sky-T1-32B-Preview 是伯克利 Sky Computing Lab推出的推理模型,在常见的推理和编码基准测试中,其表现可与 o1-preview 媲美。值得注意的是,Sky-T1-32B-Preview 的训练成本不到 450 美元,展示了以经济高效的方式复制高水平推理能力的可能性。相关信息如下:

代码库:https://github.com/novasky-ai/skyThought
模型权重:https://huggingface.co/novasky-ai/sky-t1-32b-preview
技术报告:https://arxiv.org/abs/2024xxxx

img

公开了所有细节(包括数据、代码、模型权重),以便社区能够轻松复制和改进我们的成果:

  • 基础设施:用于构建数据、训练和评估模型的完整代码库。
  • 数据:用于训练 Sky-T1-32B-Preview 的 17,000 条数据。
  • 技术细节:我们的技术报告以及训练日志[1]。

数据工程

为了生成训练数据,使用了QwQ-32B-Preview,这是一个与o1-preview推理能力相当的开源模型。我们管理混合数据,以涵盖需要推理的不同领域,并采用拒绝抽样过程来提高数据质量。然后,受Still-2的启发,使用gpt-40-mini 将QwQ跟踪重写为格式良好的版本,以提高数据质量并简化解析。发现解析的便利性对推理模型有利——它们被训练成以特定格式响应,而结果通常很难解析。例如,在APPs数据集上,如果不重新格式化,只能假设代码是在最后一个代码块中编写的,QwQ只能达到~25%的准确率。然而,有时可以在中间编写代码,在重新格式化后,准确性提高到90%以上。官方文档:readme[2]。

最终数据包含:

  1. 来自apps和taco的5k coding数据集
  2. 来自Numina MATH数据集的AIME、math和Olympiads子集的10k math数据集
  3. 来自Still-2的1k science 和puzzle(谜题) 数据集
step 1 从NUMINA标记数学难度

用于训练的已标记NUMINA数据集:https://huggingface.co/datasets/NovaSky-AI/labeled_numina_difficulty[3]。

在一个文件中放入一个或多个OPENAI_API_KEY,例如keys.txt(每行一个)。如果有多个键,脚本将以循环方式使用它们以加快生成速度。如下使用GPT-4o-mini标记math难度:

# keys.txt:openai_api_key的密钥集
python scripts/label_math_difficulty.py --source [amc_aime, math, olympiads] --keys keys.txt

预期的输出是labeled_source_0_1 .json;huggingface已提供相关的下载:labeled_numina_difficulty[4],预览如下:

img

step 2 数据推理

在多个数据集(apps、taco、numina)数据上,基于QwQ-32B-Preview模型做推理,并保存模型的推理结果;脚本如下:

python -m skythought_evals.inference_and_check --task apps --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split test --difficulty all --result-dir $SKYT_HOME/data --inference

python -m skythought_evals.inference_and_check --task taco --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split train --difficulty MEDIUM--result-dir $SKYT_HOME/data --inference

python -m skythought_evals.inference_and_check --task taco --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split test --difficulty all --result-dir $SKYT_HOME/data --inference

python -m skythought_evals.inference_and_check --task numina --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split train --source math --filter-difficulty --result-dir $SKYT_HOME/data --inference

python -m skythought_evals.inference_and_check --task numina --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split train --source amc_aime --filter-difficulty --result-dir $SKYT_HOME/data --inference

python -m skythought_evals.inference_and_check --task numina --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split train --source olympiads --end 20000 --filter-difficulty --result-dir $SKYT_HOME/data --inference
step 3 格式化 response

获得训练数据列表文件后,将其转换为统一格式(注:此使用gpt - 40 -mini重写)。输出很长,我们的预览数据需要大约100美元)。

python scripts/convert_format.py --input_dir $SKYT_HOME/data --keys keys.txt
step 4 对格式化的数据做拒绝采样
python -m skythought_evals.inference_and_check --task apps --model Qwen/QwQ-32B-Preview --tp 8 --max_tokens 16384 --split test --subset all --result-dir $SKYT_HOME/data --check

其他数据集类似。

转换为ShareGPT格式

获取多个转换后的文件后,将它们合并在一起,转换为ShareGPT格式进行训练。

python scripts/convert_to_data.py --input_dir $SKYT_HOME/data --output $SKYT_HOME/data/train_data.json
训练数据

最终的数据预览如下:

img

Prompt提示词为:

Your role as an assistant involves thoroughly exploring questions through a systematic long thinking process before providing the final precise and accurate solutions. This requires engaging in a comprehensive cycle of analysis, summarizing, exploration, reassessment, reflection, backtracing, and iteration to develop well-considered thinking process. Please structure your response into two main sections: Thought and Solution. In the Thought section, detail your reasoning process using the specified format: <|begin_of_thought|> {thought with steps separated with ' '} <|end_of_thought|> Each step should include detailed considerations such as analisying questions, summarizing relevant findings, brainstorming new ideas, verifying the accuracy of the current steps, refining any errors, and revisiting previous steps. In the Solution section, based on various attempts, explorations, and reflections from the Thought section, systematically present the final solution that you deem correct. The solution should remain a logical, accurate, concise expression style and detail necessary step needed to reach the conclusion, formatted as follows: <|begin_of_solution|> {final formatted, precise, and clear solution} <|end_of_solution|> Now, try to solve the following question through the above guidelines:

模型训练

使用整理的数据对 Qwen2.5-32B-Instruct 进行微调,这是一款开源但缺乏推理能力的模型。模型训练进行了 3 个周期,学习率为 1e-5,批次大小为 96。使用 DeepSpeed Zero-3 offload,在 8 个 H100 上训练 19 小时完成(根据 Lambda Cloud 的定价,约 450 美元)。使用 Llama-Factory 进行训练,按照Llama-Factory的训练流程即可。

  1. 在LLaMA-Factory/data/dataset_info.json中Sky-T1字典的file_name字段中添加tools目录生成的或提供的数据路径。
  2. 在8 H100 gpu上从32B模型进行训练。感兴趣可以参考examples/train_full/qwen2_full_sft.yaml[5]中的详细设置。
  3. 训练脚本:FORCE_TORCHRUN=1 NNODES=1 NODE_RANK=0 MASTER_PORT=29501 llamafactory-cli train examples/train_full/qwen2_full_sft.yaml
训练小结

模型大小很重要。 最初在较小的模型(7B和14B)上进行了训练实验,但只观察到适度的改进。例如,在apps数据集上训练Qwen2.5-14B-Coder-Instruct会使LiveCodeBench的性能从42.6%略微提高到46.3%。然而,在手动检查较小模型(小于32B的模型)的输出时,发现它们经常生成重复的内容,限制了它们的有效性。

数据混合很重要。 最初使用Numina数据集(STILL-2提供)中的3-4K数学问题训练32B模型,将AIME24的准确率从16.7%显著提高到43.3%。然而,当我们将app数据集生成的编码数据纳入训练过程时,AIME24的准确率下降到36.7%。猜测这种下降是由于数学和编码任务所需的不同推理方法。

总结

其实从整个设计流程来说,主要是优质的SFT数据+System Prompt,且并没有用到什么RL算法(比如RLHF、PPO、GRPO),就是纯SFT微调,关键在于Prompt与训练数据的优质。总的来说,也是一个很好的借鉴。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭优快云大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值