Maral 是一款全新的大型语言模型,专门针对波斯语进行了优化。该模型基于 Mistral 构建,并在 Alpaca Persian 数据集上完成训练。在波斯语AI领域,这款模型是少数致力于让波斯语在人工智能时代焕发新生的尝试之一。
此外,由于 Maral 以 Mistral 为基础,因此它也能够生成英文回答。
Maral 是 马鹿 的波斯语名称,马鹿是伊朗的本土鹿种。选择这个名称有几个原因,其中之一是我们对环境的关注,其次,作为由伊朗人开发的波斯语大语言模型,它理应拥有一个伊朗本土名称。
该模型需要采用 Guanaco 格式,具体如下:
### Human: <prompt>
### Assistant: <answer>因此在你的代码中,你可以像这样编写提示词:
prompt = "در سال ۱۹۹۶ چه کسی رییس جمهور آمریکا بود؟"
prompt = f"### Human:{prompt}\n### Assistant:"更多相关信息,请参见推理部分。
如果您想使用 4 位量化,我们为您准备了一个 PEFT,链接在此 here。此外,您还可以在 here 找到 Google Colab 笔记本。
pip install transformers accelerate bitsandbytes
注意:bitsandbytes 库仅在 8 位版本中需要。否则,无需安装。
如果您拥有足够强大的 GPU(例如 A100),以下代码适用于您。
from openmind import AutoTokenizer, AutoModelForCausalLM, is_torch_npu_available
from openmind_hub import snapshot_download
import torch.nn.functional as F
from torch import Tensor
import openmind
import torch
import argparse
import sys
import time
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to model",
default="zhouhui/Maral-7B-alpha-1",
)
args = parser.parse_args()
return args
def main():
args = parse_args()
model_path = args.model_name_or_path
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
start_time = time.time()
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.eval()
prompt = "Salam, shoma ki hastid?"
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
outputs = model.generate(input_ids=input_ids, max_length=100)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
end_time = time.time()
print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")
if __name__ == "__main__":
main()代码与上文基本相同,但有一点细微差别。
bitsandbytes。model = AutoModelForCausalLM.from_pretrained(model_name_or_id, load_in_8bit=True, torch_dtype=torch.bfloat16, device_map="auto")在 Google Colab 的免费版本上,你可能会遇到内存问题。我猜在模型加载时使用 low_cpu_mem_usage=True 会有所帮助。
eos_token 和 bos_token 替换为自定义的 token,你可能会看到模型生成不必要的信息。