利用免费 GPU 部署体验大型语言模型推理框架 vLLM

vLLM简介

vLLM 是一个快速且易于使用的 LLM(大型语言模型)推理和服务库。

vLLM 之所以快速,是因为:

  • 最先进的服务吞吐量

  • 通过 PagedAttention 高效管理注意力键和值内存

  • 连续批处理传入请求

  • 使用 CUDA/HIP 图快速模型执行

  • 量化:GPTQ[1]、AWQ[2]、SqueezeLLM[3]、FP8 KV 缓存

  • 优化的 CUDA 内核

vLLM 灵活且易于使用,因为它:

  • 与流行的 HuggingFace 模型无缝集成

  • 通过各种解码算法提供高吞吐量服务,包括并行采样、波束搜索等

  • 支持分布式推理的张量并行性

  • 支持流式输出

  • OpenAI 兼容的 API 服务器

  • 支持 NVIDIA GPU 和 AMD GPU

  • (实验性) 前缀缓存支持

  • (实验性) 多洛拉支持

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了大模型算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:加群

方式②、添加微信号:mlc2060,备注:技术交流

实践案例合集:《大模型实战宝典》(2024版)正式发布!

用通俗易懂方式讲解系列

免费的Google Colab T4 GPU

Google Colab 的 T4 GPU 是一种高性能的计算资源,由 Google 提供,用于加速机器学习和深度学习任务。T4 GPU 是由 NVIDIA 生产的 Tensor Core GPU,专为提供高效的深度学习推理和训练性能而设计。

以下是关于 Google Colab 的 T4 GPU 的一些关键特性:

  1. GPU 架构:T4 基于 NVIDIA 的 Ampere 架构,这是继 Turing 架构之后的新一代 GPU 架构,专为 AI 和机器学习工作负载优化。

  2. Tensor Cores:T4 包含 Tensor Cores,这些是专门为深度学习矩阵运算设计的处理单元,能够提供更高的计算效率和性能。

  3. 内存:T4 GPU 拥有 16 GB 的 GDDR6 显存,这对于处理大型模型和数据集来说是非常充足的。

  4. 计算能力:T4 GPU 提供高达 318 GFLOPS 的单精度浮点运算能力,以及 60 GFLOPS 的半精度(FP16)运算能力,这使得它能够快速执行复杂的数学运算。

  5. 多精度计算:除了 FP32 和 FP16,T4 还支持 INT8 和 INT4 精度计算,这有助于在保持性能的同时减少模型的内存占用和提高推理速度。

  6. 软件兼容性:T4 GPU 支持广泛的深度学习框架和库,如 TensorFlow、PyTorch、Keras 等,这意味着用户可以在他们选择的工具上无缝地使用 T4 GPU。

  7. 易于访问:在 Google Colab 中,用户可以通过简单的配置更改来访问 T4 GPU,无需复杂的设置或额外的硬件投资。

  8. 成本效益:虽然 T4 GPU 是一种高端计算资源,但 Google Colab 提供的免费和付费版本都允许用户以合理的成本使用这些 GPU,这对于学生、研究人员和开发者来说是一个很大的优势。

选择免费的T4 GPU

免费的T4 GPU

查看GPU信息

  • NVIDIA GPU 的详细信息
bash 复制代码
!nvidia-smi

GPU详细信息

nvidia-smi 是 NVIDIA 提供的一个命令行工具,用于监控和管理 NVIDIA GPU 设备。当你运行 nvidia-smi 命令时,它会返回一系列关于系统中所有 NVIDIA GPU 的详细信息

  • CUDA 版本:系统中安装的 CUDA 版本。

  • 驱动版本:GPU 驱动的版本。

  • 总显存:系统中所有 GPU 的总显存。

  • 其他系统级别的信息,如 CPU 使用率、内存使用情况等。

  • 显示每个进程对 GPU 显存的使用情况,包括进程 ID、已使用的显存量等。

  • GPU 编号:标识每个 GPU 的序号。

  • Name:显示 GPU 的型号。

  • Persistence-M:持续模式状态,显示是否开启,开启时 GPU 会保持唤醒状态以快速响应新任务。

  • Fan:风扇转速,显示为百分比,范围从 0 到 100%。

  • Temp:GPU 温度,单位是摄氏度。

  • Perf:性能状态,从 P0 到 P12,P0 表示最大性能,P12 表示最小性能。

  • Pwr:功耗,显示当前功耗和最大功耗。

  • Memory Usage:显存使用情况,包括总显存、已使用显存和剩余显存。

  • Bus-Id:GPU 总线的标识,格式为 domain🚌device.function。

  • Disp.A:显示 GPU 的显示输出是否激活。

  • Volatile GPU-Util:GPU 利用率,表示 GPU 正在执行的任务的负载百分比。

  • Uncorr. ECC:错误检查与纠正状态,与 GPU 的 ECC 内存相关。

  • Compute M:计算模式,显示 GPU 是处于默认模式还是特定计算模式。

