HuggingFace镜像/Maral-7B-alpha-1
模型介绍文件和版本分析
下载使用量0

Maral 7B Alpha 1

Maral 是什么?

Maral 是一款全新的大型语言模型,专门针对波斯语进行了优化。该模型基于 Mistral 构建,并在 Alpaca Persian 数据集上完成训练。在波斯语AI领域,这款模型是少数致力于让波斯语在人工智能时代焕发新生的尝试之一。

此外,由于 Maral 以 Mistral 为基础,因此它也能够生成英文回答。

“Maral” 是什么意思?

Maral 是 马鹿 的波斯语名称,马鹿是伊朗的本土鹿种。选择这个名称有几个原因,其中之一是我们对环境的关注,其次,作为由伊朗人开发的波斯语大语言模型,它理应拥有一个伊朗本土名称。

推理

提示词格式

该模型需要采用 Guanaco 格式,具体如下:

### Human: <prompt>
### Assistant: <answer>

因此在你的代码中,你可以像这样编写提示词:

prompt = "در سال ۱۹۹۶ چه کسی رییس جمهور آمریکا بود؟"
prompt = f"### Human:{prompt}\n### Assistant:"

更多相关信息,请参见推理部分。

4 位量化

如果您想使用 4 位量化,我们为您准备了一个 PEFT,链接在此 here。此外,您还可以在 here 找到 Google Colab 笔记本。

安装库

pip install transformers accelerate bitsandbytes

注意:bitsandbytes 库仅在 8 位版本中需要。否则,无需安装。

在高性能 GPU 上推理

如果您拥有足够强大的 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()

在小型 GPU 上推理(消费级硬件/免费 Colab)

代码与上文基本相同,但有一点细微差别。

  • 确保正确安装 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 会有所帮助。

已知问题

  • 该模型生成的答案在语法方面(尤其是波斯语)达到 GPT-3.5 水平,但却容易产生极其严重的幻觉。这个问题可以通过更好的数据集和更完善的训练流程(如 DPO)来解决。
  • 由于上述问题,该模型在处理波斯语的推理类问题时,也可能会生成误导性答案。
  • 模型体积较大,因此需要大量资源才能正常运行。不过,我们也可能会提供 GPTQ 或 GGUF 版本。
  • 提示词格式能够正常工作,这证明了我们指令跟随型 LLM 的概念是可行的,但由于我们尚未将 eos_token 和 bos_token 替换为自定义的 token,你可能会看到模型生成不必要的信息。
  • 基于上述问题,模型存在重复生成内容的倾向。要暂时解决此问题,你必须将 temperature(温度参数)设置在 1 以下。根据我们的测试,0.5 到 0.7 之间是一个合适的范围。

我们的团队

  • Muhammadreza Haghiri(网站 - Github - LinkedIn)
  • Mahi Mohrechi(网站 - Github - LinkedIn)

特别感谢

  • Mistral 团队,感谢他们提供了有史以来最好的开源基础模型。
  • Sina Rashidi,感谢他将 Alpaca 数据集翻译成波斯语。
  • Jupyto 团队,感谢他们为我们提供基础设施支持。