2026/2/18 5:03:49
网站建设
项目流程
asp网站怎么做,网站上怎样做轮播图,贷款app定制开发,c语言程序设计网站一、先明确#xff1a;自定义数据集的核心要求Unsloth 微调对数据集的要求很简单#xff1a;格式#xff1a;优先用 CSV/JSON#xff08;新手最易操作#xff09;#xff0c;也支持 JSONL/TXT#xff1b;内容#xff1a;至少包含「输入#xff08;问题 / 指令#xf…一、先明确自定义数据集的核心要求Unsloth 微调对数据集的要求很简单格式优先用CSV/JSON新手最易操作也支持 JSONL/TXT内容至少包含「输入问题 / 指令」和「输出回答 / 结果」两列 / 字段示例结构以 CSV 为例questionanswer介绍一下 UnslothUnsloth 是一款低显存的 LLM 微调框架...如何降低 LLM 微调显存可以使用 Unsloth 的 4bit 量化 LoRA 优化...二、自定义数据集加载完整可运行代码下面以本地 CSV 文件为例最通用同时提供 JSON 格式的加载方式你按需选择步骤 1准备本地数据集文件先在本地创建一个custom_data.csv文件用 Excel / 记事本都能做内容如下参考格式question,answer 介绍一下Unsloth,Unsloth是一款专为LLM微调设计的开源框架核心优势是低显存、高速度适配消费级GPU。 Unsloth支持哪些模型,Unsloth支持Llama 2/3、Mistral、Phi-3、Gemma等主流开源LLM。 如何用Unsloth微调7B模型,首先安装Unsloth加载4bit量化模型配置LoRA用自定义数据集训练即可。步骤 2加载并预处理自定义数据集核心代码from unsloth import FastLanguageModel import torch from trl import SFTTrainer from transformers import TrainingArguments from datasets import load_dataset # 核心加载数据集的库 # # 核心修改加载自定义CSV数据集 # # 方式1加载本地CSV文件推荐新手首选 # 替换这里的 custom_data.csv 为你的数据集文件路径比如 D:/data/my_data.csv dataset load_dataset( csv, # 数据集格式csv/json/txt data_filescustom_data.csv, # 你的数据集文件路径 splittrain # 数据集划分只有训练集就写train ) # 方式2如果你的数据集是JSON格式示例 # dataset load_dataset( # json, # data_filescustom_data.json, # splittrain # ) # # 核心修改格式化Prompt适配你的字段名 # # 关键把 question 和 answer 替换成你数据集的列名 # 比如你的数据集列名是 instruction 和 output就改成 sample[instruction] def format_prompt(sample): # 适配Llama 3的官方Prompt格式通用大部分模型都兼容 return f|begin_of_text||start_header_id|user|end_header_id| {sample[question]} # 替换为你的输入字段名比如 instruction/query |start_header_id|assistant|end_header_id| {sample[answer]} # 替换为你的输出字段名比如 output/response |end_of_text| # 对数据集应用格式化函数生成模型能识别的文本 dataset dataset.map(lambda x: {text: format_prompt(x)}) # # 后续是模型加载和训练无需改仅作完整示例 # # 加载模型保持不变 model, tokenizer FastLanguageModel.from_pretrained( model_name unsloth/llama-3-8b-bnb-4bit, max_seq_length 2048, dtype torch.float16, load_in_4bit True, ) # 配置LoRA保持不变 model FastLanguageModel.get_peft_model( model, r 16, target_modules [q_proj, k_proj, v_proj, o_proj], lora_alpha 16, lora_dropout 0, bias none, use_gradient_checkpointing unsloth, random_state 42, ) # 训练器配置仅需调整batch_size适配显存 trainer SFTTrainer( model model, train_dataset dataset, # 用你的自定义数据集 dataset_text_field text, # 固定值对应上面格式化后的 text 字段 max_seq_length 2048, tokenizer tokenizer, args TrainingArguments( per_device_train_batch_size 1, # 8GB显存改116GB改2 gradient_accumulation_steps 4, warmup_steps 5, max_steps 60, learning_rate 2e-4, fp16 not torch.cuda.is_bf16_supported(), bf16 torch.cuda.is_bf16_supported(), logging_steps 1, output_dir unsloth-custom-finetuned, optim adamw_8bit, ), ) # 开始训练 trainer.train()三、关键修改说明你只需要改这 3 处数据集文件路径把data_filescustom_data.csv改成你的文件路径比如 WindowsD:/AI/data/my_qa_data.csvLinux/Mac/home/user/data/my_qa_data.csv字段名替换如果你的数据集列名不是question/answer而是instruction/outputAlpaca 格式、query/response对话格式就把sample[question]和sample[answer]换成对应的列名Prompt 格式可选如果微调的是 Llama 2/Mistral/Phi-3可保留当前格式如果是其他模型可替换成对应的 Prompt 格式比如 ChatGLM 的格式。四、常见问题解决数据集编码错误如果加载 CSV 时提示编码错误添加encodingutf-8dataset load_dataset(csv, data_filescustom_data.csv, splittrain, encodingutf-8)字段名错误如果提示KeyError: question说明你写的字段名和数据集实际列名不一致核对 Excel/CSV 里的列名数据集太大先取 10% 数据测试避免训练时间过长dataset dataset.select(range(100)) # 只取前100条数据测试总结自定义数据集优先用CSV 格式只需包含「输入字段」和「输出字段」两列核心修改点替换数据集文件路径、替换字段名、适配 Prompt 格式测试阶段先取少量数据比如前 100 条跑通代码再用全量数据训练。