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模型的使用方式非常灵活,开发者可以根据自己的硬件环境和应用需求,选择不同的加载和推理方式。下面将详细介绍几种主流的使用方法。
环境准备
首先,你需要从代码仓库克隆或下载项目,并安装所需的依赖包。
- 安装依赖库:打开终端,运行以下命令来安装
requirements.txt
文件中列出的所有基础依赖包。pip3 install -r requirements.txt
- 安装定制版Transformers:为了支持“思维预算”等特殊功能,你需要安装项目指定的
transformers
库版本。pip install git+ssh://git@github.com/Fazziekey/transformers.git@seed-oss
快速上手 (使用 Transformers 库)
这是最基础和直接的使用方式,适合本地调试和快速验证。
- 编写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)
- 运行脚本在终端中执行该脚本:
python3 quick_start.py
高性能推理 (使用 vLLM)
vLLM是一个为大型语言模型设计的高性能推理和服务引擎。对于生产环境或需要处理高并发请求的场景,推荐使用vLLM进行部署。
- 安装支持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
- 启动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
- 使用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
应用场景
- 复杂文档理解与问答凭借其原生的512K超长上下文能力,Seed-OSS能够一次性处理整篇几百页的技术报告、法律合同或学术论文。用户可以直接输入完整文档,然后就文档中的任何细节进行提问,模型能够精准地定位信息并生成高质量的回答或摘要。
- 多步骤任务规划与执行的智能体模型强大的推理和Agent能力使其非常适合作为复杂任务处理系统的“大脑”。例如,可以构建一个自动化的软件开发Agent,用户只需用自然语言描述需求(如“开发一个能查询天气的网站”),Seed-OSS就能自主规划步骤、编写代码、调试并最终完成任务。
- 需要深度思考的专业领域问题求解在数学、物理、编程等需要复杂逻辑推理的领域,用户可以调高“思维预算”,让模型进行更深入、更长时间的“思考”。这使得模型能够解决一些普通模型难以处理的难题,例如证明数学定理、进行复杂的算法设计或分析科学实验数据。
- 科研与模型行为研究项目方特意提供了不含合成数据的“纯净”预训练版本,这对于AI研究人员来说非常有价值。他们可以使用这个模型作为基础,进行指令微调、模型机理分析等方面的研究,而不必担心合成数据可能带来的干扰。
QA
- Seed-OSS是什么?Seed-OSS是由字节跳动Seed团队开发的一系列开源大型语言模型。它的核心特点是强大的长上下文处理能力(原生512K)、卓越的逻辑推理和Agent能力,并引入了创新的“思维预算”控制功能。
- “思维预算” (Thinking Budget) 是什么,如何使用?“思维预算”是一个允许用户控制模型在回答前进行多少步“内部思考”(推理链)的功能。在调用模型时,可以通过设置
thinking_budget
参数来指定一个数值(如512, 1024)。预算越高,模型思考得越深入,可能得到更准确的答案,但耗时也更长。如果设置为0或不设置,模型会采用默认模式。 - Seed-OSS模型开源且免费商用吗?是的,该项目基于Apache-2.0许可证进行开源。Apache-2.0是一个对商业使用非常友好的开源协议,允许用户免费地使用、修改和分发软件,包括用于商业目的,只需遵守协议中的相关条款即可。
- 与其他开源模型相比,Seed-OSS的主要优势是什么?其主要优势包括:1) 原生支持高达512K的超长上下文,在处理长文档时性能优越;2) 独特的“思维预算”功能,让推理过程的成本和效果变得可控;3) 在Agent任务和逻辑推理任务上经过特别优化,表现突出;4) 提供纯净的预训练版本,对学术研究非常友好。