python 复制代码
# memory footprint support libraries/code
!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi
!pip install -q gputil

import psutil
import humanize
import os
import GPUtil as GPU

GPUs = GPU.getGPUs()
# XXX: only one GPU on Colab and isn't guaranteed
gpu = GPUs[0]
def printm():
    process = psutil.Process(os.getpid())
    virtual_memory = humanize.naturalsize( psutil.virtual_memory().available )
    memory_info = humanize.naturalsize( process.memory_info().rss)
    memoryFree =gpu.memoryFree
    memoryUsed = gpu.memoryUsed
    memoryUtil = gpu.memoryUtil*100
    memoryTotal = gpu.memoryTotal

    print(f"Gen RAM Free: {virtual_memory} | Proc size: {memory_info}" )

    print("GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB".\
          format(memoryFree, memoryUsed, memoryUtil*100, memoryTotal))
printm() 

返回

bash 复制代码
 Preparing metadata (setup.py) ... done
  Building wheel for gputil (setup.py) ... done
Gen RAM Free: 12.4 GB  | Proc size: 98.9 MB
GPU RAM Free: 15101MB | Used: 0MB | Util   0% | Total 15360MB
  • 查看cuda版本信息
bash 复制代码
!nvcc -V

返回

bash 复制代码
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:02:13_PDT_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0

根据版本信息,需要从源码安装

安装vLLM

bash 复制代码
%%bash
git clone https://github.com/vllm-project/vllm src
cd /content/src
pip install -e .  # This may take 5-10 minutes.

检查torch版本

python 复制代码
import torch
print(torch.version.cuda)

使用MODELSCOPE 镜像

bash 复制代码
%%bash
export VLLM_USE_MODELSCOPE=True

测试

python 复制代码
from vllm import LLM, SamplingParams
prompts = [
    "Hello, my name is",
    "The president of the United States is",
    "The capital of France is",
    "The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="Qwen/Qwen1.5-1.8B-Chat",dtype='half')

加载千问1.5-1.8B-Chat

python 复制代码
outputs = llm.generate(prompts, sampling_params)

# Print the outputs.
for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
引用链接

[1] GPTQ: https://arxiv.org/abs/2210.17323
[2] AWQ: https://arxiv.org/abs/2306.00978
[3] SqueezeLLM: https://arxiv.org/abs/2306.07629

相关推荐
shansjqun2 分钟前
教学内容全覆盖:航拍杂草检测与分类
人工智能·分类·数据挖掘
狸克先生4 分钟前
如何用AI写小说(二):Gradio 超简单的网页前端交互
前端·人工智能·chatgpt·交互
机智的小神仙儿15 分钟前
GPT-1.0、GPT-2.0、GPT-3.0参数对比
gpt·语言模型·gpt-3
baiduopenmap19 分钟前
百度世界2024精选公开课:基于地图智能体的导航出行AI应用创新实践
前端·人工智能·百度地图
小任同学Alex22 分钟前
浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)
人工智能·自然语言处理·大模型
新加坡内哥谈技术28 分钟前
微软 Ignite 2024 大会
人工智能
江瀚视野1 小时前
Q3净利增长超预期,文心大模型调用量大增,百度未来如何分析?
人工智能
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
爱敲代码的憨仔1 小时前
《线性代数的本质》
线性代数·算法·决策树
陪学1 小时前
百度遭初创企业指控抄袭,维权还是碰瓷?
人工智能·百度·面试·职场和发展·产品运营