Code Monkey home page Code Monkey logo

Comments (11)

zhaodice avatar zhaodice commented on May 14, 2024 1

而且,在现有的微调基础上,用(新训练集+旧训练集)继续训练,与重新开始微调相比,loss下降的会很快,相当于loss就是从数据变化的那部分开始下降了~如果你重头微调,loss会从头下降,慢。

求教继续训练的示例代码有吗?我按这个代码 mymusise/ChatGLM-Tuning#14 (comment) 貌似没有在上次的checkpoint继续,貌似loss还是重头开始的,没有下降的很快

去找 hcgf 这个项目

from zero_nlp.

zhaodice avatar zhaodice commented on May 14, 2024

而且随着训练…参数似乎在增加?能在不改变参数量的情况下微调模型吗#(通过逐步覆盖一些用不到的参数,通过牺牲模型的其他功能,实现总参数不变的微调)

from zero_nlp.

zhaodice avatar zhaodice commented on May 14, 2024

我自己验证好了,可以实现,写了个webui可以实时修改对话,并把对话写入训练集,现在还差最后一个技术难题

from zero_nlp.

safehumeng avatar safehumeng commented on May 14, 2024

而且随着训练…参数似乎在增加?能在不改变参数量的情况下微调模型吗#(通过逐步覆盖一些用不到的参数,通过牺牲模型的其他功能,实现总参数不变的微调)

为什么参数会增加呢,每次训练都用一个新的lora层么

from zero_nlp.

zhaodice avatar zhaodice commented on May 14, 2024

而且随着训练…参数似乎在增加?能在不改变参数量的情况下微调模型吗#(通过逐步覆盖一些用不到的参数,通过牺牲模型的其他功能,实现总参数不变的微调)

为什么参数会增加呢,每次训练都用一个新的lora层么

难道不是,训练集越大,参数越多吗…

from zero_nlp.

yuanzhoulvpi2017 avatar yuanzhoulvpi2017 commented on May 14, 2024
  1. 因为你训练后的模型,已经是被peft包裹后的模型了。peft(base_model)

  2. 然后你又训练了一次,这一次是peft(peft(base_model))

  3. 然后你又训练了一次,这一次是peft(peft(peft(base_model)))

  4. 这样下去,肯定参数越来越大。

  5. 因为peft本质上就是对:原始的模型参数全部固定(require_grad=False),然后对每一个layerquery_key_valueloraa*lorab做旁路了;在模型结构上,又包裹了新的一层。

  6. 直接用,肯定是不行的,要能够把结构拆解开,才能做实事微调。

from zero_nlp.

zhaodice avatar zhaodice commented on May 14, 2024
  1. 因为你训练后的模型,已经是被peft包裹后的模型了。peft(base_model)

    1. 然后你又训练了一次,这一次是peft(peft(base_model))

    2. 然后你又训练了一次,这一次是peft(peft(peft(base_model)))

    3. 这样下去,肯定参数越来越大。

    4. 因为peft本质上就是对:原始的模型参数全部固定(require_grad=False),然后对每一个layerquery_key_valueloraa*lorab做旁路了;在模型结构上,又包裹了新的一层。

    5. 直接用,肯定是不行的,要能够把结构拆解开,才能做实事微调。

事实上我已经跑通了,hcgf这项目,多次继续微调,微调文件.pt永远是16MB,似乎没有出现嵌套情况(不过每次微调都要加上以前的老数据,否则会出现灾难性遗忘)

from zero_nlp.

huangxd- avatar huangxd- commented on May 14, 2024
  1. 因为你训练后的模型,已经是被peft包裹后的模型了。peft(base_model)

    1. 然后你又训练了一次,这一次是peft(peft(base_model))
    2. 然后你又训练了一次,这一次是peft(peft(peft(base_model)))
    3. 这样下去,肯定参数越来越大。
    4. 因为peft本质上就是对:原始的模型参数全部固定(require_grad=False),然后对每一个layerquery_key_valueloraa*lorab做旁路了;在模型结构上,又包裹了新的一层。
    5. 直接用,肯定是不行的,要能够把结构拆解开,才能做实事微调。

事实上我已经跑通了,hcgf这项目,多次继续微调,微调文件.pt永远是16MB,似乎没有出现嵌套情况(不过每次微调都要加上以前的老数据,否则会出现灾难性遗忘)

如果不加老数据会遗忘,必须加上的话,跟从预训练模型重新训练有什么区别?

from zero_nlp.

zhaodice avatar zhaodice commented on May 14, 2024
  1. 因为你训练后的模型,已经是被peft包裹后的模型了。peft(base_model)

    1. 然后你又训练了一次,这一次是peft(peft(base_model))
    2. 然后你又训练了一次,这一次是peft(peft(peft(base_model)))
    3. 这样下去,肯定参数越来越大。
    4. 因为peft本质上就是对:原始的模型参数全部固定(require_grad=False),然后对每一个layerquery_key_valueloraa*lorab做旁路了;在模型结构上,又包裹了新的一层。
    5. 直接用,肯定是不行的,要能够把结构拆解开,才能做实事微调。

事实上我已经跑通了,hcgf这项目,多次继续微调,微调文件.pt永远是16MB,似乎没有出现嵌套情况(不过每次微调都要加上以前的老数据,否则会出现灾难性遗忘)

如果不加老数据会遗忘,必须加上的话,跟从预训练模型重新训练有什么区别?

有区别啊,因为我一开始【并没有】这么多数据集,我先喂一点数据,得到微调1.0,和微调1.0交互得到新数据,人工修改后加入数据集。

重新微调得到微调2.0,继续交互得到新数据再并入以前的旧数据集。
就这样,数据良品率越来越高,随着并入数据越来越多,自然训练效果越来越好。

如果你一次性就有这么多数据,一次训练成本是最低的,但没这么多数据怎么办呀,就需要一步一步一边训练一边引导AI自己产生训练集了。

from zero_nlp.

zhaodice avatar zhaodice commented on May 14, 2024

而且,在现有的微调基础上,用(新训练集+旧训练集)继续训练,与重新开始微调相比,loss下降的会很快,相当于loss就是从数据变化的那部分开始下降了~如果你重头微调,loss会从头下降,慢。

from zero_nlp.

huangxd- avatar huangxd- commented on May 14, 2024

而且,在现有的微调基础上,用(新训练集+旧训练集)继续训练,与重新开始微调相比,loss下降的会很快,相当于loss就是从数据变化的那部分开始下降了~如果你重头微调,loss会从头下降,慢。

求教继续训练的示例代码有吗?我按这个代码 mymusise/ChatGLM-Tuning#14 (comment) 貌似没有在上次的checkpoint继续,貌似loss还是重头开始的,没有下降的很快

from zero_nlp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.