Public Docs
【模型量化】深度学习模型量化 & 量化理论 & 各平台的量化过程 & 硬件加速
【TVM】TI关于TVM的使用测试与分析
【LLM&LVM】大模型开源工程思维导图
【北航卓越工程师】《汽车前沿技术导论:智能驾驶》讲义
【工具链】Yocto使用介绍——使用Yocto创建一个树莓派的系统镜像
【工具链】使用ssh+dialog指令设定服务器指定用户仅容器访问
【推理引擎】一篇关于模型推理的详细对比与学习
【推理引擎】关于TVM中的Schedule优化详解(On going)
【LLM微调】使用litgpt进行私有数据集模型微调的测试总结
【TVM】在TVM Relay中创建一个自定义操作符
【STT+LLM+TTS】如何使用语音转文字模型+大预言模型+语音生成模型完成一个类人的语音交互机器人
【RAG】 通过RAG构建垂直领域的LLM Agent的方法探索
【RAG】GraphRAG精读与测试(On going)
【AI Agent】MetaGPT精读与学习
【AI Base】Ilya Sutskever 27篇必读论文分享清单
【Nvidia】Jetson AGX Orin/ Jetson Orin nano 硬件测试调试内容(On going)
【BI/DI】LLM Using in BI Testing Scenario (On going)
【Nvidia】How to Activate a Camera on Nvidia Platform in Details
【RAS-PI】树莓派驱动开发
【行业咨询阅读】关注实时咨询和分析
【mobileye】2024 Driving AI
【mobileye】SDS_Safety_Architecture
【yolo】yolov8测试
【nvidia】Triton server实践
【alibaba】MNN(on updating)
【OpenAI】Triton(on updating)
【CAIS】关于Compound AI Systems的思考
【Nvidia】关于Cuda+Cudnn+TensorRT推理环境
【BEV】BEVDet在各个平台上的执行效率及优化(On Updating)
【Chip】AI在芯片设计和电路设计中的应用
【Chip】ChiPFormer
【Chip】关于布线的学习
【Chip】MaskPlace论文精读与工程复现优化
【gynasium】强化学习初体验
【Cadence】X AI
【transformer】MinGPT开源工程学习
【中间件】针对apollo 10.0中关于cyberRT性能优化的深度解读和思考
【Robotics】调研了解当前机器人开发者套件(on updating)
【Robotics】ROS CON China 2024 文档技术整理与感想总结(上2024.12.7,中2024.12.8,下场外产品)
【algorithm】关于模型、数据与标注规范的平衡问题
【nvidia】DLA的学习了解与使用
【nvidia】构建nvidia嵌入式平台的交叉编译环境(其他环境平台可借鉴)
文档发布于【Feng's Docs】
-
+
首页
【LLM微调】使用litgpt进行私有数据集模型微调的测试总结
# Introduction 通过对多个开源模型框架的调研和研究最终选择了litgpt框架作为我对LLM的一个初步探索和尝试。主要考虑到litgpt的几个优点: - [X] litgpt框架完全开源,能够进行模型的预训练、微调、评价和模型的发布 - [X] 由于继承了flash attention并支持4,8,16量化,训练速度和显存占用都非常友好 - [X] 支持多机多卡,模型并行,同时支持20余种大模型,如果要使用llama3系列需要去huggingface上申请token access https://huggingface.co/meta-llama/Meta-Llama-3-8B/discussions/172 - [X] 使用比较简单易上手,作为一个LLM小白还挺方便的 # Description 考虑到仅仅是做一个测试,我这边就直接使用一个pretrained模型,在自己的数据集上做了一个微调,为了加快速度使用了一个数据量较小的假数据。数据集整个的质量和多样性,也没有格外区分就是一些重复数据,非重复词条大概7条左右。 * 下载pretrained模型: `litgpt download microsoft/phi-2` 直接下载phi2模型大概2.7B参数 * 准备数据集:这里没有使用文档中的金融数据,而是自己做得假数据。大概7条数据重复了150遍左右。(这里需要注意,由于答案比较短,没有满足140个token的框架要求,我这边调整了一下代码防止assert无法通过而报错) [【附件】test_dataset2.json](/media/attachment/2024/06/test_dataset2.json)  * 然后就可以微调模型了: `litgpt finetune microsoft/phi-2 --data JSON --data.json_path test_dataset2.json --data.val_split_fraction 0.05 --out_dir out/custom-model-test2` * 可以看到损失正常下降  * 结束后分别对微调前和微调后的结果进行了测试,可以看到在未对模型进行微调前,基本上无法准确回答相关问题;而进行微调后,能够对新增的知识进行正确回答,但是同时也出现了回答不正确的眩晕效果,这个应该还是与数据本身的关系大一些。`最后,由于是一次快速尝试,在模型微调的过程中,能够看到本身模型的泛化性和已有的知识存在一定性的灾难性以往,这也是模型微调中经常出现的情况,因为没有做进一步更深层的研究所以不额外讨论相关问题`。  # After 而对于什么时候进行模型微调,什么时候使用搜索结果利用大模型进行信息整合,chatgpt给出的答案非常具有参考性: > 在处理少量知识数据时,选择接入搜索功能还是重新微调模型,取决于多种因素,包括结果的准确性、资源投入(如计算能力和存储空间)、开发复杂性等。以下是对这两种方法的详细比较,帮助你决定哪种方法更适合你的需求。 >> 1. 接入搜索功能 优势 资源节省 算力和存储:不需要大量的计算资源来微调模型。搜索功能主要依赖于已有的搜索引擎和索引技术,对计算资源的需求较低。 开发时间:实现搜索功能比微调模型耗时短,不需要大量的训练时间。 数据更新 实时性:可以随时更新或添加新的知识数据,不需要重新训练模型。搜索引擎可以动态地整合最新的信息,适应性强。 维护成本 易于维护:无需频繁调整模型,只需维护和更新搜索索引或数据库,降低了运维复杂度。 劣势 准确性依赖 搜索精度:搜索结果的准确性依赖于搜索引擎的性能和数据索引的质量,可能会出现结果偏差或不相关信息。 上下文理解:搜索功能难以像模型那样深刻理解上下文,尤其在复杂的问答场景下,可能无法生成高度相关的答案。 一致性问题 答案一致性:在不同查询中可能会得到不同的答案,缺乏统一的理解和解答标准。 适用场景 知识库较大且动态:如果知识数据量较大并且需要经常更新,搜索功能可以快速整合和访问最新信息。 资源有限:如果计算资源和存储资源有限,搜索功能是一个更为经济的选择。 快速部署:需要快速实现一个查询系统,搜索功能可以更快速地上线。 >> 2. 重新微调模型 优势 准确性和一致性 深度理解:微调模型能够通过训练学习复杂的语义关系和上下文信息,提供更准确的答案。 一致性:对于相同或相似的问题,模型能够给出一致的回答,提升用户体验。 定制化 领域适应:模型能够深度适应特定领域的语言和知识,提供高度定制化的回答。 知识整合:能够直接将少量高质量的知识整合到模型中,生成回答时可以更灵活地运用这些知识。 劣势 资源投入 算力和存储:微调需要大量计算资源和存储空间,特别是对于大型语言模型。 时间成本:微调模型需要较长的训练时间和精力来调整超参数。 数据量要求 数据需求:微调模型需要一定量的数据来达到较好的效果,少量数据可能导致过拟合或效果不佳。 维护复杂 更新难度:知识的更新需要重新训练或微调模型,相对麻烦且成本较高。 适用场景 定制化需求强:需要高度定制化和准确的回答,尤其是对于特定领域的深度理解。 资源充足:拥有足够的计算和存储资源,可以承受微调模型的资源消耗。 数据稳定:知识库内容较为固定,不需要频繁更新。 >> 3. 比较总结 结果准确性:微调模型通常在理解和生成准确回答方面表现更佳,特别是在需要深度语义理解和定制化的情况下。然而,如果只是对简单问答和信息查询,搜索功能也能提供足够准确的结果。 资源投入:接入搜索功能需要的资源较少,适合资源受限或需要快速实现的场景。微调模型需要较大的算力和存储资源,适合对准确性和一致性要求高的应用。 开发和维护:搜索功能开发相对简单,维护成本低,适合需要经常更新知识的数据。微调模型需要较高的开发和维护成本,但在稳定的知识环境中可以提供更高的准确性和一致性。 >> 4. 建议 如果知识数据量少且频繁更新,可以选择接入搜索功能,快速集成并节省资源。 如果对回答的准确性和一致性要求较高,且有足够的资源和时间,可以选择微调模型,提供更深度的定制化服务。 根据具体情况和需求权衡这两种方案的优缺点,做出最优选择。如果有更多细节或特定需求,欢迎进一步探讨!
dingfeng
2024年6月13日 17:31
522
0 条评论
转发文档
收藏文档
上一篇
下一篇
评论
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码