准备项 | 说明 |
腾讯云账号 | 已完成实名认证的腾讯云账号 |
企业版套餐 | 已订购 EdgeOne 企业版套餐 |
Docker 环境 | 本地已安装 Docker(建议 Docker 20.10+),用于构建和推送镜像 |
腾讯云容器镜像服务(TCR) | 已开通腾讯云容器镜像服务(个人版即可),用于存储自定义镜像 |
GPU 服务器(可选) | 如需在本地测试镜像运行,需具备 NVIDIA GPU 的机器;仅做构建则不需要 |
mkdir llama3-edge-inference && cd llama3-edge-inference
Dockerfile 文件。以下示例使用 vLLM 作为推理框架,从 ModelScope 下载 Llama-3.2-3B-Instruct 模型:# ============================================================# Dockerfile for Llama3.2-3B Model with vLLM 0.6.3.post1# ============================================================# 使用 vLLM 官方 OpenAI 兼容镜像作为基础镜像FROM vllm/vllm-openai:v0.6.3.post1# 设置环境变量,跳过 HuggingFace Hub 在线验证(离线模式)ENV HF_HUB_OFFLINE=1ENV HF_HOME=/data/modelsENV TRANSFORMERS_CACHE=/data/models# 安装 modelscope 用于下载模型(使用国内镜像源加速)RUN pip3 install --no-cache-dir modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple# 创建模型目录并下载模型文件RUN mkdir -p /data/models/LLM-Research/Llama-3.2-3B-Instruct && \\python3 -c "from modelscope import snapshot_download; snapshot_download('LLM-Research/Llama-3.2-3B-Instruct', local_dir='/data/models/LLM-Research/Llama-3.2-3B-Instruct')"# 暴露推理服务端口EXPOSE 8000# 启动参数说明:# --host 0.0.0.0 监听所有网络接口# --port 8000 服务监听端口# --model 模型文件路径# --trust-remote-code 信任远程代码(部分模型需要)# --dtype half 使用半精度推理,降低显存占用# --max-model-len 8192 最大上下文长度CMD ["--host", "0.0.0.0", \\"--port", "8000", \\"--model", "/data/models/LLM-Research/Llama-3.2-3B-Instruct", \\"--trust-remote-code", \\"--dtype", "half", \\"--max-model-len", "8192"]
参数 | 说明 |
FROM vllm/vllm-openai:v0.6.3.post1 | 基础镜像已内置 vLLM 推理引擎和 OpenAI 兼容 API 接口 |
HF_HUB_OFFLINE=1 | 禁用在线模型验证,确保容器在无外网环境下也可启动 |
--dtype half | 使用 FP16 半精度推理,Llama-3.2-3B 模型约需 6GB 显存 |
--max-model-len 8192 | 设置最大上下文窗口为 8192 tokens |
docker build -t llama3-3b-vllm:v1.0 .
docker images | grep llama3-3b-vllm
llama3-3b-vllm v1.0 xxxxxxxxxxxx xx minutes ago 约15GB
docker run --gpus all -p 8000:8000 llama3-3b-vllm:v1.0
Uvicorn running on http://0.0.0.0:8000),在另一个终端窗口执行测试请求:curl http://localhost:8000/v1/chat/completions \\-H "Content-Type: application/json" \\-d '{"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct","messages": [{"role": "user", "content": "Hello!"}],"max_tokens": 50}'
edge-inference)。llama3-3b-vllm)。# 个人版 TCR 登录docker login ccr.ccs.tencentyun.com --username=<腾讯云账号ID>
<实例名>.tencentcloudcr.com,请参考 TCR 控制台获取具体地址。# 为镜像打标签(请替换为您的实际仓库地址)docker tag llama3-3b-vllm:v1.0 ccr.ccs.tencentyun.com/edge-inference/llama3-3b-vllm:v1.0# 推送镜像到 TCRdocker push ccr.ccs.tencentyun.com/edge-inference/llama3-3b-vllm:v1.0

llm-inference-project)

