首页 > 其他分享 >Llama2-Chinese项目:1-项目介绍和模型推理

Llama2-Chinese项目:1-项目介绍和模型推理

时间:2023-09-11 20:15:27浏览次数:43  
标签:github Chinese 项目 Llama2 token https com

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 torch

pretrained_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/

标签:github,Chinese,项目,Llama2,token,https,com
From: https://www.cnblogs.com/shengshengwang/p/17694342.html

相关文章

  • 合同交付类项目如何高效管理?
    美国项目管理协会(PMI)保罗·格蕾斯曾说:“当今社会,一切都是项目,一切也将成为项目。”在“万事皆项目”的背景下,企业在运营过程中会产生大量的项目型业务活动,例如:举办市场活动、产品研发、进行企业内训、采购招标、工程建设等等。那么按照业务场景可以分为:研发类项目、合同交付类......
  • PPT| 企业信息化建设项目业务总体设计方案 P70
    本人从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.【智能制造数字化咨询】该PPT共70页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击右上角红色按钮关注+私信。......
  • 什么是项目管理里的需求跟踪矩阵?
     需求跟踪矩阵(RequirementsTraceabilityMatrix,RTM)是项目管理和质量管理中的一个工具,用于跟踪项目需求与其来源以及如何满足这些需求的文档或活动之间的关系。其主要目的是确保项目满足所有定义的需求,同时为相关方提供一个清晰的视图,显示需求如何在项目的......
  • PPT| 美的集团632战略规划项目详细介绍 P54
    本人从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.【智能制造数字化咨询】该PPT共54页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击右上角红色按钮关注+私信。......
  • 创建vue3的项目和目录结构讲解
    本节目标了解Vue3项目的结构学习Vue3项目的基本开发知识Vue3和Vue2的开发区别全局安装vue-clinpmi-g@vue/clivuecreatevue3-json-schema-form自定义vue3配置自定义配置:选择[自定义],通过方向键上下移动,空格选中,Enter确定,自定义配置中,您将会看到这些配置......
  • 国内项目管理中级证书CSPM-3正在报名!
    CSPM-3中级项目管理专业人员认证,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  2023年9月6日,中国标准化协会......
  • 棱镜七彩正式成为openchain项目官方工具合作伙伴
    近日,OpenChain官方宣布,棱镜七彩正式成为OpenChain项目官方工具合作伙伴,为客户提供源代码同源(克隆)分析、合规性分析、安全分析和管理解决方案,多方位支持软件供应链合规和安全,共同维护开源许可证合规领域的国际标准OpenChainISO/IEC5230。图OpenChain官网截图OpenChain总经理Shane......
  • 2023年9月CSPM-3国标项目管理中级认证报名,哪有?
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。  【证书含金量】 ·竞聘优先......
  • 超全面详细一条龙教程!从零搭建React项目全家桶(上篇)
    超全面详细一条龙教程!从零搭建React项目全家桶(上篇)兔子先生 ​关注他 101人赞同了该文章 React是近几年来前端项目开发非常火的一个框架,其背景是Facebook团队的技术支持,市场占有率也很高。很多初学者纠结一开始是学react还是vue。个人觉得,有时间的......
  • 从0到1搭建一个react项目
    从0到1搭建一个react项目react分享高级前端工程师​关注他  首先新建一个文件夹,然后用编辑器vscode打开这个文件夹打开文件夹后执行npminit命令,会提示你生成package.json文件然后下载npm包,下面贴下package.json{"name":"demo","versi......