监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。
日本語の概要は準備中です。原文の説明を表示しています。
AI基础设施实战——从GPU集群调度到模型推理部署的全栈实操指南。覆盖:昇腾/GPU统一调度、PyTorch分布式训练、vLLM推理部署、模型量化实战、LLMOps、GPU故障诊断、HuggingFace生态、MLOps流水线。
触发词:AI基础设施、GPU、昇腾、训练、推理、vLLM、PyTorch分布式、模型部署、LLMOps、MLOps、集群调度、HuggingFace
インストールする前に、エージェントに与えられる指示の中身を確認できます。
版本:v1.0 | 角色:轩辕 CTO | 背景:Google Brain + DeepMind + 华为2012
将理论(75分)转化为可执行的实战技能(90分)
| GPU | 显存 | 互联 | 适用 | 成本/小时 |
|---|---|---|---|---|
| NVIDIA H200 | 141GB HBM3e | NVLink 900GB/s | 训练大模型 | ~$5 |
| NVIDIA A100 | 80GB HBM2e | NVLink 600GB/s | 训练/推理 | ~$3 |
| NVIDIA L40S | 48GB GDDR6 | PCIe 5.0 | 推理/微调 | ~$1.5 |
| 昇腾 910B | 64GB HBM2e | HCCS 392GB/s | 训练(国产) | ~$2 |
| 昇腾 310P | 24GB | PCIe 4.0 | 推理(国产) | ~$0.5 |
# GPU状态检查
nvidia-smi # 基础信息
nvidia-smi dmon -s pmt # 持续监控(功耗/温度/显存)
nvidia-smi pmon -s u # 每个进程的GPU使用
# NVLink/NVSwitch 互联检测
nvidia-smi nvlink --status # NVLink链路状态
nvidia-smi topo -m # GPU拓扑(最关键!)
# 昇腾对应工具
npu-smi info # 昇腾基础信息
npu-smi watch -d 1 # 持续监控
hccn_tool -i 0 -link -g # HCCS链路检测
# 性能瓶颈诊断
nsys profile -o trace -t cuda,nvtx # NVIDIA Nsight System分析
ncu --target-processes all -o ncu # NVIDIA Nsight Compute
# 问题1: 通信瓶颈(最常犯)
# 检查: 计算时间vs通信时间比
# 正常: 计算:通信 = 9:1
# 警告: 计算:通信 < 5:5
# 诊断方法
# 看nvidia-smi的GPU利用率
# 如果利用率<50%且gpu<100% → 通信瓶颈
# 修复: 梯度压缩 / 梯度累积 / 增加batch_size
# 问题2: 数据加载瓶颈
# GPU利用率周期性起伏
# 修复:
# - num_workers = 4 * GPU数
# - 使用NVIDIA DALI
# - 内存映射文件
# 问题3: 显存OOM
# 修复(按优先级):
# - 减小batch_size(最简单)
# - 梯度检查点(Gradient Checkpointing)
# - ZeRO-3 / FSDP
# - 混合精度训练
# train.py - PyTorch DDP完整模板
import torch
import torch.distributed as dist
import torch.multiprocessing as mp
from torch.nn.parallel import DistributedDataParallel as DDP
from torch.utils.data.distributed import DistributedSampler
def setup(rank, world_size):
"""初始化分布式环境"""
dist.init_process_group(
backend='nccl', # NVIDIA GPU
# backend='hccl', # 昇腾
init_method='env://',
world_size=world_size,
rank=rank
)
torch.cuda.set_device(rank)
def cleanup():
dist.destroy_process_group()
def train(rank, world_size):
setup(rank, world_size)
model = MyModel().to(rank)
ddp_model = DDP(model, device_ids=[rank])
train_dataset = MyDataset()
sampler = DistributedSampler(
train_dataset,
num_replicas=world_size,
rank=rank
)
dataloader = DataLoader(train_dataset,
sampler=sampler,
batch_size=32)
optimizer = torch.optim.AdamW(ddp_model.parameters(), lr=1e-4)
for epoch in range(10):
sampler.set_epoch(epoch) # 重要!确保每个epoch数据shuffle不同
for batch in dataloader:
x, y = batch
x, y = x.to(rank), y.to(rank)
loss = ddp_model(x, y)
loss.backward()
optimizer.step()
optimizer.zero_grad()
cleanup()
if __name__ == '__main__':
world_size = torch.cuda.device_count()
mp.spawn(train, args=(world_size,), nprocs=world_size)
# 启动命令
torchrun --nproc_per_node=8 train.py # 单机8卡
torchrun --nnodes=4 --nproc_per_node=8 train.py # 4机32卡
torchrun --rdzv_backend=c10d --rdzv_endpoint=master:1234 train.py # 弹性训练
from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
for batch in dataloader:
with autocast(dtype=torch.bfloat16): # BF16更稳定
loss = model(batch)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
# 什么时候用BF16什么时候用FP16?
# BF16: 大部分场景(动态范围大,无需loss scaling)
# FP16: 显存极度受限(H100前的老卡)
# INT8量化: 推理阶段
from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
from torch.distributed.fsdp.fully_sharded_data_parallel import (
CPUOffload, BackwardPrefetch
)
# FSDP vs DDP选择
# 模型<1B → DDP(更快)
# 模型1B-7B → FSDP(显存节省4x)
# 模型>7B → FSDP + ZeRO-3 + CPU Offload
model = FSDP(
model,
sharding_strategy=ShardingStrategy.FULL_SHARD, # ZeRO-3
cpu_offload=CPUOffload(offload_params=True),
backward_prefetch=BackwardPrefetch.BACKWARD_PRE,
)
# vLLM 生产部署配置
from vllm import LLM, SamplingParams
llm = LLM(
model="Qwen/Qwen2.5-72B-Instruct",
tensor_parallel_size=4, # 4卡张量并行
max_model_len=32768, # 最大上下文
gpu_memory_utilization=0.9, # GPU利用率(0.9安全)
trust_remote_code=True,
dtype="bfloat16", # 推荐BF16
quantization="fp8", # FP8量化(H100支持)
kv_cache_dtype="fp8", # KV Cache量化
enable_prefix_caching=True, # 前缀缓存(多轮对话)
)
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=2048,
stop=["<|im_end|>"],
)
# 部署为OpenAI兼容API
vllm serve Qwen/Qwen2.5-72B-Instruct \
--tensor-parallel-size 4 \
--gpu-memory-utilization 0.9 \
--port 8000
# 客户端调用(兼容OpenAI SDK)
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-72B-Instruct",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 512
}'
# vLLM自带指标(关键)
# Throughput: tokens/s
# TTFT (Time to First Token): 首token延迟 <500ms
# TPOT (Time Per Output Token): 生成每token时间 <50ms
# 监控命令
curl http://localhost:8000/metrics # Prometheus指标
# 关键指标解读
# avg_prompt_throughput_toks_per_s: 提示吞吐
# avg_generation_throughput_toks_per_s: 生成吞吐
# request_success: 成功率目标>99.9%
# gpu_cache_usage: GPU缓存使用率<95%
| 方法 | 精度损失 | 速度提升 | 显存节省 | 适用场景 | 工具 |
|---|---|---|---|---|---|
| FP8 | <0.1% | 1.5x | ~40% | H100推理 | vLLM原生 |
| INT8 (W8A8) | <0.5% | 2x | ~50% | 通用推理 | TensorRT-LLM |
| INT4 (W4A16) | <2% | 2.5x | ~60% | 长上下文推理 | AWQ/GPTQ |
| GGUF/GGML | <5% | 3x | ~75% | 本地/边缘部署 | llama.cpp |
# AWQ量化(推荐,质量最好)
python -m awq.quantize \
--model_path Qwen/Qwen2.5-7B-Instruct \
--quant_path qwen-7b-awq \
--calib_dataset wikitext
# GPTQ量化
python -m gptq.quantize \
--model Qwen/Qwen2.5-7B-Instruct \
--wbits 4 \
--groupsize 128
# vLLM直接加载量化模型
vllm serve qwen-7b-awq --quantization awq --dtype auto
┌─────────────────────────────────────────────────────────────┐
│ LLMOps流水线 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [数据准备] [训练] [评估] │
│ 数据收集 → 清洗 → PyTorch FSDP → LLM作为评估器 │
│ 标注 → 增强 → 格式化 DeepSpeed → HumanEval → │
│ → HuggingFace Dataset Megatron-LM Chatbot Arena │
│ │ │ │ │
│ └──────────────────────┴──────────────────────┘ │
│ │ │
│ ▼ │
│ [量化/优化] │
│ AWQ → vLLM → TensorRT-LLM │
│ │ │
│ ▼ │
│ [部署 + 可观测] │
│ K8s + vLLM + Prometheus + Grafana │
│ │ │
│ ▼ │
│ [监控 + 更新] │
│ Token用量/延迟/错误 → 自动回滚/热更新 │
└─────────────────────────────────────────────────────────────┘
AI基础设施实战:
更新前 75/100(理论) 更新后 90/100 🚀(实操skill)
具体覆盖:
├─ GPU集群诊断: 70 → 90 (nvlink/topo/nsys/昇腾全套)
├─ PyTorch分布式: 80 → 92 (DDP/FSDP/ZeRO生产模板)
├─ vLLM推理部署: 70 → 90 (完整配置+诊断)
├─ 模型量化: 65 → 85 (AWQ/GPTQ/INT8/INT4实战)
├─ LLMOps: 60 → 85 (训练→部署全流程)
└─ 昇腾适配: 50 → 70 (基础工具+通信库,缺真实压测)
轩辕在此。 🔧 AI基础设施实战 v1.0 | 理论→实战 | 从Google Brain到国产昇腾
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。
日本語の概要は準備中です。原文の説明を表示しています。
You are an accessibility expert specializing in WCAG compliance, inclusive design, and assistive technology compatibility. Conduct audits, identify barriers, and provide remediation guidance.
日本語の概要は準備中です。原文の説明を表示しています。
Expert sales execution covering pipeline management, discovery, demos, negotiation, and deal closing. Use when qualifying opportunities, running MEDDIC discovery, building account plans, handling objections, structuring proposals, or forecasting pipeline.
日本語の概要は準備中です。原文の説明を表示しています。
Support accounting understanding from basic bookkeeping to professional practice and research.
日本語の概要は準備中です。原文の説明を表示しています。
Automate ActiveCampaign tasks via Rube MCP (Composio): manage contacts, tags, list subscriptions, automation enrollment, and tasks. Always search tools first for current schemas.
日本語の概要は準備中です。原文の説明を表示しています。
Add company/person/relationship to CRM
日本語の概要は準備中です。原文の説明を表示しています。