1. 环境准备
- 操作系统:Linux (如 Ubuntu 20.04/22.04)
- GPU:NVIDIA 显卡,建议显存 ≥ 8GB
- 驱动与 CUDA:已安装 NVIDIA 驱动 (≥ 525) 和 CUDA Toolkit (≥ 11.8)
- Python:3.10 及以上(推荐使用 conda 虚拟环境,以上驱动就都不是问题了)
2. 安装 FastLLM
# 创建并激活虚拟环境(可选),python版本3.10~3.12皆可conda create -n ftllm python=3.10 -yconda activate ftllm# 可设置镜像加速pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple# 安装 FastLLM(从 PyPI)pip install ftllm -U
如需最新特性或预发布版,可参考 FastLLM GitHub 从源码编译。
3. 模型选择建议
| | | |
|---|
Qwen/Qwen3-14B-FP8 | | | |
Qwen/Qwen3.5-30B-A3B | | | |
Qwen/Qwen3-14B-AWQ | | | 不推荐,FastLLM 对 AWQ 支持可能有问题 |
已测试 Qwen/Qwen3-14B-FP8 模型运行良好,以下以它为例。
4. 启动模型服务 (Server 模式)
ftllm server Qwen/Qwen3-14B-FP8 \ --dtype fp8 \ --gpu_mem_ratio 0.85 \ --kv_cache_limit 16384 \ --max_batch 4
参数说明:
--dtype fp8 :使用 FP8 量化权重(模型原名含 FP8,必须指定)--gpu_mem_ratio 0.85 :使用 85% 的 GPU 显存--kv_cache_limit 16384 :KV Cache 上限(token 数),可根据需要调整(数值越大能处理的上下文越长,但显存占用更高)--max_batch 4 :最大并发批处理数
服务启动后会监听 http://0.0.0.0:8080。
4.1 密集模型示例:Qwen3-14B-FP8
ftllm server Qwen/Qwen3-14B-FP8 \ --dtype fp8 \ --gpu_mem_ratio 0.85 \ --kv_cache_limit 98304 \ --max_batch 2
- 全量 14B 模型在 FP8 下仅约 14 GB。
- 测试解码速度约 77 tokens/s,响应极快。
4.2 MoE 模型示例:Qwen3.5-35B-A3B-FP8
ftllm server Qwen3.5-35B-A3B-FP8 \ --dtype fp8 \ --moe_dtype int4 \ --gpu_mem_ratio 0.8 \ --kv_cache_limit 32768 \ --max_batch 2
参数解析:
--dtype fp8:主干权重保持原始 FP8 格式。不能对 FP8 模型使用 --dtype int4,否则会触发数据类型不匹配错误。--moe_dtype int4:单独将专家权重量化为 INT4,有效降低显存占用,而精度损失可控。如非必要,不要在线进行量化,速度慢还易出错。--kv_cache_limit 32768:因为 MoE 激活参数极少,显存占用极低(本例中 context usage 仅 1.9%),可以大胆设置超大上下文窗口。- 测试生成速度约 17~18 tokens/s,适合需要处理长文档或复杂推理的场景。
5. 测试服务是否正常
5.1 检查端口占用
ss -tlnp | grep 8080
5.2 curl 调用
curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen", "messages": [{"role": "user", "content": "你好,请介绍一下你自己"}], "stream": false }'
若返回 JSON 应答,即成功。
5.3 查看模型列表
curl http://localhost:8080/v1/models
6. 性能监控
GPU 显存/使用率:nvidia-smi 或 watch -n 1 nvidia-smi
CPU/内存:htop、free -h、lscpu
free -h # 查看内存总量与使用nproc# 查看逻辑核心数lscpu # CPU 详细信息
日志速度指标:
[Prompt] ... Speed: X tokens/s:输入处理速度,长文本会逐渐下降属正常。[Decode] alive=1 ... Speed: Y tokens/s:生成速度,稳定值即实际体感速度。context usages: Z%:当前已用 KV Cache 百分比。若 Z 很小(如 1.9%),说明 --kv_cache_limit 远未用满,可以大幅提升以支持更长上下文。
7. 常见错误及处理
| | |
|---|
out of memory | | ① 降低 --gpu_mem_ratio② 减小 --kv_cache_limit③ 使用 --dtype int4 全量化④ 换更小的模型(如 7B) |
unsupport src dtype I32 | | 换用 FP8 或原始模型,或确认 FastLLM 支持该格式 |
ftllm server | | 使用完整 HF 名称如 Qwen/Qwen3-14B-FP8,或在 HF-Mirror 可用时设置环境变量 HF_ENDPOINT=https://hf-mirror.com |
| | 密集模型无需此参数;MoE 模型可尝试全 INT4 量化以留在 GPU |
Linear error: unsupport weight's dataType... int4_perchannel | 对 FP8 模型使用了 --dtype int4,造成线性层数据类型不兼容 | 将 --dtype 改为 fp8,专家部分可用 --moe_dtype int4 |
8. 以交互对话模式运行(Run 模式,仅测试用)
ftllm run Qwen/Qwen3-14B-FP8 --dtype fp8
输入文本即可对话,clear 清空记录,stop 退出。
📌 小结
- 首选模型:
Qwen/Qwen3-14B-FP8 - 启动命令:
ftllm server Qwen/Qwen3-14B-FP8 --dtype fp8 --gpu_mem_ratio 0.85 --kv_cache_limit 16384 --max_batch 4 - 服务地址:
http://localhost:8080