Bee1reason Arabic Qwen 14B
モデル概要
モデル特徴
モデル能力
使用事例
🚀 Bee1reason-arabic-Qwen-14B: アラビア語の論理推論用にファインチューニングされたQwen3 14Bモデル
Bee1reason-arabic-Qwen-14Bは、unsloth/Qwen3-14B
(元はQwen/Qwen2-14B
に基づく)をベースにしてファインチューニングされた大規模言語モデル(LLM)です。このモデルは、アラビア語における論理的および演繹的推論能力を強化するように特別に調整されており、同時に一般的な会話能力も維持しています。ファインチューニングには、高いトレーニング効率を実現するためにUnslothライブラリを用いたLoRA(Low-Rank Adaptation)が使用されました。その後、LoRAの重みがベースモデルと統合され、このスタンドアロンの16ビット(float16)精度のモデルが生成されました。
✨ 主な機能
unsloth/Qwen3-14B
をベースに構築:Qwen3の140億パラメータのベースモデルのパワーとパフォーマンスを活用しています。- アラビア語の論理推論用にファインチューニング:アラビア語の論理推論タスクを含むデータセットでトレーニングされています。
- 会話形式:モデルは会話形式に対応しており、ユーザーとアシスタントのロールを想定しています。最終的な回答を提供する前に「思考ステップ」(多くの場合
<think>...</think>
タグ内)を含むデータでトレーニングされており、説明や複雑な推論が必要なタスクに役立ちます。 - Unslothの効率性:ファインチューニングにUnslothライブラリが使用され、高速なトレーニングとGPUメモリ消費の削減を実現しています。
- 統合された16ビットモデル:最終的な重みは完全なfloat16精度のモデルであり、別のベースモデルにLoRAアダプターを適用する必要なく直接使用できます。
📦 インストール
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()
VLLMを使用する場合(高スループットのスケーラブルな推論用)
VLLMは高速なLLM推論用のライブラリです。このモデルはmerged_16bit
として保存されているので、VLLMで使用できます。
- VLLMをインストール:
pip install vllm
(VLLMのインストールには特定のCUDAとPyTorchのバージョンが必要な場合があります。最新のインストール前提条件についてはVLLMのドキュメントを参照してください。)
- 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": "اشرح نظرية النسبية العامة بكلمات بسيطة."} # "Explain the theory of general relativity in simple terms."
],
max_tokens=256,
temperature=0.7,
stream=True # ストリーミングを有効にする
)
print("Streaming response from 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--- End of stream ---")
💻 使用例
思考ステップを伴う推論の例(モデルが思考ステップを生成するようにトレーニングされている場合)
Qwen3モデルは思考用の特別なタグ... を期待しています
推論中に思考モードを有効にするには(ファインチューニングされたモデルがサポートしている場合)
モデルに思考を促すプロンプトを作成する必要があるかもしれません
UnslothでトレーニングされたQwen3モデルは、多くの場合tokenizer.apply_chat_templateでenable_thinkingに反応します
統合されたモデルがを表示する能力は、トレーニングデータに依存します
user_prompt_with_thinking_request = "استخدم التفكير المنطقي خطوة بخطوة: إذا كان لدي 4 تفاحات والشجرة فيها 20 تفاحة، فكم تفاحة لدي إجمالاً؟" # "Use step-by-step logical thinking: If I have 4 apples and the tree has 20 apples, how many apples do I have in total?"
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--- Inference with Thinking Request (Example) ---")
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 = "ما هي عاصمة مصر؟" # "What is the capital of Egypt?"
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--- Normal Inference (Example) ---")
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
)
📚 ドキュメント
トレーニングデータ
モデルは主にカスタムのアラビア語論理推論データセットbeetlware/arabic-reasoning-dataset-logic
でファインチューニングされました。このデータセットはHugging Face Hubで入手できます。このデータセットには、さまざまなタイプの推論(演繹、帰納、仮説形成)のタスクが含まれており、各タスクには問題文、提案された回答、および思考ステップを含む詳細な解決策が含まれています。
このデータはトレーニングのために会話形式に変換されており、通常は以下のようになっています。
- ユーザーロール:問題/質問文を含みます。
- アシスタントロール:思考ステップ(多くの場合
<think>...</think>
タグ内)を含む詳細な解決策と、その後に最終的な回答が続きます。
ファインチューニングの詳細
- ベースモデル:
unsloth/Qwen3-14B
- ファインチューニング手法:LoRA(Low-Rank Adaptation)
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/Organization - beetleware]
- アップロード/リリース日:[21-5-2025]
- 問い合わせ/問題報告:[loai.abdalsalm@beetleware.com]
Beetleware
当社は6年前に設立され、サウジアラビアに拠点を置くソフトウェア開発会社およびデジタルトランスフォーメーションサービスプロバイダーです。
All rights reserved@2025
当社のオフィス
サウジアラビアオフィス
(+966) 54 597 3282 ahmed.taha@beetleware.com
エジプトオフィス
(+2) 010 67 256 306 ahmed.abullah@beetleware.com
オマーンオフィス
(+968) 9522 8632
アップロードされたモデル
- 開発者:beetlware AI Team
- ライセンス:apache-2.0
- ファインチューニング元のモデル:unsloth/qwen3-14b-unsloth-bnb-4bit
このQwen3モデルはUnslothとHuggingfaceのTRLライブラリを使用して2倍高速にトレーニングされました。



