Bee1reason Arabic Qwen 14B
模型概述
模型特點
模型能力
使用案例
🚀 Bee1reason-arabic-Qwen-14B:專為阿拉伯語邏輯推理微調的Qwen3 14B模型
Bee1reason-arabic-Qwen-14B是一個大語言模型(LLM),它基於unsloth/Qwen3-14B
基礎模型(該基礎模型本身基於Qwen/Qwen2-14B
)進行微調。該模型專門針對提升阿拉伯語的邏輯和演繹推理能力進行了優化,同時保留了通用的對話能力。微調過程使用了LoRA(低秩自適應)技術,並藉助Unsloth庫,實現了高效的訓練。最終將LoRA權重與基礎模型合併,得到了這個獨立的16位(float16)精度模型。
🚀 快速開始
使用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()
帶有思考步驟的推理示例(如果模型經過訓練可以生成思考步驟)
Qwen3模型需要特殊的標籤來表示思考 ...
要在推理過程中啟用思考模式(如果微調後的模型支持):
你可能需要構造提示來要求模型進行思考。
使用Unsloth訓練的Qwen3模型通常會對tokenizer.apply_chat_template中的enable_thinking做出響應。
對於合併後的模型,其顯示的能力取決於訓練數據。
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是一個用於快速大語言模型推理的庫。由於你將模型保存為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
相匹配。
- 向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--- 流結束 ---")
✨ 主要特性
- 基於
unsloth/Qwen3-14B
構建:藉助Qwen3 140億參數基礎模型的強大性能。 - 針對阿拉伯語邏輯推理進行微調:在包含阿拉伯語邏輯推理任務的數據集上進行訓練。
- 對話格式:模型遵循對話格式,需要區分用戶和助手角色。它在可能包含“思考步驟”(通常在
<think>...</think>
標籤內)的數據上進行訓練,然後再給出最終答案,這對於需要解釋或複雜推理的任務非常有用。 - Unsloth高效性:在微調過程中使用了Unsloth庫,實現了更快的訓練速度和更低的GPU內存消耗。
- 合併的16位模型:最終權重是一個完整的float16精度模型,無需將LoRA適配器應用到單獨的基礎模型即可直接使用。
📦 安裝指南
使用此模型,你需要安裝transformers
庫和vllm
庫(如果你想使用VLLM進行推理):
pip install transformers
pip install vllm
📚 詳細文檔
訓練數據
該模型主要在一個自定義的阿拉伯語邏輯推理數據集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)精度保存。
🔧 技術細節
該模型基於Qwen3 14B基礎模型,使用LoRA技術進行微調。LoRA通過低秩矩陣分解來減少可訓練參數的數量,從而提高訓練效率。在微調過程中,使用了Unsloth庫來優化模型加載和訓練過程,減少了GPU內存的使用。最終,將LoRA權重與基礎模型合併,得到一個完整的16位精度模型,可直接用於推理。
📄 許可證
本模型採用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倍。



