AI架构设计7:TGI

news2024/11/17 22:24:45

这个专栏主要关注围绕着AI运用于实际的业务场景所需的系统架构设计。整体基于云原生技术,结合开源领域的LLMOps或者MLOps技术,充分运用低代码构建高性能、高效率和敏捷响应的AI中台。该专栏需要具备一定的计算机基础。

若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于构建生产级别架构则可以关注AI架构设计专栏。技术宅麻烦死磕LLM背后的基础模型。

训练大型语言模型以及微调的教程比比皆是,但关于在生产环境中部署它们并监控其活动的资料相对稀缺。上个章节提到了未来云原生的AI是趋势,然而涉及到云原生会比较偏技术。而在此之前为了解决大模型部署量产的问题,社区也一直在探索,目前已经有不少的工具可用于这个领域。

今天挑选几个颇具特色的主流部署工具来谈谈,例如vLLM、LLAMA.cpp 和TGI等工具,它们各自都提供各自的部署模式,本文对于数据分析师乃至数据科学家,还是刚接触AI部署的新兵,相信可以为读者打开一扇窗户进行快速的了解。

TGI

Text Generation Inference (TGI) is a toolkit for deploying and serving Large Language Models (LLMs). TGI enables high-performance text generation for the most popular open-source LLMs, including Llama, Falcon, StarCoder, BLOOM, GPT-NeoX, and T5.  —HuggingFace

Huggingface TGI是一个用Rust和Python编写的框架,用于部署和提供大型语言模型。它根据HFOILv1.0许可证允许商业使用,前提是它作为所提供产品或服务中的辅助工具。

目前TGI是一个用于部署和服务大型语言模型 (LLM) 的工具包。TGI 为最流行的开源 LLM 提供高性能文本生成,包括 Llama、Falcon、StarCoder、BLOOM、GPT-NeoX 和 T5。

TGI的几项关键技术:

  • 支持张量并行推理

  • Safetensors格式的权重加载

该存储库实现了一种新的简单格式,用于安全地存储张量(而不是 pickle格式),并且在零复制的前提下保持高速。

上图对比了几种格式,从左到右分别为,“是否安全”、“零拷贝”、“延迟加载”、“文件大小限制”、“布局控制”、“灵活度”和“对于BF16和Fp8的支持”

  • 支持传入请求Continuous batching以提高总吞吐量

  • 在主流的模型架构上使用FlashAttention和PagedAttention用于推理的transformers代码优化。!!并非所有模型都支持这些优化

  • 使用bitsandbytes(LLM.int8())和GPT-Q进行量化

  • 支持Logits warper

一种对逻辑(logits)进行变换或调整的方法。模型在分类问题中输出的未归一化的概率分布,通常利用softmax将其转换为概率分布。Logits warper包括多种技术,如温度(temperature scaling)、top-p抽样、top-k抽样、重复惩罚等,可以用来调整模型输出。

  • 支持微调

目前TGI支持的大模型清单如下,当然也可以部署自定义的模型,只不过性能就未必那么好了。

Llama

Phi 3

Gemma

Cohere

Dbrx

Mamba

Mistral

Mixtral

Gpt Bigcode

Phi

Falcon

StarCoder 2

Baichuan

Qwen 2

Opt

T5

Galactica

SantaCoder

Bloom

Mpt

Gpt2

Gpt Neox

Idefics (Multimodal)

Idefics 2 (Multimodal)

Llava Next (Multimodal)

架构与启动

TGI的架构并不复杂,左侧为Web Server,右侧为GPU集群的调度。双方通过gRPC进行通讯,而GPU之间的通讯协议为NCLL。

TGI支持本地部署和Docker启动,实验环境可以直接用docker命令,而在产线环境建议直接采用云原生部署。

docker run --gpus all --shm-size 1g \    #可以事先下载好模型    -p 8080:80 -v $PWD/$MODEL_PATH:/$MODEL_PATH \    #用于存储下载模型转换Safetensors格式后的权重    -v $PWD/data:/data \     ghcr.io/huggingface/text-generation-inference \    --model-id /$MODEL_PATH

