首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >大模型工程化:从 Transformer 推理到 QLoRA 微调与量化部署

大模型工程化:从 Transformer 推理到 QLoRA 微调与量化部署

原创
作者头像
资源大佬 jzit-top
发布于 2026-10-16 17:37:17
发布于 2026-10-16 17:37:17
350
举报

大语言模型(LLM)的本质是自回归 Transformer:给定 token 序列,预测下一个 token 的概率分布。工程落地围绕三件事展开——推理、微调、部署。本文从专业角度给出可运行代码与关键要点。

一、推理:KV Cache 与最小调用

LLM 推理时,每生成一个 token 都要重新计算注意力。KV Cache 缓存历史 token 的 Key/Value,避免重复计算。上下文越长,Cache 占用显存越大。

使用 Hugging Face 加载并推理:

代码语言:javascript
复制
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "Qwen/Qwen2.5-7B-Instruct"
tok = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)

prompt = "用三句话解释大模型中的 KV Cache。"
inputs = tok(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
    out = model.generate(
        **inputs,
        max_new_tokens=128,
        do_sample=False,
        temperature=0.0,
    )
print(tok.decode(out[0], skip_special_tokens=True))

要点:bfloat16 降低显存;device_map="auto" 自动分配多卡;do_sample=False 适合事实任务。

二、微调:LoRA 与 QLoRA

全量微调 7B 模型需要数十 GB 显存。LoRA 冻结原权重,注入低秩矩阵,只训练少量参数。QLoRA 进一步将基座量化为 4bit,大幅降低显存。

代码语言:javascript
复制
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from transformers import BitsAndBytesConfig

bnb = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb,
    device_map="auto",
)
model = prepare_model_for_kbit_training(model)

lora = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora)
model.print_trainable_parameters()

关键参数:r 越大容量越强但易过拟合;lora_alpha 控制缩放;target_modules 通常选注意力投影层。数据质量比数量重要,几百条高质量样本往往够用。

三、量化与部署:vLLM 连续批处理

量化降低显存,vLLM 通过 PagedAttention 和连续批处理提升吞吐。部署 OpenAI 兼容服务:

代码语言:javascript
复制
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --tensor-parallel-size 2 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.9 \
  --port 8000

调用方式与 OpenAI 一致:

代码语言:javascript
复制
from openai import OpenAI
client = OpenAI(api_key="EMPTY", base_url="http://localhost:8000/v1")
resp = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[{"role": "user", "content": "什么是量化?"}],
)
print(resp.choices[0].message.content)

四、评估与安全

评估维度:困惑度、任务指标(准确率/F1)、人工盲测、红队测试。微调后必须回归通用能力,防止灾难性遗忘。

安全合规:密钥放环境变量;训练数据脱敏并确保版权;输出高风险内容(法律、医疗、财务)人工复核;遵守模型许可证和平台规则。

五、总结

大模型工程链路:推理 → 微调 → 量化 → 部署 → 评估 → 安全。模型能力只是起点,真正决定成本与效果的是工程化:合理的精度选择、严格的数据治理、持续的指标监控和明确的合规边界。掌握这条链路,才能在真实业务中稳定落地。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、推理:KV Cache 与最小调用
  • 二、微调:LoRA 与 QLoRA
  • 三、量化与部署:vLLM 连续批处理
  • 四、评估与安全
  • 五、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档