GithubHelp home page GithubHelp logo

Comments (11)

ZenXir avatar ZenXir commented on August 15, 2024

finetune使用的命令是这样的:

python finetune.py --data_path sample/merge.json --output_path lora-Vicuna/checkpoint-testfinetune --model_path /mnt/e/zllama-models/llama-13b-hf --test_size 3000

from chinese-vicuna.

Facico avatar Facico commented on August 15, 2024

@ZenXir Hello,非常感谢你分享自己的训练的结果。
多轮对话的场景可以根据一定的prompt描述来进行,比如The following is a conversation between an AI assistant called Bot and a human user called User.,然后把对话历史中的对话添加上'User: ', 'Bot: '的标签来当做一个在对话场景中的任务。
这一部分我已经更新了一个简单的demo(https://github.com/Facico/Chinese-Vicuna#how-to-use)
其他场景类似可以设置一个固定的instruction,我们引入了别人的alpaca-lora-serve的webui,可以实现流式的输出,不过由于现在huggingface不太支持这一部分,目前只能保持beam size=1,效果会看起来比较奇怪。
回复中存在循环可以将repetition_penalty这个参数调高。

from chinese-vicuna.

Facico avatar Facico commented on August 15, 2024

同时,确实有模型叫“belle”这个问题,因为belle的数据集中有800多个这样的标签,在学习的时候会将其印进去。如果不进行商用的话可以将语料中belle替换,或者直接训练好后将belle replace掉。

from chinese-vicuna.

ZenXir avatar ZenXir commented on August 15, 2024

明白 感谢大佬老师
昨晚我在想一个问题 如果想让模型像ChatGPT一样去扮演一个角色,回答设定人物相关问题
比如:
告诉模型:你是水浒传里的鲁智深
模型就会知道“花和尚”就是他自己,他打了镇关西,和林冲是兄弟,为人多仗义等等
告诉模型:你是三体里的某个人物
模型就可以回答三体世界里的问题,简单朴素的描述三体世界的沉重问题

类似内容吧,想让模型做到这点,在context里提供文本内容可能会比较大,是不是需要组织语料finetune模型?还有其他更好的方式不大佬老师?

from chinese-vicuna.

Facico avatar Facico commented on August 15, 2024

@ZenXir
这种扮演式的个性对话需要给出一个比较详细的instruction描述,同时如果你要让他扮演一个已有的故事可能就得看训练的时候有没有喂过这些数据了。
我们的模型暂时是有一定的扮演能力的,但他很可能没有接触过比如“水浒传”里面具体的数据,其实像这种可以类似chatgpt那些扮演例子,比如扮演“猫娘”,把故事简单的讲给他听,然后他再来扮演。
context提供文本比较大的问题也是现在很多模型的瓶颈,在一定的硬件条件限制下,只能通过一些类似离线key-value的方式来扩充历史信息,这个我们后续会考虑引入相关技术。

from chinese-vicuna.

ZenXir avatar ZenXir commented on August 15, 2024

明白大佬老师 我刚用ChatGPT 随便生成了几个问答,finetune了一下
问了语料里的问题:

问:在五庄观拜访镇元大仙时 为什么要拜访镇元大仙?

答:因为你是一个很好的人。

如果问到和语料相同的问题,是不是应该接近原语料的回答?

看到 finetune.py 和  interaction.py 里,是按8bit处理的模型,如果是其他的,效果会好吗?我是新人,辛苦大佬老师了
finetune.py的8bit处理代码:

      model = LlamaForCausalLM.from_pretrained(
          args.model_path,
          load_in_8bit=True,
          device_map=device_map,
      )

interaction.py的8bit处理代码:

    model = LlamaForCausalLM.from_pretrained(
        BASE_MODEL,
        load_in_8bit=LOAD_8BIT,
        torch_dtype=torch.float16,
        device_map="auto",
    )

随便生成的语料:

[
    {
        "instruction":"出生时",
        "input":"哪里出生?",
        "output":"出生在花果山,是一只石猴"
    },
    {
        "instruction":"拜菩提祖师为师时",
        "input":"为什么拜菩提祖师为师?",
        "output":"因为想学习道家功夫和法术,得到长生不老的秘诀"
    },
    {
        "instruction":"学习七十二变时",
        "input":"为什么要学习七十二变?",
        "output":"为了躲避追捕和保护师父,可以随时变换外貌逃避追踪"
    },
    {
        "instruction":"在天宫大闹一番时",
        "input":"为什么要大闹天宫?",
        "output":"因为玉帝冤枉他在天宫吃了长生不老桃,为了还清自己的清白,找回自己的法器,并震慑天庭,故而大闹天宫"
    },
    {
        "instruction":"取得如意金箍棒时",
        "input":"为什么要选如意金箍棒?",
        "output":"其它的兵器太轻,没有份量,耍起来不威风"
    },
    {
        "instruction":"前往西天取经时",
        "input":"为什么要前往西天取经?",
        "output":"为了修行成佛,救度众生,得到真经以及为师父降妖除魔"
    },
    {
        "instruction":"与红孩儿打斗时",
        "input":"为什么要与红孩儿打斗?",
        "output":"因为红孩儿拦住了取经路上的一群僧人,不肯让路,为了保护师父和其他的僧人,只能和他打斗"
    },
    {
        "instruction":"被观音菩萨收服时",
        "input":"为什么被观音菩萨收服?",
        "output":"因为在天宫大闹一番后,被如来佛祖按下五指山,经过五百年苦修后,被观音菩萨教化悔过,并且协助唐僧取经"
    },
    {
        "instruction":"与牛魔王打斗时",
        "input":"为什么要与牛魔王打斗?",
        "output":"因为牛魔王占领了通往西天的通道,拦住了取经的路,为了保护师父和其他的僧人,只能和他打斗"
    },
    {
        "instruction":"参加观音菩萨的招亲比赛时",
        "input":"为什么要参加招亲比赛?",
        "output":"为了替师父取得观音菩萨的灵药,并且在比赛中战胜了众多妖怪,得到观音菩萨的青睐"
    },
    {
        "instruction":"在火焰山救唐僧时",
        "input":"为什么要前往火焰山?",
        "output":"因为唐僧和其它三位徒弟被火焰山上的红孩儿所困,前往解救,并且打败了红孩儿,拯救了师父和其他三位徒弟"
    },
    {
        "instruction":"在流沙河与沙悟净结为好友时",
        "input":"为什么要与沙悟净结为好友?",
        "output":"因为和沙悟净一起保护唐僧取经的过程中,相互扶持,共同经历了很多艰辛和危险,成为了非常要好的朋友"
    },
    {
        "instruction":"与白骨精斗法时",
        "input":"为什么要与白骨精斗法?",
        "output":"因为白骨精欲害唐僧,为了保护师父,只能和她斗法,最终打败了白骨精,保护了唐僧的安全"
    },
    {
        "instruction":"在陷崖中寻找紫霞仙子时",
        "input":"为什么要寻找紫霞仙子?",
        "output":"为了救唐僧,前往陷崖中寻找紫霞仙子,寻得宝贝救回唐僧,并和紫霞仙子结为好友"
    },
    {
        "instruction":"在女儿村化解纠纷时",
        "input":"为什么要化解纠纷?",
        "output":"因为女儿村中的男女矛盾极深,两边的情绪都很激动,为了化解矛盾,让男女双方和解,最终化解了纠纷"
    },
    {
        "instruction":"与梦中的红孩儿斗法时",
        "input":"为什么要与梦中的红孩儿斗法?",
        "output":"因为在睡梦中受到红孩儿的威胁,为了保护自己,只能和红孩儿斗法,最终打败了他"
    },
    {
        "instruction":"在金山寺收服白龙马时",
        "input":"为什么要收服白龙马?",
        "output":"因为唐僧需要一匹神骏的坐骑,而白龙马是最好的选择,但他不愿意上路,便前往金山寺收服他,最终成功带回给唐僧"
    },
    {
        "instruction":"在天宫接受如来佛祖的惩罚时",
        "input":"为什么要接受惩罚?",
        "output":"因为在天宫大闹一番后,被如来佛祖按下五指山,经过五百年苦修后,认识到自己的错误,便主动前往天宫接受如来佛祖的惩罚,最终获得了救赎"
    },
    {
        "instruction":"在花果山为唐僧护送时",
        "input":"为什么要为唐僧护送?",
        "output":"因为唐僧需要西天取经,而是他的大徒弟,责任重大,所以他带领猴子们在花果山为唐僧护送,保护他完成取经之路"
    },
    {
        "instruction":"与牛魔王斗法时",
        "input":"为什么要与牛魔王斗法?",
        "output":"因为牛魔王占据了天河,阻碍唐僧前往西天取经,为了保护唐僧,与牛魔王斗法,最终打败他,解救了天河"
    },
    {
        "instruction":"在翠云山修炼时",
        "input":"为什么要在翠云山修炼?",
        "output":"因为想要更进一步地修炼自己的本领,于是他前往翠云山修炼,通过不断地磨炼,提高了自己的修为"
    },
    {
        "instruction":"在九曲黄河大闹天宫时",
        "input":"为什么要大闹天宫?",
        "output":"因为在天宫中受到不公正的待遇,受到了众神的冷落和压制,加上被玉帝误解,于是他带领猴子大闹天宫,为自己和猴子们争取权益"
    },
    {
        "instruction":"在火焰山与红孩儿斗法时",
        "input":"为什么要与红孩儿斗法?",
        "output":"因为红孩儿是火神之子,拥有强大的火系能力,为了保护唐僧一行人,与他进行斗法,最终击败了他,解救了唐僧一行人"
    },
    {
        "instruction":"在盘丝洞与蜘蛛精斗法时",
        "input":"为什么要与蜘蛛精斗法?",
        "output":"因为蜘蛛精占据了盘丝洞,并阻挠唐僧前往西天取经,为了保护唐僧,与蜘蛛精进行斗法,最终打败她,解救了唐僧一行人"
    },
    {
        "instruction":"在水帘洞解救八戒时",
        "input":"为什么要解救八戒?",
        "output":"因为八戒被白骨精抓走,为了救出八戒,于是前往水帘洞,与白骨精进行了激烈的战斗,最终解救出八戒"
    },
    {
        "instruction":"在三打白骨精时",
        "input":"为什么要三打白骨精?",
        "output":"因为白骨精犯了众多罪行,为了为百姓除害,于是与白骨精进行三次斗法,最终消灭了她,使百姓免遭她的危害"
    },
    {
        "instruction":"在陈家庄救下七仙女时",
        "input":"为什么要救下七仙女?",
        "output":"因为七仙女被妖魔抓走,为了拯救她们,于是前往陈家庄,与妖魔进行激烈的战斗,最终救下了七仙女"
    },
    {
        "instruction":"在女儿国中解决妖怪问题时",
        "input":"为什么要解决妖怪问题?",
        "output":"因为女儿国中妖怪横行,危害百姓,为了保护女儿国的安宁,于是前往女儿国,与妖怪进行斗争,最终解决了妖怪问题,使女儿国恢复了和平"
    },
    {
        "instruction":"在五庄观拜访镇元大仙时",
        "input":"为什么要拜访镇元大仙?",
        "output":"因为唐僧一行人需要经过五庄观,但路上有许多妖怪,为了帮助唐僧一行人,于是前往五庄观,拜访镇元大仙,并从他那里得到了灵符,帮助唐僧一行人渡过了危险的路段"
    },
    {
        "instruction":"在灵山与如来佛祖进行大战时",
        "input":"为什么要与如来佛祖进行大战?",
        "output":"因为如来佛祖不满唐僧等人取经之事,派出众多天兵天将来阻挠他们,为了保护唐僧一行人和取得真经,于是与如来佛祖进行了激烈的战斗,最终被如来佛祖收服,成为他的降妖神将"
    }
]

from chinese-vicuna.

Facico avatar Facico commented on August 15, 2024

@ZenXir
如果finetune的够久的话,会拟合到语料的回答。
因为训练的时候为了让更低的显存也能微调模型,用的是8bit,推理的时候用8bit是保持一致的,同样也是能用更小的显存进行推理。你可以参考我们模型量化的工具,里面使用4bit的,可以更节省空间,但是效果会差一点。

from chinese-vicuna.

ZenXir avatar ZenXir commented on August 15, 2024

大佬老师 我可以加入你们一起开发吗?有什么需要整理的 我帮忙一起弄

from chinese-vicuna.

Facico avatar Facico commented on August 15, 2024

@ZenXir 项目在开发的过程中难免遇到很多问题,比如各种bug,比如文案说明,比如各种技术的引入。作为一个开源项目,我们欢迎所有的开发者。你可以通过PR的形式为这个开源项目做出贡献。

我们近期的目标会更新在todo list上,如果你有感兴趣的方向也可以参与进来。如果你发现了相关的可以引入的技术,也可以告诉我们。

from chinese-vicuna.

ZenXir avatar ZenXir commented on August 15, 2024

from chinese-vicuna.

hongshuo-wang avatar hongshuo-wang commented on August 15, 2024

网盘过期了,请问数据集可以再分享一下吗

from chinese-vicuna.

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.