AI服务器到货验收清单

合同标的:H3C UniServer R5300 G6 / 4x NVIDIA L20 48GB

服务器型号H3C UniServer R5300 G6 供应商深圳市杰科创想科技有限公司 合同金额¥393,660(含税13%) 验收开始____年____月____日 验收截止____年____月____日(10个工作日内)
合同仅含"上架安装",不含操作系统与软件部署。 软件安装请使用附件脚本 ai_server_setup.sh。 所有验收测试须在 10 个工作日内完成并书面反馈。

外观检查与到货清点

1.1 外包装检查

1.2 服务器外观检查

1.3 配件核对

硬件配置逐项核对

配置项合同约定实际值核对
服务器型号H3C UniServer R5300 G6____________
CPUIntel Xeon Gold 6530 ×2(32核/2.1GHz)____________
内存64GB DDR5-5600 RDIMM ×8(512GB)____________
GPUNVIDIA L20 48GB ×4____________
系统盘960GB SATA SSD ×2____________
数据盘3.84TB NVMe U.2 SSD ×4____________
网络双口 25GbE + 千兆 OCP____________
电源冗余 PSU ×2____________
序列号拍照存档____________

特别关注:GPU 实物型号标签必须为"NVIDIA L20 48GB",之前合同文本中 GPU 描述不一致(主表"L20" vs 清单"48GB PCIe 4.0")。

上架与加电检查

BIOS 与固件检查

GPU 识别与健康检查

操作:加电进入系统后,运行 nvidia-smi 命令,逐项核对:

压力测试

测试工具:gpu-burn / stress-ng / fio / iperf3。以下全部通过方可通过验收。

6.1 GPU 压力测试

6.2 CPU/内存压力测试

6.3 存储性能测试

6.4 网络带宽测试

Ubuntu 24.04 LTS 安装步骤详解

H3C UniServer R5300 G6 / UEFI 模式 / 4×L20 GPU

前置条件:UEFI 启动 U 盘已制作(Rufus,GPT/UEFI 模式)
ISO:ubuntu-24.04.4-live-server-amd64.iso(阿里云:mirrors.aliyun.com/ubuntu-releases/24.04/)

1 上电后 BIOS 设置(开机按 Del)

项目建议值BIOS 位置完成
Boot ModeUEFI(不要 Legacy)BIOS → Boot
Secure BootDisabledBIOS → Security
Above 4G DecodingEnabledBIOS → Advanced → PCIe
PCIe GenGen4(L20 为 PCIe 4.0)BIOS → Advanced → PCIe
NUMAEnabledBIOS → Advanced → Memory
Hyper-ThreadingEnabledBIOS → Advanced → CPU
AC Power LossPower On(断电恢复自启)BIOS → Server Mgmt

设置完成后按 F10 保存退出。

2 从 U 盘启动

# 1. 插入 U 盘,重启服务器 # 2. 出现 H3C Logo 时按 F7(Boot Menu) # 3. 选择 U 盘(通常显示 "UEFI: Mass Storage" 或 U 盘品牌名) # 4. 选择 "Try or Install Ubuntu Server" # 5. 进入 Ubuntu 安装界面即成功

3 安装向导逐项设置

Step 1 — 语言

Select a language → English # 推荐用英文,中文在服务器环境偶尔有编码问题

Step 2 — 键盘布局

Keyboard configuration → English (US)

Step 3 — 网络配置(重要)

安装程序会扫描网卡,看到:
eno1(BMC / 千兆口)   eno2(25G 口 1)   eno3(25G 口 2)

建议:先选一个 25G 口配 DHCP,装完系统再改静态 IP。
不联网也可以:选 "Continue without network"。

Step 4 — 代理配置

Configure proxy → 留空(或填公司代理地址,如果有的话)

Step 5 — 镜像源(国内加速)

Mirror address → 填入以下之一: http://mirrors.aliyun.com/ubuntu/ # 阿里云(推荐) http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ # 清华 TUNA

Step 6 — 磁盘分区(关键)

