简介:掌握大模型微调与部署全流程,从LoRA微调、SFT训练到在线服务部署,完成1-2个完整项目并掌握效果评估方法,为AI应用落地提供可复用的技术方案。本文适合AI开发者、算法工程师及企业技术团队,覆盖资源规划、环境配置、上线验证与运维优化全周期。
大模型技术已从实验室走向产业应用,但开发者常面临三大挑战:如何基于有限算力完成模型微调?如何将训练好的模型转化为可访问的在线服务?如何确保服务稳定性与性能优化?本文聚焦大模型从微调到部署的全流程,以通用技术栈为例,拆解模型训练、效果评估、在线服务部署三个核心环节,帮助读者构建完整的AI工程化能力。
input与output字段步骤1:数据预处理
使用datasets库加载JSONL数据,按8
1划分训练/验证/测试集,示例代码:
from datasets import load_datasetdataset = load_dataset("json", data_files="train_data.jsonl")dataset = dataset.train_test_split(test_size=0.2, seed=42)
步骤2:LoRA微调
通过peft库实现低参数微调,冻结原始模型权重,仅训练LoRA适配层:
from peft import LoraConfig, get_peft_modellora_config = LoraConfig(target_modules=["q_proj", "v_proj"], # 需微调的注意力层r=16, lora_alpha=32, lora_dropout=0.1)model = get_peft_model(base_model, lora_config)
步骤3:SFT(监督微调)训练
使用trainer API启动训练,监控验证集损失与准确率:
from transformers import TrainingArguments, Trainertraining_args = TrainingArguments(output_dir="./output",per_device_train_batch_size=8,num_train_epochs=3,logging_steps=10)trainer = Trainer(model=model, args=training_args, train_dataset=dataset["train"])trainer.train()
评估指标:
评估工具:
evaluate库计算指标:
from evaluate import loadaccuracy = load("accuracy")result = accuracy.compute(predictions=model_outputs, references=test_labels)
步骤1:模型导出
将训练好的模型导出为ONNX格式,优化推理速度:
from transformers import AutoModelForCausalLM, AutoTokenizermodel = AutoModelForCausalLM.from_pretrained("./output")tokenizer = AutoTokenizer.from_pretrained("./output")dummy_input = tokenizer("Hello", return_tensors="pt")torch.onnx.export(model, dummy_input.input_ids, "model.onnx")
步骤2:服务封装
使用FastAPI构建RESTful API,示例代码:
from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Request(BaseModel):prompt: str@app.post("/generate")async def generate(request: Request):inputs = tokenizer(request.prompt, return_tensors="pt")outputs = model.generate(**inputs.to("cuda"))return {"response": tokenizer.decode(outputs[0])}
步骤3:容器化部署
编写Dockerfile并构建镜像:
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtimeCOPY model.onnx /app/COPY app.py /app/COPY requirements.txt /app/WORKDIR /appRUN pip install -r requirements.txtCMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
步骤4:服务发布
通过Kubernetes部署容器,配置HPA(水平自动扩缩):
apiVersion: apps/v1kind: Deploymentmetadata:name: model-servicespec:replicas: 2template:spec:containers:- name: modelimage: my-registry/model-service:v1resources:limits:nvidia.com/gpu: 1---apiVersion: autoscaling/v2kind: HorizontalPodAutoscalermetadata:name: model-hpaspec:metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 80
curl -X POST http://<服务IP>:8000/generate \-H "Content-Type: application/json" \-d '{"prompt": "解释量子计算"}'
from locust import HttpUser, taskclass ModelUser(HttpUser):@taskdef generate(self):self.client.post("/generate", json={"prompt": "测试"})
问题:模型加载失败
opset_version=13,检查nvidia-smi输出。问题:服务超时
max_new_tokens=512参数。问题:GPU利用率低
per_device_train_batch_size或启用动态批处理。通过本文,读者可掌握从LoRA微调到在线部署的全流程技术:
大模型部署不仅是技术挑战,更是AI落地的关键桥梁。掌握这些能力后,开发者可更高效地将模型转化为实际业务价值。