
大模型人工智能预训练微调LoRA本地部署NLP模型评测【免费下载链接】Chinese-LLaMA-Alpaca中文LLaMAAlpaca大语言模型本地CPU/GPU训练部署 (Chinese LLaMA Alpaca LLMs)项目地址https://gitcode.com/gh_mirrors/ch/Chinese-LLaMA-Alpaca点击查看免费下载本文以 Chinese-LLaMA-Alpaca 仓库data/目录下的两个核心数据文件为对象深入讲解中文指令精调数据alpaca_data_zh_51k.json与 CLM 预训练样例数据pt_sample_data.txt的文件格式、字段语义以及它们如何被 build_dataset.py、run_clm_pt_with_peft.py、run_clm_sft_with_peft.py 等训练脚本真实消费并结合 run_pt.sh 与 run_sft.sh 给出可直接复用的训练参数配置。读完本文你将掌握这两类数据文件的精确结构理解从原始数据到模型输入input_ids / labels的完整转换链路并能自行准备数据启动预训练与指令精调。数据在中文 LLaMA / Alpaca 训练流程中的位置根据项目 README.md 的说明整个模型的训练流程由三部分组成词表扩充 → 预训练CLM→ 指令精调SFT。data/目录中的两个文件分别对应后两个阶段数据文件训练阶段任务类型数据形态data/alpaca_data_zh_51k.json指令精调SFT有监督的指令理解JSON 数组每条含 instruction / input / output 三字段data/pt_sample_data.txt预训练PT无监督因果语言建模CLM纯文本文件逐行存放语料需要说明的是项目最终发布的中文 LLaMA / Alpaca 模型使用了更大规模的语料README 中标注基座模型通用语料 20G/120G、指令精调数据 2M~4.3M 条。data/目录提供的是公开可复现的指令数据集51k 条与预训练数据的格式样例便于研究者在本地小规模复现训练流程、验证脚本可用性再替换为自有数据。alpaca_data_zh_51k.json51k 条中文指令精调数据文件规模与来源data/alpaca_data_zh_51k.json是一份中文 Alpaca 指令数据集包含51k 条从 ChatGPTgpt-3.5-turbo爬取的指令数据来源说明见 data/README.md。文件为 JSON 数组格式实测约 18MB、25 万余行每条记录是一个对象包含三个字段instruction指令本身描述需要模型完成的任务input可选的上下文输入无输入时为空字符串output对应的标准回答作为监督标签。真实数据样例节选自文件本体从文件前几条记录可以直接观察字段语义。无输入型指令input为空模型仅依据指令作答{ instruction: 我们如何在日常生活中减少用水, input: , output: 1. 使用节水装置如节水淋浴喷头和水龙头。 \n2. 使用水箱或水桶收集家庭废水例如洗碗和洗浴。 \n3. 在社区中提高节水意识。 \n4. 检查水管和灌溉系统的漏水情况并及时修复它们。 \n... }带输入型指令input提供待处理的素材如待改写/编辑的文本{ instruction: 编辑文章使其更吸引读者。, input: 自主机器人是计算机控制的机器被编程执行特定任务而不需要任何人类输入。自主机器人在各个行业中被越来越广泛地应用从制造业到医疗保健再到安全。, output: 自主机器人是计算机控制的机器被编程执行特定任务而不需要任何人类输入从而实现了新的效率、精确度和可靠性水平。... }从文件内多条样例可看到数据覆盖日常生活建议、文本编辑改写、政策策略、科普解释如解释神经网络如何学习、代码调试、比喻句识别、函数求值等多种指令类型任务形态多样适合训练模型的通用指令理解能力。指令精调如何消费该 JSONbuild_dataset.py 源码剖析指令精调入口脚本 run_clm_sft_with_peft.py 扫描--dataset_dir下所有*.json文件并调用 build_dataset.py 中的build_instruction_dataset()见 run_clm_sft_with_peft.py#L310-L336。核心转换逻辑如下模板拼接build_dataset.py#L15-L19 定义了与 Stanford Alpaca 一致的英文提示模板Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: {instruction} ### Response:处理时build_dataset.py#L31-L35若input非空则先拼接到指令后instruction \n input将拼接后的指令填入模板的{instruction}位置作为sourcetarget output tokenizer.eos_token即在回答末尾追加 EOS 结束符。损失掩码只对回答计算损失tokenize 后build_dataset.py#L43-L50对每条样本生成input_ids torch.LongTensor(s t)[:max_seq_length] # 指令部分 回答部分截断到 max_seq_length labels torch.LongTensor([IGNORE_INDEX] * len(s) t)[:max_seq_length]其中IGNORE_INDEX -100build_dataset.py#L11即指令部分的标签全部置为 -100不参与损失计算只对回答部分计算交叉熵损失——这是指令精调区别于普通语言建模的关键设计。缓存与并发首次处理时用datasets.load_dataset(json, ...)读取 JSON随后.map(tokenization_func, batchedTrue, num_procpreprocessing_num_workers)批量 tokenize并remove_columns[instruction,input,output]删除原始文本列build_dataset.py#L71-L82处理结果save_to_disk()落盘下次训练直接load_from_disk()复用缓存避免重复 tokenizebuild_dataset.py#L63-L70。DataCollator 动态填充训练时使用DataCollatorForSupervisedDatasetbuild_dataset.py#L88-L104input_ids按 batch 内最长序列用tokenizer.pad_token_id右填充labels用-100填充保证填充位不参与损失attention_mask input_ids.ne(pad_token_id)。训练启动配置run_sft.sh 给出了指令精调的完整参数其中与数据强相关的包括参数值说明lr1e-4LoRA 微调学习率lora_rank/lora_alpha8/32LoRA 秩与缩放系数lora_trainableq_proj,v_proj,k_proj,o_proj,gate_proj,down_proj,up_proj参与 LoRA 的投影层modules_to_saveembed_tokens,lm_head词表扩充后需完整微调/保存的模块dataset_dir指向含*.json的数据目录本仓库可用data目录validation_split_percentage0.001训练集中划出 0.1% 作为验证集max_seq_length512指令回答拼接后的最大长度gradient_accumulation_steps8梯度累积步数warmup_ratio/weight_decay0.03/0学习率预热比例与权重衰减启动方式单机单卡示例torchrun --nnodes 1 --nproc_per_node 1 run_clm_sft_with_peft.py \ --deepspeed ds_zero2_no_offload.json \ --model_name_or_path ${pretrained_model} \ --tokenizer_name_or_path ${chinese_tokenizer_path} \ --dataset_dir path/to/sft/data/dir \ --validation_split_percentage 0.001 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --max_seq_length 512 \ --learning_rate 1e-4 \ --num_train_epochs 1 \ --do_train --do_eval \ --fp16 --gradient_checkpointing将--dataset_dir指向data/目录脚本会自动加载其中的alpaca_data_zh_51k.json进行精调训练。pt_sample_data.txtCLM 预训练样例数据data/pt_sample_data.txt是 CLM因果语言建模任务的预训练样例数据约 15MB、12 万余行格式为纯文本文件每行一个语料片段。预训练阶段不需要指令模板和标签模型的任务是依据上文预测下一个 token因此数据只需提供连续的文本流。从文件内容可以看到一个有意思的细节样例文本的行内容与alpaca_data_zh_51k.json中部分样本的instruction output拼接一致如首行我们如何在日常生活中减少用水1. 使用节水装置……即该项目用它来演示把结构化指令数据展开成纯文本后的预训练数据形态方便研究者理解两类数据的差异与转换关系。真实的大规模预训练语料通常为维基百科、新闻、书籍等无标注文本README 中标注的通用语料即为此类来源。预训练如何消费该 TXTrun_clm_pt_with_peft.py 源码剖析预训练入口 run_clm_pt_with_peft.py 扫描--dataset_dir下所有*.txt文件run_clm_pt_with_peft.py#L459-L460其处理链路与指令精调有本质区别1. 按文本加载使用datasets.load_dataset(text, data_filesdata_file)将 txt 的每一行作为一个样本加载run_clm_pt_with_peft.py#L474。2. Tokenize 与分块group_texts与指令精调逐条拼接不同预训练采用拼接全量文本后按 block_size 切块的策略transformers 官方 run_clm.py 的标准做法tokenize_function对每条text分词run_clm_pt_with_peft.py#L414-L416group_texts将全部 token 首尾相接丢弃不足一行的尾部残留再切成固定长度block_size的连续块并复制input_ids作为labelsrun_clm_pt_with_peft.py#L442-L456从而最大化利用上下文建模长程依赖每块同样先save_to_disk()缓存之后直接复用run_clm_pt_with_peft.py#L469-L496。3. 词表与模型匹配校验脚本内置了模型词表与中文 tokenizer 的合法性校验run_clm_pt_with_peft.py#L547-L554仅允许(32000, 32000)、(32000, 49953)、(49953, 49953)、(49954, 49954)等组合随后model.resize_token_embeddings(len(tokenizer))适配扩充后的中文词表。预训练启动配置run_pt.sh 给出了预训练参数与 SFT 的核心差异体现在学习率与分块长度参数预训练run_pt.sh指令精调run_sft.sh学习率lr2e-41e-4序列/分块长度block_size512max_seq_length512warmup_ratio0.050.03weight_decay0.010数据文件扩展名*.txt*.json验证集划分validation_split_percentage0.001同左 validation_file可选其余公共参数lora_rank8、lora_alpha32、lora_trainable七个投影层、modules_to_saveembed_tokens,lm_head、gradient_accumulation_steps8、fp16、gradient_checkpointing、deepspeed ds_zero2_no_offload.json两阶段保持一致。启动方式torchrun --nnodes 1 --nproc_per_node 1 run_clm_pt_with_peft.py \ --deepspeed ds_zero2_no_offload.json \ --model_name_or_path path/to/hf/llama/dir \ --tokenizer_name_or_path path/to/chinese/llama/tokenizer/dir \ --dataset_dir path/to/pt/data/dir \ --validation_split_percentage 0.001 \ --block_size 512 \ --learning_rate 2e-4 \ --num_train_epochs 1 \ --do_train --fp16 --gradient_checkpointing将--dataset_dir指向data/目录脚本会自动加载pt_sample_data.txt完成一次端到端的预训练流程验证。数据集使用注意事项与扩展建议结合 data/README.md 与训练脚本实际使用这两类数据时有几点需要留意数据规模定位alpaca_data_zh_51k.json51k 条适合脚本验证与中小规模精调实验发布模型使用的指令数据为 2M~4.3M 条量级见 README.md 模型表格追求更高效果时应扩充数据。同理pt_sample_data.txt仅为格式样例正式预训练需替换为大规模通用语料。目录约定SFT 脚本只扫描dataset_dir下*.json文件预训练脚本只扫描*.txt文件请按扩展名分目录存放避免混用导致加载失败。缓存机制两个脚本都会在首次处理后把 tokenize 结果缓存到磁盘data_cache_dir或数据文件同目录修改数据后建议清理缓存目录再重新训练。词表一致性精调脚本要求中文 Alpaca tokenizer 词表为 49954含 pad token预训练脚本则校验 32000/49953/49954 的合法组合切勿混用 LLaMA 与 Alpaca 词表README.md 亦明确提示。验证集策略validation_split_percentage0.001会在训练集中随机划出 0.1% 用于验证SFT 还可通过--validation_file指定独立验证 JSON 文件。总结data/目录的两个文件分别代表了中文 LLaMA / Alpaca 训练流水线中预训练与指令精调两类数据范式alpaca_data_zh_51k.json以instruction/input/output三字段承载有监督指令样本经 build_dataset.py 的模板拼接、-100 掩码与动态填充后喂入 SFTpt_sample_data.txt以纯文本承载无监督语料经 tokenize 与group_texts分块后喂入 CLM 预训练。理解这两条数据链路的差异掩码策略、分块方式、字段结构是复现训练脚本、迁移到自有数据的关键。相关训练配置与脚本均可直接在本仓库中查看与运行build_dataset.py、run_clm_pt_with_peft.py、run_clm_sft_with_peft.py、run_pt.sh、run_sft.sh。赞分享大模型人工智能预训练微调LoRA本地部署NLP模型评测【免费下载链接】Chinese-LLaMA-Alpaca中文LLaMAAlpaca大语言模型本地CPU/GPU训练部署 (Chinese LLaMA Alpaca LLMs)项目地址https://gitcode.com/gh_mirrors/ch/Chinese-LLaMA-Alpaca点击查看免费下载相关推荐LLaVA 训练数据完全指南指令微调数据集、预训练数据集与 GPT-4 Prompt 体系解析LLaVA 训练数据完全指南指令微调数据集、预训练数据集与 GPT 4 Prompt 体系解析 导读 本文围绕 LLaVA 官方数据说明文档 docs/Da人工智能大模型多模态微调预训练TimesFM 3.0是如何预训练的timesfm-3.0-pytorch背后预训练数据与训练流程全面拆解TimesFM 3.0是如何预训练的timesfm 3.0 pytorch背后预训练数据与训练流程全面拆解 TimesFM 3.0Time Series F人工智能基础模型PaddleNLP 预训练数据处理实战基于 OpenWebText2 制作 Llama 训练数据集PaddleNLP 预训练数据处理实战基于 OpenWebText2 制作 Llama 训练数据集 本文以 PaddleNLP 开源仓库中的 OpenWebT人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇rime-cloverpinyin终极配置指南打造高效智能拼音输入体验下一篇Windows安全组件重构技术深度解析模块化架构设计与实现原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考