磁盘情况:系统盘 960GB SATA SSD ×2、数据盘 3.84TB NVMe U.2 SSD ×4
建议在 BIOS 或 H3C 存储管理界面先做 RAID(系统盘 RAID1、数据盘 RAID0 或 RAID5)。
Storage configuration → Use an entire disk → 选择系统盘(通常 /dev/sda) → 分区方案建议: /boot/efi → 1GB (EFI System Partition) / → 100GB (ext4) /var → 150GB (ext4,日志和容器镜像) /data → 剩余约 650GB (ext4,放安装脚本/临时文件) swap → 不设置(512GB 内存不需要 swap) # 数据盘(4×3.84TB NVMe)装完系统后再挂载: # 建议 RAID0 做 /data/models(12-15TB 模型权重存储) # 或 RAID5 做 /data(约 11.5TB 可用,含冗余)

Step 7 — 用户设置

Your name: [服务器管理员姓名] Your server's name: ai-server-01(或你们习惯的命名) Username: ubuntu(或标准运维账号) Password: [设置强密码] Confirm password: [确认]

Step 8 — SSH 配置(重要)

☑ Install OpenSSH server ← 必须勾选 □ Allow password authentication ← 按需,建议先勾,装完改密钥登录

Step 9 — 可选软件(Snaps)

全部不勾选 # Docker 我们后面用脚本装,这里勾了版本可能旧

Step 10 — 开始安装 & 重启

确认无误后 → Done → Continue # 安装过程约 10-15 分钟 安装完成后 → Reboot Now # 移除 U 盘,服务器重启进入新系统

4 首次进入系统后必做

# 1. 登录(从跳板机 SSH) ssh ubuntu@<服务器IP> # 2. 切换 root(方便跑脚本) sudo -i # 3. 确认网络 ip a # 确认 25G 口和业务 IP 正常 # 4. 确认磁盘 lsblk df -h # 5. 更新系统 apt update && apt upgrade -y # 6. 跑安装脚本 bash /path/to/ai_server_setup.sh

5 安装常见问题

问题原因解决方法
找不到 25G 网卡驱动未随 ISO 带先装系统,脚本里会装 linux-modules-extra
卡在 Reading package lists镜像源连不上选 "Continue without network",跳过
重启后进不了系统启动顺序问题进 BIOS,把 Ubuntu 启动项提到第一位
GPU 在 lspci 里看不到Above 4G Decoding 未开进 BIOS 开启,重启

安装后验证与验收签收

系统安装后验证

合同不含系统安装服务。以下为 ai_server_setup.sh 执行完成后的验证项:

AI 推理功能测试

使用 vLLM 或 SGLang 加载 Qwen3.6-27B 模型,验证推理功能正常。

8.1 启动 vLLM 推理服务(纯文本模式)

# 方式一:使用生成的启动脚本(推荐) sudo start_vllm_text.sh # 方式二:直接命令行 export VLLM_USE_MODELSCOPE=True # 国内从 ModelScope 下载 python3.12 -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3.6-27B \ --tensor-parallel-size 4 \ --language-model-only \ --dtype bfloat16 \ --max-model-len 32768 \ --reasoning-parser qwen3 \ --port 8000

8.2 测试 API 调用

# 查看已加载模型 curl http://localhost:8000/v1/models # 单次推理测试 curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen3.6-27B", "messages": [{"role": "user", "content": "1+1=?"}], "max_tokens": 100 }'

8.3 并发压测(50 请求)

# 安装压测工具 pip install openai # 运行压测(示例脚本) python3 << 'EOF' from openai import OpenAI import concurrent.futures client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy") def query(): resp = client.chat.completions.create( model="Qwen/Qwen3.6-27B", messages=[{"role":"user","content":"用一句话介绍深圳"}], max_tokens=50 ) return resp.usage.total_tokens with concurrent.futures.ThreadPoolExecutor(max_workers=50) as ex: results = list(ex.map(lambda _: query(), range(50))) print(f"50 并发完成,平均 token:{sum(results)/len(results):.0f}") EOF

验收签收

甲方(信息部)验收人

签字:__________ 日期:__________

乙方(供应商)交货人

签字:__________ 日期:__________

异议记录:

如有任何配置不符或测试不通过项,请在此详细记录,并在验收截止日期前书面提交乙方。

软件安装脚本参考

以下脚本已另存为 ai_server_setup.sh,可直接在服务器上执行。 脚本已更新支持 Qwen3.6-27B(vLLM ≥0.19.0 + SGLang)。

使用方法:
1. 将脚本拷贝到服务器:scp ai_server_setup.sh user@server-ip:/tmp/
2. 加执行权限:chmod +x /tmp/ai_server_setup.sh
3. 以 root 运行:sudo bash /tmp/ai_server_setup.sh
4. 完成后重启:sudo reboot

