一文就懂大语言模型Llama2 7B+中文alpace模型本地部署

大语言模型Llama2 7B+中文alpace模型本地部署
VX关注晓理紫并回复llama获取推理模型
[晓理紫]

1、Llama模型

一个由facebook发布的生成式语言模型,具体可以到其官方了解。
为了大家更好理解,这里把目录结构显示下一如下图。
在这里插入图片描述

2、 下载Llama并配置环境

2.1 下载Llama源码

git clone https://github.com/facebookresearch/llama.git

2.2 创建环境

可以使用conda创建虚拟环境也可以直接使用pip创建环境,这里使用conda创建并激活环境。

conda create -n llama python=3.8
conda activate llama

进入到刚下载的源码目录

cd llama
pip install -e .

此时基本环境已经完成

3、下载权重

Llama提供好几种大小的权重,目前我只能跑最小的7B,因此下载7B大小权重。

3.1、Llama权重下载

到huggingface中进行搜索Llama即可。这个网站需要注册,这里也提高一个使用的下载地址。

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

3.2、基于7B模型微调的中文alpace模型下载

可到下列地址进行下载

https://huggingface.co/ziqingyang/chinese-alpaca-lora-7b/tree/main

4、模型转换与合并

合并以及处理模型需要几个项目支持,下面用到哪个就配置哪个。

4.1模型转换

这里需要transformers进行转换。这里先下载源码并配置环境

git clone https://github.com/huggingface/transformerscd  transformerspython setup.py instalpip install sentencepiecepip install peft

环境配置好,执行下面语句进行将原版LLaMA模型转换为HF格式

python  transformers/src/transformers/models/llama/convert_llama_weights_to_hf.py --input_dir ./7B/ --model_size 7B --output_dir ./huggingface/--input_dir:属于的7B模型路径--model_size:模型大小类型,7B,13B...--output_dir: 转换后输出的路径

4.2、把中文模型与原模型合并

这里需要使用Chinese-LLaMA-Alpaca。这里先下载源码并配置环境

git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
cd Chinese-LLaMA-Alpaca
pip install -r requirements.txt

环境配置好使用下面语句进行合并

python Chinese-LLaMA-Alpaca/scripts/merge_llama_with_chinese_lora.py  --base_model ./huggingface/ --lora_model ./chinese-alpaca-lora-7b/  --output_dir ./out--base_model:输入的是上一步中转换的输出路径
--lora_model:输入的是中文模型的路径
--output_dir:是可并输出的路径

4.3 进行模型量化

这里要分成两步进行并使用llama.cpp项目,先下载源码进行编译

git clone  https://github.com/ggerganov/llama.cpp.git
cd  llama.cpp && make
  • 1 这个先把合并的模型转换成gguf格式

创建文件目标 zh-models,将之前Chinese-LLaMA-Alpaca文件夹中的tokenizer.model放入其中,然后在zh-models中建立7B文件夹,将上面合并生成的consolidated.00.pth和params.json放入其中。目录如图

在这里插入图片描述

 python llama.cpp/convert-pth-to-ggml.py zh-models/7B/ 1

这个convert-pth-to-ggml.py文件在新版本中被删除了,可以在以前分支找到或者使用下面的代码

# Compatibility stubimport argparseimport convertparser = argparse.ArgumentParser(description="""[DEPRECATED - use `convert.py` instead]Convert a LLaMA model checkpoint to a ggml compatible file""")
parser.add_argument('dir_model',  help='directory containing the model checkpoint')
parser.add_argument('ftype',      help='file type (0: float32, 1: float16)', type=int, choices=[0, 1], default=1)
args = parser.parse_args()
convert.main(['--outtype', 'f16' if args.ftype == 1 else 'f32', '--', args.dir_model])
  • 2 对FP16模型进行Q4量化

使用下面命令进行量化

./llama.cpp/quantize zh-models/7B/ggml-model-f16.gguf ./zh-models/7B/ggml-model-q4_0.bin 2 

5、进行运行

./llama.cpp/main  -m ./zh-models/7B/ggml-model-q4_0.bin -f ./llama.cpp/prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3 

效果如图(当然模型太小准确率呵呵呵)

在这里插入图片描述

下面提供一个最终推理使用的模型

模型获取方式

关注晓理紫并回复llama获取模型

{晓理紫|小李子}喜分享,也很需要你的支持,喜欢留下痕迹哦!

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

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

相关文章

Openstack部署

搭建基础环境 #网络 #防火墙 #用户用 #解析 #同步时间 实验角色 OpenStack01OpenStack02OpenStack03192.168.1.101192.168.1.102192.168.1.103srv1srv2srv3 同步时间 [rootsrv1]# yum install chrony -y [rootsrv1]# vim /etc/chrony.conf # 修改第3行,将NT…

为Mkdocs网站添加评论系统(以giscus为例)

官方文档:Adding a comment system 这里我同样推荐giscus 利用 GitHub Discussions 实现的评论系统,让访客借助 GitHub 在你的网站上留下评论和反应吧!本项目深受 utterances 的启发。 开源。🌏无跟踪,无广告&#…

灾备建设中的网络传输

对于建设灾备系统,只要是网络可达即可进行数据备份保护。灾备中用的传输方式有很多种,比如网络传输,lan-free传输,网络加密传输等。 在这里给大家介绍下网络传输,灾备中的网络传输和平时大家熟知的是一样的。是指用一…

