首页 > 其他分享 >llama_vllm对话问答基础语言模型集合

llama_vllm对话问答基础语言模型集合

时间:2024-09-06 10:51:58浏览次数:14  
标签:Llama -- 模型 llama chat vllm 问答

LLAMA

论文

模型结构

LLAMA网络基于 Transformer 架构。提出了各种改进,并用于不同的模型,例如 PaLM。以下是与原始架构的主要区别: 预归一化。为了提高训练稳定性,对每个transformer 子层的输入进行归一化,而不是对输出进行归一化。使用 RMSNorm 归一化函数。 SwiGLU 激活函数 [PaLM]。使用 SwiGLU 激活函数替换 ReLU 非线性以提高性能。使用 2 /3 4d 的维度而不是 PaLM 中的 4d。 旋转嵌入。移除了绝对位置嵌入,而是添加了旋转位置嵌入 (RoPE),在网络的每一层。

算法原理

LLama是一个基础语言模型的集合,参数范围从7B到65B。在数万亿的tokens上训练出的模型,并表明可以专门使用公开可用的数据集来训练最先进的模型,而不依赖于专有的和不可访问的数据集。

环境配置

Docker(方法一)

提供光源拉取推理的docker镜像:

docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
# <Image ID>用上面拉取docker镜像的ID替换
# <Host Path>主机端路径
# <Container Path>容器映射路径
docker run -it --name llama_vllm --privileged --shm-size=64G  --device=/dev/kfd --device=/dev/dri/ --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video -v /opt/hyhal:/opt/hyhal -v <Host Path>:<Container Path> <Image ID> /bin/bash

pip install aiohttp==3.9.1 outlines==0.0.37 openai==1.23.3 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

Tips:若在K100/Z100L上使用,需要替换flash_attn,下载链接:https://forum.hpccube.com/thread/515

Dockerfile(方法二)

# <Host Path>主机端路径
# <Container Path>容器映射路径
docker build -t llama:latest .
docker run -it --name llama_vllm --privileged --shm-size=64G  --device=/dev/kfd --device=/dev/dri/ --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --ulimit memlock=-1:-1 --ipc=host --network host --group-add video -v /opt/hyhal:/opt/hyhal -v <Host Path>:<Container Path> llama:latest /bin/bash

Tips:若在K100/Z100L上使用,需要替换flash_attn,下载链接:https://forum.hpccube.com/thread/515

Anaconda(方法三)

conda create -n llama_vllm python=3.10
pip install aiohttp==3.9.1 outlines==0.0.37 openai==1.23.3

关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装。

  • DTK驱动:dtk24.04.1
  • Pytorch: 2.1.0
  • triton:2.1.0
  • vllm: 0.3.3
  • xformers: 0.0.25
  • flash_attn: 2.0.4
  • python: python3.10

Tips:若在K100/Z100L上使用,需要替换flash_attn,下载链接:https://forum.hpccube.com/thread/515

数据集

推理

源码编译安装

# 若使用光源的镜像,可以跳过源码编译安装,镜像中已安装vllm。
git clone http://developer.hpccube.com/codes/modelzoo/llama_vllm.git
cd llama_vllm
git submodule init && git submodule update
cd vllm
pip install wheel
python setup.py bdist_wheel
cd dist && pip install vllm*

模型下载

快速下载通道:

基座模型chat模型GPTQ模型
Llama-2-7b-hfLlama-2-7b-chat-hfLlama-2-7B-Chat-GPTQ
Llama-2-13b-hfLlama-2-13b-chat-hfLlama-2-13B-GPTQ
Llama-2-70b-hfLlama-2-70b-chat-hfLlama-2-70B-Chat-GPTQ
Meta-Llama-3-8BMeta-Llama-3-8B-Instruct
Meta-Llama-3-70BMeta-Llama-3-70B-Instruct
基座模型chat模型GPTQ模型
Llama-2-7b-hfLlama-2-7b-chat-hfLlama-2-7B-Chat-GPTQ
Llama-2-13b-hfLlama-2-13b-chat-hfLlama-2-13B-GPTQ
Llama-2-70b-hfLlama-2-70b-chat-hfLlama-2-70B-Chat-GPTQ
Meta-Llama-3-8BMeta-Llama-3-8B-Instruct
Meta-Llama-3-70BMeta-Llama-3-70B-Instruct

