ChatGLM-6B在法律数据集上微调

目录

数据集

训练和推理

依赖

训练

推理


数据集

数据集:lawzhidao_filter.csv (工作台 - Heywhale.com)

处理:

1)筛选'is_best'=1的行,删除'reply'为空的行,在'title'和'question'中选择描述长的列,最后csv文件只包含两列数据['title','reply']。

2)转为json格式(和ChatGLM-6B中ptuning提供的AdvertiseGen数据集一样的格式)。

首先将columns名称改为['content','summary']。(这是因为一开始没注意到可以改train.sh的参数,就把columns改成和AdvertiseGen数据集中一样的了)

代码主要部分是:

df = pd.read_csv(file path)
df.columns = ['content','summary']
df20= df[:20] # 实际中是用split_num将数据集划分为train、val两个部分
df20.to_csv('ori_20.csv',index=False)

df1 = []
for i in df20.index:
    content = df20.loc[i]['content']
    summary = df20.loc[i]['summary']
    df_new = {'content':content,'summary':summary}
    df_new = json.dumps(df_new, ensure_ascii=False)
    df1.append(df_new)
joined_str = '\n'.join([str(d) for d in df1])
f1 = open('df20.json', 'w')
f1.write(joined_str)
f1.close()

转为json文件后,前十条预览:

['{"content": "在法律中定金与订金的区别订金和定金哪个受", "summary": "“定金”是指当事人约定由一方向对方给付的,作为债权担保的一定数额的货币,它属于一种法律上的担保方式,目的在于促使债务人履行债务,保障债权人的债权得以实现。签合同时,对定金必需以书面形式进行约定,同时还应约定定金的数额和交付期限。给付定金一方如果不履行债务,无权要求另一方返还定金;接受定金的一方如果不履行债务,需向另一方双倍返还债务。债务人履行债务后,依照约定,定金应抵作价款或者收回。而“订金”目前我国法律没有明确规定,它不具备定金所具有的担保性质,可视为“预付款”,当合同不能履行时,除不可抗力外,应根据双方当事人的过错承担违约责任。"}\n',
 '{"content": "盗窃罪的犯罪客体是什么,盗窃罪的犯罪主体", "summary": "盗窃罪的客体要件本罪侵犯的客体是公私财物的所有权。侵犯的对象,是国家、集体或个人的财物,一般是指动产而言,但不动产上之附着物,可与不动产分离的,例如,田地上的农作物,山上的树木、建筑物上之门窗等,也可以成为本罪的对象。另外,能源如电力、煤气也可成为本罪的对象。盗窃罪侵犯的客体是公私财物的所有权。所有权包括占有、使用、收益、处分等权能。这里的所有权一般指合法的所有权,但有时也有例外情况。根据《最高人民法院关于审理盗窃案件具体应用法律若干问题的解释》(以下简称《解释》)的规定:“盗窃违禁品,按盗窃罪处理的,不计数额,根据情节轻重量刑。盗窃违禁品或犯罪分子不法占有的财物也构成盗窃罪。”"}\n',
 '{"content": "非法微整形机构构成非法经营罪吗", "summary": "符合要件就有可能。非法经营罪,是指未经许可经营专营、专卖物品或其他限制买卖的物品,买卖进出口许可证、进出口原产地证明以及其他法律、行政法规规定的经营许可证或者批准文件,以及从事其他非法经营活动,扰乱市场秩序,情节严重的行为。"}\n',
 '{"content": "入室持刀行凶伤人能不能判刑", "summary": "对于入室持刀伤人涉嫌故意伤害刑事犯罪,一经定罪,故意伤害他人身体的,处三年以下有期徒刑、拘役或者管制。犯前款罪,致人重伤的,处三年以上十年以下有期徒刑;致人死亡或者以特别残忍手段致人重伤造成严重残疾的,处十年以上有期徒刑、无期徒刑或者死刑。相关法律规定《中华人民共和国刑法》第二百三十四条故意伤害他人身体的,处三年以下有期徒刑、拘役或者管制。犯前款罪,致人重伤的,处三年以上十年以下有期徒刑;致人死亡或者以特别残忍手段致人重伤造成严重残疾的,处十年以上有期徒刑、无期徒刑或者死刑。本法另有规定的,依照规定。"}\n',
 '{"content": "对交通事故责任认定书不服怎么办,交通事故损", "summary": "事故认定书下发后,如果你对认定不满意,可在接到认定书3日内到上一级公安机关复议。"}\n',
 '{"content": "喝完就又去唱歌回家时去了车祸去唱歌我同意了车是我开的", "summary": "需要结合具体情况判断,看是否酒驾和交通事故责任的划分,根据责任承担责任,赔偿损失。"}\n',
 '{"content": "二审一般要多久", "summary": "《民事诉讼法》对二审的审限作出了规定,一般会在立案一个月内开庭,在三个月内审结,但最长也可以超过三个月。《民事诉讼法》第一百七十六条人民法院审理对判决的上诉案件,应当在第二审立案之日起三个月内审结。有特殊情况需要延长的,由本院院长批准。人民法院审理对裁定的上诉案件,应当在第二审立案之日起三十日内作出终审裁定。"}\n',
 '{"content": "欠钱没有欠条有录音能起诉吗", "summary": "录音资料经过鉴定证实未经剪辑、拼凑、篡改和臆造,并有其他相关证据相印证的,可以认定其效力。"}\n',
 '{"content": "从合伙经营公司撤资,只给欠条有用吗", "summary": "欠条是债权凭证,欠条依据的基础法律关系有事实、不违法的,欠条有效。解除合伙关系,如果经合伙人清算,产生合法欠款,欠条有效。"}\n',
 '{"content": "哪些情况可以先行刑事拘留", "summary": "有下列情形之一的,可以先行拘留:(一)正在预备犯罪、实行犯罪或者在犯罪后即时被发觉的;(二)被害人或者在场亲眼看见的人指认他犯罪的;(三)在身边或者住处发现有犯罪证据的;(四)犯罪后企图自杀、逃跑或者在逃的;(五)有毁灭、伪造证据或者串供可能的;(六)不讲真实姓名、住址,身份不明的;(七)有流窜作案、多次作案、结伙作案重大嫌疑的。公安机关拘留人的时候,必须出示拘留证。"}\n']

训练和推理

模型:ChatGLM-6B (GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型)

依赖

安装依赖软件包(根据实际环境):pip install transformers==4.27.1和pip install -U datasets

训练

修改了train.sh中的参数 :文件路径、模型路径、max_steps(1000)和quantization_bit(8)

运行时间:1h54min

loss:3.0降到1.9

GPU:V100 用到了9GB

内存:32GB内,没仔细看

推理

GPU:V100用到了13GB

代码用的是ptuning中README.md的模型部署部分,改了CHECKPOINT_PATH为训练后的路径。

推理效果一般:

[('在饭店上班的地方刀不小心掉脚上了还没有报工伤保险呢,农村合作医疗可以报销吗',
  '1、先到当地劳动部门申请工伤认定,如果单位不申请的话,职工个人就必须在受伤之日起一年内申请;2、如果经工伤鉴定构成伤残的,根据伤残等级,按照工伤保险条例的规定享受工伤保险待遇,包括工伤保险的医疗待遇、的护理待遇、的营养待遇、医疗费、')]

你可能感兴趣的:(人工智能,自然语言处理,ChatGLM)