[NLP]LLM--使用LLama2进行离线推理

一 模型下载

二 模型推理

本文基于Chinese-LLaMA-Alpaca-2项目代码介绍,使用原生的llama2-hf

克隆好了Chinese-LLaMA-Alpaca-2 项目之后,基于GPU的部署非常简单。下载完成以后的模型参数(Hugging Face 格式)如下:

简单说明一下各个文件的作用

文件名称 示例 说明
config.json { "architectures": "LlamaForCausalLM" , "hidden_size": 4096, ... "vocab_size": 55296 } hugging face Transformer的配置文件 文档路径在 https://huggingface.co/docs/transformers/main/main_classes/configuration
generation_config.json { "_from_model_config": true, "bos_token_id": 1, "eos_token_id": 2, "pad_token_id": 0, "transformers_version": "4.31.0" } 这个主要是为了generation方法提供参数 https://huggingface.co/docs/transformers/main_classes/text_generation
pytorch_model.bin.index.json { "metadata": { "total_size": 13858521088 }, "weight_map": { ... } } 包含一些元数据以及一个参数名映射表,包含权重指示信息
pytorch_model-*.bin 标准的Pytorch state dicts,它们各自包含模型的一部分
special_tokens_map.json { ... "pad_token": "", "unk_token": { "content": "", "lstrip": false, "normalized": true, "rstrip": false, "single_word": false } } 映射文件,里面包含 unknown token 等特殊字符的映射关系;
tokenizer_config.json { "add_bos_token": true, ... "unk_token": { "__type": "AddedToken", "content": "", "lstrip": false, "normalized": true, "rstrip": false, "single_word": false }, "use_fast": false } 分词器配置文件,存储构建分词器需要的参数
tokenizer.model 标记器(Tokenizer):将文本转换为模型可以处理的数据。模型只能处理数字,因此标记器(Tokenizer)需要将我们的文本输入转换为数字数据。

模型推理 Chinese-LLaMA-Alpaca-2 提供了一些使用脚本,可以很方便的体验模型推理的过程 教程

复制代码
aiofiles==23.1.0
fastapi==0.95.2
gradio_client==0.2.5
gradio==3.33.1

accelerate==0.22.*
colorama
datasets
einops
markdown
numpy==1.24
optimum==1.12.0
pandas
peft==0.5.*
transformers==4.33.1
Pillow>=9.5.0
pyyaml
requests
safetensors==0.3.2
scipy
sentencepiece==0.1.99
tensorboard
tqdm
wandb

# bitsandbytes
bitsandbytes==0.41.1

启动运行环境(使用docker):

docker run -it -v `pwd`:/home/work --gpus 1 pytorch:2.0.1-transformers /bin/bash

python scripts/inference/inference_hf.py --base_mode /home/work/llama2/ --with_prompt --interactive

可以看出原生的LLAMA2模型对中文支持不好,回答的答案基本都是英文

三、搭建text-generation-webui

text-generation-webui是github上的一个开源项目,也是目前运行开源模型最广泛使用的软件之一。如果你之前用过第一代LLama,应该对这个项目比较熟悉。

text-generation-webui的安装方式相当简单,同样需要从github上克隆项目:https://github.com/oobabooga/text-generation-webui。克隆完成后,我们把刚才转换好的huggingface格式的模型文件夹整个放入models中,目录结构如下:

我们将刚才生成好huggingface格式的模型文件夹整个放入models中,文件结构如下图:

如果这一步做完了,模型部署这块就大功告成啦。现在我们运行text-generation-webui就可以和llama2模型对话了,具体的命令如下:

python server.py --api --listen --model /home/work/text-generation-webui-main/models/llama-2-7b/

四、使用模型

现在,LLama2模型已经搭建好了,怎么样把它分享给你的朋友或同事使用呢?

我们用YourChat来完成这个工作。YourChat是一个聊天客户端,它支持text_generation_webui的API,适配了Android、iOS、Windows和MacOS,以下我们以Windows版本为例,当然其他平台也大同小异。 下载地址:https://yourchat.app/download

在上一步,我们在启动text_generation_webui的时候添加了一个--api参数,这就让text_generation_webui支持了API调用。如果你想要使用YourChat,那这个API功能就必须要打开。

首先,让我们把刚刚搭建的text_generation_webui添加到YourChat的服务里面。如果是第一次使用YourChat,它会弹出一个新手教程。如果text-generation-webui参数没有动过,那就按照教程的指引,填入服务的IP地址就可以了。

如果之前已经下载过YourChat,那就在YourChat的"服务"界面,点击右下角的"+"按钮,添加一个新的服务。在"名称"栏中,输入你的服务名称,比如模型名字"llama-2-7b"。在"Host"栏中,填写你的模型服务器的地址,例如"192.168.1.100"。

然后点击右上角的保存按钮,你的Llama2模型就成功地被添加到了YourChat中,你现在可以开始和LLama2进行聊天了。

LLama 2干货部署教程+模型分发 - 知乎 (zhihu.com)

从0开始微调LLama2系列 (2) : 运行一下llama2 - 知乎 (zhihu.com)

相关推荐
IT_陈寒2 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
jooloo6 小时前
Codex 间歇性 400 之谜:一条对话里,它为什么有时候用 chat/completions,有时候切到 responses?
人工智能
用户5191495848456 小时前
OpenSSL PKCS#12 PBMAC1 堆栈缓冲区溢出漏洞 (CVE-2025-11187) 分析与验证
人工智能·aigc
用户5191495848457 小时前
HP Sound Research SECOMNService 权限提升漏洞利用工具
人工智能·aigc
用户018349301697 小时前
给 AI 智能体能力包一层 BFF,前端只调一个接口
人工智能
这token有力气11 小时前
Function Calling 格式漂移
人工智能
onething36511 小时前
Spring Boot + Spring AI 从入门到实战:7天转型计划 Day 5 —— SSE 流式输出 + 打字机效果
人工智能·后端·全栈
onething36511 小时前
Spring Boot + Spring AI 从入门到实战:7天转型计划 Day 6 —— 业务完善 + 会话消息预览
人工智能·后端·全栈
IT_陈寒12 小时前
SpringBoot自动配置的坑,我爬了三天才出来
前端·人工智能·后端
甲维斯13 小时前
笑抽了!DeepSeek识图,豆包完胜了!
人工智能·deepseek