离线批量推理

python vllm/examples/offline_inference.py

其中,prompts为提示词;temperature为控制采样随机性的值,值越小模型生成越确定,值变高模型生成更随机,0表示贪婪采样,默认为1;max_tokens=16为生成长度,默认为1; model为模型路径;tensor_parallel_size=1为使用卡数,默认为1;dtype="float16"为推理数据类型,如果模型权重是bfloat16,需要修改为float16推理,quantization="gptq"为使用gptq量化进行推理,需下载以上GPTQ模型。

离线批量推理性能测试

1、指定输入输出

python vllm/benchmarks/benchmark_throughput.py --num-prompts 1 --input-len 32 --output-len 128 --model meta-llama/Llama-2-7b-chat-hf -tp 1 --trust-remote-code --enforce-eager --dtype float16

其中--num-prompts是batch数,--input-len是输入seqlen,--output-len是输出token长度,--model为模型路径,-tp为使用卡数,dtype="float16"为推理数据类型,如果模型权重是bfloat16,需要修改为float16推理。若指定--output-len 1即为首字延迟。-q gptq为使用gptq量化模型进行推理。

2、使用数据集 下载数据集:

wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
python vllm/benchmarks/benchmark_throughput.py --num-prompts 1 --model meta-llama/Llama-2-7b-chat-hf --dataset ShareGPT_V3_unfiltered_cleaned_split.json -tp 1 --trust-remote-code --enforce-eager --dtype float16

其中--num-prompts是batch数,--model为模型路径,--dataset为使用的数据集,-tp为使用卡数,dtype="float16"为推理数据类型,如果模型权重是bfloat16,需要修改为float16推理。-q gptq为使用gptq量化模型进行推理。

api服务推理性能测试

1、启动服务端:

python -m vllm.entrypoints.api_server  --model meta-llama/Llama-2-7b-chat-hf  --dtype float16 --enforce-eager -tp 1 

2、启动客户端:

python vllm/benchmarks/benchmark_serving.py --model meta-llama/Llama-2-7b-chat-hf --dataset ShareGPT_V3_unfiltered_cleaned_split.json  --num-prompts 1 --trust-remote-code

参数同使用数据集,离线批量推理性能测试,具体参考[vllm/benchmarks/benchmark_serving.py]

OpenAI兼容服务

启动服务:

python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-2-7b-chat-hf --enforce-eager --dtype float16 --trust-remote-code

这里--model为加载模型路径,--dtype为数据类型:float16,默认情况使用tokenizer中的预定义聊天模板,--chat-template可以添加新模板覆盖默认模板,-q gptq为使用gptq量化模型进行推理。

列出模型型号:

curl http://localhost:8000/v1/models

OpenAI Completions API和vllm结合使用

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "meta-llama/Llama-2-7b-hf",
        "prompt": "I believe the meaning of life is",
        "max_tokens": 7,
        "temperature": 0
    }'

或者使用vllm/examples/openai_completion_client.py

OpenAI Chat API和vllm结合使用

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "meta-llama/Llama-2-7b-chat-hf",
        "messages": [
            {"role": "system", "content": "I believe the meaning of life is"},
            {"role": "user", "content": "I believe the meaning of life is"}
        ]
    }'

或者使用vllm/examples/openai_chatcompletion_client.py

result

使用的加速卡:1张 DCU-K100_AI-64G

Prompt: 'I believe the meaning of life is', Generated text: ' to find purpose, happiness, and fulfillment. Here are some reasons why:\n\n1. Purpose: Having a sense of purpose gives life meaning and direction. It helps individuals set goals and work towards achieving them, which can lead to a sense of accomplishment and fulfillment.\n2. Happiness: Happiness is a fundamental aspect of life that brings joy and satisfaction.

精度

应用场景

算法类别

对话问答

热点应用行业

金融,科研,教育

