Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

我希望在将某个业务领域的知识补充进入模型,这些知识主要是书籍,文档等非结构化的文本,我可以通过微调实现么?具体要怎么实现呢? #642

Open
13661172102 opened this issue Nov 15, 2023 · 20 comments
Labels

Comments

@13661172102
Copy link

我希望在某一行业领域对模型进行知识补充和强化,但是我看到咱们官方给的微调主要是基于结构化的提示词来进行的,而我的知识主要以数据和文档这类非结构化的文本数据为主,我需要怎么做才能实现这样的微调呢

@tpoisonooo
Copy link

参考,看到了就顺带回答,根据个人理解不一定对。

  1. 官方的 QA 形式,也可以直接用。 把文档拆成一段一段的,只有 Q。 A 留空。
    这样做其实是训练,数据质量不知道如何,也许会崩。

  2. 真正的做法,要拿 qwen base 模型的训练数据 + 你的领域数据,一起训。

@13661172102
Copy link
Author

参考,看到了就顺带回答,根据个人理解不一定对。

  1. 官方的 QA 形式,也可以直接用。 把文档拆成一段一段的,只有 Q。 A 留空。
    这样做其实是训练,数据质量不知道如何,也许会崩。
  2. 真正的做法,要拿 qwen base 模型的训练数据 + 你的领域数据,一起训。

方法二确实是效果最佳的方案,但是我拿不到所有的训练数据,拿到了也没那么多算力来训练。
方法一确实是一种途径,我另外还有两个考虑,一是结合向量库,二是期望官方有没有非QA形式的补充知识的方案

@tpoisonooo
Copy link

tpoisonooo commented Nov 16, 2023

参考,看到了就顺带回答,根据个人理解不一定对。

  1. 官方的 QA 形式,也可以直接用。 把文档拆成一段一段的,只有 Q。 A 留空。
    这样做其实是训练,数据质量不知道如何,也许会崩。
  2. 真正的做法,要拿 qwen base 模型的训练数据 + 你的领域数据,一起训。

方法二确实是效果最佳的方案,但是我拿不到所有的训练数据,拿到了也没那么多算力来训练。 方法一确实是一种途径,我另外还有两个考虑,一是结合向量库,二是期望官方有没有非QA形式的补充知识的方案

并不是要所有的训练数据。你问 @JustinLin610 愿意放出来 0.1% 么..

  • 对 finetune 有用
  • 对上汇报说起来很敏感,说到底也是一份拿钱干活的工作,想想要对各部门解释都头疼
  • 千分之一并不能直接让友商变强,但会让友商对比数据质量间接变强

个人觉得结合 langchain 没啥用, gpt4 目前也无法根据材料,问一个“好问题” 。

@13661172102
Copy link
Author

参考,看到了就顺带回答,根据个人理解不一定对。

  1. 官方的 QA 形式,也可以直接用。 把文档拆成一段一段的,只有 Q。 A 留空。
    这样做其实是训练,数据质量不知道如何,也许会崩。
  2. 真正的做法,要拿 qwen base 模型的训练数据 + 你的领域数据,一起训。

方法二确实是效果最佳的方案,但是我拿不到所有的训练数据,拿到了也没那么多算力来训练。 方法一确实是一种途径,我另外还有两个考虑,一是结合向量库,二是期望官方有没有非QA形式的补充知识的方案

并不是要所有的训练数据。你问 @JustinLin610 愿意放出来 0.1% 么..

  • 对 finetune 有用
  • 对上汇报说起来很敏感,说到底也是一份拿钱干活的工作,想想要对各部门解释都头疼
  • 千分之一并不能直接让友商变强,但会让友商对比数据质量间接变强

个人觉得结合 langchain 没啥用, gpt4 目前也无法根据材料,问一个“好问题” 。

嗯,指望提供训练数据是不现实,已经开源了训练代码和14b的模型,也不能指望把家底都掏出来。
我倒没期望能问一个好问题,我是期望能基于知识库中的材料,回答问题,调用工具,这方面你有尝试过么

