模型简介
模型特点
模型能力
使用案例
许可证:Apache-2.0
流水线标签:文本生成
许可证链接:LICENSE
基础模型:
- Qwen/Qwen3-4B-Base
量化者:bartowski
标签: - llamafile
- 聊天
Qwen 3 4B - llamafile
- 模型创建者:Qwen
- 原始模型:Qwen/Qwen3-4B
Mozilla 将 Qwen 3 模型打包成可执行的权重文件,我们称之为 llamafile。这为您提供了在 Linux、MacOS、Windows、FreeBSD、OpenBSD 和 NetBSD 系统上使用模型的最简单、最快速的方式,支持 AMD64 和 ARM64 架构。
软件最后更新:2025-05-14
Llamafile 版本:0.9.3
快速开始
要开始使用,您需要 Qwen 3 的权重文件和 llamafile 软件。两者都包含在一个文件中,可以按以下方式下载并运行:
wget https://huggingface.co/Mozilla/Qwen3-0.6B-llamafile/resolve/main/Qwen_Qwen3-4B-Q4_K_M.llamafile
chmod +x Qwen_Qwen3-4B-Q4_K_M.llamafile
./Qwen_Qwen3-4B-Q4_K_M.llamafile
这些 llamafile 的默认操作模式是我们的新命令行聊天机器人界面。
使用方法
您可以使用三引号在多行上提问。可以通过传递 /stats
和 /context
等命令查看运行时状态信息。您可以通过传递 -p "新的系统提示"
标志来更改系统提示。您可以按 CTRL-C 中断模型生成。最后,按 CTRL-D 可以退出。
如果您更喜欢使用 Web 图形界面,可以启用 --server
模式,这将在浏览器中打开一个带有聊天机器人和补全界面的标签页。如需更多帮助,可以传递 --help
标志。服务器还提供了一个与 OpenAI API 兼容的补全端点,可以通过 Python 使用 openai
pip 包访问。
./Qwen_Qwen3-4B-Q4_K_M.llamafile --server
还提供了一个高级 CLI 模式,适用于 shell 脚本。您可以通过传递 --cli
标志来使用它。如需更多帮助,可以传递 --help
标志。
./Qwen_Qwen3-4B-Q4_K_M.llamafile --cli -p 'four score and seven' --log-disable
故障排除
遇到问题? 请参阅 README 中的 "常见问题" 部分。
在 Linux 上,避免运行检测器错误的方法是安装 APE 解释器。
sudo wget -O /usr/bin/ape https://cosmo.zip/pub/cosmos/bin/ape-$(uname -m).elf
sudo chmod +x /usr/bin/ape
sudo sh -c "echo ':APE:M::MZqFpD::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register"
sudo sh -c "echo ':APE-jart:M::jartsr::/usr/bin/ape:' >/proc/sys/fs/binfmt_misc/register"
在 Windows 上,可执行文件的大小限制为 4GB。
上下文窗口
此模型的最大上下文窗口大小为 128k 令牌。默认情况下,使用 8192 令牌的上下文窗口大小。您可以通过传递 -c 0
标志让 llamafile 使用最大上下文大小。这足以容纳一本小书。如果您希望与您的书进行对话,可以使用 -f book.txt
标志。
GPU 加速
在具有足够内存的 GPU 上,可以传递 -ngl 999
标志以使用系统的 NVIDIA 或 AMD GPU。在 Windows 上,如果您拥有 NVIDIA GPU,只需安装显卡驱动程序即可。在 Windows 上,如果您有 AMD GPU,应安装 ROCm SDK v6.1,然后首次运行 llamafile 时传递 --recompile --gpu amd
标志。
在 NVIDIA GPU 上,默认使用预构建的 tinyBLAS 库执行矩阵乘法。这是开源软件,但速度不如闭源的 cuBLAS。如果您的系统上安装了 CUDA SDK,可以传递 --recompile
标志为您的系统构建一个使用 cuBLAS 的 GGML CUDA 库。这确保您获得最佳性能。
更多信息,请参阅 llamafile README。
关于 llamafile
llamafile 是 Mozilla 于 2023 年 11 月 20 日引入的一种新格式。它使用 Cosmopolitan Libc 将 LLM 权重转换为可运行的 llama.cpp 二进制文件,支持六种操作系统的原生安装,适用于 ARM64 和 AMD64 架构。
Qwen3-4B
Qwen3 亮点
Qwen3 是 Qwen 系列最新一代的大语言模型,提供了一套全面的密集模型和混合专家(MoE)模型。基于广泛的训练,Qwen3 在推理、指令遵循、代理能力和多语言支持方面取得了突破性进展,具有以下关键特性:
- 独特支持在思考模式(用于复杂逻辑推理、数学和编码)和非思考模式(用于高效通用对话)之间无缝切换,确保在各种场景下获得最佳性能。
- 显著增强推理能力,在数学、代码生成和常识逻辑推理方面超越了之前的 QwQ(思考模式)和 Qwen2.5 指令模型(非思考模式)。
- 卓越的人类偏好对齐,在创意写作、角色扮演、多轮对话和指令遵循方面表现出色,提供更自然、引人入胜和沉浸式的对话体验。
- 代理能力专家,能够在思考和非思考模式下精确集成外部工具,并在复杂的基于代理的任务中实现领先性能。
- 支持 100 多种语言和方言,具备强大的多语言指令遵循和翻译能力。
模型概述
Qwen3-4B 具有以下特性:
- 类型:因果语言模型
- 训练阶段:预训练和后训练
- 参数数量:4.0B
- 非嵌入参数数量:3.6B
- 层数:36
- 注意力头数(GQA):32 个 Q 头和 8 个 KV 头
- 上下文长度:原生支持 32,768 令牌,通过 YaRN 支持 131,072 令牌。
更多详细信息,包括基准评估、硬件要求和推理性能,请参阅我们的 博客、GitHub 和 文档。
[!提示]
如果遇到严重的无限重复问题,请参阅 最佳实践 部分获取最佳采样参数,并将presence_penalty
设置为 1.5。
快速开始
Qwen3 的代码已集成到最新版本的 Hugging Face transformers
中,建议您使用最新版本的 transformers
。
使用 transformers<4.51.0
时,您会遇到以下错误:
KeyError: 'qwen3'
以下代码片段展示了如何根据给定输入使用模型生成内容:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen3-4B"
# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# 准备模型输入
prompt = "给我一个关于大语言模型的简短介绍。"
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # 在思考和非思考模式之间切换。默认为 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:
# 反向查找 151668 (</think>)
index = len(output_ids) - output_ids[::-1].index(151668)
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_content)
print("内容:", content)
对于部署,您可以使用 sglang>=0.4.6.post1
或 vllm>=0.8.5
创建与 OpenAI API 兼容的端点:
- SGLang:
python -m sglang.launch_server --model-path Qwen/Qwen3-4B --reasoning-parser qwen3
- vLLM:
vllm serve Qwen/Qwen3-4B --enable-reasoning --reasoning-parser deepseek_r1
对于本地使用,Ollama、LMStudio、MLX-LM、llama.cpp 和 KTransformers 等应用程序也已支持 Qwen3。
在思考和非思考模式之间切换
[!提示]
enable_thinking
开关在 SGLang 和 vLLM 创建的 API 中也可用。
请参阅我们的 SGLang 和 vLLM 用户文档。
enable_thinking=True
默认情况下,Qwen3 启用了思考能力,类似于 QwQ-32B。这意味着模型将使用其推理能力来提高生成响应的质量。例如,当显式设置 enable_thinking=True
或在 tokenizer.apply_chat_template
中保留默认值时,模型将进入思考模式。
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # enable_thinking 的默认值为 True
)
在此模式下,模型将生成包裹在 <think>...</think>
块中的思考内容,然后是最终响应。
[!注意]
对于思考模式,使用Temperature=0.6
、TopP=0.95
、TopK=20
和MinP=0
(generation_config.json
中的默认设置)。不要使用贪心解码,因为这可能导致性能下降和无限重复。更多详细指导,请参阅 最佳实践 部分。
enable_thinking=False
我们提供了一个硬开关,严格禁用模型的思考行为,使其功能与之前的 Qwen2.5-Instruct 模型一致。此模式在需要禁用思考以提高效率的场景中特别有用。
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False # 设置 enable_thinking=False 禁用思考模式
)
在此模式下,模型不会生成任何思考内容,也不会包含 <think>...</think>
块。
[!注意]
对于非思考模式,建议使用Temperature=0.7
、TopP=0.8
、TopK=20
和MinP=0
。更多详细指导,请参阅 最佳实践 部分。
高级用法:通过用户输入在思考和非思考模式之间切换
我们提供了一个软开关机制,允许用户在 enable_thinking=True
时动态控制模型的行为。具体来说,您可以在用户提示或系统消息中添加 /think
和 /no_think
,以逐轮切换模型的思考模式。在多轮对话中,模型将遵循最近的指令。
以下是一个多轮对话的示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
class QwenChatbot:
def __init__(self, model_name="Qwen/Qwen3-4B"):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForCausalLM.from_pretrained(model_name