ai_server_setup.sh(完整版)

#!/bin/bash # AI服务器软件环境一键安装脚本 # 适用:H3C UniServer R5300 G6 / 4x NVIDIA L20 48GB / Ubuntu 24.04 LTS # 模型:Qwen3.6-27B(Dense,原生262K上下文,支持多模态) # 用法:chmod +x ai_server_setup.sh && sudo bash ai_server_setup.sh # ======================================== set -euo pipefail LOG_FILE="/var/log/ai_server_setup_$(date +%Y%m%d_%H%M%S).log" exec > >(tee -a "$LOG_FILE") 2>&1 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' log_section() { echo -e "\n${GREEN}===== $1 =====${NC}"; } log_step() { echo -e "${YELLOW}>>> $1${NC}"; } log_ok() { echo -e "${GREEN}[OK] $1${NC}"; } log_info() { echo -e "${CYAN}[INFO] $1${NC}"; } log_err() { echo -e "${RED}[ERROR] $1${NC}"; exit 1; } log_warn() { echo -e "${YELLOW}[WARN] $1${NC}"; } # ---- 环境检查 ---- log_section "环境检查" [ "$EUID" -eq 0 ] || log_err "请使用 sudo 运行此脚本" if grep -q "24.04" /etc/os-release; then log_ok "操作系统:Ubuntu 24.04 LTS" else log_err "不支持的操作系统版本,请使用 Ubuntu 24.04 LTS" fi GPU_COUNT=$(lspci 2>/dev/null | grep -i nvidia | grep -ic "3d\|vga\|display" || echo 0) if [ "$GPU_COUNT" -eq 4 ]; then log_ok "检测到 $GPU_COUNT 张 NVIDIA GPU" elif [ "$GPU_COUNT" -gt 0 ]; then log_warn "仅检测到 $GPU_COUNT 张 GPU,预期 4 张(L20 x4)" else log_warn "lspci 未检测到 NVIDIA GPU,驱动安装后重试" fi MEM_GB=$(free -g | awk '/^Mem:/{print $2}') if [ "$MEM_GB" -ge 500 ]; then log_ok "内存:${MEM_GB}GB(预期 512GB)" else log_warn "内存:${MEM_GB}GB(预期 512GB)" fi DISK_GB=$(df -BG / 2>/dev/null | tail -1 | awk '{print $4}' | tr -d 'G') if [ -n "$DISK_GB" ] && [ "$DISK_GB" -ge 100 ]; then log_ok "根分区可用空间:${DISK_GB}GB" else log_warn "根分区可用空间不足 100GB,模型下载可能失败" fi # ---- 系统更新 ---- log_section "系统更新与基础依赖" log_step "更新 apt 源..." apt-get update -y log_step "升级系统包..." apt-get upgrade -y log_step "安装基础依赖..." apt-get install -y build-essential dkms linux-headers-$(uname -r) \ wget curl git vim htop nvtop btop net-tools iperf3 \ stress-ng fio pciutils tmux screen \ software-properties-common gpg ca-certificates log_ok "基础依赖安装完成" # ---- NVIDIA 驱动 ---- log_section "安装 NVIDIA 驱动" if command -v nvidia-smi >/dev/null; then EXISTING_DRIVER=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>/dev/null | head -1 | tr -d ' ' || echo "未知") log_ok "已安装 NVIDIA 驱动版本:$EXISTING_DRIVER" else log_step "安装 NVIDIA 驱动 550+ ..." # 禁用 nouveau if ! grep -q "blacklist nouveau" /etc/modprobe.d/blacklist-nvidia-nouveau.conf 2>/dev/null; then cat > /etc/modprobe.d/blacklist-nvidia-nouveau.conf << 'EOF' blacklist nouveau options nouveau modeset=0 EOF update-initramfs -u fi wget -q https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb dpkg -i cuda-keyring_1.1-1_all.deb rm -f cuda-keyring_1.1-1_all.deb apt-get update -y apt-get install -y nvidia-driver-550 || apt-get install -y nvidia-driver-555 || log_err "驱动安装失败" log_ok "NVIDIA 驱动安装完成,请稍后重启服务器" fi # ---- CUDA Toolkit ---- log_section "安装 CUDA Toolkit" if dpkg -l 2>/dev/null | grep -q "cuda-toolkit-12"; then log_ok "CUDA Toolkit 已安装" else log_step "安装 CUDA 12.4..." apt-get install -y cuda-toolkit-12-4 cat > /etc/profile.d/cuda.sh << 'EOF' export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH export CUDA_HOME=/usr/local/cuda EOF chmod +x /etc/profile.d/cuda.sh log_ok "CUDA 12.4 安装完成" fi # ---- Docker ---- log_section "安装 Docker" if command -v docker >/dev/null; then log_ok "Docker 已安装:$(docker --version)" else log_step "安装 Docker CE..." for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove -y $pkg 2>/dev/null || true done install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list apt-get update -y apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin log_ok "Docker 安装完成" fi # ---- NVIDIA Container Toolkit ---- log_section "安装 NVIDIA Container Toolkit" if docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu24.04 nvidia-smi >/dev/null 2>&1; then log_ok "NVIDIA Container Toolkit 已正常工作" else log_step "安装 nvidia-container-toolkit..." curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' > /etc/apt/sources.list.d/nvidia-container-toolkit.list apt-get update -y apt-get install -y nvidia-container-toolkit nvidia-ctk runtime configure --runtime=docker systemctl restart docker log_ok "NVIDIA Container Toolkit 安装完成" fi # ---- Python 环境 ---- log_section "配置 Python 环境" log_step "安装 Python3.12 + pip..." apt-get install -y python3.12 python3.12-venv python3-pip python3.12 -m pip install --upgrade pip setuptools wheel log_ok "Python 环境配置完成" # ---- vLLM(≥0.19.0) ---- log_section "安装 vLLM(Qwen3.6 要求 ≥0.19.0)" INSTALL_VLLM=true if python3.12 -m pip show vllm >/dev/null 2>&1; then VLLM_VER=$(python3.12 -m pip show vllm 2>/dev/null | grep Version | awk '{print $2}') log_info "已安装 vLLM 版本:$VLLM_VER" if python3.12 -c "from packaging import version; import sys; sys.exit(0 if version.parse('$VLLM_VER') >= version.parse('0.19.0') else 1)" 2>/dev/null; then log_ok "vLLM 版本满足 Qwen3.6 要求(≥0.19.0)" INSTALL_VLLM=false else log_warn "vLLM 版本过低,将升级至最新版" fi fi if [ "$INSTALL_VLLM" = true ]; then log_step "安装 vLLM ≥0.19.0(约 10-20 分钟)..." python3.12 -m pip install "vllm>=0.19.0" log_ok "vLLM 安装完成" fi # ---- SGLang(可选) ---- log_section "安装 SGLang(生产环境推荐)" if python3.12 -m pip show sglang >/dev/null 2>&1; then log_ok "SGLang 已安装" else log_step "安装 SGLang ≥0.5.10..." python3.12 -m pip install "sglang[all]>=0.5.10" log_ok "SGLang 安装完成" fi # ---- 生成启动脚本 ---- log_section "生成模型启动脚本" cat > /usr/local/bin/start_vllm_text.sh << 'SCRIPT' #!/bin/bash # Qwen3.6-27B vLLM 启动脚本(纯文本模式,推荐) MODEL="${VLLM_MODEL:-Qwen/Qwen3.6-27B}" PORT="${VLLM_PORT:-8000}" TP_SIZE="${VLLM_TP_SIZE:-4}" [ "${VLLM_USE_MODELSCOPE:-0}" = "1" ] && export VLLM_USE_MODELSCOPE=True echo "启动 vLLM API 服务(纯文本模式)模型:$MODEL 端口:$PORT" python3.12 -m vllm.entrypoints.openai.api_server \ --model "$MODEL" --tensor-parallel-size "$TP_SIZE" \ --language-model-only --dtype bfloat16 \ --max-model-len 32768 --reasoning-parser qwen3 \ --gpu-memory-util 0.85 --port "$PORT" "$@" SCRIPT cat > /usr/local/bin/start_vllm_mm.sh << 'SCRIPT' #!/bin/bash # Qwen3.6-27B vLLM 启动脚本(多模态模式) MODEL="${VLLM_MODEL:-Qwen/Qwen3.6-27B}" PORT="${VLLM_PORT:-8000}" TP_SIZE="${VLLM_TP_SIZE:-4}" [ "${VLLM_USE_MODELSCOPE:-0}" = "1" ] && export VLLM_USE_MODELSCOPE=True echo "启动 vLLM API 服务(多模态模式)模型:$MODEL 端口:$PORT" python3.12 -m vllm.entrypoints.openai.api_server \ --model "$MODEL" --tensor-parallel-size "$TP_SIZE" \ --dtype bfloat16 --max-model-len 16384 \ --reasoning-parser qwen3 --gpu-memory-util 0.85 \ --port "$PORT" --mm-encoder-tp-size 4 "$@" SCRIPT cat > /usr/local/bin/start_sglang.sh << 'SCRIPT' #!/bin/bash # Qwen3.6-27B SGLang 启动脚本(生产推荐) MODEL="${SGLANG_MODEL:-Qwen/Qwen3.6-27B}" PORT="${SGLANG_PORT:-8000}" TP_SIZE="${SGLANG_TP_SIZE:-4}" [ "${VLLM_USE_MODELSCOPE:-0}" = "1" ] && export VLLM_USE_MODELSCOPE=True echo "启动 SGLang API 服务 模型:$MODEL 端口:$PORT" python3.12 -m sglang.launch_server \ --model-path "$MODEL" --tp "$TP_SIZE" \ --dtype bfloat16 --context-length 262144 \ --host 0.0.0.0 --port "$PORT" \ --mem-fraction-static 0.85 "$@" SCRIPT chmod +x /usr/local/bin/start_vllm_text.sh chmod +x /usr/local/bin/start_vllm_mm.sh chmod +x /usr/local/bin/start_sglang.sh log_ok "启动脚本已生成:start_vllm_text.sh / start_vllm_mm.sh / start_sglang.sh" # ---- 系统优化 ---- log_section "系统优化" if command -v nvidia-smi >/dev/null; then nvidia-smi -pm 1 log_ok "GPU 持久化模式已启用" fi sysctl vm.swappiness=10 grep -q "vm.swappiness=10" /etc/sysctl.conf 2>/dev/null || echo "vm.swappiness=10" >> /etc/sysctl.conf log_ok "swappiness = 10" if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag cat > /etc/systemd/system/disable-thp.service << 'EOF' [Unit] Description=Disable Transparent Huge Pages After=sysinit.target [Service] Type=oneshot ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag" [Install] WantedBy=multi-user.target EOF systemctl enable disable-thp.service log_ok "透明大页已禁用(已持久化)" fi echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf log_ok "文件描述符限制已调整" # ---- 验证 ---- log_section "安装验证" echo "" echo "=== GPU 状态 ===" nvidia-smi --query-gpu=index,name,driver_version,memory.total,temperature.gpu --format=csv 2>/dev/null || echo "(需要重启后生效)" echo "" echo "=== vLLM 版本 ===" python3.12 -m pip show vllm 2>/dev/null | grep -E "Name|Version" || echo "vLLM 未安装" echo "" echo "=== SGLang 版本 ===" python3.12 -m pip show sglang 2>/dev/null | grep -E "Name|Version" || echo "SGLang 未安装" # ---- 完成 ---- echo "" echo "==========================================" echo -e "${GREEN} AI 服务器软件环境安装完成!${NC}" echo " 日志文件:$LOG_FILE" echo "==========================================" echo "" echo "后续步骤:" echo " 1. 重启服务器:sudo reboot" echo " 2. 验证 GPU:nvidia-smi" echo " 3. 启动推理服务(三选一):" echo " a) vLLM 纯文本(推荐):sudo start_vllm_text.sh" echo " b) vLLM 多模态(支持看图):sudo start_vllm_mm.sh" echo " c) SGLang(生产推荐):sudo start_sglang.sh" echo " 4. 国内用户技巧:export VLLM_USE_MODELSCOPE=True" echo ""

到货当日操作流程速查

#步骤预计耗时负责人
1到货签收 + 外观检查30 分钟________
2拆箱 + 配件清点20 分钟________
3BIOS 设置(Above 4G 等)15 分钟________
4Ubuntu 24.04 安装(含分区)30 分钟________
5上架安装 + 网络/电源接线40 分钟________
6加电 + 执行 ai_server_setup.sh30 分钟________
7重启 + GPU 识别验证10 分钟________
8GPU 压力测试(gpu-burn 30min)1 小时________
9CPU/内存/存储/网络综合压测3 小时________
10AI 推理功能测试(Qwen3.6-27B)30 分钟________
11填写验收清单 + 签署20 分钟________