@kyriekevin
Copy link

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

@13661172102
Copy link
Author

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

@13661172102
Copy link
Author

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

外挂知识库的我在试,用的langchain-chatchat

@kyriekevin
Copy link

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

@13661172102
Copy link
Author

13661172102 commented Nov 16, 2023

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

好吧,外挂向量库的方式,我初步尝试,感觉就像是在做模糊搜索,没有很好的跟模型集成在一起
你们生成的sft数据也是 QA形式的么? 大概需要多少条这种数据才能让模型的回答质量有显著的提升呢,以Qwen-14b-Chat为例

@kyriekevin
Copy link

kyriekevin commented Nov 16, 2023

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

好吧,外挂向量库的方式,我初步尝试,感觉就像是在做模糊搜索,没有很好的跟模型集成在一起 你们生成的sft数据也是 QA形式的么? 大概需要多少条这种数据才能让模型的回答质量有显著的提升呢,以Qwen-14b-Chat为例

  1. 外挂知识库应该是需要配合检索模型,是可以在input layer、intermediate layer、output layer检索,我们是采用在input layer检索与问题拼接输入给模型
  2. 可以做成QA,量级可能取决于你的训练方法和数据质量。我之前本科毕设是只用领域sft数据用lora训(质量没有经过筛选),差不多是10w量级会有明显提升。qwen-14b-chat,我们是100w级通用sft+10w级领域sft数据做全量微调,可以保证在通用客观数据集不掉点情况下,业务领域有明显提升。
  3. 我们只有领域文档数据,没有去收集书籍和paper,当时专家评测是专业知识上不足,但有实际经验(主要数据都是案例)。所以可能是需要做multisource,去规划比例。并且量级在高质量语料和prompt保证下,应该不用很大

@13661172102
Copy link
Author

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

好吧,外挂向量库的方式,我初步尝试,感觉就像是在做模糊搜索,没有很好的跟模型集成在一起 你们生成的sft数据也是 QA形式的么? 大概需要多少条这种数据才能让模型的回答质量有显著的提升呢,以Qwen-14b-Chat为例

  1. 外挂知识库应该是需要配合检索模型,是可以在input layer、intermediate layer、output layer检索,我们是采用在input layer检索与问题拼接输入给模型
  2. 可以做成QA,量级可能取决于你的训练方法和数据质量。我之前本科毕设是只用领域sft数据用lora训(质量没有经过筛选),差不多是10w量级会有明显提升。qwen-14b-chat,我们是100w级通用sft+10w级领域sft数据做全量微调,可以保证在通用客观数据集不掉点情况下,业务领域有明显提升。
  3. 我们只有领域文档数据,没有去收集书籍和paper,当时专家评测是专业知识上不足,但有实际经验(主要数据都是案例)。所以可能是需要做multisource,去规划比例。并且量级在高质量语料和prompt保证下,应该不用很大

我看了一下https://github.com/chatchat-space/Langchain-Chatchat 的代码,也外挂知识库跟你们的做法类似,额外选了一个transformer模型用于建立向量库和向量检索,检索到的结果作为提示词的参数输入,效果有,但谈不上理想。模型的回答首先取决于搜索的结果,如果搜索的结果不理想,就GG了。
相比之下微调我认为应该有更好的效果,可以想模型理解并记忆相关知识,我打算按你们之前的方法,把我的资料转为QA形式,微调试试看。

感谢你的耐心解答,感谢!!!

@lozzo
Copy link

lozzo commented Nov 23, 2023

参考,看到了就顺带回答,根据个人理解不一定对。

  1. 官方的 QA 形式,也可以直接用。 把文档拆成一段一段的,只有 Q。 A 留空。
    这样做其实是训练,数据质量不知道如何,也许会崩。
  2. 真正的做法,要拿 qwen base 模型的训练数据 + 你的领域数据,一起训。

