链载Ai

标题: 从DeepSeek到Manus:如何实现本地LLM微调 联网开发? [打印本页]

作者: 链载Ai    时间: 3 小时前
标题: 从DeepSeek到Manus:如何实现本地LLM微调 联网开发?

目录


1 LLaMA-Factory本地大模型微调

2 本地大模型联网功能开发

3 业务场景探索

4 未来展望与实践建议




从 ChatGPT 到 DeepSeek 再到最近大热的 Manus,AI 技术从模型端的破圈进一步扩展到了 Agent 方向。拥有一个定制化的、能够理解你业务需求的 AI 助手不再是科幻,而是触手可及的现实。

然而,市面上的通用大模型往往难以深入理解特定领域知识,更不用说完全掌控数据隐私。本文将带你走进AI定制化的世界,从模型微调到功能开发,从技术探索到产品思考,一站式解决你的AI落地难题。



ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;background-color: rgb(255, 255, 255);visibility: visible;line-height: 1.6em;">



ingFang SC";color: rgb(66, 66, 66);line-height: 40px;letter-spacing: 3px;-webkit-text-stroke: 3px rgb(66, 66, 66);visibility: visible;">01



LLaMA-Factory本地大模型微调

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">当前,以Claude、DeepSeek、GPT等为代表的通用大语言模型展现出惊人的知识覆盖和任务泛化能力,但在垂直行业场景中常常面临“博而不精”的困境——医疗诊断时可能混淆专业术语、法律咨询时缺乏最新司法解释援引、金融分析时难以把握行业特有指标。这种通用性与专业性的矛盾,催生了“模型蒸馏-领域适配-任务聚焦”的三级进化路径:通过知识蒸馏压缩模型体积,依托行业语料进行领域微调(Domain Adaptation),最终基于具体业务需求实现任务专属优化(Task-Specific Tuning)。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">本次实验选用DeepSeek开源的DeepSeek-R1-Distill-Qwen-1.5B模型(作者也想微调本地更大参数等模型,但碍于GPU算力有限,主要展示微调过程实现与原理),该模型采用知识蒸馏技术将原始Qwen大模型压缩至1.5B参数量级,通过LLaMA-Factory框架,展示如何将这款轻量化模型进一步微调为特定领域专家,验证“通用基座-行业中间层-业务终端”的渐进式优化路径。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">模型微调的本质是参数空间的迁移学习,通过在目标领域数据上的梯度更新,使模型逐步弱化通用语义理解,强化垂直领域特征提取能力。这种技术路径不仅能够提升专业任务准确率(某医疗AI实验显示微调后诊断建议准确率提升41.2%),更可突破大模型固有的知识时效局限(通过注入最新行业数据更新模型认知)。本文将以完整的实验闭环,揭示大模型从“通才”到“专才”的进化密码。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">1.1 环境准备

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);line-height: 1.6em;">

机器信息:


名称描述
GPU类型Tesla T4
显存8GB
内存36GB
系统tLimux-集成版


模型下载


基座模型(deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B)


pipinstall-Uhuggingface_hubpipinstallhuggingface-cliexportHF_ENDPOINT=https://hf-mirror.com#国内HF镜像代理可选huggingface-clidownload--resume-downloaddeepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B--local-dir/data/llm/models/DeepSeek-R1-Distill-Qwen-1.5B

LLaMA-Factory安装


gitclonehttps://github.com/hiyouga/LLaMA-Factory.gitcdLLaMA-Factorypipinstall-e.


基座模型部署及效果展示


启动 LLama-Factory webUI


cdLLaMA-Factoryllamafactory-cliwebui



浏览器访问 ip:7860



配置模型名称以及本地模型文件路径,然后点击加载模型,此时 LLaMA-Factory 就会加载路径下单模型。


此时在 ChatBox 与模型进行对话:



1.2微调


微调数据准备


此处只有极少量数据,做案例使用,为了与基础模型做区别,在补充一个身份识别的预训练数据。


identity.json:



其中微调数据中:


字段名称定义示例说明
instruction需要模型完成的核心任务指令"介绍你自己"需用完整疑问句明确任务,如示例中的就业前景分析
input任务执行的补充输入信息""(示例为空)当需要额外数据时使用,如待翻译文本、待分析数据等
output对应指令的标准答案输出"xxxxx"(截断示例)应包含事实数据(如就业率)、逻辑框架(分点论述)、专业术语
history多轮对话历史记录[ ["之前问题1", "回答1"], ["之前问题2", "回答2"] ]可以为空


