跳到主要内容
feedback
feedback

部署文本生成模型

一、模型原理与结构

大语言模型(Large Language Model, LLM)基于 Transformer 架构,通过自回归方式预测下一个 token,实现文本生成。以 Qwen3 系列为代表的现代 LLM 采用:

  • Decoder-only 架构:纯解码器结构,专注于生成任务
  • 多头注意力机制(Multi-Head Attention):并行捕捉序列中的长距离依赖
  • 位置编码(RoPE):旋转位置编码,支持外推到更长上下文
  • 分组查询注意力(GQA):平衡推理效率与模型容量

Qwen3 系列提供从 0.6B 到 70B 不等的参数规模,原生支持 32K~128K 上下文窗口,并具备思考模式(Thinking Mode)增强推理能力。

二、应用场景

文本生成模型可应用于:

  • 知识问答:基于上下文回答专业领域问题
  • 内容创作:自动生成文章、报告、代码
  • 对话系统:智能客服、虚拟助手
  • 逻辑推理:数学解题、代码调试、思维链推理
  • 信息抽取与总结:文档摘要、关键信息提取

三、部署指南与示例

本指南将指导您如何在不同芯片架构的算力实例上部署文本生成大模型。我们将以 Qwen3-0.6B 模型为例,重点介绍 Hugging Face TransformersvLLMSGLang 三种主流推理框架的部署流程。

推理框架概览

  • Hugging Face Transformers:最基础、灵活的框架,适合快速原型设计、算法研究和微调。
  • vLLM:专为生产环境设计的高吞吐量推理引擎,支持 PagedAttention,适合高并发服务。
  • SGLang:针对复杂结构化生成(如 CoT、JSON 约束)优化的高性能引擎。

一、沐曦 (MetaX) 部署指南

本章节适用于 曦云 C500 等沐曦系列算力卡。

1. Hugging Face Transformers

1.1 环境准备

  • 算力型号:曦云 C500 (64GB)
  • 镜像选择:PyTorch / 2.4.0 / Python 3.10 / maca 3.0.0.4
  • 镜像要求:pytorch>=2.4.0

镜像选择

1.2 部署步骤

  1. 启动实例后,点击 JupyterLab 进入工作台。 进入容器

  2. 新建一个 .ipynb (Notebook) 文件。 新建Notebook

  3. 安装依赖:在第一个单元格运行以下命令。安装完成后,请务必重启内核 (Restart Kernel) 以使环境生效。

    pip install accelerate

    重启内核

  4. 运行推理代码:沐曦环境支持直接加载挂载盘中的内置模型,无需下载。

    from transformers import AutoModelForCausalLM, AutoTokenizer
    import torch

    # 指定内置模型库路径 (无需下载)
    model_name = "/mnt/moark-models/Qwen3-0.6B"

    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
    )

    prompt = "Give me a short introduction to large language model."
    messages = [{"role": "user", "content": prompt}]

    text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=True
    )

    model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

    generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=32768
    )

    output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
    try:
    index = len(output_ids) - output_ids[::-1].index(151668) # </think>
    except ValueError:
    index = 0

    thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
    content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")

    print("=== Thinking ===")
    print(thinking_content)
    print("\n=== Response ===")
    print(content)

    执行结果示例:

    执行结果

2. vLLM 高性能推理

2.1 环境准备

  • 镜像选择:vLLM / vllm:0.10.0 / Python 3.10 / maca 3.1.0.7 (注:请务必选择带有 vLLM 标识的专用镜像)

vLLM镜像

2.2 启动服务

  1. 通过 JupyterLab 打开终端 (Terminal)。

  2. 执行以下命令启动兼容 OpenAI 接口的服务:

    # 使用内置模型路径,指定端口 8188
    vllm serve /mnt/moark-models/Qwen3-0.6B --port 8188

    vLLM启动命令

  3. 当看到 Uvicorn running on http://0.0.0.0:8188 字样时,服务启动成功。 vLLM运行成功

3. SGLang 结构化推理

3.1 环境准备

  • 镜像选择:SgLang / sglang:0.4.8 / Python 3.10 / maca 3.1.0.8

SGLang镜像

3.2 启动服务

  1. 通过 JupyterLab 打开终端 (Terminal)。

  2. 执行以下命令启动服务:

    # SGLang 启动命令
    python -m sglang.launch_server \
    --model-path /mnt/moark-models/Qwen3-0.6B \
    --port 8188

    SGLang启动命令

  3. 服务启动成功界面:

    SGLang运行成功


二、燧原 (Enflame) 部署指南

本章节适用于 S60 等燧原系列算力卡。由于架构差异,部分操作需引入适配库。

1. Hugging Face Transformers

1.1 环境准备

  • 算力型号:Enflame S60
  • 镜像选择:Ubuntu / 22.04 / Python 3.13 / ef 1.5.0.604

镜像选择

1.2 部署步骤

  1. 启动实例后,进入 JupyterLab。 进入容器

  2. 新建一个 .ipynb (Notebook) 文件。 进入容器

  3. 代码迁移关键点:必须在代码最前方引入 torch_gcu 库。

    import torch
    import torch_gcu
    from torch_gcu import transfer_to_gcu
    from transformers import AutoModelForCausalLM, AutoTokenizer

    model_name = "/mnt/moark-models/Qwen3-0.6B"

    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto"
    )

    prompt = "Explain quantum computing in simple terms."
    messages = [{"role": "user", "content": prompt}]

    text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

    generated_ids = model.generate(**model_inputs, max_new_tokens=512)
    output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
    response = tokenizer.decode(output_ids, skip_special_tokens=True)
    print(response)

2. vLLM 高性能推理

2.1 环境准备

  • 镜像选择:Ubuntu / 22.04 / Python 3.13 / ef 1.5.0.604 (注:该官方镜像已内置 vLLM 适配环境)

镜像选择

2.2 启动服务

在终端中执行以下命令:

vllm serve /mnt/moark-models/Qwen3-0.6B --port 8188

vLLM启动命令

进入容器

3. SGLang

不支持提示

当前燧原 S60 平台暂不支持 SGLang 推理框架。请使用 Transformers 或 vLLM 进行部署。


三、本地访问与服务验证

请参考【SSH 隧道配置指南】建立安全连接。


四、实战课题

课题目标

使用 Qwen3-8B 模型完成以下两项任务,所有输出文件请保存至 /data/exam/ 目录。

任务一:单次推理测试

任务要求

  • 使用 Qwen3-8B 模型(路径:/mnt/moark-models/Qwen3-8B
  • 生成一段短文小说,描述100年后的世界
  • 将生成结果保存为 /data/exam/text_inference.txt

实现提示

  • 使用 Hugging Face Transformers 库加载模型
  • 参考部署指南中的示例代码结构
  • 注意正确配置 device_maptorch_dtype

任务二:部署 OpenAI 兼容 API

任务要求

  • 使用 vLLM 在 8188 端口启动 Qwen3-8B 模型服务
  • API 需兼容 OpenAI /v1/chat/completions 格式
  • 通过 SSH 隧道映射到本地进行验证

实现提示

  • 参考部署指南中 vLLM 的使用方式
  • 注意修改端口参数为 8188
  • 使用 curl 或 Postman 测试 API 可用性

提交要求: 完成作答后,直接提交检测即可。本课程采取程序自动检测的方式。

需确保以下文件输出完整:

  1. 推理结果文本文件:/data/exam/text_inference.txt