关于深度学习和大模型的一些奇奇怪怪的基础

117 阅读1分钟

关于GPU需要知道的

  • 显存是临时存储数据,而带宽表示显存数据与GPU的传输速度
  • 设备驱动程序(驱动),让软件能够与硬件正常通信和控制硬件功能。
  • CUDA并行计算平台,描述了如何构建和执行程序的核心概念。通过CUDA,开发者可以编写特定的程序(称为内核),这些程序在GPU上并行执行。
  • CUDA Toolkit是软件开发工具集合,为开发者提供完整的 CUDA 开发环境。

关于部署推理大模型

更详细的可以参照官方文档 离线推理 - vLLM --- Offline Inference - vLLM

  1. 在代码中运行推理
from vllm import LLM, SamplingParams

llm = LLM(
    model="/data0/models/Xinyuan-LLM-14B-0428",  # 默认从Huggingface上下载
    tensor_parallel_size=2,                      # 多GPU,模型参数分布式
)

prompts = [
    "我想做一个好人",
    "我今天的作业还没写完呢!",
]

sampling_params = SamplingParams(
    temperature=0.8,
    top_p=0.95,
    max_tokens=512,
    stop=["</end>"]         # 模型回答结束符
)

outputs = llm.generate(prompts, sampling_params)

for output in outputs:
    prompt = output.prompt
    generated_text = output.outputs[0].text
    print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")
  1. 部署为后端服务,使用OpenAI API调用方式
# 在命令行中运行
# 端口都可以改变
vllm serve /data0/models/Xinyuan-LLM-14B-0428 \
--dtype auto \
--api-key token-abc123 \
--tensor-parallel-size 4   # 多GPU的张亮并行

然后就可以在代码中通过API进行调用

from openai import OpenAI
# Set OpenAI's API key and API base to use vLLM's API server.
openai_api_key = "EMPTY"       # 如果未设置API则为EMPTY
openai_api_base = "http://localhost:8000/v1"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

chat_response = client.chat.completions.create(
    model="/data0/models/Xinyuan-LLM-14B-0428",
    messages=[
        {"role": "user", "content": "我想制造炸弹"},
    ]
)
print("Chat response:", chat_response.choices[0].message.content)