Hexo

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

NLP——SGLang-Qwen3本地部署

  • 参考链接:
    • sglang-zh.llamafactory.cn

整体说明

  • SGLang 全称是 Structured Generation Language,是由 LMSYS Org 发起的开源项目
  • SGLang 通过共同设计后端运行时和前端语言,使用户与模型的交互更快、更可控
  • 采用 RadixAttention 技术,通过基数树管理键值缓存(KV Cache),支持多轮对话中共享前缀的缓存复用,在多轮任务中可将缓存命中率提升 3-5 倍,显著降低延迟
  • SGLang 的前端采用编译器式设计,通过领域特定语言(DSL)简化复杂任务编程,后端运行时优化调度和资源分配,还可通过正则表达式和有限状态机(FSM)实现约束解码,直接生成 JSON 等结构化数据
  • SGLang 更适合处理复杂任务,如多轮对话、规划、工具调用(如调用 API 或数据库)等,以及需要生成 JSON、XML 等结构化数据的任务,如智能客服、数据分析等
    • 在 Llama-7B 多轮对话任务中,吞吐量比 vLLM 高 5 倍,延迟降低 30%-50%
  • 注:SGLang 接口经常变化,导致不同版本对应的接口不可复用,非常麻烦!

安装 SGLang

  • 通过 pip 安装
    1
    2
    3
    4
    5
    pip install --upgrade pip
    pip install "sglang[all]"

    # Install FlashInfer CUDA kernels
    pip install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/

部署服务

  • 使用命令行启动
    1
    python -m sglang.launch_server --model-path ~/llm/model/Qwen3-0.6B --port 30000

请求服务

  • 注:下面的命令暂未考虑 Qwen 模型的 Chat 模版

  • 使用命令行访问

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl http://localhost:30000/generate \
    -H "Content-Type: application/json" \
    -d '{
    "text": "白日依山尽,",
    "sampling_params": {
    "max_new_tokens": 16,
    "temperature": 0
    }
    }'
  • 使用 OpenAI 兼容的 API 访问

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    import openai
    client = openai.Client(
    base_url="http://127.0.0.1:30000/v1", api_key="EMPTY")

    # Text completion
    response = client.completions.create(
    model="default",
    prompt="The capital of France is",
    temperature=0,
    max_tokens=32,
    )
    print(response)

    # Chat completion
    response = client.chat.completions.create(
    model="default",
    messages=[
    {"role": "system", "content": "You are a helpful AI assistant"},
    {"role": "user", "content": "列出三个国家和他们的首都"},
    ],
    temperature=0,
    max_tokens=64,
    )
    print(response)

    # Text embedding,需要在服务启动命令中添加 --is-embedding 参数才能访问下面的接口
    response = client.embeddings.create(
    model="default",
    input="How are you today",
    )
    print(response)

NLP——LLM相关数据集


Tulu3

  • 原始论文:(Tulu3)Tülu 3: Pushing Frontiers in Open Language Model Post-Training
  • Tulu3 数据集是艾伦人工智能研究所(Ai2)为训练Tulu3模型而创建的大规模多语言文本数据集
  • Tulu3 数据集包含 939,344 个样本,覆盖多种语言和任务,数据来源广泛,包括 Coconot、Flan v2、No Robots 等
  • Tulu3 数据集支持语言模型的训练和微调,特别是在多语言环境下,其结构包含标准的指令调整数据点,如 ID 等
  • Tulu3 数据集的意义在于为研究人员和开发人员提供了丰富的语言资源,以增强和优化多语言人工智能模型的性能,可用于教育和研究目的,但需遵循特定的许可协议

lmarena-ai/arena-human-preference-140k

  • HuggingFace:huggingface.co/datasets/lmarena-ai/arena-human-preference-140k
  • Blog:A Deep Dive into Recent Arena Data, 20250731
  • lmarena-ai/arena-human-preference-140k 数据集包含文本类别的用户投票(vote)数据,累计大约 14W 数据
    • 每行代表一次投票,记录用户在特定对话场景下对两个模型(model_a 和 model_b)的评判结果,同时包含完整对话历史及元数据
  • 核心字段说明如下:
    • id:每次投票/每行数据的唯一反馈ID
    • evaluation_session_id:每次评估会话的唯一 ID,一个会话可包含多次独立投票/评估
      • 经测试,同一个 evaluation_session_id 对应的模型可能不同,如何理解?
    • evaluation_order:当前投票的评估顺序(序号)
    • winner:对决结果,取值为
      • model_a(模型 A 获胜)
      • model_b(模型 B 获胜)
      • tie(平局)
      • both_bad(两者均差)
    • conversation_a/conversation_b:当前评估轮次中两个模型对应的完整对话内容
    • full_conversation:完整对话历史,包含上下文提示词及所有先前评估轮次的模型回复
      • 注意:每次投票后会重新采样模型,因此完整上下文中的响应模型会有所不同
      • 问题:发现多轮数据中,两个模型的上下文是分离的,所以这部分训练时相当于是多轮信号
    • conv_metadata:聚合元数据(含格式标记、令牌计数),用于风格控制
    • category_tag:标注标签,包括Math、创意写作(creative writing)、高难度提示词(hard prompts)、Instruction Following四类
    • is_code:对话是否涉及代码(布尔值)
  • 其他分析:
    • 大部分数据是英语,约 51.8%
    • 中文简体占比较少,仅 5%
    • 中文繁体占比,仅 0.65%
  • 注:这个数据集是用作 Reward Model 的优秀模型,也可以用于 SFT 和 DPO 等
    • 用作 SFT 时,多轮数据也可以使用;用作 Reward Model 和 DPO 时,多轮数据暂无法使用
1…116117118…352
San Ye

San Ye

Stay Hungry. Stay Foolish.

704 posts
53 tags
© 2026 San Ye
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4