启动完毕之后,可以利用Python来访问,(前提是机器的显卡已经完成正确的安装和配置)

import jsonimport requestsurl = "http://localhost:8080/generate"params = {    "inputs": "Hello, lubanmocui! ",    "parameters": {        "best_of": 1,        "details": True,        "return_full_text": True,        "decoder_input_details": True,        "truncate": 10,         "max_new_tokens": 128,        "stop": ["\n", "."],        "do_sample": True,        "temperature": 0.8,        "top_k": 10,        "top_p": 0.95,    },}response = requests.post(url, json=params)result = json.loads(response .text)print(result)

若是显卡的配置不给力的话,还可以通过--quantize的参数设置来解决,TGI会自动对模型进行量化操作。

  • bitsandbytes 8-Bit 量化,速度偏慢,但是被支持得最广泛的

  • bitsandbytes-nf4 4-Bit 量化,大部分的模型都可以直接使用,采用了BNB-NF4的量化方案

  • bitsandbytes-fp4 4-Bit 量化,和BNB-NF4类似,但是使用标准的4-Bit浮点数类型

  • gptq 4-Bit 量化,只能在做过GPTQ Post Training的模型

  • awq 4-Bit 量化,类似GPTQ

  • eetq 8-Bit 量化

当然还有一些其他的参数配置:

docker run --gpus all --shm-size 1g \    -p 8080:80 -v $PWD/data:/data \    ghcr.io/huggingface/text-generation-inference:latest \    --model-id model-ids \    --quantize bitsandbytes-nf4 \    --max-best-of 1 \    --max-concurrent-requests 128 \    --max-input-length 3000 \    --max-total-tokens 4000 \    --max-batch-prefill-tokens 12000

vLLM适用于需要高效内存管理和并行计算的大规模语言模型推理,特别是在资源受限的环境中表现优秀。其主要优势在于高效的内存使用和灵活的并行处理能力,但需要细致的配置和优化。而TGI则专注于提升文本生成任务的推理速度,适用于需要高效文本生成的应用场景。其主要优势在于推理速度优化和模型压缩,但主要针对特定任务进行优化,量化可能会影响模型精度。选择哪一个系统取决于具体的应用需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

质量评估门户:您AI内容的质量守护者

在当今这个内容饥渴和内容疯狂的世界里,AI驱动的内容创作既是一种流行趋势,有时也是一个改变游戏规则的存在。但强大的能力伴随着巨大的责任……即确保质量的责任。 想象一下:你拥有一个AI[和创意团队],他们以闪电般的速度输出博…

unity制作app(9)--拍照 相册 上传照片

1.传输照片(任何较大的数据)都需要扩展服务器的内存空间。 2.还需要base64编码 2.1客户端发送位置的编码 2.2服务器接收部分的代码

全球首个AI代理驱动的元宇宙生态Wondra,让Web3再次伟大

前段时间,因为OpenAI的Sora发布、英伟达财报的发布,英伟达市值直逼2.5万亿美金,使得Crypto行业的AI赛道热度飙升,WLD,AGIX,FET等项目都有了不俗的表现。而这几天,因为大盘整体向好,再…

css中实现背景方格

background: rgba(241,241,241,0.1); background-image:linear-gradient(90deg, rgba(241,243,244,1) 10%, transparent 0),linear-gradient(rgba()241,243,244,1 10%, transparent 0); background-size: 10px 10px; 表现出来的样子就是这个样子

回顾java-异常

异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。 需…

vivado改变波形图窗口颜色

点击右上角的设置图标 翻译对照

老板:2个亿的销售额,利润只有55万!电商这个生意真的到头了?

近来,一段对话轰动了半个电商圈的老板,干拼多多,2亿的销售额,利润只有55万! 其实造成这一现象的原因就是“内卷” 说一句电商行业真实的现状,电商发展了十几年,网友对网购已经完全熟悉&#x…

专业上门预约洗衣洗鞋管理系统一站式解决方案

