首页/新闻资讯/正文详情

OpenChatKit 实战:用 OIG 数据微调 RedPajama-INCITE-Chat-3B 及 LoRA 低秩微调指南

发布时间:2026/9/25 15:42:31 来源:云帆数科 栏目:资讯中心
OpenChatKit 实战:用 OIG 数据微调 RedPajama-INCITE-Chat-3B 及 LoRA 低秩微调指南
人工智能大模型NLP模型训练模型推理服务【免费下载链接】OpenChatKit项目地址https://gitcode.com/gh_mirrors/op/OpenChatKit点击查看免费下载本指南以 OpenChatKit 仓库为依托完整演示如何基于 HuggingFace 上的togethercomputer/RedPajama-INCITE-Chat-3B-v1基座模型使用 OIG 数据集中一小片对话样本完成端到端微调从权重准备、数据下载到全参数分布式微调、Checkpoint 转回 HuggingFace 格式并加载推理再到仅需约 14GB 显存的 LoRA 低秩微调方案。读者读完可掌握一套可直接复制的开源 LLM 微调流水线并能将其适配到自己的数据上。整体流程概览本教程的核心链路如下四个步骤环环相扣准备权重运行pretrained/RedPajama-3B/prepare.py将 HuggingFace 上的基座模型下载并转换为仓库训练框架所需的逐层 Checkpoint准备微调数据运行data/OIG-chip2/prepare.sh下载 OIG 数据集中的unified_chip2.jsonl小样本对话数据执行微调按自身硬件调整参数后运行training/finetune_RedPajama-INCITE-Chat-3B-v1.sh启动分布式训练转换与推理用tools/convert_to_hf_gptneox.py将训练产物还原为 HuggingFace 格式再用transformers加载做对话推理显存受限时则可改用 LoRA 低秩微调脚本。其中权重准备与数据准备两步与后续的全参数微调、LoRA 微调完全通用可以一次性完成。前置条件克隆仓库与安装依赖首先克隆 OpenChatKit 仓库到本地git clone gitgithub.com:togethercomputer/OpenChatKit.git克隆完成后按照仓库根目录README.md与environment.yml中的说明安装依赖。该仓库的微调链路依赖 PyTorch、Transformers、DeepSpeed 相关生态以及 NCCL/GLOO 分布式通信组件训练脚本会通过dist_clm_train.py在多个 GPU 上并行拉起进程因此请确保环境具备支持 CUDA 的 GPU 集群全参数微调需要约 60GB 显存LoRA 方案约 14GB可用的 NCCL 后端脚本默认dp-backend ncclPython 环境中已安装torch、transformers、datasets、peft、bitsandbytes等库LoRA 脚本依赖。注environment.yml提供了 Conda 环境的依赖清单可按其创建环境后继续后续步骤。第一步准备预训练权重运行权重准备脚本python pretrained/RedPajama-3B/prepare.py从源码结构看pretrained/RedPajama-3B/prepare.py 是一个轻量入口它将model_name固定为togethercomputer/RedPajama-INCITE-Chat-3B-v1并调用上层prepare_pretrained函数完成实际的下载与转换工作。准备好的权重会保存在pretrained/RedPajama-3B/togethercomputer_RedPajama-INCITE-Chat-3B-v1底层做了什么逐层拆解 Checkpoint真正干重活的是 pretrained/prepare_pretrained.py 中的prepare_pretrained(save_path, model_name, offload_dirNone)函数其转换逻辑清晰可查加载并保存配置与分词器通过AutoConfig.from_pretrained与AutoTokenizer.from_pretrained下载模型配置和 tokenizer写入保存目录加载 fp16 模型以torch_dtypetorch.float16加载AutoModelForCausalLM若传入offload_dir则使用device_mapauto与offload_folder将权重先卸载到磁盘降低内存峰值逐模块落盘把 GPT-NeoX 结构拆成三类文件单独保存——pytorch_embs.ptembedding 层model.gpt_neox.embed_in.weightpytorch_{i}.pti从 0 到层数减 1每一个 transformer layer 的完整state_dictpytorch_lm_head.pt输出头与最终 LayerNormembed_out.weight、final_layer_norm.weight/bias。这种逐层拆分的存储格式正是后续流水线并行Pipeline Parallel微调的前提训练脚本按 GPU 将模型切成若干 stage每个 rank 只需加载自己负责的那几层从而把单机显存需求分摊到多卡上。该脚本同样支持命令行方式调用便于为其他 GPT-NeoX 系模型做转换python pretrained/prepare_pretrained.py --model-name EleutherAI/gpt-neox-125M --save-dir pretrained/files --offload-dir pretrained/files/offload第二步准备微调数据仓库提供了一个示例脚本用于下载 OIG 数据集中一小片对话数据unified_chip2.jsonlbash data/OIG-chip2/prepare.shdata/OIG-chip2/prepare.sh 的实现非常直观——它通过wget从 HuggingFace 的laion/OIG数据集仓库拉取unified_chip2.jsonl文件到脚本所在目录。数据集将保存为data/OIG-chip2/unified_chip2.jsonl该文件为 JSON Lines 格式每行是一个 JSON 对象包含对话文本字段。训练脚本中的任务加载器见training/tasks/data_loaders/data_utils.py会按行读取该文件并编码成训练样本。如果你想用自有数据微调只需要把数据整理成相同格式的.jsonl文件并修改训练脚本中的数据集路径即可。第三步全参数微调约 60GB 显存仓库提供了开箱即用的训练脚本运行前请根据自身硬件配置调整参数如学习率、batch_size、dataset_pathbash training/finetune_RedPajama-INCITE-Chat-3B-v1.sh训练脚本参数详解training/finetune_RedPajama-INCITE-Chat-3B-v1.sh 完整展示了这套分布式训练框架的典型配置核心参数如下参数示例值说明GLOO_SOCKET_IFNAME/NCCL_SOCKET_IFNAMElo分布式通信使用的网络接口多机训练时需改为实际网卡名MODEL_NAMEredpajama-incite-chat-3b-sample本次训练的工程名会体现在 Checkpoint 目录名中TOTAL_STEPS10可经FINETUNE_TOTAL_STEPS覆盖总训练步数CHECKPOINT_STEPS10每多少步保存一次 CheckpointCHECKPOINT_PATHmodel_ckpts/${MODEL_NAME}Checkpoint 保存目录DATASETSdata/OIG-chip2/unified_chip2.jsonl:1数据集路径冒号后数字表示该数据集重复epoch次数--model-namepretrained/RedPajama-3B/togethercomputer_RedPajama-INCITE-Chat-3B-v1上一步准备好的本地权重目录--tokenizer-name同上分词器路径--model-typegptneox模型架构类型--optimizeradam优化器--lr1e-5学习率--seq-length2048序列长度--batch-size32全局 batch size--micro-batch-size1每个 micro-batch 的样本数--gradient-accumulate-step1梯度累积步数--num-layers4每个 pipeline stage 负责的 transformer 层数--embedding-dim2560模型隐藏维度--world-size/--pipeline-group-size8总进程数 / 流水线并行组大小即使用 8 张 GPU--data-group-size1数据并行组大小--fp16开启使用混合精度训练--pp-modegpipe流水线并行模式--dp-modeallreduce数据并行梯度同步模式--dp-backendnccl数据并行通信后端脚本末尾会用并行启动 8 个dist_clm_train.py进程分别绑定--cuda-id 0到--cuda-id 7、--rank 0到--rank 7实现 8 卡流水线并行训练。训练入口与 Checkpoint 产出训练主程序为 training/dist_clm_train.py它通过pipeline_parallel.dist_pp_utils.get_pp_module构建流水线并行模型从 training/modules/dist_gpt_pp_module.py 的实现可以看到每个 rank 依据get_pipeline_parallel_rank() * args.num_layers计算自己负责的层区间_layer_begin到_layer_end只加载对应层的权重。分布式训练期间每checkpoint-steps步会为每个 pipeline stage 保存形如prank_{i}_checkpoint.pt的分片文件。微调完成后的模型保存在model_ckpts/rp-incite-chat-3b-finetuned/checkpoint_{steps}当前示例脚本按MODEL_NAMEredpajama-incite-chat-3b-sample与CHECKPOINT_STEPS10生成model_ckpts/redpajama-incite-chat-3b-sample/checkpoint_10/。硬件说明上述全参数微调大约需要 60GB 显存才能把模型整体装入 GPU训练数据还会进一步占用更多显存。如果硬件不满足请直接跳到文末的 LoRA 低秩微调方案约 14GB 显存。第四步转换为 HuggingFace 格式训练产出的是按 pipeline stage 拆分的 Checkpoint无法直接被transformers加载。需要先用转换脚本将其还原为 HuggingFace 格式python tools/convert_to_hf_gptneox.py --config-name togethercomputer/RedPajama-INCITE-Chat-3B-v1 --ckpt-path model_ckpts/redpajama-incite-chat-3b-sample/checkpoint_10/ --save-path model_ckpts/hf --n-stages 4 --n-layer-per-stage 8示例中请根据训练脚本把--ckpt-path、--n-stages、--n-layer-per-stage换成实际值。转换脚本的核心逻辑tools/convert_to_hf_gptneox.py 的参数解析位于main中参数默认值说明--config-nameEleutherAI/gpt-neox-20b用于加载配置与 tokenizer 的 HuggingFace 模型名--ckpt-path必填训练产出的 Checkpoint 目录--save-path必填转换后模型的保存目录--n-stages8pipeline 组大小即 Checkpoint 中的 stage 分片数--n-layer-per-stage6每个 stage 负责的层数--fp16关闭是否以 fp16 保存权重脚本会先断言n_stages * n_layer_per_stage len(model.gpt_neox.layers)即两个参数的乘积必须覆盖模型全部 transformer 层否则直接报错随后按load_decentralized_checkpoint的逻辑把每个prank_{i}_checkpoint.pt中的 embedding、逐层权重、final layer norm 与 lm_head 权重一一回填到新构建的空GPTNeoXForCausalLM模型中最后通过model.save_pretrainedconfig.save_pretrainedtokenizer.save_pretrained输出标准 HuggingFace 格式。从当前仓库的微调脚本看--pipeline-group-size 8、每 stage 4 层即8 × 4 32层恰好覆盖模型全部层数转换参数只需满足同样的乘积覆盖关系即可例如文档示例中的--n-stages 4 --n-layer-per-stage 84 × 8 32也能正确还原完整模型。第五步加载模型进行推理转换完成后即可用transformers直接加载进行对话式推理。仓库文档给出了完整示例tools/README.md亦有补充说明import torch import transformers from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer AutoTokenizer.from_pretrained(togethercomputer/RedPajama-INCITE-Chat-3B-v1) model AutoModelForCausalLM.from_pretrained(./model_ckpts/hf, torch_dtypetorch.float16) model model.to(cuda:0) prompt human: Who is Alan Turing?\nbot: inputs tokenizer(prompt, return_tensorspt).to(model.device) input_length inputs.input_ids.shape[1] outputs model.generate( **inputs, max_new_tokens128, do_sampleTrue, temperature0.7, top_p0.7, top_k50, return_dict_in_generateTrue ) token outputs.sequences[0, input_length:] output_str tokenizer.decode(token) print(output_str)这里的关键点包括对话提示词遵循 RedPajama-INCITE-Chat 的模板格式human: 用户输入\nbot: 模型回复生成参数max_new_tokens128控制回复长度do_sampleTrue配合temperature0.7、top_p0.7、top_k50做多样化的采样生成输出时通过input_length截掉输入前缀只解码模型新生成的部分。仓库中的 inference/bot.py 与 inference/conversation.py 还提供了带记忆的交互式对话机器人实现可作为把微调模型接入真实聊天场景的参考。显存受限时的替代方案LoRA 低秩微调约 14GB 显存如果单卡显存不足以支撑全参数微调约 60GB仓库提供了基于 PEFT 的 LoRA 低秩微调方案只需约 14GB 显存即可完成同样的任务。前置步骤克隆仓库、安装依赖、准备权重与数据集与全参数微调完全相同仅训练方式不同。说明原文档中该脚本路径写作/training/lora/redpajama-incite-chat-3b.py在当前仓库中实际位于training/lora/example/目录下请按实际路径运行。低秩微调脚本示例脚本位于 training/lora/example/redpajama-incite-chat-3b.py。请在脚本中按自有训练数据和偏好修改配置然后直接运行python training/lora/example/redpajama-incite-chat-3b.py其实现要点如下8-bit 量化加载依赖bitsandbytes以device_mapauto加载基座模型显著降低显存占用冻结基座遍历所有参数关闭requires_grad仅把一维参数如 LayerNorm转回 fp32 保证数值稳定性显存优化调用model.gradient_checkpointing_enable()与enable_input_require_grads()减少中间激活存储LoRA 配置config LoraConfig( r16, lora_alpha32, target_modules[query_key_value, xxx], lora_dropout0.05, biasnone, task_typeCAUSAL_LM )r16为低秩维度lora_alpha32为缩放系数lora_dropout0.05为 dropout 率训练时用Trainer配合DataCollatorForLanguageModeling(tokenizer, mlmFalse)做因果语言建模fp16True开启混合精度model.config.use_cache False关闭 KV 缓存以兼容梯度检查点推理前需重新开启 5.产出位置训练结束后适配器保存到outputs/目录本例为outputs/redpajama-incite-chat-3b-sample-lowrank。用 LoRA 适配器做推理LoRA 微调完成后运行推理脚本即可加载基座 适配器进行对话python training/lora/example/redpajama-incite-chat-3b_inference.pytraining/lora/example/redpajama-incite-chat-3b_inference.py 的核心逻辑为先用PeftConfig.from_pretrained读取适配器配置得到基座模型名以 8-bit 模式加载基座与 tokenizer再用PeftModel.from_pretrained挂载 LoRA 适配器最后按对话模板human: Hello!\nbot:生成回复。脚本内部通过torch.cuda.amp.autocast()以混合精度执行生成max_new_tokens50控制输出长度。小结至此你已完成了一条完整的开源 LLM 微调闭环权重准备 → 数据准备 → 分布式全参数微调 → Checkpoint 转 HF → 对话推理并掌握了显存受限场景下的LoRA 低秩微调替代路径。这套流水线的每一步都有可复用的脚本支撑权重转换pretrained/prepare_pretrained.py逐层拆分适配流水线并行微调入口training/dist_clm_train.pygpipe 流水线并行 fp16 混合精度Checkpoint 还原tools/convert_to_hf_gptneox.pyn_stages × n_layer_per_stage须覆盖全部层数低秩方案training/lora/example/redpajama-incite-chat-3b.py 及其 推理脚本。将 OIG 样本换成你自己的.jsonl对话数据调整学习率、batch size 与数据集路径即可把这套方案迁移到任意自有数据集上。赞分享人工智能大模型NLP模型训练模型推理服务【免费下载链接】OpenChatKit项目地址https://gitcode.com/gh_mirrors/op/OpenChatKit点击查看免费下载相关推荐使用 axolotl 对 RedPajama-INCITE-3B 进行 LoRA 微调归档示例配置全解析使用 axolotl 对 RedPajama INCITE 3B 进行 LoRA 微调归档示例配置全解析 RedPajama INCITE Chat 3B v人工智能大模型微调LoRA强化学习OpenChatKit训练实战基于OIG-43M数据集微调Pythia-Chat-Base-7B完整指南OpenChatKit训练实战基于OIG 43M数据集微调Pythia Chat Base 7B完整指南 一、引言大语言模型微调的痛点与解决方案 你是否正面人工智能大模型NLP模型训练模型推理服务AdaRank 实战指南基于模块分歧预测逐层秩实现更优的低秩微调LoRAAdaRank 实战指南基于模块分歧预测逐层秩实现更优的低秩微调LoRA AdaRank 是 Google Research 开源仓库中 adaptiv人工智能深度学习NLP计算机视觉强化学习上一篇XHS-Downloader 小红书批量下载工具完整指南一条命令批量获取高清图文与视频下一篇小红书图片打不开HEIC和WEBP一秒转JPEGXHS-Downloader三步搞定创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