微调+原理解析


将微调数据放入到LLaMA-Factory/data/目录下。(注意:LLaMA-Factory 默认包含 identity.json数据集,覆盖即可)


修改数据注册文件dataset_info.json文件。增加



微调原理简介:在预训练的模型基础上,用特定领域数据进一步训练以适配具体任务,例如:用法律文书数据微调模型以提升法律咨询准确性。


方法分类:

  1. 全参数微调:调整所有参数,适用于数据充足的场景。

  2. 轻量级微调:如LoRA(低秩适配),仅更新部分参数,降低计算成本。


这个实验场景中就是使用的LoRA进行微调。LoRA具体的原理可参考:https://arxiv.org/pdf/2106.09685


webui配置微调:



llamafactory-clitrain\--stagesft\--do_trainTrue\--model_name_or_path/data/llm/models/DeepSeek-R1-Distill-Qwen-1.5B\--preprocessing_num_workers16\--finetuning_typelora\--templatedeepseek3\--flash_attnauto\--dataset_dirdata\--datasetidentity\--cutoff_len2048\--learning_rate0.0002\--num_train_epochs10.0\--max_samples1000\--per_device_train_batch_size2\--gradient_accumulation_steps8\--lr_scheduler_typecosine\--max_grad_norm1.0\--logging_steps5\--save_steps100\--warmup_steps0\--packingFalse\--report_tonone\--output_dirsaves/DeepSeek-R1-1.5B-Distill/lora/train_2025-03-02-15-57-16\--fp16True\--plot_lossTrue\--trust_remote_codeTrue\--ddp_timeout180000000\--include_num_input_tokens_seenTrue\--optimadamw_torch\--lora_rank8\--lora_alpha16\--lora_dropout0\--lora_targetall


llama-factory支持非常多的微调参数,了解详情可查看 llama-factory官方文档。这里由于是简单实验就不过多解释了。



然后开始训练模型(等待训练完成)。


微调后模型部署及效果展示


此时在使用上面相同的聊天内容询问模型,则回复的是我们训练数据中的内容。但此时需要加载俩个模型,一个是通用基础模型,一个是刚刚低秩的适配器。也就是此时,想让其他人使用这个模型,需要提供俩个模型文件,比较繁琐。



模型合并


为了解决上面需要导出多个模型文件的文件,所以需要将俩个模型进行一个模型合并。将 base model 与训练好的 LoRA Adapter 合并成一个新的模型。


llamafactory-cliexportcust/merge_deepseekr1_lora_sft.yaml


合并配置文件:


### modelmodel_name_or_path: /data/llm/models/DeepSeek-R1-Distill-Qwen-1.5B/adapter_name_or_path: /data/llm/models/LLaMA-Factory/saves/DeepSeek-R1-1.5B-Distill/lora/train_2025-03-02-19-26-55template: deepseekfinetuning_type: lora
### exportexport_dir: /data/llm/models/DeepSeek-R1-Distill-Qwen-1.5B-rcpc/export_size: 4export_device: cudaexport_legacy_format:


完成模型合并之后,会在目录下多一个模型出来。



微调后新模型效果演示


此时使用LLaMA-Factory webui 加载新模型,然后与之对话。就可以得到微调后的模型了。





02



本地大模型联网功能开发

2.1 整体架构



2.2LLM 调用


流程图:


    defcall_llm(prompt:str,with_context:bool=True,context:str|None=None):


    功能:调用本地运行的Ollama LLM模型生成回答。


    参数:


    实现细节:


    2.3向量数据库初始化


      defget_vector_collection()->tuple[chromadb.Collection,chromadb.Client]:


      功能:初始化ChromaDB向量数据库连接。


      关键点:


      技术参数:


        Settings(anonymized_telemetry=False)#关闭匿名数据收集metadata={"hnsw:space":"cosine"}#配置HNSW索引算法


        2.4URL规范化


          defnormalize_url(url):


          转换规则:

          1. 移除https://和www.前缀

          2. 替换特殊字符:

          1. 使用递归字符分割器:

          2. 创建临时Markdown文件加载内容。

          3. 通过UnstructuredMarkdownLoader解析文档。

          4. 为每个文本块生成:






          欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5