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

news2024/11/25 12:48:53

大语言模型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/transformers

cd  transformers

python setup.py instal

pip install sentencepiece

pip 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 stub

import argparse

import convert

parser = 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.coloradmin.cn/o/1089833.html

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

相关文章

IWDG与WWDG (学习)

IWDG Independent watchdog,即独立看门狗 IWDG:能产生系统复位信号的计数器 递减的计数器时钟由独立的RC振荡器提供(可在待机和停止模式运行)看门狗被激活后,当递减计数器计数到0x000时产生复位 喂狗:在…

【C++】继承 ② ( 继承语法 | 三种继承 - 共有继承 / 保护继承 / 私有继承 | 继承与父类私有成员 | 子类访问父类私有成员 | 代码示例 )

文章目录 一、继承语法1、语法说明2、三种继承 - 共有继承 / 保护继承 / 私有继承3、继承与父类私有成员4、子类访问父类私有成员 二、代码示例 - 继承语法 一、继承语法 1、语法说明 继承语法 : 使用 class 关键字 定义 子类 , 在 子类后面 使用 冒号 : 与 若干父类隔开 ; cl…

Viewport的作用

什么是 Viewport? viewport 是用户网页的可视区域。 viewport 翻译为中文可以叫做"视区"。 手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比…

如何实现前端路由保护?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

C语言编写简易图书管理系统

这篇文章介绍了一个基本的图书管理系统的实现,它允许用户添加、插入、删除、修改、显示和查询图书的功能。该系统通过使用二进制文件将图书信息保存到磁盘,并且在程序启动时能够加载已保存的图书信息。 介绍 在计算机科学中,图书管理系统是…

buffer overflow detected

背景 在应用上云改造中,业务场景如下: 在使用ecs的场景中,应用的ip都是固定的;在使用k8s之后pod的ip就变的不固定了,k8s提供了statefulset的模式来支持这种场景,以固定域名的方式支持。 问题 在平台pod开…

Locust性能测试框架,从入门到精通

1. Locust简介 Locust是使用Python语言编写实现的开源性能测试工具,简洁、轻量、高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力。 主要特点如下: 使用普通的Python脚本用户测试场景分布式和可扩展&#xff…

论文阅读:ECAPA-TDNN

1. 提出ECAPA-TDNN架构 TDNN本质上是1维卷积,而且常常是1维膨胀卷积,这样的一种结构非常注重context,也就是上下文信息,具体而言,是在frame-level的变换中,更多地利用相邻frame的信息,甚至跳过…

用于医学图像分割的分段任意模型 (SAM)

一、说明 在不断发展的人工智能 (AI) 领域,医学成像是一个正在经历深刻变革的领域。乘着这一变革浪潮,Facebook 的(现为 Meta)研究小组开发了一种突破性的模型架构,称为 SegmentAnything (SAM)。SAM 的卓越之处在于它能…

队列:如何在线程池等有限资源池中的应用?

文章来源于极客时间前google工程师−王争专栏。 我们知道,CPU 资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致CPU频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处…

MTK6877/MT6877天玑900安卓5G核心板_安卓开发板主板定制开发

2021年5月13日,MediaTek 宣布发布旗下的天玑900系列芯片,又名MT6877。天玑900基于6nm先进工艺制造,搭载硬件级4K HDR视频录制引擎,支持1.08亿像素摄像头、5G双全网通和Wi-Fi 6连接、旗舰级存储规格和120Hz的FHD超高清分辨率显示&a…

GD32F10x系列单片机下载方式

GD32F10x系列单片机下载方式 简介烧录接口KEIL在线烧录选择下载器ST-link接线 DAP、JLINK等 烧录软件烧录STlink接线操作 ISP烧录接线 总结 简介 GD32F10x系列的单片机是兆易创新推出对标意法半导体STM32F10x系列的国产单片机。本文将以GD32F103C8T6展开,GD32F103C8…

持续提升信息安全运维保障服务能力,天玑科技助力企业快速实现数字化转型

近年来,以互联网、云计算、大数据、物联网为代表的新一代信息技术快速发展。给人们的生产生活方式带来方便的同时,也给信息系统的安全带来了严峻的挑战。我国信息化和信息安全保障工作的不断深入推进,以应急处理、风险评估、灾难恢复、系统测…

电动车租赁小程序开发方案详解php

电动车租赁小程序开发功能有哪些? 1.地图找车 进入小程序后,在地图上显示门店位置,点击位置可查看门店信息。进入门店后可以看到车辆列表,车辆里详细的介绍的车辆名称、图片、车辆介绍、租赁价格、押金等信息。 2.租赁/购车 电…

【LeetCode:1488. 避免洪水泛滥 | 有序表 哈希表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

十五、【历史记录画笔工具组】

文章目录 历史记录画笔工具历史记录艺术画笔工具 历史记录画笔工具 历史记录画笔工具很简单,就是将画笔工具嗯,涂抹过的修改过的地方,然后用历史记录画笔工具重新修改回来,比如我们将三叠美元中的一叠用画笔工具先涂抹掉&#xf…

CSS 边框

CSS 边框属性 CSS边框属性允许你指定一个元素边框的样式和颜色。 在四边都有边框 红色底部边框 圆角边框 左侧边框带宽度,颜色为蓝色 边框样式 边框样式属性指定要显示什么样的边界。 border-style属性用来定义边框的样式 border-style 值: none: 默认无边框…

防爆对讲机在消防救援工作中的重要性

据相关报道2022年国内因易燃易爆造成的事故825起,死亡1人以上的事故有103起,共造成234人死亡;火灾爆炸事故306起,占事故总数的37%,造成93人死亡,占死亡总人数的40%。 消防救援队伍在实施灭火作战、应急救援工作面对复杂…

新版Android Studio搜索不到Lombok以及无法安装Lombok插件的问题

前言 在最近新版本的Android Studio中,使用插件时,在插件市场无法找到Lombox Plugin,具体表现如下图所示: 1、操作步骤: (1)打开Android Studio->Settings->Plugins,搜索Lom…

Notepad++使用技巧

显示远程连接的文件目录 自动完成:函数自动提示 自动输入:输入一半括号自动补全另一半 自动关联 .pc文件识别为C 列模式 按住Alt不松手,可以直接范围选择,便于编辑选择的区域 关键行筛选 1.进入搜索页面的标记 2.选中标…