扫码查看

支持超长上下文和思维预算控制的开源大语言模型

Seed-OSS

 

综合介绍

Seed-OSS 是由字节跳动(ByteDance)的Seed团队开发并开源的一系列大型语言模型。这个项目的目标是为开发者和研究者提供具备强大通用能力、超长上下文处理、高级逻辑推理以及智能体(Agent)功能的基础模型。该系列模型在仅使用12万亿(12T)tokens训练的情况下,依然在多个公开的行业基准测试中取得了优异的性能表现。Seed-OSS系列模型基于Apache-2.0许可证向社区开放,主要针对国际化(i18n)应用场景进行了优化,旨在推动AI技术的发展和应用。项目不仅提供了性能强大的预训练模型,还考虑到了后续研究的需求,特意发布了包含和不包含合成指令数据的两个版本,为学术界提供了更多选择。

功能列表

  • 灵活控制思维预算 (Flexible Control of Thinking Budget): 独创的功能,允许用户根据任务需求,灵活设定模型在生成答案前的“思考”长度(推理链的长度),从而在效果和效率之间取得平衡。
  • 增强的推理能力 (Enhanced Reasoning Capability): 针对逻辑推理任务进行了特别优化,同时保持了模型在其他方面的通用能力,使其在处理复杂问题时表现出色。
  • Agent智能 (Agentic Intelligence): 模型在执行类似智能体的任务(如工具使用、问题解决)方面表现优异,能够更好地理解和执行多步骤指令。
  • 原生超长上下文 (Native Long Context): 模型原生支持高达512K的上下文长度,无需依赖窗口滑动等技术,能够完整理解和处理超长文档或对话。
  • 对研究友好 (Research-Friendly): 项目同时发布了两个版本的预训练模型:一个在预训练阶段加入了合成指令数据以提升性能,另一个则完全不使用合成数据,为需要纯净基座模型的研究者提供了便利。
  • 主流模型架构: 采用行业主流且成熟的技术架构,包括RoPE(旋转位置编码)、GQA(分组查询注意力)、RMSNorm(均方根层归一化)和SwiGLU激活函数,确保了模型的稳定性和高效性。

使用帮助

Seed-OSS模型的使用方式非常灵活,开发者可以根据自己的硬件环境和应用需求,选择不同的加载和推理方式。下面将详细介绍几种主流的使用方法。

环境准备

首先,你需要从代码仓库克隆或下载项目,并安装所需的依赖包。

  1. 安装依赖库:打开终端,运行以下命令来安装requirements.txt文件中列出的所有基础依赖包。
    pip3 install -r requirements.txt
    
  2. 安装定制版Transformers:为了支持“思维预算”等特殊功能,你需要安装项目指定的transformers库版本。
    pip install git+ssh://git@github.com/Fazziekey/transformers.git@seed-oss
    

快速上手 (使用 Transformers 库)

这是最基础和直接的使用方式,适合本地调试和快速验证。

  1. 编写Python脚本新建一个Python文件(例如 quick_start.py),并写入以下代码。这段代码展示了如何加载模型和分词器,并进行一次简单的对话。
    from transformers import AutoModelForCausalLM, AutoTokenizer
    import torch # 建议导入torch以明确指定数据类型
    # 指定模型路径,可以是本地路径或Hugging Face模型库的ID
    model_name_or_path = "ByteDance-Seed/Seed-OSS-36B-Instruct"
    # 加载分词器
    tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
    # 加载模型
    # device_map="auto" 会自动将模型分配到可用的硬件上(如GPU)
    # 建议使用 torch.bfloat16 以获得更好的性能并减少显存占用
    model = AutoModelForCausalLM.from_pretrained(
    model_name_or_path,
    device_map="auto",
    torch_dtype=torch.bfloat16 # 使用bfloat16
    )
    # 准备输入信息
    messages = [
    {"role": "user", "content": "如何制作意大利面?"},
    ]
    # 应用聊天模板,并设置“思维预算”
    # thinking_budget 参数控制模型思考的步数,例如设置为512
    # 这会使模型在生成最终答案前,先进行一定长度的内部思考(Chain of Thought)
    tokenized_chat = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt",
    thinking_budget=512 # 控制思维预算
    )
    # 将处理好的输入移动到模型所在的设备
    inputs = tokenized_chat.to(model.device)
    # 生成回复
    # max_new_tokens 控制生成内容的最大长度
    outputs = model.generate(inputs, max_new_tokens=2048)
    # 解码并打印输出结果
    output_text = tokenizer.decode(outputs[0])
    print(output_text)
    
  2. 运行脚本在终端中执行该脚本:
    python3 quick_start.py
    

高性能推理 (使用 vLLM)

