Llama2-Chinese项目:1-项目介绍和模型推理
Atom-7B与Llama2间的关系:Atom-7B是基于Llama2进行中文预训练的开源大模型。为什么叫原子呢?因为原子生万物,Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位。目前社区发布了6个模型,如下所示:
FlagAlpha/Atom-7B
FlagAlpha/Llama2-Chinese-7b-Chat
FlagAlpha/Llama2-Chinese-7b-Chat-LoRA
FlagAlpha/Llama2-Chinese-13b-Chat
FlagAlpha/Llama2-Chinese-13b-Chat-LoRA
FlagAlpha/Llama2-Chinese-13b-Chat-4bit
一.Llama2-Chinese项目介绍
1.Llama相关论文
LLaMA: Open and Efficient Foundation Language Models
Llama 2: Open Foundation and Fine-Tuned Chat Models
Code Llama: Open Foundation Models for Code
2.Llama2的评测结果
二.Atom-7B加载和推理
模型调用代码示例如下所示:
from transformers import AutoTokenizer, AutoModelForCausalLM
from pathlib import Path
import torchpretrained_model_name_or_path = r'L:/20230903_Llama2/Atom-7B'
model = AutoModelForCausalLM.from_pretrained(Path(f'{pretrained_model_name_or_path}'), device_map='auto', torch_dtype=torch.float16, load_in_8bit=True) #加载模型
model = model.eval() #切换到eval模式
tokenizer = AutoTokenizer.from_pretrained(Path(f'{pretrained_model_name_or_path}'), use_fast=False) #加载tokenizer
tokenizer.pad_token = tokenizer.eos_token #为了防止生成的文本出现[PAD],这里将[PAD]重置为[EOS]
input_ids = tokenizer(['<s>Human: 介绍一下中国\n</s><s>Assistant: '], return_tensors="pt", add_special_tokens=False).input_ids.to('cuda') #将输入的文本转换为token
generate_input = {"input_ids": input_ids, #输入的token"max_new_tokens": 512, #最大生成的token数量"do_sample": True, #是否采样"top_k": 50, #采样的top_k"top_p": 0.95, #采样的top_p"temperature": 0.3, #采样的temperature"repetition_penalty": 1.3, #重复惩罚"eos_token_id": tokenizer.eos_token_id, #结束token"bos_token_id": tokenizer.bos_token_id, #开始token"pad_token_id": tokenizer.pad_token_id #pad token
}
generate_ids = model.generate(**generate_input) #生成token
text = tokenizer.decode(generate_ids[0]) #将token转换为文本
print(text) #输出生成的文本
三.相关知识点
1.Fire库
解析:Fire是一个Google开发的库,用于自动生成Python命令行接口(CLI)。它可以帮助开发人员快速将Python对象和函数暴露为命令行工具。使用Fire可以自动创建命令行参数,参数类型和默认值等。
2.Llama1和Llama2区别
解析:
(1)Llama2采用Llama1的大部分预训练设置和模型架构,它们使用标准的Transformer架构,应用RMSNorm进行预归一化,使用SwiGLU激活函数和旋转位置编码。与Llama1相比,主要的架构差异包括增加的上下文长度和分组查询注意力(GQA)。
(2)Llama2总共公布了7B、13B和70B三种参数大小的模型。相比于LLaMA,Llama2的训练数据达到了2万亿token,上下文长度也由之前的2048升级到4096,可以理解和生成更长的文本。Llama2Chat模型基于100万人类标记数据微调得到,在英文对话上达到了接近ChatGPT的效果。
四.相关问题
1.CUDA Setup failed despite GPU being available
解析:如下是网上介绍的解决方案,还有的建议源码编译,但是这2种方案都没有走通。
(1)安装路径
- bitsandbytes路径(0.39.1):D:\Python38\Lib\site-packages\bitsandbytes
- CUDA路径(v12.1):C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin
将"CUDA路径(v12.1)"下的文件拷贝到"bitsandbytes路径(0.39.1)"目录下:
cudart64_12.dll
cublas64_12.dll
cublasLt64_12.dll
cusparse64_12.dll
nvJitLink_120_0.dll
实践经验建议方式[8]为pip3 install https://github.com/jllllll/bitsandbytes-windows-webui/blob/main/bitsandbytes-0.39.0-py3-none-any.whl
。有图有证据如下所示:
(2)修改文件
D:\Python38\Lib\site-packages\bitsandbytes\cuda_setup\main.py
- 将
if not torch.cuda.is_available(): return 'libsbitsandbytes_cpu.so', None, None, None, None
替换为if torch.cuda.is_available(): return 'libbitsandbytes_cuda116.dll', None, None, None, None
- 将2个地方的
self.lib = ct.cdll.LoadLibrary(binary_path)
替换为self.lib = ct.cdll.LoadLibrary(str(binary_path))
(3)添加libbitsandbytes_cuda116.dll和libbitsandbytes_cpu.dll
存放路径为D:\Python38\Lib\site-packages\bitsandbytes
,下载地址参考[0]。
2.RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
解析:下载链接为[7],下载之前需要NVIDIA社区账号登录。
(1)解压cudnn-windows-x86_64-8.9.4.25_cuda12-archive.zip
(2)拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1
参考文献:
[0]https://github.com/DeXtmL/bitsandbytes-win-prebuilt/tree/main
[1]https://github.com/facebookresearch/llama
[2]https://github.com/facebookresearch/llama-recipes/
[3]https://huggingface.co/meta-llama/Llama-2-7b-hf/tree/main
[4]https://huggingface.co/spaces/ysharma/Explore_llamav2_with_TGI
[5]https://huggingface.co/meta-llama/Llama-2-70b-chat-hf
[6]https://huggingface.co/blog/llama2
[7]https://developer.nvidia.com/rdp/cudnn-download
[8]https://github.com/jllllll/bitsandbytes-windows-webui
[9]https://github.com/langchain-ai/langchain
[10]https://github.com/AtomEcho/AtomBulb
[11]https://github.com/huggingface/peft
[12]全参数微调时,报没有target_modules变量:https://github.com/FlagAlpha/Llama2-Chinese/issues/169
[13]https://huggingface.co/FlagAlpha
[14]https://llama.family/
相关文章:
Llama2-Chinese项目:1-项目介绍和模型推理
Atom-7B与Llama2间的关系:Atom-7B是基于Llama2进行中文预训练的开源大模型。为什么叫原子呢?因为原子生万物,Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位。目前社区发布了6个模型,如下所示: FlagAl…...
论文于祥读及复现——《VDO-SLAM: A Visual Dynamic Object-aware SLAM System》
论文详读之------《一个视觉动态对象感知SLAM系统》 0. 出发点(暨摘要)1.引言2. 相关工作2.1 探索针对动态环境的健壮SLAM2.2 分别执行SLAM和运动对象跟踪(MOT),作为传统SLAM的扩展,用于动态场景理解。2.3 对象SLAM(通…...
nuxt3项目使用pdfjs-dist预览pdf
使用的包的源代码是 pdfjs - npm 但是我们实际上项目中使用的是pdfjs打包后的dist文件,也就是pdfjs-dist - npm 所以我们需要使用这个命令 npm i pdfjs-dist 我们可以克隆pdfjs这个包来看源代码,里面有使用的例子,也可以根据源代码自己打…...
mybatis-generator-maven-plugin使用
前提说明 数据库:MYSQL57Mybatis : http://mybatis.org/generator/index.html 操作说明 引入插件 <plugins><!-- MyBatis 逆向工程 插件 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generat…...
基于SpringBoot开发的停车位管理系统(调用百度地图api)
文章目录 项目介绍主要功能截图:前台:后台部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot开发的停车位管…...
STC8单片机PWM定时器+EC11编码器实现计数
STC8单片机PWM定时器+EC11编码器实现计数 📌相关篇《STC单片机+EC11编码器实现调节PWM输出占空比》📍《stc单片机外部中断+EC11编码器实现计数功能》🔖STC8系列支持此功能的型号: ✨从上面的相关篇中有通过通用定时器加外部中断以及常规方法实现驱动EC11编码器的方法。本…...
MediaBox助力企业一站式获取音视频能力
以一只音视频百宝箱,应对「千行千面」。 洪炳峰、楚佩斯|作者 大家好,今天我分享的主题是MediaBox——行业音视频数字化再加速。 根据权威数据表明,65%的行业数字化信息来自视频,基于此,音视频技术对于行…...
仅做笔记用:Stable Diffusion 通过 ControlNet 扩展图片 / 扩图
发觉之前的 Outpainting 脚本效果仍旧不是很理想。这里又找了一下有没有效果更好的途径来扩图。于是就找到了通过 ControlNet 的方式来实现效果更好的扩图。这里临时记录一下在 Stable Diffusion 怎么使用 ControlNet 来扩展图片。 下载 control_v11p_sd15_inpaint_fp16.safet…...
代码随想录算法训练营19期第49天
121. 买卖股票的最佳时机 视频讲解:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili 代码随想录 初步思路:贪心。 总结: 分别考虑2种情况: 【1】dp[i][0] 表示第i天持有股票所得最多现金 【2】…...
用shell脚本实现一个对数组求和的函数,数组通过实参传递给函数,写一个函数,输出当前用户的uid和gid,并使用变量接收结果
目录 1.实现一个对数组求和的函数,数组通过实参传递给函数 结果为: 2.写一个函数,输出当前用户的uid和id,并使用变量接收结果 结果为: shell脚本指令前七个网页链接: 八、shell中的分支语句 【1】ife…...
运算符,switch
目录 算术运算符 逻辑运算符 强制类型转换 自增自减运算符 编辑 三目运算符 A?B:C 逗号表达式 switch 算术运算符 除法的运算结果和运算对象的数据类型有关,两个都是int商就是int,被除数或者除数只要有一个是浮点型数据,…...
运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar
朋友 我当你一秒朋友 朋友 我当你一世朋友 奇怪 过去再不堪回首 怀缅 时时其实还有 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar 基本可以断定,是jar不完整导致的。不完整!!!记住关键字 检查1: …...
在找工作时的准备工作:结合现状,针对意向企业做好充分准备
在寻找工作时,充分准备是非常重要的。不仅要了解自己的现状和能力,还需要对意向企业进行深入了解,并提前准备好与该企业相关的技能和知识。尤其对于程序员来说,在面试IT技术岗位时,以下技巧可能会对你有所帮助…...
微服务·数据一致-事务与分布式事务
微服务数据一致-事务与分布式事务 概述 事务是计算机科学和数据库管理中的一个关键概念,用于确保数据的一致性和可靠想。事务管理是大多数应用程序和数据库系统中不可或缺的一部分。分布式事务扩展了事务的概念,用于多个分布式系统和服务的数据一致性管…...
GO语言篇之CGO
GO语言篇之CGO 文章目录 GO语言篇之CGO前言C代码嵌入GO代码C文件嵌入GO代码缺点 前言 Go语言可以通过内置的CGO调用C语言接口,从而实现C语言代码的交互,CGO提供了一种将Go代码嵌入到C代码中,或者从Go代码中调用C函数的方法 C代码嵌入GO代码…...
LVS负载均衡群集(NAT模式、IP隧道模式、DR模式)
目录 一、集群 1.1 含义即特点 1.2 群集的类型 1.3 LVS 的三种工作模式: 1.4 LVS 调度算法 1.5 负载均衡群集的结构 1.6 ipvsadm 工具 二、NAT模式 LVS-NAT模式配置步骤: 实例: 配置NFS服务器192.168.20.100 配置web1服务器192.168…...
PCL 使用克拉默法则进行三点定圆(二维)
目录 一、算法原理二、代码实现三、结果展示四、参考链接五、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 见:使用克拉默法则进行三点定圆(二维) 二、代码实现 #include <iostream>...
MCAL实战二(S32K324-NXP EB tresos GPT驱动配置详解)
目录 前言 一、配置之前 第一步 找时钟源 第二步 配置MCU时钟 二、开始配置 第一步 新建时钟参考点 第二步 硬件通道使能 第三步 配置连接 <...
Python 图形化界面基础篇:什么是 Tkinter 以及为什么选择它
Python 图形化界面基础篇:什么是 Tkinter 以及为什么选择它 引言第一部分:什么是 Tkinter? 1. 跨平台性2. Python 标准库的一部分3. 易学易用4. 社区和资源 第二部分:为什么选择 Tkinter? 1. 简单易用2. 跨平台兼容性3…...
Learning From Data 中英文对照 1.THE LEARNING PROBLEM (第7页)
为了简化感知器公式的表示法,我们将把偏差aaWpb与其他权重合并到一个向量中[wo,1,。…,wd]“,其中T表示向量的转置,所以w是acolumn向量,我们也将x作为列向量,并将其修改为x[o&#x…...
自己编译静态ffmpeg freetype2 not found问题解决
整理好依赖的ffmpeg仓库地址: https://github.com/pyke369/sffmpeg 报错:ERROR: freetype2 not found using pkg-config 网上查询说是需要安装freetype-devel sudo apt install libfreetype6-dev 安装后还是报一样的错,实…...
基于 Python 的音乐流派分类
音乐就像一面镜子,它可以告诉人们很多关于你是谁,你关心什么,不管你喜欢与否。我们喜欢说“you are what you stream” - Spotify Spotify 拥有 260 亿美元的净资产,是如今很受欢迎的音乐流媒体平台。它目前在其数据库中拥有数百…...
代码随想录训练营第49天|121.买卖股票的最佳时机,122.买卖股票的最佳时机II
代码随想录训练营第49天|121.买卖股票的最佳时机,122.买卖股票的最佳时机II 121.买卖股票的最佳时机文章思路代码 122.买卖股票的最佳时机II文章思路代码 总结 121.买卖股票的最佳时机 文章 代码随想录|0121.买卖股票的最佳时机 思路 维护一个历史最低价&#x…...
1-3 AUTOSAR软件架构
目录 一、简介 二、基础软件层 BSW 2.1 微控制器抽象层 2.2 ECU抽象层 2.3 复杂的驱动程序 2.4 服务层 三、运行时环境 RTE 四、应用软件层 SWC 一、简介 分层架构是实现软硬件分离的关键,它使汽车嵌入式系统控制软件开发者摆脱了以往 ECU 软件开发与验证时…...
Dajngo02_第一个Django案例
Dajngo02_第一个Django案例 经过之前学习,我们已经可以创建Django环境 现在开始尝试快速使用Django开发一个案例 案例:利用Django实现一个查看当前时间的web页面。 在django中要提供数据展示给用户,一般情况下我们需要完成3个步骤: 在urls.…...
R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化...
全文链接:https://tecdat.cn/?p33609 Reaven和Miller(1979)研究了145名非肥胖成年人的葡萄糖耐量和胰岛素血液化学指标之间的关系。他们使用斯坦福线性加速器中心的PRIM9系统将数据可视化为3D,并发现了一个奇特的图案,…...
有效回文字符串(Valid palindrome)
题目描述 思路分析 代码实践 java: public class Solutation1 {//定义一个方法,判断是否是有效数字或者字母private static boolean isValid(char c) {//如果不是字母或者数字,那就返回一个flase//这里调用了Character类里面的方法return Character.i…...
9月9日,每日信息差
今天是2023年9月9日,以下是为您准备的12条信息差 第一、前晨汽车动力电池项目落地厦门,第二十届中国国际投资贸易洽谈会于2023年9月8日在福建省厦门市开幕。会上,前晨汽车科技有限公司与福建省厦门市集美区进行了前晨汽车动力电池项目签约&a…...
Java——》synchronized编译
推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...
vue3使用el-form实现登录、注册功能,且进行表单验证(Element Plus中的el-form)
简介:Element Plus 中的 el-form 是一个表单组件,用于快速构建表单并进行数据校验。它提供了丰富的表单元素和验证规则,使表单开发变得更加简单和高效。可以搭配el-dialog实现当前页面的登录、注册页 ,这两天在vue3中用到了表单登…...
烟台网站建设多少钱/刚刚传来最新消息
TAP主要安装于光纤网络中的两个或多个点之间提供实时网络信号监控报告功能。TAP一般有两种不同的类型,有源TAP和无源TAP。无源TAP是一种不需要电源的纯无源器件。它在企业数据中心中更为常见,用于创建网络可视性和增强网络安全性。无源TAP主要有两种技术…...
青县做网站/推广运营是什么工作
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 jmeter 性能测试数据…...
临沂网站建设那家好/win7怎么优化最流畅
文章目录1.CSS2.Id&ClassCSS的创建具体属性ref1.CSS CSS(Cascading Style Sheets)层叠样式表, 一种用于为结构化文档(HTML文档/XML应用)添加样式(字体, 间距, 颜色等)的计算机语言样式定义如何显示HTML元素, 通常存储在样式表, 样式添加到HTML4.0中是为了解决内容与表现分…...
哪些企业网站做的好/企业官网首页设计
知识回顾:当鼠标在窗口内移动,点击或者释放时都会产生WM_NCHITTEST消息,响应函数OnNcHitTest会返回一个枚举值,系统会根据这个枚举值进行相应的处理。 当返回值为HTCAPTION时,系统会认为此时鼠标位于标题栏上,因而当鼠标按下并移动时就会执行拖动操作。我们需要做的就是响应这个…...
一级a做爰网站中国/如何注册域名网站
把数据库从oracle迁移到PPASPPAS有两个迁移工具,一个图形界面的,一个命令行的,下面以图形界面为例。1首先需要在目标数据库系统PPAS上建立和源库对应的用户和对等的权限,再建立目标数据库。create user " USERNAMEXXX "…...
iis网站开发教程/软文写作是什么意思
OpenCV Machine Learning 之 K最近邻分类器的应用下面的程序实现了对高斯分布的点集合进行分类的K最近令分类器#include "ml.h"#include "highgui.h"int main( int argc, char** argv ){const int K 10; //每个输入向量的邻居个数int i, j, k, accuracy;f…...