k8s使用

一、Kubernetes好处 ​ kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。 ​ kubernetes的本质…

GIS小技术分享(一):python中json数据转geojson或者shp

1.环境需求 geopandspandasshapelyjsonpython3 2.输入数据(path字段,线条) [{"id": "586A685D568311B2A16F33FCD5055F7B","name": "普及江","path": "[[116.35178835446628,23.57…

贴片电容材质的区别与电容的主要作用

一、贴片电容材质NPO、COG、X7R、X5R、Y5V、Z5U区别 主要是介质材料不同,不同介质种类由于它的主要极化类型不一样,其对电场变化的响应速度和极化率也不一样。在相同的体积下的容量就不同,随之带来的电容器介质的损耗、容量的稳定性也就不同…

【OpenCv光流法进行运动目标检测】

opencv系列文章目录 文章目录 opencv系列文章目录前言一、光流法是什么?二、光流法实例1.C的2.C版本3.python版本 总结 前言 随着计算机视觉技术的迅猛发展,运动目标检测在图像处理领域中扮演着至关重要的角色。在现实世界中,我们常常需要追…

ES相关面试问题整理

索引模板了解么 索引模板,一种复用机制,就像一些项目的开发框架如 Laravel 一样,省去了大量的重复,体力劳动。当新建一个 Elasticsearch 索引时,自动匹配模板,完成索引的基础部分搭建。 模板定义&#xf…

基于LSTM-Adaboost的电力负荷预测的MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 主要内容: LSTM-AdaBoost负荷预测模型先通过 AdaBoost集成算法串行训练多个基学习器并计算每个基学习 器的权重系数,接着将各个基学习器的预测结果进行线性组合,生成最终的预测结果。代码中的LST…

Grafana 10 新特性解读:体验与协作全面提升

作者:徽泠(苏墨馨) 为了庆祝 Grafana 的 10 年里程碑,Grafana Labs 推出了 Grafana 10,这个具有纪念意义的版本强调增强用户体验,使各种开发人员更容易使用。Grafana v10.0.x 为开发者与企业展示卓越的新功能、可视化与协作能力&…

虚幻引擎5:增强输入的使用方法

一、基本配置 1.创建一个输入映射上下文(映射表) 2.创建自己需要的操作映射或者轴映射 3.创建完成之后进入这个映射,来设置类型,共有4个类型 1.Digital:是旧版操作映射类型,一般是按下抬起来使用,像跳跃…

Linux实现原理 — I/O 处理流程与优化手段

Linux I/O 接口 Linux I/O 接口可以分为以下几种类型: 文件 I/O 接口:用于对文件进行读写操作的接口,包括 open()、read()、write()、close()、lseek() 等。 网络 I/O 接口:用于网络通信的接口,包括 socket()、conne…

RabbitMQ常见的交换机类型

RabbitMQ安装 pom.xml里导入相关的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> application.properties配置文件 spring.rabbitmq.hos…

Nginx - 反向代理与负载均衡

目录 一、Nginx 1.1、Nginx 下载 1.2、nginx 基础配置的认识 a&#xff09;第一部分&#xff1a;全局块 b&#xff09;第二部分&#xff1a;events 块 c&#xff09;第三部分&#xff1a;http 块 http 块中 内嵌的 server 块 1.3、一些常用配置 1.3.1、location 匹配级…

java正则表达式 及应用场景爬虫,捕获分组非捕获分组

正则表达式 通常用于校验 比如说qq号 看输入的是否符合规则就可以用这个 public class regex {public static void main(String[] args) {//正则表达式判断qq号是否正确//规则 6位及20位以内 0不能再开头 必须全是数子String qq"1234567890";System.out.println(qq…

【机器学习】sklearn特征选择(feature selection)

文章目录 特征工程过滤法&#xff08;Filter&#xff09;方差过滤相关性过滤卡方过滤F验表互信息法小结 嵌入法&#xff08;Embedded&#xff09;包装法&#xff08;Wrapper&#xff09; 特征工程 特征提取(feature extraction)特征创造(feature creation)特征选择(feature se…

【软件设计师-下午题总结】

目录 下午题之总结于学习记录&#xff1a;题一、数据流图&#xff1a;1、熟悉相关的图形2、实体名称3、数据存储4、补充缺失的数据流和起点终点5、用结构化语言描述6、描述&#xff0c;找加工逻辑的时候7、如何保持数据流平衡 题二&#xff1a;实体联系图&#xff1a;1、常用图…

Django Test

Django--Laboratory drug management and early warning system-CSDN博客 创建项目doinglms django-admin startproject doinglms python manage.py runserver 运行开发服务器(Development Server) 创建一个自定义 App,名称为 lms: python manage.py startapp lms

minio桶命名规则

一、背景 今天做项目需要上传图片到minio&#xff0c;上传失败&#xff0c;查看错误是桶未创建成功。 minio桶的创建具有自己的命名规则&#xff0c;不符合则无法创建。 二、命名规则 1、存储桶名称的长度必须介于 3&#xff08;最小&#xff09;到 63&#xff08;最大&…

【数据结构】二叉树--堆排序

目录 一 降序(建小堆) 二 升序 (建大堆) ​三 优化(以升序为例) 四 TOP-K问题 一 降序(建小堆) void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; }//降序 建小堆 void AdjustUp(int* a, int child) {int parent (child - 1) / 2;while (child > 0){if (a[chil…