基于 MS-Swift 为 Qwen3-0.6B-Base 模型搭建可直接调用的 API 服务,本文展示一套完整、可直接运行的 API 部署方案,包含服务启动、接口调用、异常处理等全流程,确保你能快速搭建起稳定的 HTTP API 服务。
一、核心实现思路
MS-Swift 内置了基于 FastAPI 的 LLM API 服务模块,我们会:
- 编写独立的 API 启动脚本(封装模型加载、量化优化);
- 启动标准化的 OpenAI 兼容接口(方便各类客户端调用);
- 提供多种方式的接口调用示例(curl/Python)。
二、完整 API 部署步骤
1. 环境确认(前置条件)
确保已安装好依赖(若未安装,先执行以下命令):
bash
# 激活虚拟环境(若已创建)
conda activate ms-swift
# 安装完整依赖(含 API 服务所需的 FastAPI、uvicorn)
pip install ms-swift[llm,api] -U
pip install transformers>=4.37.0 accelerate sentencepiece protobuf uvicorn
# 验证命令是否可用
swift --version # 输出版本号即正常
swift deploy --help # 查看deploy命令帮助
2. 编写 API 启动脚本(核心文件)
创建 qwen_api_server.py 文件,内容如下(包含模型量化、服务配置、接口启动):
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
MS-Swift 部署 Qwen3-0.6B-Base API 服务
"""
import argparse
from swift import Swift
from swift.llm import (
api_server,
get_quantization_config,
ModelType
)
def main():
# 1. 解析命令行参数(方便灵活配置)
parser = argparse.ArgumentParser(description='Qwen3-0.6B-Base API Server')
parser.add_argument('--model_id', type=str, default='qwen/Qwen3-0.6B-Base', help='模型ID/本地路径')
parser.add_argument('--host', type=str, default='0.0.0.0', help='服务监听地址')
parser.add_argument('--port', type=int, default=8000, help='服务端口')
parser.add_argument('--device', type=str, default='auto', help='运行设备(auto/cpu/cuda)')
parser.add_argument('--quant_bits', type=int, default=4, help='量化位数(2/4/8/None)')
args = parser.parse_args()
# 2. 配置模型量化(降低显存占用,关键优化)
quant_config = None
if args.quant_bits in [2, 4, 8]:
quant_config = get_quantization_config(
quant_method='awq', # 高效的 AWQ 量化算法
bits=args.quant_bits,
group_size=128
)
print(f"启用 {args.quant_bits}bit AWQ 量化优化")
# 3. 启动 API 服务(OpenAI 兼容接口)
print(f"启动 Qwen3-0.6B-Base API 服务:http://{args.host}:{args.port}")
api_server(
model_id=args.model_id,
model_type=ModelType.LLM, # 指定模型类型为大语言模型
quantization_config=quant_config,
host=args.host,
port=args.port,
device=args.device,
# 额外配置:控制生成参数默认值
default_generate_kwargs={
'temperature': 0.7, # 生成随机性
'max_new_tokens': 1024, # 最大生成长度
'top_p': 0.85 # 采样概率阈值
}
)
if __name__ == '__main__':
main()
3. 启动 API 服务
执行以下命令启动服务(支持自定义参数):
bash
# 基础启动(默认 4bit 量化,端口 8000)
python qwen_api_server.py
# 可选:自定义配置(8bit 量化,端口 8080,仅本地访问)
python qwen_api_server.py --quant_bits 8 --port 8080 --host 127.0.0.1
# 可选:使用本地模型文件启动(离线环境)
python qwen_api_server.py --model_id ./本地模型路径
启动成功标志:终端输出类似如下内容,无报错即服务就绪:
启用 4bit AWQ 量化优化
启动 Qwen3-0.6B-Base API 服务:http://0.0.0.0:8000
INFO: Started server process [12345]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
4. 调用 API 接口(多种方式)
MS-Swift 的 API 服务完全兼容 OpenAI 的 Chat Completions 接口格式,调用方式灵活:
方式1:curl 命令调用(快速测试)
bash
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-0.6B-Base",
"messages": [
{"role": "system", "content": "你是一个友好的助手,回答简洁明了"},
{"role": "user", "content": "请介绍一下 Qwen3-0.6B-Base 模型"}
],
"temperature": 0.7,
"max_tokens": 512
}'
返回示例:
json
{
"id": "chat-xxxxxxx",
"object": "chat.completion",
"created": 1744234567,
"model": "Qwen3-0.6B-Base",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Qwen3-0.6B-Base 是通义千问推出的轻量级基础大语言模型,参数量为0.6B,具备轻量化、部署成本低的特点,适合端侧、边缘侧等资源受限场景使用。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 32,
"completion_tokens": 58,
"total_tokens": 90
}
}
方式2:Python 代码调用(集成到应用)
python
import requests
import json
def call_qwen_api(prompt):
# API 地址
url = "http://localhost:8000/v1/chat/completions"
# 请求头
headers = {"Content-Type": "application/json"}
# 请求体
data = {
"model": "Qwen3-0.6B-Base",
"messages": [
{"role": "user", "content": prompt}
],
"temperature": 0.7,
"max_tokens": 512
}
# 发送请求
response = requests.post(url, headers=headers, data=json.dumps(data))
# 解析响应
if response.status_code == 200:
result = response.json()
return result["choices"][0]["message"]["content"]
else:
return f"调用失败:{response.status_code} - {response.text}"
# 测试调用
if __name__ == "__main__":
result = call_qwen_api("用一句话总结 Qwen3-0.6B-Base 的优势")
print("模型回复:", result)
方式3:访问 Swagger 文档(调试接口)
启动服务后,直接访问 http://localhost:8000/docs,可打开自动生成的 Swagger 调试界面,支持可视化调用接口、查看参数说明。
三、常见问题与优化
-
服务启动慢/内存不足:
- 降低量化位数(如改用 4bit),或直接使用
--quant_bits None关闭量化(需 ≥2GB 显存/内存); - 若用 CPU 运行,添加
--device cpu参数,避免自动检测 GPU 导致的延迟。
- 降低量化位数(如改用 4bit),或直接使用
-
接口调用超时:
- 在启动脚本中增加
timeout参数,或调小max_new_tokens减少生成时间; - 服务端启动时添加
--workers 1减少并发压力(低配设备)。
- 在启动脚本中增加
-
中文乱码:
- 确保请求头添加
Content-Type: application/json; charset=utf-8; - 响应解析时指定编码
response.encoding = 'utf-8'。
- 确保请求头添加
总结
- 核心文件 :
qwen_api_server.py封装了模型加载、量化、API 启动全流程,一键运行即可搭建服务; - 接口兼容 :服务提供 OpenAI 兼容的
/v1/chat/completions接口,适配各类客户端工具; - 关键优化:4bit 量化是低配设备部署的核心,可将 Qwen3-0.6B-Base 的显存占用降至 500MB 左右,保证服务稳定运行。