github地址:https://github.com/THUDM/GLM-4
一、环境:
操作系统: Ubuntu 22.04
CUDA: 11.8
GPU: 4090 24G
创建conda环境:
conda create -n glm4 python=3.10.14
conda activate glm4
cd /home/data/chatglm4-finetune
二、数据准备
使用“豆包”生成一些用于train的数据集和test的数据集
代码格式如下:
{"messages": [{"role": "user", "content": "《阿长与〈山海经〉》中,作者对阿长的情感经历了怎样的变化?"},{"role": "assistant", "content": "答案:作者对阿长的情感经历了从厌恶、不耐烦到感激、怀念的变化。"}]}
{"messages": [{"role": "user", "content": "《老王》中,作者是如何刻画老王的形象的?"},{"role": "assistant", "content": "答案:通过外貌描写、语言描写、动作描写等,如“他面如死灰,两只眼上都结着一层翳”“他说:‘我送钱先生看病,不要钱。’”“他一手拿着布,一手攥着钱,滞笨地转过身子”等,展现了老王的穷苦、善良和老实。"}]}
{"messages": [{"role": "user", "content": "《台阶》中,台阶在文中有什么象征意义?"},{"role": "assistant", "content": "答案:台阶象征着父亲的理想和追求,也象征着农村社会的等级观念和传统观念。"}]}
{"messages": [{"role": "user", "content": "《卖油翁》中,这个故事告诉我们一个什么道理?"},{"role": "assistant", "content": "答案:这个故事告诉我们熟能生巧的道理,同时也说明了人不应骄傲自满,要谦虚谨慎。"}]}
{"messages": [{"role": "user", "content": "《叶圣陶先生二三事》中,叶圣陶先生的“写话”主张是什么?"},{"role": "assistant", "content": "答案:叶圣陶先生主张“写成文章,在这间房里念,要让那间房里的人听着,是说话,不是念稿,才算及了格”。"}]}
{"messages": [{"role": "user", "content": "《驿路梨花》中,“梨花”在文中多次出现,有什么作用?"},{"role": "assistant", "content": "答案:“梨花”在文中多次出现,起到了贯穿全文的线索作用,同时也象征着助人为乐的精神。"}]}
{"messages": [{"role": "user", "content": "《最苦与最乐》中,作者是怎样论述“责任”与“苦乐”的关系的?"},{"role": "assistant", "content": "答案:作者认为人生最苦的事是身上背着一种未来的责任,因为受那良心责备不过,要逃躲也没处逃躲;而责任完了是人生第一件乐事,因为这种快乐是从苦中得来的,是更真实的快乐。"}]}
{"messages": [{"role": "user", "content": "《陋室铭》中,作者是从哪些方面来描写陋室的?"},{"role": "assistant", "content": "答案:作者从陋室的环境、交往人物和日常生活等方面来描写陋室,如“苔痕上阶绿,草色入帘青”描写了陋室的环境,“谈笑有鸿儒,往来无白丁”描写了交往人物,“可以调素琴,阅金经”描写了日常生活。"}]}
{"messages": [{"role": "user", "content": "《爱莲说》中,作者用了什么写作手法来表现莲花的品质?"},{"role": "assistant", "content": "答案:作者用了托物言志的写作手法,通过对莲花的描写和赞美,表达了自己不慕名利、洁身自好的高尚品质。"}]}
{"messages": [{"role": "user", "content": "《紫藤萝瀑布》中,作者是怎样由紫藤萝花联想到人生的?"},{"role": "assistant", "content": "答案:作者由紫藤萝花的由衰到盛,联想到人生的遭遇和命运,感悟到生命是一个不断发展的过程,在遭遇不幸时,要坚定信念,积极面对,才能战胜困难,延续生命的美好。"}]}
{"messages": [{"role": "user", "content": "《一棵小桃树》中,小桃树经历了哪些磨难?"},{"role": "assistant", "content": "答案:小桃树经历了被人忽视、被猪拱折、遭受风雨摧残等磨难。"}]}
{"messages": [{"role": "user", "content": "《假如生活欺骗了你》中,诗人是如何鼓励人们面对生活的?"},{"role": "assistant", "content": "答案:诗人通过“假如生活欺骗了你,不要悲伤,不要心急!忧郁的日子里须要镇静:相信吧,快乐的日子将会来临”等诗句,鼓励人们要保持乐观的心态,相信未来会更美好。"}]}
{"messages": [{"role": "user", "content": "《未选择的路》中,诗人为什么对未选择的路感到惋惜?"},{"role": "assistant", "content": "答案:因为诗人意识到人生的道路有很多选择,而每一次选择都会对人生产生影响,他对未选择的路充满了想象和期待,所以会感到惋惜。"}]}
{"messages": [{"role": "user", "content": "《登幽州台歌》中,前两句诗营造了怎样的意境?"},{"role": "assistant", "content": "答案:前两句诗营造了一种空旷、寂寥、孤独的意境,表达了诗人对历史的感慨和对人生的思考。"}]}
{"messages": [{"role": "user", "content": "《望岳》中,“造化钟神秀,阴阳割昏晓”两句诗描绘了怎样的景象?"},{"role": "assistant", "content": "答案:这两句诗描绘了大自然将神奇和秀丽集中于泰山,山的南北两面一面明亮一面昏暗,截然不同的景象。"}]}
{"messages": [{"role": "user", "content": "《游山西村》中,“山重水复疑无路,柳暗花明又一村”两句诗蕴含了怎样的哲理?"},{"role": "assistant", "content": "答案:这两句诗蕴含了在困境中不要绝望,要坚持下去,往往会出现转机和希望的哲理。"}]}
{"messages": [{"role": "user", "content": "《己亥杂诗(其五)》中,“落红不是无情物,化作春泥更护花”两句诗表达了诗人怎样的情怀?"},{"role": "assistant", "content": "答案:这两句诗表达了诗人虽然辞官离京,但仍然关心国家命运,愿意为国家奉献的情怀。"}]}
{"messages": [{"role": "user", "content": "《伟大的悲剧》中,斯科特一行人的探险精神体现在哪些方面?"},{"role": "assistant", "content": "答案:体现在他们勇于探索未知、不畏艰难险阻、为科学事业献身、诚实守信、有强烈的团队精神等方面。"}]}
{"messages": [{"role": "user", "content": "《太空一日》中,杨利伟在太空遇到了哪些危险?"},{"role": "assistant", "content": "答案:遇到了飞船共振、产生“本末倒置”的错觉、时不时出现敲击声、飞船舷窗出现裂纹等危险。"}]}
{"messages": [{"role": "user", "content": "《带上她的眼睛》中,小姑娘为什么对地面的世界如此渴望?"},{"role": "assistant", "content": "答案:因为小姑娘被困在狭小的控制舱中,周围是高温、高压的环境,她无法亲身感受地面的世界,所以对其充满渴望。"}]}
{"messages": [{"role": "user", "content": "《活板》中,活板印刷术有哪些优点?"},{"role": "assistant", "content": "答案:活板印刷术的优点有制版灵活、印刷速度快、成本低等。"}]}
{"messages": [{"role": "user", "content": "《海底两万里》中,尼摩船长是一个怎样的人?"},{"role": "assistant", "content": "答案:尼摩船长是一个知识渊博、勇敢无畏、反对殖民压迫、同情被压迫人民的人。"}]}
{"messages": [{"role": "user", "content": "《泊秦淮》中,诗人通过哪些景物描写来烘托主题?"},{"role": "assistant", "content": "答案:诗人通过烟、水、月、沙、酒家等景物描写来烘托主题,营造出一种朦胧、凄凉的氛围。"}]}
{"messages": [{"role": "user", "content": "《贾生》中,这首诗表达了诗人怎样的情感?"},{"role": "assistant", "content": "答案:这首诗表达了诗人对汉文帝求仙访道、不顾国计民生的讽刺,以及对自己怀才不遇的感慨。"}]}
{"messages": [{"role": "user", "content": "《过松源晨炊漆公店(其五)》中,“正入万山围子里,一山放出一山拦”两句诗蕴含了怎样的人生哲理?"},{"role": "assistant", "content": "答案:这两句诗蕴含了人生道路上会遇到重重困难,不要被一时的成功所迷惑,要保持清醒的头脑,不断克服困难的人生哲理。"}]}
{"messages": [{"role": "user", "content": "《约客》中,“闲敲棋子落灯花”一句中的“闲”字有什么表达效果?"},{"role": "assistant", "content": "答案:“闲”字写出了诗人等待友人时的寂寞和无聊,也表现出诗人闲适的心境。"}]}
{"messages": [{"role": "user", "content": "《骆驼祥子》中,祥子的命运经历了怎样的变化?"},{"role": "assistant", "content": "答案:祥子的命运经历了从充满希望到逐渐堕落的变化,他从一个勤劳、善良、有梦想的青年,变成了一个自私、懒惰、麻木的行尸走肉。"}]}
{"messages": [{"role": "user", "content": "《骆驼祥子》中,造成祥子悲剧命运的原因有哪些?"},{"role": "assistant", "content": "答案:造成祥子悲剧命运的原因有社会原因,如黑暗的社会制度、不平等的社会关系等;也有个人原因,如祥子的性格弱点、盲目乐观等。"}]}
{"messages": [{"role": "user", "content": "《红岩》中,江姐具有怎样的精神品质?"},{"role": "assistant", "content": "答案:江姐具有坚贞不屈、视死如归、勇于牺牲、忠诚于党的精神品质。"}]}
{"messages": [{"role": "user", "content": "《创业史》中,梁生宝是一个怎样的人物形象?"},{"role": "assistant", "content": "答案:梁生宝是一个有坚定信念、勇于创新、善于团结群众、为实现农业合作化而努力奋斗的人物形象。"}]}
{"messages": [{"role": "user", "content": "《竹里馆》中,诗人在竹林里独自弹琴、长啸,体现了他怎样的心境?"},{"role": "assistant", "content": "答案:体现了诗人宁静、淡泊、闲适的心境。"}]}
{"messages": [{"role": "user", "content": "《春夜洛城闻笛》中,“此夜曲中闻折柳,何人不起故园情”两句诗表达了诗人怎样的情感?"},{"role": "assistant", "content": "答案:表达了诗人对故乡的思念之情。"}]}
{"messages": [{"role": "user", "content": "《逢入京使》中,诗人是怎样传达思乡之情的?"},{"role": "assistant", "content": "答案:诗人通过“故园东望路漫漫,双袖龙钟泪不干”两句诗,描绘了自己远望故乡、泪流满面的情景,传达了思乡之情。"}]}
{"messages": [{"role": "user", "content": "《晚春》中,“杨花榆荚无才思,惟解漫天作雪飞”两句诗运用了什么修辞手法?有什么作用?"},{"role": "assistant", "content": "答案:运用了拟人、比喻的修辞手法,将杨花榆荚比作人,说它们“无才思”,只会“漫天作雪飞”,生动形象地写出了晚春时节的景色,表达了诗人对春天的喜爱之情。"}]}
{"messages": [{"role": "user", "content": "《登飞来峰》中,“不畏浮云遮望眼,自缘身在最高层”两句诗与《望岳》中哪两句诗有异曲同工之妙?"},{"role": "assistant", "content": "答案:与《望岳》中“会当凌绝顶,一览众山小”两句诗有异曲同工之妙。"}]}
{"messages": [{"role": "user", "content": "《游山西村》中,“箫鼓追随春社近,衣冠简朴古风存”两句诗描绘了怎样的场景?"},{"role": "assistant", "content": "答案:描绘了将近社日,一路上迎神的箫鼓声随处可闻,人们穿着简朴的衣服,保留着古代的风俗的场景。"}]}
{"messages": [{"role": "user", "content": "《己亥杂诗(其五)》中,“浩荡离愁白日斜”一句中“浩荡”一词有什么表达效果?"},{"role": "assistant", "content": "答案:“浩荡”一词形容离愁的广大无边,生动形象地写出了诗人离京时的愁绪之深。"}]}
{"messages": [{"role": "user", "content": "《伟大的悲剧》中,“他们的英雄气概不能不令人钦佩”一句中,“英雄气概”具体表现在哪些方面?"},{"role": "assistant", "content": "答案:“英雄气概”具体表现在他们面对失败和死亡时的坚毅、勇敢、团结和无私奉献等方面,如他们在明知失败的情况下,仍然坚持完成任务,为他人的业绩做证;在极端困难的条件下,不放弃生存的希望,相互支持,直至生命的最后一刻。"}]}
{"messages": [{"role": "user", "content": "《太空一日》中,杨利伟为什么说“飞船共振主要来自火箭的振动”?"},{"role": "assistant", "content": "答案:因为杨利伟在太空飞行中经历了飞船共振的现象,经过分析研究,工作人员认为这种共振主要是由火箭的振动引起的。"}]},
{"messages": [{"role": "user", "content": "《带上她的眼睛》中,“我”为什么会感到“她对这个世界的情感已丰富到不正常的程度”?"},{"role": "assistant", "content": "答案:因为小姑娘对草原上的每一朵野花、每一棵小草、每一缕阳光、每一条小溪、每一阵微风都充满了激动和喜悦之情,这种对世界的极度热爱和敏感让“我”觉得不正常。"}]}
{"messages": [{"role": "user", "content": "《活板》中,“板印书籍,唐人尚未盛为之”一句说明了什么?"},{"role": "assistant", "content": "答案:说明在唐代,雕版印刷术虽然已经出现,但还没有得到广泛应用。"}]}
{"messages": [{"role": "user", "content": "《海底两万里》中,“诺第留斯号”潜水艇是根据什么科学原理制造出来的?"},{"role": "assistant", "content": "答案:“诺第留斯号”潜水艇是根据阿基米德原理制造出来的,利用了水的浮力和重力的关系。"}]}
{"messages": [{"role": "user", "content": "《泊秦淮》中,“商女不知亡国恨,隔江犹唱后庭花”两句诗反映了怎样的社会现实?"},{"role": "assistant", "content": "答案:反映了当时社会上一些人沉迷于享乐,不顾国家兴亡的现实。"}]}
{"messages": [{"role": "user", "content": "《贾生》中,“可怜夜半虚前席,不问苍生问鬼神”两句诗讽刺了什么?"},{"role": "assistant", "content": "答案:讽刺了汉文帝看似求贤若渴,实则不问国计民生,只关心鬼神之事的行为。"}]}
{"messages": [{"role": "user", "content": "《过松源晨炊漆公店(其五)》中,“莫言下岭便无难”一句在全诗中有什么作用?"},{"role": "assistant", "content": "答案:这句诗在全诗中起到了引出下文的作用,为后文描写下山的艰难做铺垫。"}]}
{"messages": [{"role": "user", "content": "《约客》中,“黄梅时节家家雨,青草池塘处处蛙”两句诗营造了怎样的氛围?"},{"role": "assistant", "content": "答案:营造了一种梅雨时节阴雨连绵、蛙声阵阵的潮湿、闷热的氛围。"}]}
{"messages": [{"role": "user", "content": "《阿长与〈山海经〉》中,阿长为“我”买《山海经》的过程是怎样的?"},{"role": "assistant", "content": "答案:阿长不识字,她跑了许多书店去买《山海经》,但都没有买到。后来,她终于在一家书店里找到了,并高兴地买回来给“我”。"}]}
{"messages": [{"role": "user", "content": "《老王》中,作者一家是怎样对待老王的?"},{"role": "assistant", "content": "答案:作者一家关心老王的生活,照顾他的生意,尊重他的人格,在他生病时给他送药、送钱。"}]}
{"messages": [{"role": "user", "content": "《己亥杂诗(其五)》中,“化作春泥更护花”一句表达了诗人怎样的精神?"},{"role": "assistant", "content": "答案:表达了诗人无私奉献、甘愿牺牲自己的精神。"}]}
注意:
1、输出的格式为.jsonl
2、训练集或验证集的数据量不能少于50条。
3、数据生成到/home/data/chatglm4-finetune/data/1/目录下,存在一个train.jsonl和dev.jsonl
三、安装依赖
git clone GitHub - THUDM/GLM-4: GLM-4 series: Open Multilingual Multimodal Chat LMs | 开源多语言多模态对话模型
cd /home/data/chatglm4-finetune/GLM-4/basic_demo
pip install -r requirements.txt
cd /home/data/chatglm4-finetune/GLM-4/finetune_demo
注意修改requirements.txt中的datasets>2.20.0为datasets>=2.20.0
pip install -r requirements.txt
四、修改配置参数
修改config/lora.yaml中的参数,主要根据数据集的大小修改max_steps和save_steps
五、微调
cd /home/data/chatglm4-finetune/GLM-4/finetune_demo
1.单机单卡:
CUDA_VISIBLE_DEVICES=0 python finetune.py /home/data/chatglm4-finetune/data/1/ /home/data/model/zhipu/glm-4-9b-chat configs/lora.yaml
2.单机多卡/多机多卡:
export CUDA_VISIBLE_DEVICES=0,1
OMP_NUM_THREADS=1 torchrun --standalone --nnodes=1 --nproc_per_node=2 finetune.py /home/data/chatglm4-finetune/data/1/ /home/data/model/glm-4-9b-chat configs/lora.yaml
六、使用微调后的模型进行推理
在完成微调任务之后,我们可以查看到 output 文件夹下多了很多个checkpoint-*的文件夹,这些文件夹代表了训练的轮数。
checkpoint-*的文件夹的目录下面会有adapter_config.json文件,里面有一个基模型的路径base_model_name_or_path,记录着模型基座的路径。
cd finetune_demo
CUDA_VISIBLE_DEVICES=1 python inference.py output/checkpoint-3000/ --prompt "《泊秦淮》中,诗人通过哪些景物描写来烘托主题?"