洗衣洗鞋店管理系统一站式解决方案,不仅运营稳定且功能强大,堪称现代生活中的得力助手。 在这个快节奏的时代,人们对便捷性的渴望愈发强烈。洗衣洗鞋作为日常生活中的一项琐碎事务,也亟需一个高效、省心的解决方案。为此&#xf…

双向带头链表实现

目录 一. 逻辑结构图解 1. 节点中存储的值 2.逻辑实现 二. 各种功能实现 1. 创建节点函数 2. 初始化哨兵位 3. 尾插 4. 头插 5. 尾删 6. 头删 7. 打印链表值 8. 查找数据,返回节点地址 9. 指定地址后插入节点 10. 删除指定地址节点 11. 销毁链表 三.…

english语法

从句:简单句连词 介词

接口测试及接口测试常用的工具详解

🍅 视频学习:文末有免费的配套视频可观看 首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息…

17、24年--信息系统工程——数据工程

1、数据建模 数据建模是对现实世界中具体的人、物、活动和概念进行抽象、表示和处理,变成计算机可处理的数据,也就是把现实世界中的数据从现实世界抽象到信息世界和计算机世界。 1.1 数据模型 根据模型应用目的不同,可以将数据模型划分为三类:概念模型、逻辑模型和物理模型…

数组基础-笔记

数组是非常基础的数据结构,实现运用和理解是两回事 数组是存放在连续内存空间上的相同类型的数据的集合 可以方便的通过下表索引的方式获取到下标下对应的数据。 举一个字符数组的例子: 注意两点: 数组下标从0开始 数组内存空间的地址是连…

文心一言 VS 讯飞星火 VS chatgpt (269)-- 算法导论20.2 4题

四、修改 proto-vEB 结构,以支持重复关键字。如果要写代码,请用go语言。 文心一言: 在原始的 van Emde Boas 树(vEB tree)结构中,关键字(key)是唯一的,不允许有重复的关…

数据集005:螺丝螺母目标检测数据集(含数据集下载链接)

数据集简介 背景干净的目标检测数据集。 里面仅仅包含螺丝和螺母两种类别的目标,背景为干净的培养皿。图片数量约420张,train.txt 文件描述每个图片中的目标,label_list 文件描述类别 另附一个验证集合,有10张图片,e…

普乐蛙VR大型航天科普馆VR博物馆太空舱模拟体验馆

主题科普馆、学校、家长、同学们看过来!!想身临其境体验太空漫游、登陆月球、探索月球地貌吗?!以新颖有趣的VR设备体验形式,可以在寓教于乐中学习太空知识、亲自收集月球土壤等等。接下来,就让小编带大家乘…

【代码随想录】【算法训练营】【第21天】 [530]二叉搜索树的最小绝对差 [501]二叉搜索树的众数 [236]二叉树的最近公共祖先

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 21,天气不错的周二~ 题目详情 [530] 二叉搜索树的最小绝对差 题目描述 530 二叉搜索树的最小绝对差 解题思路 前提:二叉搜索树 思路:根据二叉搜索树的中…

Vivado打开之前项目仿真过的波形文件

第一步:顶部菜单 点击:Open Static Simulation 然后在弹出的窗口找到.sim结尾的文件夹,在里面找到wdb结尾的文件,点击ok 第二步:依次点击下方红圈 找到wcfg结尾的文件,点击ok即可

Nat Genet|马丁院士团队利用单细胞和空间多组学描绘宫颈鳞癌免疫微环境图谱

宫颈鳞状细胞癌(CSCC)是宫颈癌最常见的组织学类型。虽然局部疾病预后良好,但晚期、转移性或复发性CSCC的5年生存率仅为16.5%,晚期宫颈癌中对免疫检查点阻断的反应有限。细胞异质性和可塑性是肿瘤进展和肿瘤免疫微环境(TIME)调节的…

React18 apexcharts数据可视化之甜甜圈图

03 甜甜圈图 apexcharts数据可视化之甜甜圈图。 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基本甜甜圈图个性图案的甜甜圈图渐变色的甜甜圈图 面包圈 import ApexChart from react-apexcharts;export function DonutUpdate() {// 数据…