配置项 | 说明 | 示例值 |
服务名称 | 服务的唯一标识,创建后无法修改 | llama3-3b-service |
描述 | 服务的用途说明,最多60字符 | Llama-3.2-3B 推理服务 |
配置项 | 说明 | 示例值 |
镜像 | 选择您账号下已上传至 TCR 的镜像 | ccr.ccs.tencentyun.com/edge-inference/llama3-3b-vllm:v1.0 |
启动命令 | 容器启动时执行的命令。如不填写,则使用镜像中的 ENTRYPOINT/CMD | 留空(使用 Dockerfile 中已定义的 CMD) |
监听端口 | 您的推理服务 HTTP Server 监听的端口 | 8000 |
环境变量 | 运行时环境变量配置 | 变量名: HF_HOME,变量值:/data/models |
请求路径 | 客户端调用推理服务的 API 路径 | /v1/chat/completions |
CMD 设置了启动参数,因此可以留空。如果需要覆盖默认参数,可以填写完整的启动命令,例如:python3 -m vllm.entrypoints.openai.api_server --host 0.0.0.0 --port 8000 --model /data/models/LLM-Research/Llama-3.2-3B-Instruct --trust-remote-code --dtype half --max-model-len 8192
配置项 | 说明 |
选择资源 | 当前提供入门型和基础型两种 GPU 资源规格,选择后无法更改 |
配置项 | 说明 | 建议配置 |
扩缩容 | 自动:根据请求量自动扩缩容 手动:固定实例数,常驻运行并持续收费 | 建议选择自动,节省成本 |
并发数 | 单实例的并发请求数上限 | 对于 LLM 推理,建议设为 1-5,取决于模型大小和显存 |
https://your-service-id.edgeone-infer.com)。
my-first-token),系统将自动生成一个 API Token。
YOUR_SERVICE_URL 和 YOUR_BEARER_TOKEN 替换为您的实际信息:curl https://YOUR_SERVICE_URL/v1/chat/completions \\-H "Authorization: Bearer YOUR_BEARER_TOKEN" \\-H "Content-Type: application/json" \\-d '{"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct","messages": [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello, who are you?"}],"max_tokens": 256,"temperature": 0.7}'
{"id": "cmpl-xxxxxxxx","object": "chat.completion","created": 1739260800,"model": "/data/models/LLM-Research/Llama-3.2-3B-Instruct","choices": [{"index": 0,"message": {"role": "assistant","content": "Hello! I'm Llama, a helpful AI assistant developed by Meta. I'm here to help you with questions, provide information, and assist with various tasks. How can I help you today?"},"finish_reason": "stop"}],"usage": {"prompt_tokens": 25,"completion_tokens": 42,"total_tokens": 67}}
参数 | 类型 | 必填 | 说明 |
model | string | 是 | 模型路径,与容器内模型文件路径一致 |
messages | array | 是 | 对话消息列表,包含 role(system/user/assistant)和 content |
max_tokens | integer | 否 | 最大生成 token 数,默认由模型决定 |
temperature | float | 否 | 生成温度,范围 0-2,值越高输出越随机,默认 1.0 |
top_p | float | 否 | 核采样参数,范围 0-1,默认 1.0 |
stream | boolean | 否 | 是否启用流式输出,默认 false |
stop | string/array | 否 | 停止生成的标记词 |
问题 | 可能原因 | 解决方法 |
服务状态一直显示「部署中」 | 镜像过大,拉取时间较长 | 等待 15-30 分钟;检查镜像是否正确上传至 TCR |
服务状态显示「部署失败」 | GPU 显存不足或镜像启动异常 | 检查资源规格是否满足模型要求;查看部署日志排查错误 |
API 请求返回 401 | Token 无效或过期 | 检查 Authorization 头是否正确;确认 Token 格式为 Bearer <token> |
API 请求返回 502/504 | 服务未就绪或请求超时 | 确认服务状态为「运行中」;适当增加超时时间 |
返回 OOM 错误 | 显存不足 | 降低 --max-model-len 参数值;选择更高规格的 GPU 资源 |
文档反馈