基于LLaMA与LoRA的中文大模型低资源微调实战指南

news2026/5/4 6:51:33
1. 项目概述中文低资源指令微调方案如果你关注过2023年初的AI社区一定记得那场由Meta的LLaMA模型引发的“开源大模型狂欢”。一夜之间仿佛人人都想拥有一个能理解指令、能对话、能写代码的“私人AI助手”。但现实很骨感动辄数百GB的显存需求让绝大多数开发者和研究者望而却步。正是在这个背景下Chinese-Vicuna项目出现了它就像是为我们这些“平民玩家”量身定制的入场券。简单来说Chinese-Vicuna是一个基于LLaMA大模型专门针对中文指令进行优化的低资源微调方案。它的核心目标非常明确让你用一张消费级显卡比如RTX 2080Ti或3090就能训练出一个能说会道、能理解中文指令的AI模型。项目名字里的“Vicuna”小羊驼也很有意思它不像原始的LLaMA大羊驼那么庞大笨重也不像Alpaca羊驼那样只擅长英文它是一只更小巧、更擅长中文的“小羊驼”。我最初接触这个项目是因为手头只有一张24G显存的3090却想尝试微调一个13B参数的大模型来做中文对话。当时主流方案要么需要多卡并行要么就得做大幅度的量化牺牲精度。Chinese-Vicuna提出的“LLaMA LoRA”组合拳完美地解决了我的痛点。它通过一种叫LoRALow-Rank Adaptation的技术只训练模型里极小一部分参数通常只占原模型参数的0.1%到1%就能让大模型学会新任务。这就像给一个博学的教授一本专门的中文教材而不是让他从头学习一门新语言效率极高。这个项目的意义远不止是“能跑起来”那么简单。它极大地降低了AI模型定制化的门槛。无论是想做一个法律咨询助手、医疗问答机器人还是想训练一个懂你公司业务的客服AI你都不再需要庞大的算力集群。一张显卡几天时间就能得到一个专属于你的、表现不错的模型。这为中文NLP社区的小团队和个人开发者打开了一扇全新的大门。2. 核心原理与方案选型为什么是LLaMA LoRA在深入代码之前我们必须先搞清楚两个核心概念LLaMA和LoRA。理解了它们你才能明白Chinese-Vicuna方案的精妙之处以及为什么它能做到如此低的资源消耗。2.1 基石LLaMA模型为何是绝佳起点LLaMALarge Language Model Meta AI是Meta在2023年2月开源的一系列大语言模型参数量从7B、13B到65B不等。它之所以能迅速成为开源社区的宠儿有几个关键原因强大的原生能力LLaMA虽然在设计上不是一个“对话模型”但其在大量文本上训练出的语言理解、知识储备和逻辑推理能力非常扎实。这为后续的指令微调提供了一个极高的起点。你可以把它想象成一个天赋极高的“语言天才”只是还没学会如何按照人类的指令来回答问题。相对友好的开源协议相比于GPT系列LLaMA的学术和研究用途许可更为宽松这直接催生了Alpaca、Vicuna等一系列衍生项目形成了繁荣的生态。模型结构公开透明其基于Transformer Decoder的架构是公开的这意味着社区可以对其进行深入的剖析、修改和优化Chinese-Vicuna正是建立在这个透明的基础之上。为什么选择LLaMA作为基座模型在项目初期可选的基座模型并不多。GPT-3/3.5不开放而像BLOOM、GLM等模型虽然在多语言上表现不错但在英文预训练数据的质量和规模上当时普遍认为LLaMA更具优势。Chinese-Vicuna选择LLaMA本质上是“站在巨人的肩膀上”利用其优秀的英文能力作为基底再通过中文指令数据对其进行“教化”使其掌握中文理解和指令跟随能力。这是一种非常高效的策略。2.2 关键LoRA技术如何实现“四两拨千斤”LoRALow-Rank Adaptation低秩自适应是微软在2021年提出的一种参数高效微调方法。它的核心思想可以用一个简单的类比来理解想象一下一个拥有700亿参数70B的LLaMA模型是一个极其复杂的交响乐团有成千上万个乐手参数。传统的全参数微调相当于让整个乐团为了演奏一首新曲子你的中文指令任务而重新排练每一个音符这需要巨大的指挥成本计算资源。而LoRA的做法则聪明得多。它认为要让乐团演奏新曲子并不需要改变每个乐手固有的演奏技巧模型原有的知识。只需要增加几个小小的、特定的“提示卡片”LoRA适配器告诉某些乐手在特定段落稍微调整一下力度或节奏就能达到想要的效果。这些“提示卡片”就是LoRA要训练的参数。技术细节拆解在Transformer模型中尤其是注意力Attention模块和前馈网络FFN中的线性层如q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj其计算可以表示为Y XW。 LoRA不直接修改巨大的原始权重矩阵W维度为d x k而是引入两个小得多的矩阵A和B。其中A的维度是d x rB的维度是r x k这里的r秩是一个远小于d和k的值通常为4, 8, 16。 在微调时前向传播变为Y XW XAB。W被冻结不更新只训练A和B这两个小矩阵。训练完成后可以将AB合并回W推理时没有任何额外开销也可以保持分离在推理时动态加载实现灵活的“插件”式组合。LoRA带来的核心优势显存占用极低以LLaMA-7B为例全参数微调需要约7B * 2参数梯度* 2Adam优化器状态 ≈ 28GB的显存FP16。而使用LoRAr8可能只新增几百万到上千万的可训练参数显存占用可能只需增加1-2GB。这使得在11G的2080Ti上微调7B模型成为可能。训练速度极快由于绝大部分参数被冻结只需要计算和更新一小部分参数训练速度可以提升数倍。部署灵活一个基座模型可以搭配多个不同的LoRA适配器实现“一个模型多种技能”。比如同一个LLaMA-7B加载法律LoRA就是法律助手加载医疗LoRA就是医疗顾问切换成本极低。减轻过拟合由于可训练参数大大减少模型更不容易在小型指令数据集上过拟合泛化性可能更好。Chinese-Vicuna正是精准地抓住了LLaMA和LoRA这两个关键点将它们与高质量的中文指令数据结合创造出了一个在有限资源下效果出众的解决方案。2.3 数据配方BELLE与Guanaco的强强联合模型是骨架数据是血肉。Chinese-Vicuna在数据选择上也很有讲究。它主要混合使用了两个开源的高质量指令数据集BELLEBE Large Language Model Engine由链家科技开源是一个大规模的中文指令微调数据集。它通过Self-Instruct等方法基于GPT生成涵盖了多种任务类型如问答、摘要、创作、分类等中文质量和多样性都相当不错。Guanaco另一个多语言指令数据集同样基于Self-Instruct生成包含中英文数据。它补充了BELLE可能覆盖不足的一些任务和表述方式。为什么混合使用单一数据集可能存在风格单一、任务覆盖不全的问题。混合BELLE和Guanaco相当于给模型提供了更丰富、更多样化的“教学案例”有助于模型学习到更通用的指令理解和遵循能力而不是局限于某一种数据分布。项目后期还引入了包含多轮对话的instruct_chat_50k数据集专门用于提升模型的多轮交互能力。实操心得数据混合比例在Chinese-Vicuna的默认配置中BELLE和Guanaco的数据是混合使用的。但在你自己进行垂直领域微调时这个比例需要调整。我的经验是如果你的领域数据足够多例如10万条以上可以以你的领域数据为主如80%辅以20%的通用指令数据如BELLE这样既能保证专业性又能维持一定的通用对话能力。如果领域数据较少如1万条则可以反过来用通用数据70%来预热模型再用你的领域数据30%进行针对性微调防止过拟合。3. 环境搭建与实战部署从零到一的完整流程纸上得来终觉浅绝知此事要躬行。下面我将带你完整走一遍在单张3090显卡上部署并运行Chinese-Vicuna-13B模型进行推理的流程。这是体验模型效果最直接的方式。3.1 基础环境准备首先你需要一个Linux环境Ubuntu 20.04/22.04为佳并确保已安装NVIDIA驱动、CUDA11.7和cuDNN。然后我们通过Conda来创建一个独立、干净的Python环境。# 1. 创建并激活Conda环境Python版本建议3.8-3.10 conda create -n chinese-vicuna python3.9 conda activate chinese-vicuna # 2. 安装PyTorch请根据你的CUDA版本到PyTorch官网选择对应命令 # 例如CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 3. 克隆Chinese-Vicuna仓库 git clone https://github.com/Facico/Chinese-Vicuna.git cd Chinese-Vicuna # 4. 安装项目依赖 # 注意原项目requirements.txt可能包含较旧版本的包建议根据错误提示灵活调整 pip install -r requirements.txt # 通常还需要额外安装accelerate, peft, transformers, gradio等 pip install accelerate peft transformers4.28.0 gradio注意事项版本地狱大模型项目最常遇到的问题就是库版本冲突。如果遇到transformers或peft相关的错误一个万能的解决思路是查看项目最近更新日期然后安装当时的主流稳定版本。对于2023年中期的Chinese-Vicuna可以尝试固定以下版本组合这是我实测可用的pip install torch2.0.0cu118 torchvision0.15.1cu118 torchaudio2.0.1 --index-url https://download.pytorch.org/whl/cu118 pip install transformers4.28.1 pip install peft0.3.0 pip install accelerate0.18.0 pip install gradio3.34.0 pip install datasets scikit-learn3.2 获取模型文件基座模型与LoRA权重运行Chinese-Vicuna需要两个核心文件LLaMA基座模型原始的LLaMA权重需要从Meta官方申请由于许可限制项目不直接提供。申请通过后你会得到一系列.pth文件。Chinese-Vicuna LoRA权重项目训练好的适配器在Hugging Face上开源。步骤一转换LLaMA权重格式从Meta获得的.pth文件是PyTorch的保存格式需要转换成Hugging Face Transformers库能直接加载的格式。Chinese-Vicuna在tools/目录下提供了转换脚本。# 假设你的原始LLaMA权重放在 /path/to/llama-13b 目录下 # 转换后的输出目录为 ./llama-13b-hf python tools/convert_llama.py --input_dir /path/to/llama-13b --model_size 13B --output_dir ./llama-13b-hf转换完成后./llama-13b-hf目录下会包含config.json,pytorch_model-00001-of-00003.bin等Hugging Face标准格式的文件。步骤二下载LoRA权重到项目的Hugging Face页面https://huggingface.co/Chinese-Vicuna找到你想要的模型。例如对于13B的指令模型选择Chinese-Vicuna-lora-13b-belle-and-guanaco。你可以使用git lfs克隆或者直接下载adapter_model.bin和adapter_config.json这两个关键文件。# 使用git lfs克隆推荐 git lfs install git clone https://huggingface.co/Chinese-Vicuna/Chinese-Vicuna-lora-13b-belle-and-guanaco # 或者在仓库页面直接下载这两个文件到指定目录比如 ./lora-13b # adapter_model.bin # adapter_config.json3.3 运行推理与交互式Web界面Chinese-Vicuna提供了方便的generate.py和chat.py脚本进行推理。更棒的是它集成了Gradio可以一键启动一个美观的Web界面进行交互。单轮指令生成WebUI这是最简单的体验方式。修改generate.py脚本中的模型路径或直接通过命令行参数指定。# 基本命令格式 python generate.py \ --base_model ./llama-13b-hf \ # 转换后的HF格式LLaMA路径 --lora_model ./lora-13b \ # LoRA权重所在目录 --load_in_8bit \ # 使用8bit量化加载极大减少显存占用13B模型必需 --share_gradio # 生成一个公开可访问的链接可选 # 一个更完整的示例针对24G显存的3090运行13B模型 python generate.py \ --base_model /home/user/models/llama-13b-hf \ --lora_model /home/user/models/chinese-vicuna-lora-13b \ --load_in_8bit \ --cpu_offloading \ # 将部分层卸载到CPU进一步节省显存 --max_memory {0:23GiB, 1:23GiB} \ # 显存分配设置 --share_gradio运行后终端会输出一个本地URL如http://127.0.0.1:7860和一个Gradio公共链接。在浏览器中打开本地URL你就能看到一个简洁的聊天界面输入中文指令模型就会开始生成回答。多轮对话交互chat.py脚本专门为多轮对话设计能更好地维持上下文。python chat.py \ --base_model ./llama-13b-hf \ --lora_model ./lora-13b \ --load_in_8bit \ --cpu_offloading \ --max_memory {0:23GiB} \ --share_gradio在Web界面中对话会以历史记录的形式呈现模型能根据之前的对话内容进行回复体验更接近ChatGPT。核心参数调优心得模型生成的质量非常依赖于解码参数。在WebUI的“高级选项”中你可以调整Max New Tokens生成文本的最大长度。对话一般512-1024足够长文生成可设2048。Temperature控制随机性。值越高如0.9回答越多样、有创意值越低如0.1回答越确定、保守。对于事实性问答建议0.1-0.3对于创作建议0.7-0.9。Top-p (nucleus sampling)与Temperature配合使用通常设为0.9-0.95只从概率累积超过p的词中采样能避免生成低概率的奇怪词汇。Repetition Penalty这是Chinese-Vicuna模型最需要关注的参数由于训练数据或模型本身原因该模型有时容易重复输出。将这个值设为1.1到1.3可以有效抑制重复。如果发现回答开始循环果断调到1.5甚至更高。Beam Search束搜索宽度。增大如4可以提高生成质量但会显著降低速度并增加显存消耗。对于交互式对话设为1贪婪解码或2即可。4. 模型训练全指南打造你自己的专属小羊驼推理只是消费训练才是创造。Chinese-Vicuna最大的价值在于它提供了一套完整的工具让你能用自己的数据训练出定制化的LoRA模型。下面我以在单卡3090上用自定义数据微调LLaMA-7B模型为例详解整个过程。4.1 数据准备格式是关键你的数据需要整理成特定的JSON格式。Chinese-Vicuna主要支持两种格式1. 单轮指令格式Alpaca格式这是最常用的格式每条数据包含一个指令instruction、一个输入input可选和一个输出output。[ { instruction: 将以下中文翻译成英文。, input: 人工智能正在改变世界。, output: Artificial intelligence is changing the world. }, { instruction: 写一首关于春天的诗。, input: , output: 春风吹绿柳枝头百花争艳映小楼。燕子归来寻旧垒一片生机眼底收。 } ]2. 多轮对话格式用于训练对话能力每条数据包含多轮对话历史。[ { conversations: [ {role: human, value: 你好你是谁}, {role: assistant, value: 我是AI助手由Chinese-Vicuna驱动。}, {role: human, value: 你能做什么}, {role: assistant, value: 我可以回答问题、翻译、写作、编程等等。} ] } ]数据清洗黄金法则质量高于数量1000条高质量、无错误的数据远胜于10万条脏数据。仔细检查语法、事实错误和逻辑矛盾。指令多样性确保你的“instruction”覆盖各种任务类型问答、生成、分类、总结、代码等避免模式单一。输出长度适中输出太短学不到东西太长则训练慢且易出问题。建议大部分样本输出在50-500词之间。格式严格一致确保JSON文件是有效的没有多余的逗号字符串使用双引号。一个格式错误可能导致整个训练失败。将你的数据保存为train.json并放在一个单独的目录下例如./my_data。4.2 训练脚本配置与启动Chinese-Vicuna的训练脚本是finetune.py。我们需要根据自己的需求修改其参数。最稳妥的方式是复制一份脚本或者创建一个参数配置文件。关键参数解析--base_model: 你的HF格式LLaMA模型路径。--data_path: 你的训练数据JSON文件路径。--output_dir: 训练过程中检查点和最终模型的保存路径。--batch_size:根据显存调整的最重要参数在309024G上7B模型用load_in_8bit时batch_size可以设为4-813B模型可能只能设为1-2。--micro_batch_size: 梯度累积步数。如果显存不够放大的batch_size可以设micro_batch_size1然后通过gradient_accumulation_steps来模拟更大的批次。例如想达到批次大小4但显存只够1则设micro_batch_size1和gradient_accumulation_steps4。--num_epochs: 训练轮数。通常3-5个epoch足够。数据量很大时可以减少。--learning_rate: LoRA学习率通常设置在1e-4到5e-4之间。太大容易训飞太小收敛慢。--cutoff_len: 模型输入的最大长度指令输入输出。超过部分会被截断。根据你的数据长度设置一般512或1024。--val_set_size: 验证集大小。可以从训练集中划分一小部分如200条用于评估。--lora_r: LoRA的秩r。默认8增大如16可能提升能力但增加参数量和过拟合风险减小如4则相反。--lora_target_modules: 将LoRA应用到哪些模块。默认是[q_proj,v_proj]即只修改注意力机制中的查询和值投影矩阵。这是效果和效率的平衡点。你也可以加入k_proj,o_proj甚至前馈网络的gate_proj,down_proj,up_proj但会显著增加训练参数。启动训练命令示例# 在Chinese-Vicuna项目根目录下执行 python finetune.py \ --base_model ./llama-7b-hf \ --data_path ./my_data/train.json \ --output_dir ./output/my_lora_model \ --batch_size 8 \ --micro_batch_size 1 \ --num_epochs 3 \ --learning_rate 3e-4 \ --cutoff_len 512 \ --val_set_size 200 \ --lora_r 8 \ --lora_target_modules[q_proj,v_proj] \ --load_in_8bit \ # 使用8bit量化进行训练节省显存 --group_by_length \ # 将长度相近的数据分组提高训练效率 --resume_from_checkpoint ./output/my_lora_model/checkpoint-1000 \ # 从检查点恢复训练可选 --wandb_project chinese-vicuna-train \ # 使用wandb记录训练过程可选 21 | tee train.log # 将输出同时显示在屏幕并保存到日志文件4.3 训练过程监控与问题排查训练启动后你需要密切关注日志和资源使用情况。监控指标损失Loss这是最直接的指标。训练损失应稳步下降验证损失在下降后应趋于平稳或缓慢上升防止过拟合。如果损失剧烈波动或变成NaN说明学习率太高或数据有问题。显存使用使用nvidia-smi命令监控。确保没有爆显存OOM。如果接近上限尝试减小batch_size或启用cpu_offloading。生成样本定期用验证集的一条数据让模型生成直观感受模型能力的变化。可以在训练脚本中设置--eval_steps和--save_steps来定期保存检查点并评估。常见训练问题与解决方案问题现象可能原因解决方案CUDA out of memory批次太大、模型太大、序列太长。1. 减小batch_size或micro_batch_size。2. 减小cutoff_len。3. 启用--load_in_8bit训练时或--load_in_4bitQLoRA。4. 启用--cpu_offloading。Loss为NaN或突然变得巨大学习率过高、梯度爆炸、数据中存在异常值如无穷大。1. 大幅降低learning_rate如从3e-4降到1e-4。2. 添加梯度裁剪--gradient_clipping 1.0。3. 检查并清洗训练数据。训练损失下降但验证损失上升模型过拟合。1. 增加验证集大小val_set_size。2. 减少训练轮数num_epochs。3. 增加LoRA的dropout率如果脚本支持。4. 收集更多样化的训练数据。模型输出胡言乱语或重复训练不充分、数据质量差、解码参数不当。1. 增加训练轮数或数据量。2. 严格清洗数据确保指令-输出对高质量。3. 推理时调整repetition_penalty和temperature。训练速度极慢没有启用--group_by_length、硬件性能瓶颈。1. 启用--group_by_length这能大幅减少padding提升吞吐量。2. 检查是否在CPU上运行确保CUDA可用。3. 考虑使用更小的模型如7B或QLoRA4bit量化训练。训练完成后output_dir目录下会生成adapter_model.binLoRA权重和adapter_config.json。现在你就可以像使用官方预训练LoRA一样使用你自己训练的模型了5. 高级技巧与生态扩展让模型更强大、更高效掌握了基础训练和推理后我们可以探索一些进阶玩法进一步提升模型的实用性或效率。5.1 使用QLoRA进行4比特量化训练如果你的显卡更小比如只有8G或11G显存还想尝试微调13B甚至更大的模型那么QLoRA是你的救星。QLaMA-Vicuna项目也支持QLoRA。它与LoRA原理类似但进一步将基座模型的权重量化为4比特NF4格式同时使用一种叫“双量化”的技术在几乎不损失精度的情况下将显存占用再降低一个数量级。使用QLoRA训练以13B模型在2080Ti上为例# 注意QLoRA需要bitsandbytes库的特殊支持并可能需要更新版本的transformers和peft pip install bitsandbytes pip install --upgrade transformers peft python finetune.py \ --base_model ./llama-13b-hf \ --data_path ./my_data/train.json \ --output_dir ./output/qlora_model \ --load_in_4bit \ # 关键参数使用4bit量化加载基座模型 --use_lora \ # 使用LoRA --batch_size 1 \ # 显存紧张批次设为1 --gradient_accumulation_steps 8 \ # 通过梯度累积模拟批次8 --num_epochs 3 \ --learning_rate 2e-4 \ --cutoff_len 512 \ --lora_r 16 \ # QLoRA有时可以使用更大的r --lora_target_modules[q_proj,k_proj,v_proj,o_proj] \ 21 | tee qlora_train.log使用QLoRA在一张11G的2080Ti上微调LLaMA-13B模型从“不可能”变成了“可行”这无疑是资源有限的研究者和开发者的福音。5.2 模型合并与导出获得独立模型文件LoRA的“插件”模式很方便但有时我们希望得到一个完整的、独立的模型文件便于分发和部署。这就需要将LoRA的权重合并回原始的LLaMA模型中。Chinese-Vicuna提供了合并脚本通常位于tools/或项目根目录可能叫merge_lora.py或类似名称python tools/merge_lora.py \ --base_model ./llama-7b-hf \ --lora_model ./output/my_lora_model \ --output_dir ./merged_model \ --load_in_8bit \ # 如果原始模型是以8bit加载的 --save_precision fp16 # 保存为FP16格式平衡精度和大小合并后的模型就是一个标准的Hugging Face Transformers模型可以直接用from_pretrained加载无需再指定LoRA配置。5.3 在纯CPU环境进行推理对于没有GPU的机器或者只想进行轻量级演示Chinese-Vicuna支持通过llama.cpp这个C项目进行CPU推理。llama.cpp通过高度优化的整数量化INT4, INT5等和纯C实现使得大模型在CPU上运行成为可能。步骤获取合并后的模型首先按照5.2节的方法得到一个完整的FP16模型merged_model。使用llama.cpp量化将FP16模型转换为llama.cpp支持的GGML格式并进行量化。# 克隆 llama.cpp git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp make # 将HF模型转换为GGML FP16格式 python convert.py ../merged_model --outtype f16 --outfile ./models/chinese-vicuna-7b.ggml.f16.bin # 进一步量化为INT4推荐速度与精度平衡好 ./quantize ./models/chinese-vicuna-7b.ggml.f16.bin ./models/chinese-vicuna-7b.ggml.q4_0.bin q4_0运行CPU推理./main -m ./models/chinese-vicuna-7b.ggml.q4_0.bin \ -p 请用Python写一个快速排序函数 \ -n 256 \ # 生成256个token -t 8 \ # 使用8个线程 --color经过INT4量化后一个7B模型的文件大小约为4GB在普通的台式机CPU上也能达到每秒数token的生成速度足以满足简单的演示和测试需求。5.4 探索垂直领域微调法律与医疗案例Chinese-Vicuna项目不仅提供了通用模型还展示了垂直领域微调的潜力。他们在法律和医疗数据集上进行了微调得到了专业领域模型。法律模型使用法律文书、法规、案例等数据微调模型能更好地理解法律术语进行简单的法律咨询和文书生成。医疗模型使用医学教科书、问答数据微调模型能回答一些基础的医学常识问题。这给我们指明了方向LoRA技术是领域知识注入的完美工具。你可以收集你所在行业的专业语料技术文档、客服日志、报告模板等将其整理成指令-输出对然后用同样的流程进行微调。几天的训练你就能获得一个具备行业知识的“专家助手”这比从头训练一个模型要高效成千上万倍。6. 避坑实录与经验总结回顾整个Chinese-Vicuna的实践过程我踩过不少坑也积累了一些宝贵的经验希望能帮你少走弯路。1. 环境配置是第一步也是最多坑的一步。教训不要盲目使用pip install -r requirements.txt。大模型库更新快依赖冲突频发。经验先创建一个干净的Conda环境。然后优先手动安装PyTorch与你的CUDA版本匹配再根据错误提示逐个安装其他包或参考项目Issue里其他人成功的版本组合。2. 数据质量决定模型天花板。教训我曾用爬取的粗糙问答数据训练结果模型学会了网络上的胡言乱语和错误信息。经验宁可花80%的时间清洗和构造1000条高质量数据也不要直接用10万条脏数据。人工审核一小部分生成结果对评估数据质量非常有效。3. 解码参数对生成效果影响巨大。教训一开始所有参数都用默认值结果模型要么回答枯燥要么重复啰嗦。经验把repetition_penalty调到1.1-1.3是改善Chinese-Vicuna生成质量的首要操作。对于创意任务提高temperature(0.7-0.9)和top_p(0.9)对于事实问答降低temperature(0.1-0.3)。4. 不要盲目追求大模型和大参数。教训总想用13B甚至33B但忽略了自身数据和算力的限制。经验对于大多数垂直领域任务7B模型高质量领域数据微调的效果往往好于13B模型普通数据。在资源有限时优先把数据做精把LoRA的r、target_modules等参数调优比单纯换大模型收益更高。5. 训练过程要耐心监控。教训设置好训练脚本就去睡觉第二天发现loss早就NaN了白跑一夜。经验训练的前几个step务必盯着日志。确保loss在正常下降。用wandb或tensorboard可视化监控非常有用。先用小批量数据1000条跑1个epoch快速验证整个pipeline是否通畅。Chinese-Vicuna项目像一把钥匙为我们打开了一扇低成本探索大语言模型能力的大门。它证明了在有限的资源下通过精巧的技术选型LoRA和高质量的数据我们完全可以创造出有价值、可应用的AI模型。从理解原理、部署体验到动手训练自己的模型这个过程本身就是一个极佳的学习旅程。希望这篇详尽的指南能帮助你顺利踏上这条“驯服”中文小羊驼的道路并最终创造出属于你自己的智能助手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2580841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…