• [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 提供了一些使用脚本,可以很方便的体验模型推理的过程 教程

    1. aiofiles==23.1.0
    2. fastapi==0.95.2
    3. gradio_client==0.2.5
    4. gradio==3.33.1
    5. accelerate==0.22.*
    6. colorama
    7. datasets
    8. einops
    9. markdown
    10. numpy==1.24
    11. optimum==1.12.0
    12. pandas
    13. peft==0.5.*
    14. transformers==4.33.1
    15. Pillow>=9.5.0
    16. pyyaml
    17. requests
    18. safetensors==0.3.2
    19. scipy
    20. sentencepiece==0.1.99
    21. tensorboard
    22. tqdm
    23. wandb
    24. # bitsandbytes
    25. 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)

  • 相关阅读:
    异常检测 | MATLAB实现基于支持向量机和孤立森林的数据异常检测(结合t-SNE降维和DBSCAN聚类)
    hbuilderx ios自定义基座真机测试
    GMAN: A Graph Multi-Attention Network for Traffic Prediction(2020AAAI)
    医院安全(不良)事件上报系统源码 不良事件报告平台源码 前后端分离,支持二开
    ELK之Logstash解析时间相差8h的问题
    关于iframe的页面加载出现滚动条的问题
    这才是,真彩虹预染蛋白Markers
    基于SSM的高校运动会管理网站-计算机毕业设计源码
    Hadoop入门(四):SSH免密登录 配置
    Python 处理 PDF —— PyMuPDF 的安装与使用
  • 原文地址:https://blog.csdn.net/zwqjoy/article/details/132757412