首页 > 其他分享 >高效部署大型语言模型:基于AMD GPU的文本生成推理

高效部署大型语言模型:基于AMD GPU的文本生成推理

时间:2024-10-19 10:46:56浏览次数:9  
标签:TGI -- 模型 AMD Deep Learning GPU 文本

Efficient deployment of large language models with Text Generation Inference on AMD GPUs

2024年1月24日,由Douglas Jia撰写。

[文本生成推理(TGI)]是一个用于以无与伦比的效率部署和服务大型语言模型(LLM)的工具包。TGI专门为流行的开源LLM(如Llama、Falcon、StarCoder、BLOOM、GPT-NeoX和T5)进行了优化,其优化措施包括张量并行、使用服务器发送事件(SSE)进行的令牌流、连续批处理以及优化的transformers代码。其强大功能集包括量化、安全张量、水印(用于确定文本是否由语言模型生成)、logits变形器以及对自定义提示生成和微调的支持。

TGI是Hugging Chat、Open Assistant和[nat.dev](http://nat.dev)等项目的重要框架组件,这证明了其在生产环境中的卓越性能。

在本教程中,我们将展示如何在AMD GPU上使用TGI部署和服务LLM。本教程改编自[官方的Hugging Face教程],并结合了额外的见解以提供更全面的学习体验。我们向原教程的贡献表示感谢。

使用 TGI 部署大型语言模型(LLMs)

要在启用了 ROCm 的 AMD GPU 上利用 TGI 框架,你可以选择使用官方 Docker 容器或从源代码构建 TGI。我们推荐使用 Docker 方法,因为它简化了设置过程并减少了软件兼容性问题。如果你更喜欢从源代码构建,可以在 [Hugging Face]找到详细的说明。

在你的运行 Linux 的机器上且已启用 ROCm 的 AMD GPU,运行以下命令在终端中部署 Docker 容器,并使用我们指定的模型 tiiuae/falcon-7b-instruct

model=tiiuae/falcon-7b-instruct
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 1g -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-generation-inference:1.3-rocm --model-id $model

这些命令将构建一个带有指定模型的 TGI 服务器,准备好处理你的请求。有关支持的模型的全面列表,请参阅 [支持的模型]。

如果模型的大小超过了单个 GPU 的容量,无法完全容纳,考虑在 docker run 命令中加入 --num-shard n 标志,其中 n 表示你可用 GPU 的数量。此标志会激活张量并行,有效地将模型分片,分布在所有可用的 GPU 上。

查询部署在服务器上的大型语言模型(LLM)

在上一步中,您已设置了一个监听请求的服务器。现在,您可以打开一个新的终端与该服务器互动(在整个过程中请保持原服务器运行)。要查询服务器,您可以使用多种方法;我们演示两种常用的方法:Python的`requests`库和`curl`命令行工具。

Python requests

通过在终端运行`python3`命令来启动一个Python会话。然后运行以下Python代码:

import requests

headers = {
    "Content-Type": "application/json",
}

data = {
    'inputs': 'What is the best way to learn Deep Learning?',
    'parameters': {
        'max_new_tokens': 200,
        'temperature': 0.1,
    },
}

response = requests.post('http://127.0.0.1:8080/generate', headers=headers, json=data)
print(response.json())

输出:

{'generated_text': '\nThe best way to learn Deep Learning is through a combination of hands-on practice and structured learning. Some popular resources for learning Deep Learning include online courses, such as those offered by Coursera or edX, and textbooks such as "Deep Learning" by Goodfellow, Bengio, and Courville. Additionally, participating in online coding challenges and competitions can help reinforce your knowledge and improve your skills.'}

您可以更改`inputs`字段以测试不同的提示信息。为了尝试不同的生成配置,您可以调整参数(如`max_new_tokens`和`temperature`)。要查看所有可调整的参数,请参阅[这个列表]。

Curl命令行

在终端中,您可以使用以下Curl命令直接查询服务器:

curl 127.0.0.1:8080/generate \
    -X POST \
    -d '{"inputs":"What is the best way to learn Deep Learning?","parameters":{"max_new_tokens":200,"temperature":0.1}}' \
    -H 'Content-Type: application/json'

输出:

{"generated_text":"\nThe best way to learn Deep Learning is through a combination of hands-on practice and structured learning. Some popular ways to learn Deep Learning include taking online courses, attending workshops, and working on personal projects. It's also important to stay up-to-date on the latest research and developments in the field."}

您可能会观察到两种方法之间的输出略有不同。这是因为我们使用了0.1的`temperature`值,这促进了文本生成的多样性。为了获得更加确定性的输出,您可以将`temperature`值增加到1。

标签:TGI,--,模型,AMD,Deep,Learning,GPU,文本
From: https://blog.csdn.net/eidolon_foot/article/details/143068211

相关文章

  • 文本生成实战:从零开始搭建Code Llama环境助力开发效率
    文章目录前言1.本地部署TextgenerationWebUI2.安装CodeLlama大模型3.实现公网远程使用CodeLlama4.固定TextgenerationWebUI公网地址前言本篇文章介绍如何在本地部署TextgenerationWebUI并搭建CodeLlama大模型运行,并且搭建CodeLlama大语言模型,结合C......
  • gTTS: 强大的Python文本转语音库
    gTTSgTTS简介gTTS(GoogleText-to-Speech)是一个Python库和命令行工具,用于与GoogleTranslate的文本转语音API进行交互。它允许用户将文本转换为语音,并将结果保存为MP3文件或进行进一步的音频处理。gTTS支持多种语言,并提供了丰富的自定义选项,使其成为一个强大而灵活的文本转......
  • Piper: 快速、本地化的神经网络文本转语音系统
    Piper简介Piper是一个快速、本地化的神经网络文本转语音(TTS)系统,专为树莓派4优化设计,但也可在其他平台上运行。它提供高质量的语音合成,支持多种语言和声音,适用于各种项目和应用场景。PiperlogoPiper的主要特点包括:快速高效:针对树莓派4等设备进行了优化本地运行:无需......
  • CSS文本属性
    在CSS中,我们可以通过文本属性来控制文字的样式。下面是一些常用的文本属性:font-family:用于指定文字的字体。font-size:用于指定文字的大小。font-style:用于指定文字的样式,例如italic或normal。font-weight:用于指定文字的粗细程度。color:用于指定文字的颜色。text-align:用于指定......
  • 安装GPU版本的Pytorch-蕴含“三”之妙道(时短,力少,效高)
    前言Pytorch作为深度学习入门的一个框架,十分适合初学者入门,但是很多新手总会在安装相关环境的时候遇到各种难题,无法下载,下载速度慢,版本不兼容等情况,往往费时费力最后都不一定能下好,在这里我总结了下载安装的详细步骤,以及可能会遇到的问题,来供大家参考。值得注意的是,这种方......
  • django的富文本编辑器
    书和视频都是CKEditor,但是安装配置好了,发现好像他有pro版本,所以改成了wangEditor,国产的,文档很全。所以记录之。第一步:安装,在pypi.python.org,搜索上面的关键字;pipinstalldjango-wangeditor第二步:在settings.py,加入INSTALLED_APPS,名字是'wangeditor';第三步:在模型中,那些想......
  • GPUInstance
    关于GPUInstance1.用于渲染加速的硬件特性.gpu硬件支持的一种特性,使用少量的渲染调用(DrawCall)渲染同一网格的多个副本.也就是说在渲染时,他只需要提交一个网格副本,一个材质球,然后在把这些模型对象中不同的属性(比如:位置,大小,旋转,颜色等)提取出来放到一个数组中.这是最......
  • 手把手教你学 GPU SoC 芯片(9.3)--GPU SOC 功耗和热管理的动态电压和频率调整(DVFS)
    目录DVFS的基本原理DVFS的技术实现1.硬件支持硬件组件2.软件支持常见接口3.动态调整策略基于负载的调整基于温度的调整基于功耗的调整示例:在Linux系统中实现DVFS1.查看当前频率和电压2.设置目标频率3.启用DVFS4.设置DVFS策略示例:在CUDA中实现DVFS1.使......
  • pandas随笔(七)-- 统计文本中单词出现的次数(词频统计)
    题目描述编写解决方案,找出单词'bull'和'bear'作为独立词有出现的文件数量,不考虑任何它出现在两侧没有空格的情况(例如,'bullet','bears','bull.',或者'bear'在句首或句尾不会被考虑)。返回单词'bull'和'bear'以及它们对应的出现文件数量,顺序没有限制。测试用例输......
  • Neo4j 构建文本类型的知识图谱
    Neo4j是一个强大的图数据库,用于构建和查询各种类型的图数据结构。构建知识图谱是一项常见任务,尤其在处理自然语言处理(NLP)和文本信息时。基于Neo4j,可以将文本数据转换为知识图谱,使得复杂的文本关系以图结构存储,并且能够高效查询。构建文本类型知识图谱的基本过程定义......