基于chinese-llama-plus北大团队推出法律大模型,数据与模型全部开源,模型合并使用全流程

上篇分享了一个法律的大模型,lawGPt,目前看回答一些基本的法律问题还是可以的,昨天又发现,北京大学也开源了一个法律大模型,lawyer-llama,通过在大规模法律语料中进行训练,系统学习中国的法律知识体系使得模型可以掌握中国的法律知识并应用于中国的法律实务。

看看论文的例子

对比上图左侧的BELLE(Be Everyone's Large Language model Engine)模型,如果提问“中国的法定结婚年龄”,可以看到 Lawyer LLaMA 给出了一个正确的,并且更像是 Lawyer 的回答。并且,即使是提供了必要的法律条文,如上图问题B,BELLE 也无法给出一个正确的回答,而 Lawyer LLaMA 则有理有据的颇具专业性的很好的回答了这个问题。

其实从 BELLE 的回答中也可以看出,直接将这样一个大模型套在专业的垂直领域下往往会出现许多问题,作者团队认为,要使得大模型可以很好地适应法律领域的特殊要求,必须要满足以下三个条件,分别是:

  1. 精确的表意,避免歧义:在法律领域中常常会有仅仅更换一个字词,就会导致法律关系构建出截然相反的结果,譬如中文中定金与订金仅相差一个字,但是其含义与法律效力在合同法中却完全不同;

  2. 理解与区分法律术语:在法律中,有许多特有的特定词汇,许多术语仅仅出现在法律领域中,如法人这个概念,而还有更多术语可能在法律领域与日常生活领域拥有着不尽相同的含义,也需要模型加以区分;

  3. 能够理解实际情况:除了对法律术语与法律分析要有基本的了解与系统的掌握以外,模型还应当具有精确理解现实生活问题的能力,即模型需要拥有一个应用法律理论来解决特定问题的核心能力。

基于上述理论,作者团队便基于开源的 LLaMA 模型期望通过以下几步解决法律领域大模型的适用问题:

  1. 法律相关知识注入:通过收集大量法律领域的原始文本,如法律条文、司法解释与国家法律文件,对原始模型使用新数据进行继续训练;

  2. 特定领域技能习得:一个良好的法律大模型应该能够解决法律领域的常见问题,如概念解释、案例分析与法律咨询,因此作者收集了一组实际的任务案例,使用 ChatGPT 生成相应答案从而进行监督微调,以使得模型具有解决法律领域特定任务的能力;

  3. 信息检索减轻幻觉:为了减轻大模型的机器幻觉问题,作者同时引入了一个信息检索模块,在生成每个回复之前,都首先利用用户的查询与上下文检索相关法律条文,基于这些法律条文再去生成相应回复。

通过以上三步,作者团队便成功完成了 Lawyer LLaMA 的构建,Lawyer LLaMA 的整体运作流程如下图所示:

我们直接看看论文给出的效果吧

同等对比,在各个不同 角度看,lawyer-llama确实要好很多

论文中还有具体的对比数据,感兴趣可以看看

https://arxiv.org/pdf/2305.15062.pdf

合并使用流程

    到了实操阶段了,哈哈

    首先是获取权重,分两部分,(虽然官方git写了三步)

        1、下载7B中的 consolidated.00.pth

https://huggingface.co/nyanko7/LLaMA-7B/tree/main

        2、下载lawyer-llama权重

https://huggingface.co/pkupie/lawyer-llama-13b-beta1.0/tree/main

合并使用官方给的decrypt.py脚本

for f in "/path/to/model/pytorch_model"*".enc"; \do if [ -f "$f" ]; then \python3 decrypt.py "$f" "/path/to_original_llama/7B/consolidated.00.pth" "/path/to/model"; \fi; \
done

脚本在此


import os
import sys
import hashlib
import multiprocessing
import osdef xor_bytes(data, key):return bytes(a ^ b for a, b in zip(data, (key * (len(data) // len(key) + 1))[:len(data)]))def xor_worker(task_queue, result_queue):while True:chunk_idx, data, key = task_queue.get()result_queue.put((chunk_idx, xor_bytes(data, key)))task_queue.task_done()def write_result_chunk(fp, w_chunk_idx, pending, hasher):if not pending:return w_chunk_idx, pendingpending.sort()for pending_idx, (chunk_idx, chunk) in enumerate(pending):if chunk_idx != w_chunk_idx:return w_chunk_idx, pending[pending_idx:]fp.write(chunk)hasher.update(chunk)w_chunk_idx += 1return w_chunk_idx, []def main(input_file, key_file, output_dir):worker_count = max(1, os.cpu_count() - 1)print(f"Decrypting file {input_file} with {worker_count} workers")task_queue = multiprocessing.JoinableQueue(worker_count * 3)result_queue = multiprocessing.Queue()processes = [multiprocessing.Process(target=xor_worker, args=(task_queue, result_queue))for _ in range(worker_count)]for p in processes:p.daemon = Truep.start()chunk_size = 10 * 1024 * 1024key_chunk_size = 10 * 1024 * 1024hasher = hashlib.sha256()# Get the checksum from the input file nameinput_file_basename = os.path.basename(input_file)checksum_hex = input_file_basename.split(".")[-2]with open(input_file, "rb") as in_file, open(key_file, "rb") as key_file:# Get the size of the input filefile_size = os.path.getsize(input_file)# Minus the checksum sizefile_size -= hasher.digest_size# Read the checksum from the beginning of the input fileexpected_hash = in_file.read(hasher.digest_size)# Create the output file path without the checksum in the filename# remove .<checksum>.encinput_file_basename = input_file_basename[:-len(checksum_hex) - 5]output_file = os.path.join(output_dir, input_file_basename)with open(output_file, "wb") as out_file:r_chunk_idx = 0  # how many chunks we have readw_chunk_idx = 0  # how many chunks have been writtenwrite_pending = []  # have xor results, awaiting to be written to filebytes_read = 0while True:chunk = in_file.read(chunk_size)if not chunk:breakkey_chunk = key_file.read(key_chunk_size)if not key_chunk:key_file.seek(0)key_chunk = key_file.read(key_chunk_size)task_queue.put((r_chunk_idx, chunk, key_chunk))# read available resultswhile not result_queue.empty():write_pending.append(result_queue.get())w_chunk_idx_new, write_pending = write_result_chunk(out_file, w_chunk_idx, write_pending, hasher)bytes_read += (w_chunk_idx_new - w_chunk_idx) * chunk_sizeprogress = bytes_read / file_size * 100sys.stdout.write(f"\rProgress: {progress:.2f}%")sys.stdout.flush()w_chunk_idx = w_chunk_idx_newr_chunk_idx += 1# wait for xor workerssys.stdout.write('\rWaiting for workers...')sys.stdout.flush()task_queue.join()while not result_queue.empty():write_pending.append(result_queue.get())sys.stdout.write('\rWriting final chunks...')sys.stdout.flush()write_result_chunk(out_file, w_chunk_idx, write_pending, hasher)computed_hash = hasher.digest()if computed_hash != expected_hash:print("\nError: Checksums do not match. The file may be corrupted.")sys.exit(1)print ("\nDecryption completed.")if __name__ == "__main__":if len(sys.argv) != 4:print("Usage: decrypt.py input_file key_file output_dir")sys.exit(1)main(sys.argv[1], sys.argv[2], sys.argv[3])

git上还给了一个 法条检索模块

3、从百度网盘(提取码:r0vx)下载法条检索模块,并运行其中的python server.py启动法条检索服务,默认挂在9098端口。

模型解密好后可以使用了

使用交互界面运行

运行以下命令启动交互网页,访问http://127.0.0.1:7863

python demo_web.py \
--port 7863 \
--checkpoint /path/to/model \
--classifier_url "http://127.0.0.1:9098/check_hunyin"

执行这个就可以开启使用旅程了

git:https://github.com/AndrewZhe/lawyer-llama

下期预告(帮作者点一下广告,企鹅将为大模型测试注入一笔赞助费O(∩_∩)O哈哈~):

        下期分享【基于大模型sd,lora微调自己的图片的训练】,欢迎关注 pythonLLM智能

 

往期回顾:

176B竟然可以辣么快,效果直逼chatgpt-4直接hf在线体验,还可以商用

数据、180B模型、训练方法一并开源,这个世界级多模态大模型可媲美chatgpt 96%的效果

达到chatgpt 90%效果的llama,Chinese-Alpaca-Plus-13B合并使用全过程分享

chatglm+langchain+互联网,你可以将大模型接入网络了

什么情况用Bert模型,什么情况用LLaMA、ChatGLM类大模型,咋选?

基于chatglm、moss+知识库+langchain的问系统的搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/60930.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022年MathorCup数学建模A题大规模指纹图像检索的模型与实现解题全过程文档加程序

2022年第十二届MathorCup高校数学建模 A题 大规模指纹图像检索的模型与实现 原题再现 在生物特征识别领域&#xff0c;指纹作为最具独特性与持久性的生物特征之一&#xff0c;被广泛应用于身份识别。   指纹识别过程分为特征提取和比对两个环节。其中特征提取环节会提取用于…

数学公式识别工具mathpix的安装和使用

一、简介 Mathpix可以将图片、PDF 文档、网页中&#xff0c;甚至是手写的数学公式直接转换成LaTeX 格式&#xff0c;贴入 Markdown&#xff0c;Mathtype&#xff0c;WinEdt 或 Word 自带的公式编辑器中反向转换即可。Mathpix 是一个在线服务&#xff0c;需要联网使用。 二、下…

2020 US News University Rankings(中国大学排名)

2020 US News University Rankings(中国大学排名) &#xff08;中国[含港澳台]合计3176所高校&#xff0c;此处仅为大陆高校&#xff09;

击败ChatGPT?OpenChat霸榜斯坦福AlpacaEval开源榜首,性能高达105.7%

来源 | 新智源 ID | AI-era 一夜之间&#xff0c;全新开源模型「OpenLLM」击败ChatGPT的消息&#xff0c;在网上引起轩然大波。 根据官方的介绍&#xff0c;OpenLLM&#xff1a; - 在斯坦福AlpacaEval上&#xff0c;以80.9%的胜率位列开源模型第一 - 在Vicuna GPT-4评测中…

2021QS 榜单发布:计算机专业排名 MIT 斯坦福霸榜,清华北大进入前 20

公众号 “菜鸟学Python”, 设为 “星标” 和30w一起学Python&#xff01;来自新智元 【导读】2021 QS 世界大学学科排名出炉了&#xff01;最新排名涉及 51 个学科&#xff0c;横跨 5 大领域。在计算机科学专业排名中&#xff0c;MIT、斯坦福、哈佛占领了世界前三席&#xff0c…

四大世界权威大学排名指标及侧重点

U.S.News、QS、ARWU、THE是公认的四大权威世界大学排名&#xff0c;每个排名的侧重点各有不同&#xff0c;故知识人网小编撰文加以介绍。 很多博士后、访问学者和联合培养博士的申请者会注重学校排名。那么都有哪些排名体系呢&#xff1f;一般来说&#xff0c;国际公认的四大权…

中山大学计算机专业实力前景怎么样,计算机专业排名看超算实力,ASC竞赛五大高校排名,中山大学第一...

ASC竞赛五大高校 计算机专业的实力主要体现在算法与编程的逻辑运算上&#xff0c;因此计算机专业必须掌握大量基础数学知识&#xff0c;甚至很多是离散数学、模糊数学等人工智能逻辑数学&#xff0c;简单的程序软件应用和O2O程序实现其实都不是计算机专业实力的体现&#xff0c…

刚刚,2023中国大学评级发布!9所高校,位列最顶级!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【目标检测和Transformer】交流群 转载自&#xff1a;双一流高教 | 来源&#xff1a;CNUR 刚刚&#xff08;6月16日&#xff09;&#xff0c;2023年中国大学评级于中国大学排…

chatgpt赋能python:Python代码实现查找重复字符串

Python代码实现查找重复字符串 Python 是一种高级程序设计语言&#xff0c;被广泛用于网络编程、web开发、数据分析等领域。在 SEO 操作中&#xff0c;经常需要进行关键词分析&#xff0c;以确定哪些词汇是最重要的。本文将介绍如何使用 Python 实现查找重复字符串的代码。 什…

IEEE与APA引用格式

from Dissertation Writing Workshop 两种经典的引用格式 APA IEEE https://www.jianshu.com/p/b425347732c9 https://zhuanlan.zhihu.com/p/98982582

Latex引用文献APA格式

Latex引用文献APA格式 前言参考链接一个小的提醒生成bib文件一个巨坑如何编写代码原文引用链接到参考文献总结步骤写在最后 前言 这篇文章是根据自己查找资料&#xff0c;进行整理&#xff0c;亲自实践之后得到的结果&#xff0c;代码会附在文章中间&#xff0c;写这篇文章是为…

APA 论文的 格式 及 样式标准

APA 论文的 格式 及 样式标准 最直观的方法是到微软的 word 模板库里去下载一个名为 APA style paper 的模板&#xff0c;下载地址为&#xff1a;https://templates.office.com/en-us/apa-style-paper-tm16392902。 什么是 APA 格式 APA(American Psychological Association…

citespace研究热点突现词太少问题处理

当用citespace进行关键词突现操作时&#xff0c;发现突现词太少 按照默认设置&#xff0c;点击Refresh,只找到了一个突现词&#xff0c;点击view 可以调整这个数字&#xff0c;根据自己的需求来&#xff0c;数字越小突现词越多&#xff0c;比如这里调为0.7&#xff0c;就出现了…

【论文解读】GCN论文总结

本次要总结和分享的是ICLR2017的关于GCN方面的代表作之一论文&#xff1a;SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS&#xff0c;论文链接为 paper[1]&#xff0c;参考的实现代码为pygcn[2] 文章目录 先导知识论文动机模型切比雪夫逼近卷积核函数图上…

每日学术速递2.9

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV、cs.AI、cs.LG、cs.IR 1.Graph Signal Sampling for Inductive One-Bit Matrix Completion: a Closed-form Solution(ICLR 2023) 标题&#xff1a;归纳单比特矩阵完成的图信号采样&am…

计算机英文论文怎么做降重? - 易智编译EaseEditing

人工降重一定要找靠谱的机构做。 降重是很耗费精力和时间的学术服务。 而那些没有口碑且不专业的商家&#xff0c;真的会花费那么多心思来仔细琢磨你的论文吗&#xff1f; 那些没有声誉的非专业商家给论文降重会产生很多弊端&#xff1a; &#xff08;1&#xff09;他们为了…

英语学习|同义词替换|论文降重|similar|popular

alike, like, comparable, parallel, uniform, identical, resembling... 1.单数复数变换 2.加the去the 3.主动被动变换 4.同义词替换 5.从句类型变换 6.状语位置变化 7.变化顺序 9.of/‘s 10.无关紧要的副词可以删除 algorithm出现一般用复数algorithms, methods be molded …

Tesseract OCR+Tess4j实现图片中英文识别

文章目录 Tesseract简介环境搭建下载语言库 tess4j依赖demo Tesseract 简介 Tesseract的OCR引擎最先由HP实验室于1985年开始研发&#xff0c;至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而&#xff0c;HP不久便决定放弃OCR业务&#xff0c;Tesseract也从此尘封。…

tesserocr识别图片

tesseract是什么 tesseract是google开源的OCR;tesserocr 是 Python 的一个 OCR 识别库 &#xff0c;但其实是对 tesseract 做的一 层 Python API 封装&#xff0c;所以它的核心是 tesseract。 因此&#xff0c;在安装 tesserocr 之前&#xff0c;我们需要先安装 tesseract 。 …

.net Tesseract 图片识别

相信大家在开发一些程序会有识别图片上文字&#xff08;即所谓的OCR&#xff09;的需求&#xff0c;比如识别车牌、识别图片格式的商品价格、识别图片格式的邮箱地址等等&#xff0c;当然需求最多的还是识别验证码。如果要完成这些OCR的工作&#xff0c;需要你掌握图像处理、图…