ZoneDeck IPC协议设计详解:一行一条JSON的命名管道通信,桌面工作区管理器热重载速成指南
ZoneDeck IPC协议设计详解:一行一条JSON的命名管道通信,桌面工作区管理器热重载速成指南

ZoneDeck IPC协议设计详解:一行一条JSON的命名管道通信,桌面工作区管理器热重载速成指南 【免费下载链接】ZoneDeck The Ultimate Workspace Manager, Switch between work and life, seamlessly生活工作无缝切换,专业的桌面工作区管理助手 … · 2026/9/25 15:42:25

Rematch 测试指南:用 Jest 与 Testing Library 测试 Reducers、Effects 和 React 组件
Rematch 测试指南:用 Jest 与 Testing Library 测试 Reducers、Effects 和 React 组件

前端 【免费下载链接】rematch The Redux Framework 项目地址: https://gitcode.com/gh_mirrors/re/rematch 点击查看 免费下载 Rematch 作为构建在 Redux 之上的轻量框架,其 store 本质上就是一个标准的 Redux store,因此测试几乎可以“开箱… · 2026/9/25 15:42:25

RocketRide 节点 README Schema 完全指南:让每个节点的文档与 services.json 元数据严格对齐
RocketRide 节点 README Schema 完全指南:让每个节点的文档与 services.json 元数据严格对齐

