[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)

相关推荐
人工智能训练11 分钟前
Docker中容器的备份方法和步骤
linux·运维·人工智能·ubuntu·docker·容器·nvidia
渡我白衣20 分钟前
深入 Linux 内核启动:从按下电源到用户登录的全景解剖
java·linux·运维·服务器·开发语言·c++·人工智能
甄心爱学习33 分钟前
数据挖掘11-分类的高级方法
人工智能·算法·分类·数据挖掘
李昊哲小课33 分钟前
wsl ubuntu24.04 cuda13 cudnn9 pytorch 显卡加速
人工智能·pytorch·python·cuda·cudnn
小程故事多_8038 分钟前
LangChain1.0系列:中间件深度解析,让 AI智能体上下文控制不失控
人工智能·中间件·langchain
中国国际健康产业博览会1 小时前
2026第35届中国国际健康产业博览会探索健康与科技的完美结合!
大数据·人工智能
数字化脑洞实验室1 小时前
选择AI决策解决方案需要注意哪些安全和数据隐私问题?
人工智能·安全
Guheyunyi1 小时前
安全风险监测系统核心技术
运维·网络·人工智能·安全
golang学习记1 小时前
再见了,claude code
人工智能
杀生丸学AI1 小时前
【动态高斯重建】论文集合:从4DGT到OMG4、4DSioMo
人工智能·3d·aigc·三维重建·视觉大模型·动态高斯