InternLM/Agent-FLAN

想请教一些关于训练的事情

Opened this issue · 9 comments

  1. 文章中说"对于Agent-FLAN实验,我们遵循AgentTuning中的做法,将ShareGPT和Agent语料库以1:1的混合比例混合进行训练。"
    image
    我注意到你们给出了数据集,想请教一下你们数据量和配比是什么呢?(包括flan版本和你们复现的agenttuning版本)(shareGPT应该就90000多条吧,你们是把这几个怎么混合(or过采样)到一样的呢?)
    2.想在了解一下超参数的问题,因为我看agenttuning有一些非常奇怪的超参数,您这里是直接使用deepspeed默认的超参数吗?(for example 10%的warmup,最大token是2048还是4096之类的)
  1. 我们没有对sharegpt做采样,对两边数据直接混合,因为agent-flan的数据其实和sharegpt差不多多了
  2. 我们的训练框架用的是internlm内部的框架, 不过setting应该跟正常的都保持一致,max_token在我们的baseline是8192
  1. 我们没有对sharegpt做采样,对两边数据直接混合,因为agent-flan的数据其实和sharegpt差不多多了

https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/tree/main 这里貌似有9w条数据(这还是我查到的比较少的),而agent-flan总共也就3w多条。所以貌似不太能match上?想请教一下您们用的是什么?方便复现❤️

就是不做采样直接混合呀,因为大家都在一个数量级上所以我们就没有做针对性的采样了

还是有两个问题想请教一下:

就是不做采样直接混合呀,因为大家都在一个数量级上所以我们就没有做针对性的采样了
1、那如何做到sharegpt和agentflan 1:1的呢?(附录A)9w对3w貌似对不上?
2、我看你们有一部分数据有loss参数(应该是从agentinstruct继承过来的),但有一部分没有。所以你们会对这一部分loss做特殊处理吗?(只bp loss=true和不带loss的,还是无视他?)

  1. 这里的1:1是指没有采样直接混合的1:1,这里我们会更新一下陈述方式,避免误解 sry
  2. 当role是assistant的话,且没有指定的话默认就会计算loss
  1. 当role是assistant的话,且没有指定的话默认就会计算loss

我发现了一些奇怪的点,比如toolbench_tflan_60p_r10r5u7.jsonl的第四条( "id": "toolbench_tflan_60p_r10r5u7_3"),最后一个的loss是false,那这不是没有意义吗?(按照您的意思这种并不会对loss有贡献吧,那不是算到最后一个loss=true的就行?)
我想知道这是一个bad case还是我理解错了你的loss计算方式

求对上一个计算loss的解答(因为agent-flan里有最后一个输出loss是false的,那理论上没必要把它放进来,所以你们是吧所有loss都计算了吗?),以及想再问一下你们会把sharegpt第一个是gpt的过滤掉吗?

求对上一个计算loss的解答(因为agent-flan里有最后一个输出loss是false的,那理论上没必要把它放进来,所以你们是吧所有loss都计算了吗?),以及想再问一下你们会把sharegpt第一个是gpt的过滤掉吗?

我们只计算了assistant上的loss,同时如果assistant上的loss=False也不计算,sharegpt也只计算assistant上的
以及有些loss=False的句子放进来的目的是为了保证后面学习的连贯性

我们只计算了assistant上的loss,同时如果assistant上的loss=False也不计算,sharegpt也只计算assistant上的 以及有些loss=False的句子放进来的目的是为了保证后面学习的连贯性

是这样子的,但如果最后一轮是false(比如toolbench_tflan_60p_r10r5u7.jsonl的第四条( "id": "toolbench_tflan_60p_r10r5u7_3"))他对全文没有任何意义,因为decoder的缘故前文算梯度根本算不到他。(甚至还有两个case是所有轮次都是false的)我就是想知道这是传错了还是什么原因?