🚀 ペルシャマインド (PersianMind)
ペルシャマインド (PersianMind) は、ペルシア語と英語のクロスリンガルな大規模言語モデルです。このモデルは、Belebele ベンチマークのペルシア語サブセットと ParsiNLU multiple-choice QA タスクで最先端の結果を達成しています。また、ペルシア語の読解タスクでは GPT-3.5-turbo に匹敵する性能を発揮します。
🚀 クイックスタート
モデルを使い始めるには、以下のコードを使用します。このコードを実行するには、sentencepiece
と accelerate
ライブラリを PyTorch
と 🤗Transformers
とともにインストールする必要があります。
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained(
"universitytehran/PersianMind-v1.0",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
device_map={"": device},
)
tokenizer = AutoTokenizer.from_pretrained(
"universitytehran/PersianMind-v1.0",
)
TEMPLATE = "{context}\nYou: {prompt}\nPersianMind: "
CONTEXT = "This is a conversation with PersianMind. It is an artificial intelligence model designed by a team of " \
"NLP experts at the University of Tehran to help you with various tasks such as answering questions, " \
"providing recommendations, and helping with decision making. You can ask it anything you want and " \
"it will do its best to give you accurate and relevant information."
PROMPT = "در مورد هوش مصنوعی توضیح بده."
model_input = TEMPLATE.format(context=CONTEXT, prompt=PROMPT)
input_tokens = tokenizer(model_input, return_tensors="pt")
input_tokens = input_tokens.to(device)
generate_ids = model.generate(**input_tokens, max_new_tokens=512, do_sample=False, repetition_penalty=1.1)
model_output = tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(model_output[len(model_input):])
高度な使用法
モデルの量子化方法
量子化されたモデルは、リソースが制限されたデバイスで実行できます。モデルを量子化するには、bitsandbytes
ライブラリをインストールする必要があります。モデルを 8 ビット (INT8
) で量子化するには、以下のコードを使用します。
model = AutoModelForCausalLM.from_pretrained(
"universitytehran/PersianMind-v1.0",
device_map="auto",
low_cpu_mem_usage=True,
load_in_8bit=True
)
あるいは、以下のコードでモデルを 4 ビット (NormalFloat4
) で量子化することもできます。
from transformers import BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
)
model = AutoModelForCausalLM.from_pretrained(
"universitytehran/PersianMind-v1.0",
quantization_config=quantization_config,
device_map="auto"
)
量子化モデルの評価
モデル |
Belebele (ペルシア語) |
Fa→En 翻訳 (Comet) |
En→Fa 翻訳 (Comet) |
モデルサイズ |
トークン/秒 |
PersianMind (BF16 ) |
73.9 |
83.61 |
79.44 |
13.7G |
25.35 |
PersianMind (INT8 ) |
73.7 |
82.32 |
78.61 |
7.2G |
11.36 |
PersianMind (NF4 ) |
70.2 |
82.07 |
80.36 |
3.9G |
24.36 |
私たちは、量子化されたモデルを元のモデルと比較して、さまざまなタスクで評価しました。具体的には、すべてのモデルを Belebele (ペルシア語サブセット) の読解選択式質問応答ベンチマークを使用して評価し、各モデルの精度を報告しました。さらに、ペルシア語から英語への翻訳タスクと英語からペルシア語への翻訳タスクについてもモデルを評価しました。このために、Flores-200 データセットのペルシア語 - 英語サブセットを利用し、Comet メトリックを使用して結果を報告しました。さらに、翻訳タスクを実行中の各モデルによる平均生成トークン数を計算しました。リソース効率を理解するために、get_memory_footprint()
関数を使用して各モデルのメモリ使用量を測定しました。
✨ 主な機能
📚 ドキュメント
モデルの説明
📄 ライセンス
ペルシャマインド (PersianMind) は、Meta の LLaMa2 Community License に準拠しています。さらに、CC BY-NC-SA 4.0 の下でライセンスされており、これによりモデルの非商用利用が許可されています。このモデルの商用利用には、このページで開発者としてリストされている著作権者から書面による合意を得る必要があります。違反の疑いがある場合は、お問い合わせください。
📚 引用
このモデルが役に立った場合は、以下の論文を引用してください。
BibTeX:
@misc{persianmind,
title={{PersianMind: A Cross-Lingual Persian-English Large Language Model}},
author={Rostami, Pedram and Salemi, Ali and Dousti, Mohammad Javad},
year={2024}
eprint={2401.06466},
archivePrefix={arXiv},
primaryClass={cs.CL}
}