源码仓库及问题反馈

参考资料

标签:Llama,--,模型,llama,chat,vllm,问答
From: https://blog.csdn.net/qq_27815483/article/details/141722877

相关文章

  • llama factory LoRA微调qwen大模型 | 新手炼丹记录(1)
            之前用本地机器微调qwen大模型,结果由于显存不够或者其他配置问题,总是无法正常训练,莫名其妙报错。只能去尝试一些参数很小的模型,qwen2:0.5b、gemma:2b之类的,实在不够看。    今天尝试使用了算力平台AutoDL算力云租赁计算资源来跑微调以及量化,尝试了qwe......
  • linux 部署Ollama本地大模型
    简介llama是一个大模型的管理框架,其作用类似于Docker:如果将每一个标准化的大模型视为“镜像”,那么Ollama就能够通过一行命令快速拉取并运行这些大模型。然而,Ollama本身是基于命令行的服务,所以为了方便我们对大模型进行微调和使用,还需要引入maxkb。maxkb提供了一个......
  • 本地ollama的LLM模型运行微软GraphRAG
    pipinstallgraphragpipinstallollama1、ollama安装直接从modelscope下载ollama安装包modelscopedownload--model=modelscope/ollama-linux--local_dir./ollama-linux#运行ollama安装脚本sudochmod777./ollama-linux/ollama-modelscope-install.shsh./ollam......
  • 体验通义灵码 @workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等
    国际市场研究机构Gartner发布业界首个AI代码助手魔力象限,阿里云进入挑战者象限。通义灵码在产品功能和市场应用等方面表现位列国际前列,在国内同类产品中排名第一。在关键能力评分中,通义灵码在代码生成、代码解释、代码调试等多项能力领先,其中代码解释能力位列全球第二。这也是......
  • 体验通义灵码 @workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等
    国际市场研究机构Gartner发布业界首个AI代码助手魔力象限,阿里云进入挑战者象限。通义灵码在产品功能和市场应用等方面表现位列国际前列,在国内同类产品中排名第一。在关键能力评分中,通义灵码在代码生成、代码解释、代码调试等多项能力领先,其中代码解释能力位列全球第二。这也是......
  • 魔乐社区体验:探索Llama 3.1模型微调之旅
    在2024年的AI领域,Meta发布的Llama3.1模型无疑成为了研究者和开发者的新宠。我有幸通过魔乐社区提供的资源,对这一模型进行了深入的学习和实践。在这个过程中,魔乐社区的资源和支持给我留下了深刻的印象。环境准备的便捷性魔乐社区提供的实践指导非常详尽,从安装AscendCANNToolkit和......
  • 魔乐社区体验:探索Llama 3.1模型微调之旅
    在2024年的AI领域,Meta发布的Llama3.1模型无疑成为了研究者和开发者的新宠。我有幸通过魔乐社区提供的资源,对这一模型进行了深入的学习和实践。在这个过程中,魔乐社区的资源和支持给我留下了深刻的印象。环境准备的便捷性魔乐社区提供的实践指导非常详尽,从安装AscendCANNToolki......
  • 教育问答工具V1.0—使用手册
    背景信息阿里云微服务SpringCloudAlibabaSpringCloudAlibaba是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与SpringCloud体系的融合。以下是对SpringCloudAlibaba的详细介绍:定义:SpringCloudAlibaba是阿里巴巴结合自身丰富的微服务实践而推出的微服务开发......
  • 体验通义灵码 @workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等
    国际市场研究机构Gartner发布业界首个AI代码助手魔力象限,阿里云进入挑战者象限。通义灵码在产品功能和市场应用等方面表现位列国际前列,在国内同类产品中排名第一。在关键能力评分中,通义灵码在代码生成、代码解释、代码调试等多项能力领先,其中代码解释能力位列全球第二。这也......
  • LLaMA-Factory
    LLaMA-Factory是一个高效的大型语言模型(LLM)微调平台,旨在简化和加速模型的微调过程。以下是一些关键特点:多样的模型支持:LLaMA-Factory支持多种预训练模型,包括LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi等等12。多种训练方法:平台集......