方案1有人尝试过吗?

@lozzo
Copy link

lozzo commented Nov 23, 2023

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

好吧,外挂向量库的方式,我初步尝试,感觉就像是在做模糊搜索,没有很好的跟模型集成在一起 你们生成的sft数据也是 QA形式的么? 大概需要多少条这种数据才能让模型的回答质量有显著的提升呢,以Qwen-14b-Chat为例

  1. 外挂知识库应该是需要配合检索模型,是可以在input layer、intermediate layer、output layer检索,我们是采用在input layer检索与问题拼接输入给模型
  2. 可以做成QA,量级可能取决于你的训练方法和数据质量。我之前本科毕设是只用领域sft数据用lora训(质量没有经过筛选),差不多是10w量级会有明显提升。qwen-14b-chat,我们是100w级通用sft+10w级领域sft数据做全量微调,可以保证在通用客观数据集不掉点情况下,业务领域有明显提升。
  3. 我们只有领域文档数据,没有去收集书籍和paper,当时专家评测是专业知识上不足,但有实际经验(主要数据都是案例)。所以可能是需要做multisource,去规划比例。并且量级在高质量语料和prompt保证下,应该不用很大

我看了一下https://github.com/chatchat-space/Langchain-Chatchat 的代码,也外挂知识库跟你们的做法类似,额外选了一个transformer模型用于建立向量库和向量检索,检索到的结果作为提示词的参数输入,效果有,但谈不上理想。模型的回答首先取决于搜索的结果,如果搜索的结果不理想,就GG了。 相比之下微调我认为应该有更好的效果,可以想模型理解并记忆相关知识,我打算按你们之前的方法,把我的资料转为QA形式,微调试试看。

感谢你的耐心解答,感谢!!!

你好,效果如何?

@XiaozhuLove
Copy link

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

好吧,外挂向量库的方式,我初步尝试,感觉就像是在做模糊搜索,没有很好的跟模型集成在一起 你们生成的sft数据也是 QA形式的么? 大概需要多少条这种数据才能让模型的回答质量有显著的提升呢,以Qwen-14b-Chat为例

  1. 外挂知识库应该是需要配合检索模型,是可以在input layer、intermediate layer、output layer检索,我们是采用在input layer检索与问题拼接输入给模型
  2. 可以做成QA,量级可能取决于你的训练方法和数据质量。我之前本科毕设是只用领域sft数据用lora训(质量没有经过筛选),差不多是10w量级会有明显提升。qwen-14b-chat,我们是100w级通用sft+10w级领域sft数据做全量微调,可以保证在通用客观数据集不掉点情况下,业务领域有明显提升。
  3. 我们只有领域文档数据,没有去收集书籍和paper,当时专家评测是专业知识上不足,但有实际经验(主要数据都是案例)。所以可能是需要做multisource,去规划比例。并且量级在高质量语料和prompt保证下,应该不用很大

我看了一下https://github.com/chatchat-space/Langchain-Chatchat 的代码,也外挂知识库跟你们的做法类似,额外选了一个transformer模型用于建立向量库和向量检索,检索到的结果作为提示词的参数输入,效果有,但谈不上理想。模型的回答首先取决于搜索的结果,如果搜索的结果不理想,就GG了。 相比之下微调我认为应该有更好的效果,可以想模型理解并记忆相关知识,我打算按你们之前的方法,把我的资料转为QA形式,微调试试看。

感谢你的耐心解答,感谢!!!

您好,请问您训练效果怎么样了,可以简单分享下吗?

@AI-Study-Han
Copy link

我希望在某一行业领域对模型进行知识补充和强化,但是我看到咱们官方给的微调主要是基于结构化的提示词来进行的,而我的知识主要以数据和文档这类非结构化的文本数据为主,我需要怎么做才能实现这样的微调呢