【免费下载链接】rocketride-server High-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS C… · 2026/9/25 15:42:25

Higgsfield实战解析:从扩散模型到角色一致性的AI视频生成
Higgsfield实战解析:从扩散模型到角色一致性的AI视频生成

1. 项目概述:Higgsfield 到底在做什么说实话,第一次听说 Higgsfield 这个名字,是在一个做 AI 视频的朋友群里。当时有人丢了一条生成出来的视频片段,画面是一辆车在雨夜里穿过霓虹灯街区,镜头稳定、光影统一&#xff0… · 2026/9/25 16:06:25

企业级RAG知识库实战:WeKnora部署调优与自进化机制全解析
企业级RAG知识库实战:WeKnora部署调优与自进化机制全解析

1. 为什么我盯上了 WeKnora:RAG 落地的那些坑,它全踩了一遍最近大半年,我一直在帮团队搭企业知识库,市面上叫得上名字的方案基本摸了一遍。说实话,RAG(Retrieval Augmented Generation,检索增强… · 2026/9/25 16:06:19

highlight.io Environments 完全指南:为会话、错误与告警打上环境标签
highlight.io Environments 完全指南:为会话、错误与告警打上环境标签

可观测性后端 【免费下载链接】highlight highlight.io: The open source, full-stack monitoring platform. Error monitoring, session replay, logging, distributed tracing, and more. 项目地址: https://gitcode.com/gh_mirrors/hi/highlight 点击查看 免费下… · 2026/9/25 16:06:13

LeetCode两数之和C语言解法:手写哈希表与暴力破解完整拆解
LeetCode两数之和C语言解法:手写哈希表与暴力破解完整拆解

简介:这是一份面向C语言初学者的LeetCode经典入门题“两数之和”的完整Visual Studio工程源码包。资源演示了如何在给定整数数组中查找和为目标值的两个数并返回下标,代码遵循题目约束,示例输入[2,7,11,15]与目标值9会正确输出[0,1]&#xff… · 2026/9/25 16:05:23

PowerToys FancyZones:Windows桌面空间编程指南
PowerToys FancyZones:Windows桌面空间编程指南

1. 为什么你每天都在“拖窗口”却从没真正掌控过桌面?我第一次在客户现场看到有人用鼠标把Excel表格、微信聊天框、浏览器调试面板、Notepad日志窗口,像拼乐高一样硬生生拖到屏幕四个角,再手动调整大小——整整花了7分钟。他擦了擦汗说&#… · 2026/9/25 16:04:52

OpenClaw 飞书自建应用配置全攻略:TaoToken 统一 Key 接入与插件骨架
OpenClaw 飞书自建应用配置全攻略:TaoToken 统一 Key 接入与插件骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 16:04:46

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码