模型简介
模型特点
模型能力
使用案例
🚀 Bee1reason-arabic-Qwen-14B:专为阿拉伯语逻辑推理微调的Qwen3 14B模型
Bee1reason-arabic-Qwen-14B是一款基于大语言模型(LLM)的模型,它从unsloth/Qwen3-14B
基础模型(该基础模型本身基于Qwen/Qwen2-14B
)微调而来。此模型经过专门调整,旨在增强阿拉伯语的逻辑和演绎推理能力,同时保留其通用对话能力。微调过程使用了LoRA(低秩自适应)技术,并借助Unsloth库以实现高效训练。随后,将LoRA权重与基础模型合并,生成了这个独立的16位(float16)精度模型。
✨ 主要特性
- 基于
unsloth/Qwen3-14B
构建:充分利用Qwen3 140亿参数基础模型的强大性能。 - 针对阿拉伯语逻辑推理进行微调:在包含阿拉伯语逻辑推理任务的数据集上进行训练。
- 对话格式:模型遵循对话格式,区分用户和助手角色。训练数据中可能包含“思考步骤”(通常在
<think>...</think>
标签内),然后再给出最终答案,这对于需要解释或复杂推理的任务非常有帮助。 - Unsloth高效性:微调过程使用了Unsloth库,实现了更快的训练速度和更低的GPU内存消耗。
- 合并的16位模型:最终权重为完整的float16精度模型,无需将LoRA适配器应用于单独的基础模型,可直接使用。
📦 安装指南
使用VLLM进行高吞吐量推理
VLLM是一个用于快速大语言模型推理的库。由于该模型保存为merged_16bit
格式,因此可以与VLLM一起使用。
- 安装VLLM:
pip install vllm
(VLLM的安装可能有特定的CUDA和PyTorch版本要求。请参考VLLM文档获取最新的安装先决条件。) 2. 运行VLLM的OpenAI兼容服务器: 可以使用VLLM的OpenAI兼容API服务器来部署模型,方便集成到现有应用程序中。
python -m vllm.entrypoints.openai.api_server \
--model beetlware/Bee1reason-arabic-Qwen-14B \
--tokenizer beetlware/Bee1reason-arabic-Qwen-14B \
--dtype bfloat16 \
--max-model-len 2048 \
# --tensor-parallel-size N # 如果你有多个GPU
# --gpu-memory-utilization 0.9 # 调整GPU内存使用
- 如果需要,将
--dtype bfloat16
替换为float16
。 max-model-len
应与你使用的max_seq_length
相匹配。
💻 使用示例
使用Transformers库
由于这是一个合并的16位模型,你可以使用transformers
库直接加载和使用它:
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
import torch
model_id = "beetlware/Bee1reason-arabic-Qwen-14B"
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_id)
# 加载模型
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16, # 如果不支持bfloat16,则使用torch.float16
device_map="auto", # 将模型分布在可用设备(GPU/CPU)上
)
# 确保模型处于评估模式以进行推理
model.eval()
带有思考步骤的推理示例(如果模型经过训练可以生成思考步骤)
user_prompt_with_thinking_request = "استخدم التفكير المنطقي خطوة بخطوة: إذا كان لدي 4 تفاحات والشجرة فيها 20 تفاحة، فكم تفاحة لدي إجمالاً؟" # "使用逐步逻辑思考:如果我有4个苹果,树上有20个苹果,我总共有多少个苹果?"
messages_with_thinking = [
{"role": "user", "content": user_prompt_with_thinking_request}
]
# 应用对话模板
# Qwen3使用特定的对话模板。tokenizer.apply_chat_template是正确的格式化方式。
chat_prompt_with_thinking = tokenizer.apply_chat_template(
messages_with_thinking,
tokenize=False,
add_generation_prompt=True # 对于添加助手的生成提示很重要
)
inputs_with_thinking = tokenizer(chat_prompt_with_thinking, return_tensors="pt").to(model.device)
print("\n--- 带有思考请求的推理示例 ---")
streamer_think = TextStreamer(tokenizer, skip_prompt=True)
with torch.no_grad(): # 在推理期间禁用梯度很重要
outputs_think = model.generate(
**inputs_with_thinking,
max_new_tokens=512,
temperature=0.6, # Qwen团队推荐的推理设置
top_p=0.95,
top_k=20,
pad_token_id=tokenizer.eos_token_id,
streamer=streamer_think
)
普通推理示例(无明确思考请求的对话)
# --- 普通推理示例(无明确思考请求的对话) ---
user_prompt_normal = "ما هي عاصمة مصر؟" # "埃及的首都是什么?"
messages_normal = [
{"role": "user", "content": user_prompt_normal}
]
chat_prompt_normal = tokenizer.apply_chat_template(
messages_normal,
tokenize=False,
add_generation_prompt=True
)
inputs_normal = tokenizer(chat_prompt_normal, return_tensors="pt").to(model.device)
print("\n\n--- 普通推理示例 ---")
streamer_normal = TextStreamer(tokenizer, skip_prompt=True)
with torch.no_grad():
outputs_normal = model.generate(
**inputs_normal,
max_new_tokens=100,
temperature=0.7, # 普通聊天推荐设置
top_p=0.8,
top_k=20,
pad_token_id=tokenizer.eos_token_id,
streamer=streamer_normal
)
使用VLLM进行推理
向VLLM服务器发送请求
服务器启动后(通常在http://localhost:8000
),你可以使用任何OpenAI兼容的客户端(如openai
库)发送请求:
import openai
client = openai.OpenAI(
base_url="http://localhost:8000/v1", # VLLM服务器地址
api_key="dummy_key" # VLLM默认不需要实际的API密钥
)
completion = client.chat.completions.create(
model="beetlware/Bee1reason-arabic-Qwen-14B", # VLLM中指定的模型名称
messages=[
{"role": "user", "content": "اشرح نظرية النسبية العامة بكلمات بسيطة."} # "用简单的语言解释广义相对论。"
],
max_tokens=256,
temperature=0.7,
stream=True # 启用流式传输
)
print("来自VLLM的流式响应:")
full_response = ""
for chunk in completion:
if chunk.choices[0].delta.content is not None:
token = chunk.choices[0].delta.content
print(token, end="", flush=True)
full_response += token
print("\n--- 流结束 ---")
📚 详细文档
训练数据
该模型主要在自定义的阿拉伯语逻辑推理数据集beetlware/arabic-reasoning-dataset-logic
上进行微调,该数据集可在Hugging Face Hub上获取。此数据集包含各种类型的推理任务(演绎、归纳、溯因),每个任务包括问题文本、提议的答案以及包含思考步骤的详细解决方案。
这些数据被转换为对话格式进行训练,通常包括:
- 用户角色:包含问题文本。
- 助手角色:包含详细解决方案,包括思考步骤(通常在
<think>...</think>
标签内),然后是最终答案。
微调细节
- 基础模型:
unsloth/Qwen3-14B
- 微调技术:LoRA(低秩自适应)
r
(秩):32lora_alpha
:32target_modules
:["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
lora_dropout
:0bias
:"none"
- 使用的库:Unsloth(用于高效模型加载和PEFT应用)和Hugging Face TRL (
SFTTrainer
) - 最大序列长度 (
max_seq_length
):2048个标记 - 训练参数(来自笔记本的示例):
per_device_train_batch_size
:2gradient_accumulation_steps
:4(模拟总批量大小为8)warmup_steps
:5max_steps
:30(在笔记本中,可根据完整运行情况进行调整)learning_rate
:2e-4(建议在较长的训练运行中降低到2e-5)optim
:"adamw_8bit"
- 最终保存:将LoRA权重与基础模型合并,并以
merged_16bit
(float16)精度保存。
🔧 技术细节
模型的性能高度依赖于训练数据的质量和多样性。它可能会表现出训练数据中存在的偏差。尽管针对逻辑推理进行了微调,但模型在非常复杂或不熟悉的推理任务上仍可能出错。模型可能会“产生幻觉”或生成不正确的信息,特别是对于训练数据中未充分涵盖的主题。如果主要在阿拉伯语上进行训练,那么该模型在其他语言方面的能力可能有限。
📄 许可证
本项目采用apache-2.0
许可证。
补充信息
- 开发者:[loai abdalslam/组织 - beetleware]
- 上传/发布日期:[2025年5月21日]
- 联系/问题报告:[loai.abdalsalm@beetleware.com]
Beetleware公司信息
我们是一家软件公司和数字转型服务提供商,成立于六年前,总部位于沙特阿拉伯。
版权所有@2025
我们的办公室
- 沙特阿拉伯办公室
- 电话:(+966) 54 597 3282
- 邮箱:ahmed.taha@beetleware.com
- 埃及办公室
- 电话:(+2) 010 67 256 306
- 邮箱:ahmed.abullah@beetleware.com
- 阿曼办公室
- 电话:(+968) 9522 8632
上传的模型信息
- 开发者:beetlware AI团队
- 许可证:apache-2.0
- 微调自的模型:unsloth/qwen3-14b-unsloth-bnb-4bit
这个Qwen3模型使用Unsloth和Huggingface的TRL库进行训练,速度提高了2倍。