如果是纯文本专业领域的书籍的话,方便的话可以合作一下。我这边跑通了1.8b大小的模型的从0开始的预训练和指令微调过程,想找专业领域书籍测试能否很好的学习专业领域的知识,您这边提供数据,我提供算力和实验,参数可以商量着来。只是为了学习和尝试大模型的训练,数据不敏感的话可以交流一下。

@xxbshow
Copy link

xxbshow commented Feb 1, 2024

我希望在某一行业领域对模型进行知识补充和强化,但是我看到咱们官方给的微调主要是基于结构化的提示词来进行的,而我的知识主要以数据和文档这类非结构化的文本数据为主,我需要怎么做才能实现这样的微调呢

如果是纯文本专业领域的书籍的话,方便的话可以合作一下。我这边跑通了1.8b大小的模型的从0开始的预训练和指令微调过程,想找专业领域书籍测试能否很好的学习专业领域的知识,您这边提供数据,我提供算力和实验,参数可以商量着来。只是为了学习和尝试大模型的训练,数据不敏感的话可以交流一下。

你不如找点开源数据集、医疗的、法律的挺多

@woshizhide
Copy link

我希望在某一行业领域对模型进行知识补充和强化,但是我看到咱们官方给的微调主要是基于结构化的提示词来进行的,而我的知识主要以数据和文档这类非结构化的文本数据为主,我需要怎么做才能实现这样的微调呢

如果是纯文本专业领域的书籍的话,方便的话可以合作一下。我这边跑通了1.8b大小的模型的从0开始的预训练和指令微调过程,想找专业领域书籍测试能否很好的学习专业领域的知识,您这边提供数据,我提供算力和实验,参数可以商量着来。只是为了学习和尝试大模型的训练,数据不敏感的话可以交流一下。

你不如找点开源数据集、医疗的、法律的挺多

医疗中文的 给发个链接?

@13661172102
Copy link
Author

13661172102 commented Apr 16, 2024 via email

@888mob
Copy link

888mob commented Apr 18, 2024

  1. 直接外挂知识量库,然后使用检索模型
  2. 使用GPT4对文本进行抽取转成sft格式(耗钱,但效果好)
  3. 基于langchain等工具,主要看langchain和qwen的兼容性

gpt4有专门做抽取转sft的接口么,其他模型有类似的不?

应该没有,这个不同领域prompt设计、sft数据设计、应用场景等等区别蛮大,我们是有在几个领域以及wiki数据上使用gpt4配合文本生成sft数据,这个流程可以work,但是耗时耗钱

好吧,外挂向量库的方式,我初步尝试,感觉就像是在做模糊搜索,没有很好的跟模型集成在一起 你们生成的sft数据也是 QA形式的么? 大概需要多少条这种数据才能让模型的回答质量有显著的提升呢,以Qwen-14b-Chat为例

  1. 外挂知识库应该是需要配合检索模型,是可以在input layer、intermediate layer、output layer检索,我们是采用在input layer检索与问题拼接输入给模型
  2. 可以做成QA,量级可能取决于你的训练方法和数据质量。我之前本科毕设是只用领域sft数据用lora训(质量没有经过筛选),差不多是10w量级会有明显提升。qwen-14b-chat,我们是100w级通用sft+10w级领域sft数据做全量微调,可以保证在通用客观数据集不掉点情况下,业务领域有明显提升。
  3. 我们只有领域文档数据,没有去收集书籍和paper,当时专家评测是专业知识上不足,但有实际经验(主要数据都是案例)。所以可能是需要做multisource,去规划比例。并且量级在高质量语料和prompt保证下,应该不用很大

您好,请问你们的领域文档数据是如何自己制作成sft数据格式(prompt output那种)的呢?除了人工方法有自动生成的方法吗

Copy link

This issue has been automatically marked as inactive due to lack of recent activity. Should you believe it remains unresolved and warrants attention, kindly leave a comment on this thread.
此问题由于长期未有新进展而被系统自动标记为不活跃。如果您认为它仍有待解决,请在此帖下方留言以补充信息。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

9 participants