🚀 Maral 7B Alpha 1
Maralは、ペルシア語に特化した新しい大規模言語モデルです。このモデルは、AIの時代にペルシア語を新たな生命に満ちたものにするための、ペルシア語圏での数少ない取り組みの一つです。
🚀 クイックスタート
モデルの概要
Maralは、Mistralをベースに、Alpaca Persian データセットを用いて学習された大規模言語モデルです。このモデルは、ペルシア語に特化しており、英語の回答も生成することができます。
モデルの名前の由来
Maralは、イラン在来種のシカであるヨーロッパジカのペルシア語名です。この名前が選ばれた理由の一つは、環境問題への配慮であり、もう一つは、このモデルがイラン人によって作成されたペルシア語のLLMであるため、イランの名前にふさわしいと考えられたからです。
✨ 主な機能
推論
プロンプトフォーマット
このモデルは、Guanaco フォーマットを必要とします。形式は以下の通りです。
### Human: <prompt>
### Assistant: <answer>
コードでは、以下のようにプロンプトを記述できます。
prompt = "در سال ۱۹۹۶ چه کسی رییس جمهور آمریکا بود؟"
prompt = f"### Human:{prompt}\n### Assistant:"
推論セクションでこれに関する詳細情報を提供します。
4ビット量子化
4ビット量子化を使用する場合は、こちらにPEFTが用意されています。また、Google Colab ノートブックはこちらで見つけることができます。
ライブラリのインストール
pip install transformers accelerate bitsandbytes
注意: bitsandbytes
ライブラリは8ビットバージョンでのみ必要です。それ以外の場合は不要です。
大型GPUでの推論
A100のような十分な大きさのGPUを持っている場合、以下のコードを使用できます。
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
import torch
model_name_or_id = "MaralGPT/Maral-7B-alpha-1"
model = AutoModelForCausalLM.from_pretrained(model_name_or_id, torch_dtype=torch.bfloat16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name_or_id)
prompt = "در سال ۱۹۹۶ چه کسی رییس جمهور آمریکا بود؟"
prompt = f"### Human:{prompt}\n### Assistant:"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
generation_config = GenerationConfig(
do_sample=True,
top_k=1,
temperature=0.5,
max_new_tokens=300,
pad_token_id=tokenizer.eos_token_id
)
outputs = model.generate(**inputs, generation_config=generation_config)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
小型GPU(消費者向けハードウェア/無料Colab)での推論
コードは上記とほぼ同じですが、少し違いがあります。
bitsandbytes
が正しくインストールされていることを確認してください。
- モデルの読み込みは、
model = AutoModelForCausalLM.from_pretrained(model_name_or_id, load_in_8bit=True, torch_dtype=torch.bfloat16, device_map="auto")
とする必要があります。
Google Colabの無料版では、RAMの問題に直面する可能性があります。モデルの読み込み時に low_cpu_mem_usage=True
を使用すると役立つと思われます。
🔧 技術詳細
既知の問題
- モデルは文法(特にペルシア語)の面でGPT - 3.5レベルの回答を生成しますが、極端な幻覚を引き起こす可能性があります。この問題は、より良いデータセットとトレーニング手順(DPOなど)によって解決できます。
- 前の問題により、モデルは特にペルシア語の推論問題を扱う際に誤った情報を生成する可能性があります。
- モデルは大きいため、正しく動作するために多くのリソースが必要です。ただし、GPTQ または GGUF バージョンも提供する予定です。
- プロンプトフォーマットは機能し、指示に従うLLMのコンセプトを証明していますが、
eos_token
と bos_token
を独自のものに変更していないため、モデルが不必要な情報を生成することがあります。
- 前の問題により、モデルは自身を繰り返す可能性があります。この問題を一時的に解決するには、温度を1未満に保つ必要があります。テストによると、0.5から0.7の間が最適です。
📚 ドキュメント
チームメンバー
特別な感謝
- 最高のオープンソースベースモデルを提供してくれたMistralチーム。
- Alpacaデータセットをペルシア語に翻訳した Sina Rashidi 氏。
- インフラを提供してくれたJupytoチーム。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。