vLLM是一个为大型语言模型设计的高性能推理和服务引擎。对于生产环境或需要处理高并发请求的场景,推荐使用vLLM进行部署。

  1. 安装支持Seed-OSS的vLLM版本:
    VLLM_USE_PRECOMPILED=1 VLLM_TEST_USE_PRECOMPILED_NIGHTLY_WHEEL=1 pip install git+ssh://git@github.com/FoolPlayer/vllm.git@seed-oss
    
  2. 启动vLLM的OpenAI API服务:运行以下命令,启动一个兼容OpenAI API的服务。你需要将--model参数后的路径替换为你自己下载的模型路径。--tensor-parallel-size参数需要根据你的GPU数量进行设置。
    python3 -m vllm.entrypoints.openai.api_server \
    --host localhost \
    --port 4321 \
    --enable-auto-tool-choice \
    --tool-call-parser seed_oss \
    --trust-remote-code \
    --model /path/to/your/Seed-OSS-36B-Instruct \
    --chat-template /path/to/your/Seed-OSS-36B-Instruct/chat_template.jinja \
    --tensor-parallel-size 8 \
    --dtype bfloat16 \
    --served-model-name seed_oss
    
  3. 使用OpenAI客户端进行测试:服务启动后,你可以使用任何兼容OpenAI的客户端(如Python的openai库)或项目inference目录中提供的示例脚本进行交互。
    • 聊天功能测试: 运行仓库中提供的vllm_chat.py脚本。
      python3 inference/vllm_chat.py
      
    • 工具调用功能测试: 运行vllm_tool_call.py脚本。
      python3 inference/vllm_tool_call.py
      

使用量化模型

为了在显存有限的设备上运行模型,可以启用4位或8位量化。这会稍微牺牲一些精度,但能大幅降低显存占用。

在使用项目提供的generate.py推理脚本时,可以添加相应参数:

  • 8位量化:
    python3 generate.py --model_path /path/to/model --load_in_8bit True
    
  • 4位量化:
    python3 generate.py --model_path /path/to/model --load_in_4bit True
    

应用场景

  1. 复杂文档理解与问答凭借其原生的512K超长上下文能力,Seed-OSS能够一次性处理整篇几百页的技术报告、法律合同或学术论文。用户可以直接输入完整文档,然后就文档中的任何细节进行提问,模型能够精准地定位信息并生成高质量的回答或摘要。
  2. 多步骤任务规划与执行的智能体模型强大的推理和Agent能力使其非常适合作为复杂任务处理系统的“大脑”。例如,可以构建一个自动化的软件开发Agent,用户只需用自然语言描述需求(如“开发一个能查询天气的网站”),Seed-OSS就能自主规划步骤、编写代码、调试并最终完成任务。
  3. 需要深度思考的专业领域问题求解在数学、物理、编程等需要复杂逻辑推理的领域,用户可以调高“思维预算”,让模型进行更深入、更长时间的“思考”。这使得模型能够解决一些普通模型难以处理的难题,例如证明数学定理、进行复杂的算法设计或分析科学实验数据。
  4. 科研与模型行为研究项目方特意提供了不含合成数据的“纯净”预训练版本,这对于AI研究人员来说非常有价值。他们可以使用这个模型作为基础,进行指令微调、模型机理分析等方面的研究,而不必担心合成数据可能带来的干扰。

QA

  1. Seed-OSS是什么?Seed-OSS是由字节跳动Seed团队开发的一系列开源大型语言模型。它的核心特点是强大的长上下文处理能力(原生512K)、卓越的逻辑推理和Agent能力,并引入了创新的“思维预算”控制功能。
  2. “思维预算” (Thinking Budget) 是什么,如何使用?“思维预算”是一个允许用户控制模型在回答前进行多少步“内部思考”(推理链)的功能。在调用模型时,可以通过设置thinking_budget参数来指定一个数值(如512, 1024)。预算越高,模型思考得越深入,可能得到更准确的答案,但耗时也更长。如果设置为0或不设置,模型会采用默认模式。
  3. Seed-OSS模型开源且免费商用吗?是的,该项目基于Apache-2.0许可证进行开源。Apache-2.0是一个对商业使用非常友好的开源协议,允许用户免费地使用、修改和分发软件,包括用于商业目的,只需遵守协议中的相关条款即可。
  4. 与其他开源模型相比,Seed-OSS的主要优势是什么?其主要优势包括:1) 原生支持高达512K的超长上下文,在处理长文档时性能优越;2) 独特的“思维预算”功能,让推理过程的成本和效果变得可控;3) 在Agent任务和逻辑推理任务上经过特别优化,表现突出;4) 提供纯净的预训练版本,对学术研究非常友好。
微信微博Email复制链接