🚀 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 \
- 如果需要,将
--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,
device_map="auto",
)
model.eval()
带有思考步骤的推理示例(如果模型经过训练可以生成思考步骤)
user_prompt_with_thinking_request = "استخدم التفكير المنطقي خطوة بخطوة: إذا كان لدي 4 تفاحات والشجرة فيها 20 تفاحة، فكم تفاحة لدي إجمالاً؟"
messages_with_thinking = [
{"role": "user", "content": user_prompt_with_thinking_request}
]
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,
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",
api_key="dummy_key"
)
completion = client.chat.completions.create(
model="beetlware/Bee1reason-arabic-Qwen-14B",
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
(秩):32
lora_alpha
:32
target_modules
:["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
lora_dropout
:0
bias
:"none"
- 使用的库:Unsloth(用于高效模型加载和PEFT应用)和Hugging Face TRL (
SFTTrainer
)
- 最大序列长度 (
max_seq_length
):2048个标记
- 训练参数(来自笔记本的示例):
per_device_train_batch_size
:2
gradient_accumulation_steps
:4(模拟总批量大小为8)
warmup_steps
:5
max_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
- 阿曼办公室
上传的模型信息
- 开发者:beetlware AI团队
- 许可证:apache-2.0
- 微调自的模型:unsloth/qwen3-14b-unsloth-bnb-4bit
这个Qwen3模型使用Unsloth和Huggingface的TRL库进行训练,速度提高了2倍。
